summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHyunjee Kim <hj0426.kim@samsung.com>2019-12-03 09:48:48 +0900
committerHyunjee Kim <hj0426.kim@samsung.com>2019-12-03 09:48:48 +0900
commit4f8ba849e7e6cc8e2096d03b99438e7700ab1f54 (patch)
tree3f5bb5c7d36e8ec6222eeffe88465fdcf81abac6
parent341683cfae94bb8234f60972c4c022bf95f3c577 (diff)
downloadglib-4f8ba849e7e6cc8e2096d03b99438e7700ab1f54.tar.gz
glib-4f8ba849e7e6cc8e2096d03b99438e7700ab1f54.tar.bz2
glib-4f8ba849e7e6cc8e2096d03b99438e7700ab1f54.zip
Imported Upstream version 2.55.2
-rw-r--r--NEWS50
-rw-r--r--config.h.meson12
-rw-r--r--config.h.win32.in12
-rw-r--r--configure.ac65
-rw-r--r--docs/reference/gio/gdbus-codegen.xml103
-rw-r--r--docs/reference/gio/gio-sections.txt1
-rw-r--r--docs/reference/glib/glib-sections.txt1
-rw-r--r--docs/reference/gobject/glib-mkenums.xml44
-rw-r--r--gio/Makefile.am2
-rw-r--r--gio/gdatainputstream.c6
-rw-r--r--gio/gdatainputstream.h6
-rw-r--r--gio/gdbus-2.0/codegen/codegen.py4725
-rw-r--r--gio/gdbus-2.0/codegen/codegen_docbook.py8
-rwxr-xr-xgio/gdbus-2.0/codegen/codegen_main.py155
-rw-r--r--gio/gdbus-2.0/codegen/dbustypes.py5
-rw-r--r--gio/gdbus-2.0/codegen/parser.py5
-rw-r--r--gio/gdbus-2.0/codegen/utils.py40
-rw-r--r--gio/gdbusaddress.c10
-rw-r--r--gio/gdbusconnection.c7
-rw-r--r--gio/gdbusconnection.h6
-rw-r--r--gio/gdbusinterfaceskeleton.c2
-rw-r--r--gio/gdbusmessage.c2
-rw-r--r--gio/gdbusmethodinvocation.c2
-rw-r--r--gio/gdbusproxy.c2
-rw-r--r--gio/gfile.c103
-rw-r--r--gio/gfile.h2
-rw-r--r--gio/gioenums.h6
-rw-r--r--gio/giomodule.c4
-rw-r--r--gio/gnetworkaddress.c46
-rw-r--r--gio/gnetworkingprivate.h3
-rw-r--r--gio/gnetworkmonitor.c8
-rw-r--r--gio/gnetworkmonitor.h2
-rw-r--r--gio/gnotification.c6
-rw-r--r--gio/gpollableoutputstream.c3
-rw-r--r--gio/gproxyaddressenumerator.c2
-rw-r--r--gio/gproxyresolver.c14
-rw-r--r--gio/gresolver.c16
-rw-r--r--gio/gsettings-tool.c20
-rw-r--r--gio/gsettingsschema.c4
-rw-r--r--gio/gsimpleproxyresolver.c8
-rw-r--r--gio/gsocketaddressenumerator.h2
-rw-r--r--gio/gthreadedresolver.c32
-rw-r--r--gio/gtlsclientconnection.c47
-rw-r--r--gio/gtlsclientconnection.h4
-rw-r--r--gio/gunixmounts.c19
-rw-r--r--gio/gwin32networkmonitor.c333
-rw-r--r--gio/gwin32networkmonitor.h53
-rw-r--r--gio/meson.build50
-rw-r--r--gio/tests/data-input-stream.c4
-rw-r--r--gio/tests/file.c8
-rw-r--r--gio/tests/gdbus-threading.c2
-rw-r--r--gio/tests/simple-proxy.c54
-rw-r--r--glib.doap21
-rw-r--r--glib/docs.c8
-rw-r--r--glib/gbookmarkfile.c2
-rw-r--r--glib/gbytes.c28
-rw-r--r--glib/gcharset.c4
-rw-r--r--glib/gconvert.c293
-rw-r--r--glib/gconvert.h10
-rw-r--r--glib/gdataset.c2
-rw-r--r--glib/gdatetime.c17
-rw-r--r--glib/genviron.c2
-rw-r--r--glib/gfileutils.h9
-rw-r--r--glib/ghash.c2
-rw-r--r--glib/gkeyfile.c67
-rw-r--r--glib/gkeyfile.h5
-rw-r--r--glib/glibconfig.h.in5
-rw-r--r--glib/glibconfig.h.win32.in5
-rw-r--r--glib/gmain.c33
-rw-r--r--glib/gmem.c11
-rw-r--r--glib/gmessages.c66
-rw-r--r--glib/gmessages.h104
-rw-r--r--glib/gsequence.c113
-rw-r--r--glib/gspawn.c6
-rw-r--r--glib/gthread-posix.c2
-rw-r--r--glib/gutf8.c3
-rw-r--r--glib/gvariant.c2
-rw-r--r--glib/tests/bytes.c65
-rw-r--r--glib/tests/convert.c250
-rw-r--r--glib/tests/keyfile.c41
-rw-r--r--gobject/gobject.c4
-rw-r--r--gobject/gtypemodule.h2
-rw-r--r--meson.build12
-rw-r--r--po/gl.po1122
-rw-r--r--po/hu.po1118
-rw-r--r--po/id.po522
-rw-r--r--po/pl.po1080
-rw-r--r--po/zh_TW.po2310
88 files changed, 8042 insertions, 5430 deletions
diff --git a/NEWS b/NEWS
index 8d5f00094..468530951 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,53 @@
+Overview of changes in GLib 2.55.2
+==================================
+
+* GFile now has API to get the path without copying
+
+* A network monitor implementation for Windows has been added
+
+* Bugs fixed:
+ 520116 g_utf8_strlcpy()
+ 584284 g_data_input_stream_read_until_async behaves confusingly different f...
+ 605700 request for g_key_file_get_locale()
+ 658713 ngettext (plural forms) needed for "Message has %d file descriptors ...
+ 685442 windows GNetworkMonitor implementation
+ 723003 gsettings list-recursively reports some keys multiple times
+ 749583 GSequence performance improvements
+ 757284 Move G_DIR_SEPARATOR* and G_SEARCHPATH_SEPARATOR* into glibconfig.h
+ 760324 [PATCH] gkeyfile.c: find_file_in_data_dirs fails to return the path ...
+ 761102 Increase performance for main loop
+ 767976 GFile: Add g_file_peek_path()
+ 770335 gdbus-codegen: generated getter for 'ao' property is actually (trans...
+ 772989 Totem allows invalid urls that might cause segfault that's irrecover...
+ 790698 convert: test failure on NetBSD
+ 791015 gdbus-codegen: Split generation of header and source
+ 791622 Disable strict-aliasing in GLib
+ 792050 GResolver is not thread-safe
+ 792217 Deprecate GTlsClientConnection:use-ssl3
+ 792338 meson, autotools: figure out if mem barrier is needed for arm64 host...
+ 792351 gbookmarkfile: check length before dereferencing groups
+ 792364 gdbus-threading test method-calls-in-thread: assertion failed (elaps...
+ 792370 GNetworkMonitor: Rename "network-changed" signal argument
+ 792410 GDateTime new_from_iso8601 test broken in 2.55 on i386
+ 792432 flush stdout after logging (debug) messages
+ 792455 Improve docs of GSequence
+ 792499 deadlock on startup with TCP session bus
+ 792516 gconvert: More consistent handling of embedded NUL bytes
+ 792777 g_notification_set_urgent() unconditionally sets G_NOTIFICATION_PRIO...
+ 792780 gbytes should reference toplevel bytes when slicing with g_bytes_new...
+ 792856 off64_t isn't a part of C standard
+ 792862 gpollableoutputstream: document side effects of WOULD_BLOCK on D/TLS
+ 792903 Clarification between g_try_.. functions and their counterparts
+ 793006 High CPU load for GUnixMountsMonitor consumers
+ 793026 possible mem leak in g_mutex_impl_new
+ 793074 g_message() does not get -Wformat warnings when compiling with G_LOG...
+
+* Translation updates:
+ Hungarian
+ Indonesian
+ Polish
+
+
Overview of changes in GLib 2.55.1
==================================
diff --git a/config.h.meson b/config.h.meson
index 2350fd320..d540cb801 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -346,6 +346,18 @@
/* Define to 1 if you have the 'res_init' function. */
#mesondefine HAVE_RES_INIT
+/* Define to 1 if you have the 'res_nclose' function. */
+#mesondefine HAVE_RES_NCLOSE
+
+/* Define to 1 if you have the 'res_ndestroy' function. */
+#mesondefine HAVE_RES_NDESTROY
+
+/* Define to 1 if you have the 'res_ninit' function. */
+#mesondefine HAVE_RES_NINIT
+
+/* Define to 1 if you have the 'res_nquery' function. */
+#mesondefine HAVE_RES_NQUERY
+
/* Define to 1 if you have the <sched.h> header file. */
#mesondefine HAVE_SCHED_H
diff --git a/config.h.win32.in b/config.h.win32.in
index b607cca9c..b50d8146a 100644
--- a/config.h.win32.in
+++ b/config.h.win32.in
@@ -356,6 +356,18 @@
/* Define to 1 if you have the 'res_init' function. */
/* #undef HAVE_RES_INIT */
+/* Define to 1 if you have the 'res_nclose' function. */
+/* #undef HAVE_RES_NCLOSE */
+
+/* Define to 1 if you have the 'res_ndestroy' function. */
+/* #undef HAVE_RES_NDESTROY */
+
+/* Define to 1 if you have the 'res_ninit' function. */
+/* #undef HAVE_RES_NINIT */
+
+/* Define to 1 if you have the 'res_nquery' function. */
+/* #undef HAVE_RES_NQUERY */
+
/* Define to 1 if you have the <sched.h> header file. */
/* #undef HAVE_SCHED_H */
diff --git a/configure.ac b/configure.ac
index b28dbfbe0..44bebe5ba 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,7 +31,7 @@ m4_define(glib_configure_ac)
m4_define([glib_major_version], [2])
m4_define([glib_minor_version], [55])
-m4_define([glib_micro_version], [1])
+m4_define([glib_micro_version], [2])
m4_define([glib_interface_age], [0])
m4_define([glib_binary_age],
[m4_eval(100 * glib_minor_version + glib_micro_version)])
@@ -127,6 +127,8 @@ case "$host" in
glib_pid_type='void *'
glib_pid_format='p'
glib_pollfd_format='%#x'
+ glib_dir_separator='\\\\'
+ glib_searchpath_separator=';'
glib_cv_stack_grows=no
# Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
# don't seem to be quite good enough, at least not in mingw-runtime-3.14.
@@ -151,6 +153,8 @@ case "$host" in
glib_pid_type=int
glib_pid_format='i'
glib_pollfd_format='%d'
+ glib_dir_separator='/'
+ glib_searchpath_separator=':'
;;
esac
case $host in
@@ -1012,6 +1016,7 @@ AS_IF([test $glib_native_win32 = yes], [
[AC_MSG_ERROR(Could not find socket())]))
save_libs="$LIBS"
LIBS="$LIBS $NETWORK_LIBS"
+
AC_MSG_CHECKING([for res_init])
AC_TRY_LINK([#include <sys/types.h>
#include <netinet/in.h>
@@ -1022,6 +1027,54 @@ AS_IF([test $glib_native_win32 = yes], [
],[AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if you have the 'res_init' function.])
],[AC_MSG_RESULT([no])])
+
+ AC_MSG_CHECKING([for res_nclose])
+ AC_TRY_LINK([#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ ],[
+ struct __res_state res;
+ res_nclose(&res);
+ ],[AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_RES_NCLOSE, 1, [Define to 1 if you have the 'res_nclose' function.])
+ ],[AC_MSG_RESULT([no])])
+
+ AC_MSG_CHECKING([for res_ndestroy])
+ AC_TRY_LINK([#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ ],[
+ struct __res_state res;
+ res_ndestroy(&res);
+ ],[AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_RES_NDESTROY, 1, [Define to 1 if you have the 'res_ndestroy' function.])
+ ],[AC_MSG_RESULT([no])])
+
+ AC_MSG_CHECKING([for res_ninit])
+ AC_TRY_LINK([#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ ],[
+ struct __res_state res;
+ res_ninit(&res);
+ ],[AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_RES_NINIT, 1, [Define to 1 if you have the 'res_ninit' function.])
+ ],[AC_MSG_RESULT([no])])
+
+ AC_MSG_CHECKING([for res_nquery])
+ AC_TRY_LINK([#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ ],[
+ struct __res_state res;
+ res_nquery(&res, "test", 0, 0, (void *)0, 0);
+ ],[AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_RES_NQUERY, 1, [Define to 1 if you have the 'res_nquery' function.])
+ ],[AC_MSG_RESULT([no])])
LIBS="$save_libs"
])
AC_SUBST(NETWORK_LIBS)
@@ -2945,6 +2998,11 @@ typedef $g_pid_type GPid;
#define GLIB_SYSDEF_MSG_PEEK $g_msg_peek
#define GLIB_SYSDEF_MSG_DONTROUTE $g_msg_dontroute
+#define G_DIR_SEPARATOR '$g_dir_separator'
+#define G_DIR_SEPARATOR_S "$g_dir_separator"
+#define G_SEARCHPATH_SEPARATOR '$g_searchpath_separator'
+#define G_SEARCHPATH_SEPARATOR_S "$g_searchpath_separator"
+
G_END_DECLS
#endif /* __GLIBCONFIG_H__ */
@@ -3217,6 +3275,9 @@ g_memory_barrier_needed="$glib_memory_barrier_needed"
g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations"
g_module_suffix="$glib_gmodule_suffix"
+g_dir_separator="$glib_dir_separator"
+g_searchpath_separator="$glib_searchpath_separator"
+
g_pid_type="$glib_pid_type"
g_pid_format="\"$glib_pid_format\""
g_pollfd_format="\"$glib_pollfd_format\""
@@ -3504,6 +3565,8 @@ tests/refcount/Makefile
m4macros/Makefile
])
+# We need this command because the configure script will not preserve
+# the same attributes of the template files
AC_CONFIG_COMMANDS([chmod-scripts],
[chmod 0755 glib-zip
chmod 0755 glib-gettextize
diff --git a/docs/reference/gio/gdbus-codegen.xml b/docs/reference/gio/gdbus-codegen.xml
index 27b25ffa2..b1145e5ef 100644
--- a/docs/reference/gio/gdbus-codegen.xml
+++ b/docs/reference/gio/gdbus-codegen.xml
@@ -35,7 +35,11 @@
<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>--pragma-once</option></arg>
<arg><option>--xml-files</option> <replaceable>FILE</replaceable></arg>
+ <arg><option>--header</option></arg>
+ <arg><option>--body</option></arg>
+ <arg><option>--output</option> <replaceable>OUTFILE</replaceable></arg>
<group choice="plain" rep="repeat">
<arg>
<option>--annotate</option>
@@ -55,13 +59,17 @@
<title>Description</title>
<para>
<command>gdbus-codegen</command> is used to generate code and/or
- documentation for one or more D-Bus interfaces. The tool reads
+ documentation for one or more D-Bus interfaces.
+ </para>
+ <para>
+ <command>gdbus-codegen</command> reads
<ulink
url="http://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format">D-Bus
- Introspection XML</ulink> files and generates output files. The
- tool currently supports generating C code (via
- <option>--generate-c-code</option>) and Docbook XML (via
- <option>--generate-docbook</option>).
+ Introspection XML</ulink> from files passed as additional
+ arguments on the command line and generates output files.
+ It currently supports generating C source code (via
+ <option>--body</option>) or header (via <option>--header</option>)
+ and Docbook XML (via <option>--generate-docbook</option>).
</para>
</refsect1>
@@ -81,6 +89,20 @@
#GDBusObjectManagerServer instance.
</para>
<para>
+ For C code generation either <option>--body</option> that
+ generates source code, or <option>--header</option> that
+ generates headers, can be used. These options must be used along with
+ <option>--output</option>, which is used to specify the file to output to.
+ </para>
+ <para>
+ Both files can be generated at the same time by using
+ <option>--generate-c-code</option>, but this option is deprecated.
+ In this case <option>--output</option> cannot be used due to the
+ generation of multiple files. Instead pass
+ <option>--output-directory</option> to specify the directory to put
+ the output files in. By default the current directory will be used.
+ </para>
+ <para>
The name of each generated C type is derived from the D-Bus
interface name stripped with the prefix given with
<option>--interface-prefix</option> and with the dots removed and
@@ -152,6 +174,7 @@
<term><option>--xml-files</option> <replaceable>FILE</replaceable></term>
<listitem>
<para>
+ This option is deprecated; use positional arguments instead.
The D-Bus introspection XML file.
</para>
</listitem>
@@ -179,6 +202,11 @@
<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>
@@ -211,6 +239,17 @@
</varlistentry>
<varlistentry>
+ <term><option>--pragma-once</option></term>
+ <listitem>
+ <para>
+ If this option is passed, the
+ <ulink url="https://en.wikipedia.org/wiki/Pragma_once">&#35;pragma once</ulink>
+ preprocessor directive is used instead of include guards.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>--c-generate-object-manager</option></term>
<listitem>
<para>
@@ -242,6 +281,60 @@
<para>
Directory to output generated source to. Equivalent to changing directory before generation.
</para>
+ <para>
+ This option cannot be used with neither <option>--body</option> nor
+ <option>--header</option>, and <option>--output</option> must be used.
+ </para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--header</option></term>
+ <listitem>
+ <para>
+ If this option is passed, it will generate the header code and write it to the disk by
+ using the path and file name provided by <option>--output</option>.
+ </para>
+ <para>
+ Using <option>--generate-c-code</option>, <option>--generate-docbook</option> or
+ <option>--output-directory</option> are not allowed to be used along with
+ <option>--header</option> and <option>--body</option> options, because these options
+ are used to generate only one file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--body</option></term>
+ <listitem>
+ <para>
+ If this option is passed, it will generate the source code and write it to the disk by
+ using the path and file name provided by <option>--output</option>.
+ </para>
+ <para>
+ Using <option>--generate-c-code</option>, <option>--generate-docbook</option> or
+ <option>--output-directory</option> are not allowed to be used along with
+ <option>--header</option> and <option>--body</option> options, because these options
+ are used to generate only one file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>--output</option> <replaceable>OUTFILE</replaceable></term>
+ <listitem>
+ <para>
+ The full path where the header (<option>--header</option>) or the source code
+ (<option>--body</option>) will be written, using the path and filename provided by
+ <option>--output</option>. The full path could be something like
+ <literal>$($OUTFILE).{c,h}</literal>.
+ </para>
+ <para>
+ Using <option>--generate-c-code</option>, <option>--generate-docbook</option> or
+ <option>--output-directory</option> is not allowed along with
+ <option>--output</option>, because the latter is used to generate only one file.
+ </para>
</listitem>
</varlistentry>
diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt
index 277ca6184..2eb7efc74 100644
--- a/docs/reference/gio/gio-sections.txt
+++ b/docs/reference/gio/gio-sections.txt
@@ -91,6 +91,7 @@ g_file_hash
g_file_equal
g_file_get_basename
g_file_get_path
+g_file_peek_path
g_file_get_uri
g_file_get_parse_name
g_file_get_parent
diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt
index dd1d5dea6..2832983ee 100644
--- a/docs/reference/glib/glib-sections.txt
+++ b/docs/reference/glib/glib-sections.txt
@@ -1987,6 +1987,7 @@ g_key_file_has_key
g_key_file_get_value
g_key_file_get_string
g_key_file_get_locale_string
+g_key_file_get_locale_for_key
g_key_file_get_boolean
g_key_file_get_integer
g_key_file_get_int64
diff --git a/docs/reference/gobject/glib-mkenums.xml b/docs/reference/gobject/glib-mkenums.xml
index 545857f22..a59cacf43 100644
--- a/docs/reference/gobject/glib-mkenums.xml
+++ b/docs/reference/gobject/glib-mkenums.xml
@@ -32,17 +32,16 @@
</refsynopsisdiv>
<refsect1><title>Description</title>
-<para><command>glib-mkenums</command> is a small perl-script utility that
-parses C code to extract enum definitions and produces enum descriptions based
-on text templates specified by the user. Most frequently this script is used to
-produce C code that contains enum values as strings so programs can provide
-value name strings for introspection.
+<para><command>glib-mkenums</command> is a small utility that parses C code to
+extract enum definitions and produces enum descriptions based on text templates
+specified by the user. Typically, you can use this tool to generate enumeration
+types for the GType type system, for #GObject properties and signal marshalling;
+additionally, you can use it to generate enumeration values of #GSettings schemas.
</para>
<para><command>glib-mkenums</command> takes a list of valid C code files as
-input. The options specified control the text that is output, certain
-substitutions are performed on the text templates for keywords enclosed
-in @ characters.
+input. The options specified control the text that generated, substituting various
+keywords enclosed in @ characters in the templates.
</para>
<refsect2><title>Production text substitutions</title>
@@ -63,7 +62,7 @@ typedef enum
<listitem><para>
The name of the enum currently being processed, enum names are assumed to be
properly namespaced and to use mixed capitalization to separate
-words (e.g. PrefixTheXEnum).
+words (e.g. <literal>PrefixTheXEnum</literal>).
</para></listitem>
</varlistentry>
@@ -71,7 +70,7 @@ words (e.g. PrefixTheXEnum).
<term>@enum_name@</term>
<listitem><para>
The enum name with words lowercase and word-separated by underscores
-(e.g. prefix_the_xenum).
+(e.g. <literal>prefix_the_xenum</literal>).
</para></listitem>
</varlistentry>
@@ -79,7 +78,7 @@ The enum name with words lowercase and word-separated by underscores
<term>@ENUMNAME@</term>
<listitem><para>
The enum name with words uppercase and word-separated by underscores
-(e.g. PREFIX_THE_XENUM).
+(e.g. <literal>PREFIX_THE_XENUM</literal>).
</para></listitem>
</varlistentry>
@@ -87,14 +86,14 @@ The enum name with words uppercase and word-separated by underscores
<term>@ENUMSHORT@</term>
<listitem><para>
The enum name with words uppercase and word-separated by underscores,
-prefix stripped (e.g. THE_XENUM).
+prefix stripped (e.g. <literal>THE_XENUM</literal>).
</para></listitem>
</varlistentry>
<varlistentry>
<term>@ENUMPREFIX@</term>
<listitem><para>
-The prefix of the enum name (e.g. PREFIX).
+The prefix of the enum name (e.g. <literal>PREFIX</literal>).
</para></listitem>
</varlistentry>
@@ -104,7 +103,7 @@ The prefix of the enum name (e.g. PREFIX).
The enum value name currently being processed with words uppercase and
word-separated by underscores,
this is the assumed literal notation of enum values in the C sources
-(e.g. PREFIX_THE_XVALUE).
+(e.g. <literal>PREFIX_THE_XVALUE</literal>).
</para></listitem>
</varlistentry>
@@ -114,19 +113,17 @@ this is the assumed literal notation of enum values in the C sources
A nick name for the enum value currently being processed, this is usually
generated by stripping common prefix words of all the enum values of the
current enum, the words are lowercase and underscores are substituted by a
-minus (e.g. the-xvalue).
+minus (e.g. <literal>the-xvalue</literal>).
</para></listitem>
</varlistentry>
<varlistentry>
<term>@valuenum@</term>
<listitem><para>
-The integer value for the enum value currently being processed. This is
-calculated by using <command>perl</command> to attempt to evaluate the
-expression as it appears in the C source code. If evaluation fails then
-<command>glib-mkenums</command> will exit with an error status, but this
-only happens if <literal>@valuenum@</literal> appears in your value
-production template. (Since: 2.26)
+The integer value for the enum value currently being processed. If the
+evaluation fails then <command>glib-mkenums</command> will exit with an
+error status, but this only happens if <literal>@valuenum@</literal>
+appears in your value production template. (Since: 2.26)
</para></listitem>
</varlistentry>
@@ -162,7 +159,8 @@ The name of the input file currently being processed (e.g. foo.h).
<varlistentry>
<term>@basename@</term>
<listitem><para>
-The base name of the input file currently being processed (e.g. foo.h). (Since: 2.22)
+The base name of the input file currently being processed (e.g. foo.h). Typically
+you want to use <literal>@basename@</literal> in place of <literal>@filename@</literal> in your templates, to improve the reproducibility of the build. (Since: 2.22)
</para></listitem>
</varlistentry>
</variablelist>
@@ -178,7 +176,7 @@ indicate this enum definition to be skipped, or for it to be treated as
a flags definition, or to specify the common prefix to be stripped from
all values to generate value nicknames, respectively. The "underscore_name"
option can be used to specify the word separation used in the *_get_type()
-function. For instance, /*&lt; underscore_name=gnome_vfs_uri_hide_options &gt;*/.
+function. For instance, <literal>/*&lt; underscore_name=gnome_vfs_uri_hide_options &gt;*/</literal>.
</para>
<para>
Per value definition, the options "skip" and "nick" are supported.
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 9b3d04ee9..d18f4dbe6 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -345,6 +345,8 @@ win32_actual_sources = \
gwin32outputstream.c \
gwin32outputstream.h \
gwin32networking.h \
+ gwin32networkmonitor.c \
+ gwin32networkmonitor.h \
$(NULL)
win32_more_sources_for_vcproj = \
diff --git a/gio/gdatainputstream.c b/gio/gdatainputstream.c
index 348ce4445..78a9b7d43 100644
--- a/gio/gdatainputstream.c
+++ b/gio/gdatainputstream.c
@@ -915,6 +915,8 @@ scan_for_chars (GDataInputStream *stream,
* before encountering any of the stop characters. Set @length to
* a #gsize to get the length of the string. This function will
* return %NULL on an error.
+ * Deprecated: 2.56: Use g_data_input_stream_read_upto() instead, which has more
+ * consistent behaviour regarding the stop character.
*/
char *
g_data_input_stream_read_until (GDataInputStream *stream,
@@ -1170,6 +1172,8 @@ g_data_input_stream_read_line_async (GDataInputStream *stream,
* g_data_input_stream_read_upto_async() instead.
*
* Since: 2.20
+ * Deprecated: 2.56: Use g_data_input_stream_read_upto_async() instead, which
+ * has more consistent behaviour regarding the stop character.
*/
void
g_data_input_stream_read_until_async (GDataInputStream *stream,
@@ -1277,6 +1281,8 @@ g_data_input_stream_read_line_finish_utf8 (GDataInputStream *stream,
* before encountering any of the stop characters. Set @length to
* a #gsize to get the length of the string. This function will
* return %NULL on an error.
+ * Deprecated: 2.56: Use g_data_input_stream_read_upto_finish() instead, which
+ * has more consistent behaviour regarding the stop character.
*/
gchar *
g_data_input_stream_read_until_finish (GDataInputStream *stream,
diff --git a/gio/gdatainputstream.h b/gio/gdatainputstream.h
index c37b7971f..3ad3b825f 100644
--- a/gio/gdatainputstream.h
+++ b/gio/gdatainputstream.h
@@ -135,20 +135,20 @@ char * g_data_input_stream_read_line_finish_utf8(GDataInputStrea
GAsyncResult *result,
gsize *length,
GError **error);
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_56_FOR (g_data_input_stream_read_upto)
char * g_data_input_stream_read_until (GDataInputStream *stream,
const gchar *stop_chars,
gsize *length,
GCancellable *cancellable,
GError **error);
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_56_FOR (g_data_input_stream_read_upto_async)
void g_data_input_stream_read_until_async (GDataInputStream *stream,
const gchar *stop_chars,
gint io_priority,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_56_FOR (g_data_input_stream_read_upto_finish)
char * g_data_input_stream_read_until_finish (GDataInputStream *stream,
GAsyncResult *result,
gsize *length,
diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py
index 1dbf94d9b..d98f8973b 100644
--- a/gio/gdbus-2.0/codegen/codegen.py
+++ b/gio/gdbus-2.0/codegen/codegen.py
@@ -1,8 +1,10 @@
# -*- Mode: Python -*-
+# coding=utf-8
# GDBus - GLib D-Bus Library
#
# Copyright (C) 2008-2011 Red Hat, Inc.
+# Copyright (C) 2018 Iñigo Martínez <inigomartinez@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -24,245 +26,88 @@ import sys
from . import config
from . import utils
from . import dbustypes
+from .utils import print_error
+
+LICENSE_STR = '''/*
+ * Generated by gdbus-codegen {!s}. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the D-Bus interface description
+ * it was derived from.
+ */\n'''
+
+def generate_namespace(namespace):
+ ns = namespace
+ if len(namespace) > 0:
+ if utils.is_ugly_case(namespace):
+ ns = namespace.replace('_', '')
+ ns_upper = namespace.upper() + '_'
+ ns_lower = namespace.lower() + '_'
+ else:
+ ns_upper = utils.camel_case_to_uscore(namespace).upper() + '_'
+ ns_lower = utils.camel_case_to_uscore(namespace).lower() + '_'
+ else:
+ ns_upper = ''
+ ns_lower = ''
-# ----------------------------------------------------------------------------------------------------
+ return (ns, ns_upper, ns_lower)
-class CodeGenerator:
- def __init__(self, ifaces, namespace, interface_prefix, generate_objmanager,
- generate_autocleanup, docbook_gen, h, c, header_name):
- self.docbook_gen = docbook_gen
+class HeaderCodeGenerator:
+ def __init__(self, ifaces, namespace, generate_objmanager,
+ generate_autocleanup, header_name, use_pragma, outfile):
+ self.ifaces = ifaces
+ self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
self.generate_objmanager = generate_objmanager
self.generate_autocleanup = generate_autocleanup
- self.ifaces = ifaces
- self.h = h
- self.c = c
- self.header_name = header_name
- self.namespace = namespace
- if len(namespace) > 0:
- if utils.is_ugly_case(namespace):
- self.namespace = namespace.replace('_', '')
- self.ns_upper = namespace.upper() + '_'
- self.ns_lower = namespace.lower() + '_'
- else:
- self.ns_upper = utils.camel_case_to_uscore(namespace).upper() + '_'
- self.ns_lower = utils.camel_case_to_uscore(namespace).lower() + '_'
- else:
- self.ns_upper = ''
- self.ns_lower = ''
- self.interface_prefix = interface_prefix
self.header_guard = header_name.upper().replace('.', '_').replace('-', '_').replace('/', '_').replace(':', '_')
+ self.use_pragma = use_pragma
+ self.outfile = outfile
# ----------------------------------------------------------------------------------------------------
- def generate_intro(self):
- self.c.write('/*\n'
- ' * Generated by gdbus-codegen %s. DO NOT EDIT.\n'
- ' *\n'
- ' * The license of this code is the same as for the D-Bus interface description\n'
- ' * it was derived from.\n'
- ' */\n'
- '\n'
- %(config.VERSION))
- self.c.write('#ifdef HAVE_CONFIG_H\n'
- '# include "config.h"\n'
- '#endif\n'
- '\n'
- '#include "%s"\n'
- '\n'
- '#include <string.h>\n'
- %(self.header_name))
-
- self.c.write('#ifdef G_OS_UNIX\n'
- '# include <gio/gunixfdlist.h>\n'
- '#endif\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusArgInfo parent_struct;\n'
- ' gboolean use_gvariant;\n'
- '} _ExtendedGDBusArgInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusMethodInfo parent_struct;\n'
- ' const gchar *signal_name;\n'
- ' gboolean pass_fdlist;\n'
- '} _ExtendedGDBusMethodInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusSignalInfo parent_struct;\n'
- ' const gchar *signal_name;\n'
- '} _ExtendedGDBusSignalInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusPropertyInfo parent_struct;\n'
- ' const gchar *hyphen_name;\n'
- ' gboolean use_gvariant;\n'
- '} _ExtendedGDBusPropertyInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' GDBusInterfaceInfo parent_struct;\n'
- ' const gchar *hyphen_name;\n'
- '} _ExtendedGDBusInterfaceInfo;\n'
- '\n')
-
- self.c.write('typedef struct\n'
- '{\n'
- ' const _ExtendedGDBusPropertyInfo *info;\n'
- ' guint prop_id;\n'
- ' GValue orig_value; /* the value before the change */\n'
- '} ChangedProperty;\n'
- '\n'
- 'static void\n'
- '_changed_property_free (ChangedProperty *data)\n'
- '{\n'
- ' g_value_unset (&data->orig_value);\n'
- ' g_free (data);\n'
- '}\n'
- '\n')
+ def generate_header_preamble(self):
+ self.outfile.write(LICENSE_STR.format(config.VERSION))
+ self.outfile.write('\n')
- self.c.write('static gboolean\n'
- '_g_strv_equal0 (gchar **a, gchar **b)\n'
- '{\n'
- ' gboolean ret = FALSE;\n'
- ' guint n;\n'
- ' if (a == NULL && b == NULL)\n'
- ' {\n'
- ' ret = TRUE;\n'
- ' goto out;\n'
- ' }\n'
- ' if (a == NULL || b == NULL)\n'
- ' goto out;\n'
- ' if (g_strv_length (a) != g_strv_length (b))\n'
- ' goto out;\n'
- ' for (n = 0; a[n] != NULL; n++)\n'
- ' if (g_strcmp0 (a[n], b[n]) != 0)\n'
- ' goto out;\n'
- ' ret = TRUE;\n'
- 'out:\n'
- ' return ret;\n'
- '}\n'
- '\n')
+ if self.use_pragma:
+ self.outfile.write('#pragma once\n')
+ else:
+ self.outfile.write('#ifndef __{!s}__\n'.format(self.header_guard))
+ self.outfile.write('#define __{!s}__\n'.format(self.header_guard))
- self.c.write('static gboolean\n'
- '_g_variant_equal0 (GVariant *a, GVariant *b)\n'
- '{\n'
- ' gboolean ret = FALSE;\n'
- ' if (a == NULL && b == NULL)\n'
- ' {\n'
- ' ret = TRUE;\n'
- ' goto out;\n'
- ' }\n'
- ' if (a == NULL || b == NULL)\n'
- ' goto out;\n'
- ' ret = g_variant_equal (a, b);\n'
- 'out:\n'
- ' return ret;\n'
- '}\n'
- '\n')
-
- # simplified - only supports the types we use
- self.c.write('G_GNUC_UNUSED static gboolean\n'
- '_g_value_equal (const GValue *a, const GValue *b)\n'
- '{\n'
- ' gboolean ret = FALSE;\n'
- ' g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));\n'
- ' switch (G_VALUE_TYPE (a))\n'
- ' {\n'
- ' case G_TYPE_BOOLEAN:\n'
- ' ret = (g_value_get_boolean (a) == g_value_get_boolean (b));\n'
- ' break;\n'
- ' case G_TYPE_UCHAR:\n'
- ' ret = (g_value_get_uchar (a) == g_value_get_uchar (b));\n'
- ' break;\n'
- ' case G_TYPE_INT:\n'
- ' ret = (g_value_get_int (a) == g_value_get_int (b));\n'
- ' break;\n'
- ' case G_TYPE_UINT:\n'
- ' ret = (g_value_get_uint (a) == g_value_get_uint (b));\n'
- ' break;\n'
- ' case G_TYPE_INT64:\n'
- ' ret = (g_value_get_int64 (a) == g_value_get_int64 (b));\n'
- ' break;\n'
- ' case G_TYPE_UINT64:\n'
- ' ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));\n'
- ' break;\n'
- ' case G_TYPE_DOUBLE:\n'
- ' {\n'
- ' /* Avoid -Wfloat-equal warnings by doing a direct bit compare */\n'
- ' gdouble da = g_value_get_double (a);\n'
- ' gdouble db = g_value_get_double (b);\n'
- ' ret = memcmp (&da, &db, sizeof (gdouble)) == 0;\n'
- ' }\n'
- ' break;\n'
- ' case G_TYPE_STRING:\n'
- ' ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);\n'
- ' break;\n'
- ' case G_TYPE_VARIANT:\n'
- ' ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));\n'
- ' break;\n'
- ' default:\n'
- ' if (G_VALUE_TYPE (a) == G_TYPE_STRV)\n'
- ' ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));\n'
- ' else\n'
- ' g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));\n'
- ' break;\n'
- ' }\n'
- ' return ret;\n'
- '}\n'
- '\n')
-
- self.h.write('/*\n'
- ' * Generated by gdbus-codegen %s. DO NOT EDIT.\n'
- ' *\n'
- ' * The license of this code is the same as for the D-Bus interface description\n'
- ' * it was derived from.\n'
- ' */\n'
- '\n'
- '#ifndef __%s__\n'
- '#define __%s__\n'
- '\n'%(config.VERSION, self.header_guard, self.header_guard))
- self.h.write('#include <gio/gio.h>\n'
- '\n'
- 'G_BEGIN_DECLS\n'
- '\n')
+ self.outfile.write('\n')
+ self.outfile.write('#include <gio/gio.h>\n')
+ self.outfile.write('\n')
+ self.outfile.write('G_BEGIN_DECLS\n')
+ self.outfile.write('\n')
# ----------------------------------------------------------------------------------------------------
def declare_types(self):
for i in self.ifaces:
- self.h.write('\n')
- self.h.write('/* ------------------------------------------------------------------------ */\n')
- self.h.write('/* Declarations for %s */\n'%i.name)
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* ------------------------------------------------------------------------ */\n')
+ self.outfile.write('/* Declarations for %s */\n'%i.name)
+ self.outfile.write('\n')
# First the GInterface
- self.h.write('#define %sTYPE_%s (%s_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.h.write('#define %s%s(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s, %s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %sIS_%s(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('#define %s%s_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_%s, %sIface))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%s;\n'%(i.camel_name))
- self.h.write('typedef struct _%s %s;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sIface %sIface;\n'%(i.camel_name, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%sIface\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' GTypeInterface parent_iface;\n')
+ self.outfile.write('#define %sTYPE_%s (%s_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#define %s%s(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s, %s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %sIS_%s(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('#define %s%s_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_%s, %sIface))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%s;\n'%(i.camel_name))
+ self.outfile.write('typedef struct _%s %s;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sIface %sIface;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sIface\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' GTypeInterface parent_iface;\n')
function_pointers = {}
# vfuncs for methods
if len(i.methods) > 0:
- self.h.write('\n')
+ self.outfile.write('\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
@@ -280,7 +125,7 @@ class CodeGenerator:
# vfuncs for signals
if len(i.signals) > 0:
- self.h.write('\n')
+ self.outfile.write('\n')
for s in i.signals:
key = (s.since, '_signal_%s'%s.name_lower)
value = ' void (*%s) (\n'%(s.name_lower)
@@ -292,7 +137,7 @@ class CodeGenerator:
# vfuncs for properties
if len(i.properties) > 0:
- self.h.write('\n')
+ self.outfile.write('\n')
for p in i.properties:
key = (p.since, '_prop_get_%s'%p.name_lower)
value = ' %s (*get_%s) (%s *object);\n\n'%(p.arg.ctype_in, p.name_lower, i.camel_name)
@@ -308,454 +153,635 @@ class CodeGenerator:
# See https://bugzilla.gnome.org/show_bug.cgi?id=647577#c5
# for discussion
for key in sorted(function_pointers.keys(), key=utils.version_cmp_key):
- self.h.write('%s'%function_pointers[key])
+ self.outfile.write('%s'%function_pointers[key])
- self.h.write('};\n')
- self.h.write('\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
if self.generate_autocleanup == 'all':
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, g_object_unref)\n' % (i.camel_name))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
- self.h.write('\n')
- self.h.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower))
- self.h.write('guint %s_override_properties (GObjectClass *klass, guint property_id_begin);\n'%(i.name_lower))
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, g_object_unref)\n' % (i.camel_name))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %s_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+ self.outfile.write('\n')
+ self.outfile.write('GDBusInterfaceInfo *%s_interface_info (void);\n'%(i.name_lower))
+ self.outfile.write('guint %s_override_properties (GObjectClass *klass, guint property_id_begin);\n'%(i.name_lower))
+ self.outfile.write('\n')
# Then method call completion functions
if len(i.methods) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus method call completion functions: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus method call completion functions: */\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_complete_%s (\n'
- ' %s *object,\n'
- ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_complete_%s (\n'
+ ' %s *object,\n'
+ ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
if unix_fd:
- self.h.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.h.write(',\n %s%s'%(a.ctype_in, a.name))
- self.h.write(');\n')
- self.h.write('\n')
- self.h.write('\n')
+ self.outfile.write(',\n %s%s'%(a.ctype_in, a.name))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
+ self.outfile.write('\n')
# Then signal emission functions
if len(i.signals) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus signal emissions functions: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus signal emissions functions: */\n')
for s in i.signals:
if s.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_emit_%s (\n'
- ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_emit_%s (\n'
+ ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
for a in s.args:
- self.h.write(',\n %sarg_%s'%(a.ctype_in, a.name))
- self.h.write(');\n')
- self.h.write('\n')
- self.h.write('\n')
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
+ self.outfile.write('\n')
# Then method call declarations
if len(i.methods) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus method calls: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus method calls: */\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
# async begin
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_call_%s (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_call_%s (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.h.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList *fd_list')
- self.h.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n')
- self.h.write('\n')
+ self.outfile.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n')
+ self.outfile.write('\n')
# async finish
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('gboolean %s_call_%s_finish (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('gboolean %s_call_%s_finish (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.out_args:
- self.h.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList **out_fd_list')
- self.h.write(',\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n')
- self.h.write('\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n')
+ self.outfile.write('\n')
# sync
if m.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('gboolean %s_call_%s_sync (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('gboolean %s_call_%s_sync (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.h.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.h.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.h.write(',\n GUnixFDList **out_fd_list')
- self.h.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n')
- self.h.write('\n')
- self.h.write('\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n')
+ self.outfile.write('\n')
+ self.outfile.write('\n')
# Then the property accessor declarations
if len(i.properties) > 0:
- self.h.write('\n')
- self.h.write('/* D-Bus property accessors: */\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* D-Bus property accessors: */\n')
for p in i.properties:
# getter
if p.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s%s_get_%s (%s *object);\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s%s_get_%s (%s *object);\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
if p.arg.free_func != None:
if p.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s%s_dup_%s (%s *object);\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s%s_dup_%s (%s *object);\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name))
# setter
if p.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_set_%s (%s *object, %svalue);\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_set_%s (%s *object, %svalue);\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
+ self.outfile.write('\n')
# Then the proxy
- self.h.write('\n')
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_%s_PROXY (%s_proxy_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.h.write('#define %s%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_PROXY, %sProxy))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %sIS_%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('#define %sIS_%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sProxy %sProxy;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sProxyClass %sProxyClass;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sProxyPrivate %sProxyPrivate;\n'%(i.camel_name, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%sProxy\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusProxy parent_instance;\n')
- self.h.write(' %sProxyPrivate *priv;\n'%(i.camel_name))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sProxyClass\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' GDBusProxyClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_%s_PROXY (%s_proxy_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#define %s%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_PROXY, %sProxy))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_PROXY, %sProxyClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %sIS_%s_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('#define %sIS_%s_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_%s_PROXY))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sProxy %sProxy;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sProxyClass %sProxyClass;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sProxyPrivate %sProxyPrivate;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sProxy\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusProxy parent_instance;\n')
+ self.outfile.write(' %sProxyPrivate *priv;\n'%(i.camel_name))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sProxyClass\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusProxyClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %s_proxy_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' % (i.camel_name))
- self.h.write('#endif\n')
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' % (i.camel_name))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_proxy_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_proxy_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
+ self.outfile.write('\n')
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('void %s_proxy_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %s_proxy_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_proxy_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(i.camel_name, i.name_lower))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_proxy_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(i.camel_name, i.name_lower))
+ self.outfile.write('\n')
# Then the skeleton
- self.h.write('\n')
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_%s_SKELETON (%s_skeleton_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.h.write('#define %s%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_SKELETON, %sSkeleton))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %s%s_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
- self.h.write('#define %sIS_%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('#define %sIS_%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sSkeleton %sSkeleton;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sSkeletonClass %sSkeletonClass;\n'%(i.camel_name, i.camel_name))
- self.h.write('typedef struct _%sSkeletonPrivate %sSkeletonPrivate;\n'%(i.camel_name, i.camel_name))
- self.h.write('\n')
- self.h.write('struct _%sSkeleton\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusInterfaceSkeleton parent_instance;\n')
- self.h.write(' %sSkeletonPrivate *priv;\n'%(i.camel_name))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sSkeletonClass\n'%(i.camel_name))
- self.h.write('{\n')
- self.h.write(' GDBusInterfaceSkeletonClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
- self.h.write('\n')
+ self.outfile.write('\n')
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_%s_SKELETON (%s_skeleton_get_type ())\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#define %s%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_%s_SKELETON, %sSkeleton))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %s%s_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_%s_SKELETON, %sSkeletonClass))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write('#define %sIS_%s_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('#define %sIS_%s_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_%s_SKELETON))\n'%(i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sSkeleton %sSkeleton;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sSkeletonClass %sSkeletonClass;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('typedef struct _%sSkeletonPrivate %sSkeletonPrivate;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sSkeleton\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusInterfaceSkeleton parent_instance;\n')
+ self.outfile.write(' %sSkeletonPrivate *priv;\n'%(i.camel_name))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sSkeletonClass\n'%(i.camel_name))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusInterfaceSkeletonClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' % (i.camel_name))
- self.h.write('#endif\n')
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' % (i.camel_name))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%s_skeleton_new (void);\n'%(i.camel_name, i.name_lower))
- self.h.write('\n')
+ self.outfile.write('\n')
# Finally, the Object, ObjectProxy, ObjectSkeleton and ObjectManagerClient
if self.generate_objmanager:
- self.h.write('\n')
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT (%sobject_get_type ())\n'%(self.ns_upper, self.ns_lower))
- self.h.write('#define %sOBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sOBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObject;\n'%(self.namespace))
- self.h.write('typedef struct _%sObject %sObject;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectIface %sObjectIface;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectIface\n'%(self.namespace))
- self.h.write('{\n'
- ' GTypeInterface parent_iface;\n'
- '};\n'
- '\n')
- self.h.write('GType %sobject_get_type (void) G_GNUC_CONST;\n'
- '\n'
- %(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT (%sobject_get_type ())\n'%(self.ns_upper, self.ns_lower))
+ self.outfile.write('#define %sOBJECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sOBJECT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), %sTYPE_OBJECT, %sObject))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObject;\n'%(self.namespace))
+ self.outfile.write('typedef struct _%sObject %sObject;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectIface %sObjectIface;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectIface\n'%(self.namespace))
+ self.outfile.write('{\n'
+ ' GTypeInterface parent_iface;\n'
+ '};\n'
+ '\n')
+ self.outfile.write('GType %sobject_get_type (void) G_GNUC_CONST;\n'
+ '\n'
+ %(self.ns_lower))
for i in self.ifaces:
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write ('%s *%sobject_get_%s (%sObject *object);\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%sobject_get_%s (%sObject *object);\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
for i in self.ifaces:
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write ('%s *%sobject_peek_%s (%sObject *object);\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT_PROXY (%sobject_proxy_get_type ())\n'%(self.ns_upper, self.ns_lower))
- self.h.write('#define %sOBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_PROXY, %sObjectProxy))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sIS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sObjectProxy %sObjectProxy;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectProxyClass %sObjectProxyClass;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectProxyPrivate %sObjectProxyPrivate;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectProxy\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusObjectProxy parent_instance;\n')
- self.h.write(' %sObjectProxyPrivate *priv;\n'%(self.namespace))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sObjectProxyClass\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' GDBusObjectProxyClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('%s *%sobject_peek_%s (%sObject *object);\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT_PROXY (%sobject_proxy_get_type ())\n'%(self.ns_upper, self.ns_lower))
+ self.outfile.write('#define %sOBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_PROXY, %sObjectProxy))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_PROXY, %sObjectProxyClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sIS_OBJECT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_PROXY))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sObjectProxy %sObjectProxy;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectProxyClass %sObjectProxyClass;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectProxyPrivate %sObjectProxyPrivate;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectProxy\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusObjectProxy parent_instance;\n')
+ self.outfile.write(' %sObjectProxyPrivate *priv;\n'%(self.namespace))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectProxyClass\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusObjectProxyClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_proxy_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' % (self.namespace))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('%sObjectProxy *%sobject_proxy_new (GDBusConnection *connection, const gchar *object_path);\n'%(self.namespace, self.ns_lower))
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type ())\n'%(self.ns_upper, self.ns_lower))
- self.h.write('#define %sOBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_SKELETON, %sObjectSkeleton))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sIS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sObjectSkeleton %sObjectSkeleton;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectSkeletonClass %sObjectSkeletonClass;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectSkeletonPrivate %sObjectSkeletonPrivate;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectSkeleton\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusObjectSkeleton parent_instance;\n')
- self.h.write(' %sObjectSkeletonPrivate *priv;\n'%(self.namespace))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sObjectSkeletonClass\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' GDBusObjectSkeletonClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' % (self.namespace))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('%sObjectProxy *%sobject_proxy_new (GDBusConnection *connection, const gchar *object_path);\n'%(self.namespace, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT_SKELETON (%sobject_skeleton_get_type ())\n'%(self.ns_upper, self.ns_lower))
+ self.outfile.write('#define %sOBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_SKELETON, %sObjectSkeleton))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_SKELETON, %sObjectSkeletonClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sIS_OBJECT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_SKELETON))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sObjectSkeleton %sObjectSkeleton;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectSkeletonClass %sObjectSkeletonClass;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectSkeletonPrivate %sObjectSkeletonPrivate;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectSkeleton\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusObjectSkeleton parent_instance;\n')
+ self.outfile.write(' %sObjectSkeletonPrivate *priv;\n'%(self.namespace))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectSkeletonClass\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusObjectSkeletonClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_skeleton_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' % (self.namespace))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n'
- %(self.namespace, self.ns_lower))
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' % (self.namespace))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n'
+ %(self.namespace, self.ns_lower))
for i in self.ifaces:
if i.deprecated:
- self.h.write('G_GNUC_DEPRECATED ')
- self.h.write ('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_);\n'
- %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
- self.h.write('\n')
-
- self.h.write('/* ---- */\n')
- self.h.write('\n')
- self.h.write('#define %sTYPE_OBJECT_MANAGER_CLIENT (%sobject_manager_client_get_type ())\n'%(self.ns_upper, self.ns_lower))
- self.h.write('#define %sOBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClient))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sOBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
- self.h.write('#define %sIS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('#define %sIS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
- self.h.write('\n')
- self.h.write('typedef struct _%sObjectManagerClient %sObjectManagerClient;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectManagerClientClass %sObjectManagerClientClass;\n'%(self.namespace, self.namespace))
- self.h.write('typedef struct _%sObjectManagerClientPrivate %sObjectManagerClientPrivate;\n'%(self.namespace, self.namespace))
- self.h.write('\n')
- self.h.write('struct _%sObjectManagerClient\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' /*< private >*/\n')
- self.h.write(' GDBusObjectManagerClient parent_instance;\n')
- self.h.write(' %sObjectManagerClientPrivate *priv;\n'%(self.namespace))
- self.h.write('};\n')
- self.h.write('\n')
- self.h.write('struct _%sObjectManagerClientClass\n'%(self.namespace))
- self.h.write('{\n')
- self.h.write(' GDBusObjectManagerClientClass parent_class;\n')
- self.h.write('};\n')
- self.h.write('\n')
+ self.outfile.write('G_GNUC_DEPRECATED ')
+ self.outfile.write('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_);\n'
+ %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
+ self.outfile.write('\n')
+
+ self.outfile.write('/* ---- */\n')
+ self.outfile.write('\n')
+ self.outfile.write('#define %sTYPE_OBJECT_MANAGER_CLIENT (%sobject_manager_client_get_type ())\n'%(self.ns_upper, self.ns_lower))
+ self.outfile.write('#define %sOBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClient))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sOBJECT_MANAGER_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), %sTYPE_OBJECT_MANAGER_CLIENT, %sObjectManagerClientClass))\n'%(self.ns_upper, self.ns_upper, self.namespace))
+ self.outfile.write('#define %sIS_OBJECT_MANAGER_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), %sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('#define %sIS_OBJECT_MANAGER_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), %sTYPE_OBJECT_MANAGER_CLIENT))\n'%(self.ns_upper, self.ns_upper))
+ self.outfile.write('\n')
+ self.outfile.write('typedef struct _%sObjectManagerClient %sObjectManagerClient;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectManagerClientClass %sObjectManagerClientClass;\n'%(self.namespace, self.namespace))
+ self.outfile.write('typedef struct _%sObjectManagerClientPrivate %sObjectManagerClientPrivate;\n'%(self.namespace, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectManagerClient\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' /*< private >*/\n')
+ self.outfile.write(' GDBusObjectManagerClient parent_instance;\n')
+ self.outfile.write(' %sObjectManagerClientPrivate *priv;\n'%(self.namespace))
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
+ self.outfile.write('struct _%sObjectManagerClientClass\n'%(self.namespace))
+ self.outfile.write('{\n')
+ self.outfile.write(' GDBusObjectManagerClientClass parent_class;\n')
+ self.outfile.write('};\n')
+ self.outfile.write('\n')
if self.generate_autocleanup in ('objects', 'all'):
- self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
- self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n' % (self.namespace))
- self.h.write('#endif\n')
- self.h.write('\n')
- self.h.write('GType %sobject_manager_client_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
- self.h.write('\n')
- self.h.write('GType %sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);\n'%(self.ns_lower))
- self.h.write('\n')
- self.h.write('void %sobject_manager_client_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('\n')
- self.h.write('void %sobject_manager_client_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error);\n'
- %(self.ns_lower))
- self.h.write('\n')
+ self.outfile.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n')
+ self.outfile.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n' % (self.namespace))
+ self.outfile.write('#endif\n')
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_manager_client_get_type (void) G_GNUC_CONST;\n'%(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('GType %sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);\n'%(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('void %sobject_manager_client_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('void %sobject_manager_client_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('GDBusObjectManager *%sobject_manager_client_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error);\n'
+ %(self.ns_lower))
+ self.outfile.write('\n')
# ----------------------------------------------------------------------------------------------------
- def generate_outro(self):
- self.h.write('\n'
- 'G_END_DECLS\n'
- '\n'
- '#endif /* __%s__ */\n'%(self.header_guard))
+ def generate_header_postamble(self):
+ self.outfile.write('\n')
+ self.outfile.write('G_END_DECLS\n')
+
+ if not self.use_pragma:
+ self.outfile.write('\n')
+ self.outfile.write('#endif /* __{!s}__ */\n'.format(self.header_guard))
+
+ # ----------------------------------------------------------------------------------------------------
+
+ def generate(self):
+ self.generate_header_preamble()
+ self.declare_types()
+ self.generate_header_postamble()
+
+# ----------------------------------------------------------------------------------------------------
+
+class CodeGenerator:
+ def __init__(self, ifaces, namespace, generate_objmanager, header_name,
+ docbook_gen, outfile):
+ self.ifaces = ifaces
+ self.namespace, self.ns_upper, self.ns_lower = generate_namespace(namespace)
+ self.generate_objmanager = generate_objmanager
+ self.header_name = header_name
+ self.docbook_gen = docbook_gen
+ self.outfile = outfile
# ----------------------------------------------------------------------------------------------------
+ def generate_body_preamble(self):
+ self.outfile.write(LICENSE_STR.format(config.VERSION))
+ self.outfile.write('\n')
+ self.outfile.write('#ifdef HAVE_CONFIG_H\n'
+ '# include "config.h"\n'
+ '#endif\n'
+ '\n'
+ '#include "%s"\n'
+ '\n'
+ '#include <string.h>\n'
+ %(self.header_name))
+
+ self.outfile.write('#ifdef G_OS_UNIX\n'
+ '# include <gio/gunixfdlist.h>\n'
+ '#endif\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusArgInfo parent_struct;\n'
+ ' gboolean use_gvariant;\n'
+ '} _ExtendedGDBusArgInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusMethodInfo parent_struct;\n'
+ ' const gchar *signal_name;\n'
+ ' gboolean pass_fdlist;\n'
+ '} _ExtendedGDBusMethodInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusSignalInfo parent_struct;\n'
+ ' const gchar *signal_name;\n'
+ '} _ExtendedGDBusSignalInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusPropertyInfo parent_struct;\n'
+ ' const gchar *hyphen_name;\n'
+ ' gboolean use_gvariant;\n'
+ '} _ExtendedGDBusPropertyInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' GDBusInterfaceInfo parent_struct;\n'
+ ' const gchar *hyphen_name;\n'
+ '} _ExtendedGDBusInterfaceInfo;\n'
+ '\n')
+
+ self.outfile.write('typedef struct\n'
+ '{\n'
+ ' const _ExtendedGDBusPropertyInfo *info;\n'
+ ' guint prop_id;\n'
+ ' GValue orig_value; /* the value before the change */\n'
+ '} ChangedProperty;\n'
+ '\n'
+ 'static void\n'
+ '_changed_property_free (ChangedProperty *data)\n'
+ '{\n'
+ ' g_value_unset (&data->orig_value);\n'
+ ' g_free (data);\n'
+ '}\n'
+ '\n')
+
+ self.outfile.write('static gboolean\n'
+ '_g_strv_equal0 (gchar **a, gchar **b)\n'
+ '{\n'
+ ' gboolean ret = FALSE;\n'
+ ' guint n;\n'
+ ' if (a == NULL && b == NULL)\n'
+ ' {\n'
+ ' ret = TRUE;\n'
+ ' goto out;\n'
+ ' }\n'
+ ' if (a == NULL || b == NULL)\n'
+ ' goto out;\n'
+ ' if (g_strv_length (a) != g_strv_length (b))\n'
+ ' goto out;\n'
+ ' for (n = 0; a[n] != NULL; n++)\n'
+ ' if (g_strcmp0 (a[n], b[n]) != 0)\n'
+ ' goto out;\n'
+ ' ret = TRUE;\n'
+ 'out:\n'
+ ' return ret;\n'
+ '}\n'
+ '\n')
+
+ self.outfile.write('static gboolean\n'
+ '_g_variant_equal0 (GVariant *a, GVariant *b)\n'
+ '{\n'
+ ' gboolean ret = FALSE;\n'
+ ' if (a == NULL && b == NULL)\n'
+ ' {\n'
+ ' ret = TRUE;\n'
+ ' goto out;\n'
+ ' }\n'
+ ' if (a == NULL || b == NULL)\n'
+ ' goto out;\n'
+ ' ret = g_variant_equal (a, b);\n'
+ 'out:\n'
+ ' return ret;\n'
+ '}\n'
+ '\n')
+
+ # simplified - only supports the types we use
+ self.outfile.write('G_GNUC_UNUSED static gboolean\n'
+ '_g_value_equal (const GValue *a, const GValue *b)\n'
+ '{\n'
+ ' gboolean ret = FALSE;\n'
+ ' g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));\n'
+ ' switch (G_VALUE_TYPE (a))\n'
+ ' {\n'
+ ' case G_TYPE_BOOLEAN:\n'
+ ' ret = (g_value_get_boolean (a) == g_value_get_boolean (b));\n'
+ ' break;\n'
+ ' case G_TYPE_UCHAR:\n'
+ ' ret = (g_value_get_uchar (a) == g_value_get_uchar (b));\n'
+ ' break;\n'
+ ' case G_TYPE_INT:\n'
+ ' ret = (g_value_get_int (a) == g_value_get_int (b));\n'
+ ' break;\n'
+ ' case G_TYPE_UINT:\n'
+ ' ret = (g_value_get_uint (a) == g_value_get_uint (b));\n'
+ ' break;\n'
+ ' case G_TYPE_INT64:\n'
+ ' ret = (g_value_get_int64 (a) == g_value_get_int64 (b));\n'
+ ' break;\n'
+ ' case G_TYPE_UINT64:\n'
+ ' ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));\n'
+ ' break;\n'
+ ' case G_TYPE_DOUBLE:\n'
+ ' {\n'
+ ' /* Avoid -Wfloat-equal warnings by doing a direct bit compare */\n'
+ ' gdouble da = g_value_get_double (a);\n'
+ ' gdouble db = g_value_get_double (b);\n'
+ ' ret = memcmp (&da, &db, sizeof (gdouble)) == 0;\n'
+ ' }\n'
+ ' break;\n'
+ ' case G_TYPE_STRING:\n'
+ ' ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);\n'
+ ' break;\n'
+ ' case G_TYPE_VARIANT:\n'
+ ' ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));\n'
+ ' break;\n'
+ ' default:\n'
+ ' if (G_VALUE_TYPE (a) == G_TYPE_STRV)\n'
+ ' ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));\n'
+ ' else\n'
+ ' g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));\n'
+ ' break;\n'
+ ' }\n'
+ ' return ret;\n'
+ '}\n'
+ '\n')
+
def generate_annotations(self, prefix, annotations):
if annotations == None:
return
@@ -768,67 +794,67 @@ class CodeGenerator:
if a.key.startswith('org.gtk.GDBus'):
continue
- self.c.write('static const GDBusAnnotationInfo %s_%d =\n'
- '{\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'
- ' (gchar *) "%s",\n'%(prefix, n, a.key, a.value))
+ self.outfile.write('static const GDBusAnnotationInfo %s_%d =\n'
+ '{\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'
+ ' (gchar *) "%s",\n'%(prefix, n, a.key, a.value))
if len(a.annotations) == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &%s_%d_pointers\n'%(prefix, n))
- self.c.write('};\n'
- '\n')
+ self.outfile.write(' (GDBusAnnotationInfo **) &%s_%d_pointers\n'%(prefix, n))
+ self.outfile.write('};\n'
+ '\n')
n += 1
if n > 0:
- self.c.write('static const GDBusAnnotationInfo * const %s_pointers[] =\n'
- '{\n'%(prefix))
+ self.outfile.write('static const GDBusAnnotationInfo * const %s_pointers[] =\n'
+ '{\n'%(prefix))
m = 0;
for a in annotations:
if a.key.startswith('org.gtk.GDBus'):
continue
- self.c.write(' &%s_%d,\n'%(prefix, m))
+ self.outfile.write(' &%s_%d,\n'%(prefix, m))
m += 1
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
return n
def generate_args(self, prefix, args):
for a in args:
num_anno = self.generate_annotations('%s_arg_%s_annotation_info'%(prefix, a.name), a.annotations)
- self.c.write('static const _ExtendedGDBusArgInfo %s_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'
- ' (gchar *) "%s",\n'%(prefix, a.name, a.name, a.signature))
+ self.outfile.write('static const _ExtendedGDBusArgInfo %s_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'
+ ' (gchar *) "%s",\n'%(prefix, a.name, a.name, a.signature))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &%s_arg_%s_annotation_info_pointers\n'%(prefix, a.name))
- self.c.write(' },\n')
+ self.outfile.write(' (GDBusAnnotationInfo **) &%s_arg_%s_annotation_info_pointers\n'%(prefix, a.name))
+ self.outfile.write(' },\n')
if not utils.lookup_annotation(a.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
- self.c.write(' FALSE\n')
+ self.outfile.write(' FALSE\n')
else:
- self.c.write(' TRUE\n')
- self.c.write('};\n'
- '\n')
+ self.outfile.write(' TRUE\n')
+ self.outfile.write('};\n'
+ '\n')
if len(args) > 0:
- self.c.write('static const _ExtendedGDBusArgInfo * const %s_pointers[] =\n'
+ self.outfile.write('static const _ExtendedGDBusArgInfo * const %s_pointers[] =\n'
'{\n'%(prefix))
for a in args:
- self.c.write(' &%s_%s,\n'%(prefix, a.name))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &%s_%s,\n'%(prefix, a.name))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
def generate_introspection_for_interface(self, i):
- self.c.write('/* ---- Introspection data for %s ---- */\n'
- '\n'%(i.name))
+ self.outfile.write('/* ---- Introspection data for %s ---- */\n'
+ '\n'%(i.name))
if len(i.methods) > 0:
for m in i.methods:
@@ -840,37 +866,37 @@ class CodeGenerator:
num_anno = self.generate_annotations('_%s_method_%s_annotation_info'%(i.name_lower, m.name_lower), m.annotations)
- self.c.write('static const _ExtendedGDBusMethodInfo _%s_method_info_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'%(i.name_lower, m.name_lower, m.name))
+ self.outfile.write('static const _ExtendedGDBusMethodInfo _%s_method_info_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'%(i.name_lower, m.name_lower, m.name))
if len(m.in_args) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusArgInfo **) &_%s_method_info_%s_IN_ARG_pointers,\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' (GDBusArgInfo **) &_%s_method_info_%s_IN_ARG_pointers,\n'%(i.name_lower, m.name_lower))
if len(m.out_args) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusArgInfo **) &_%s_method_info_%s_OUT_ARG_pointers,\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' (GDBusArgInfo **) &_%s_method_info_%s_OUT_ARG_pointers,\n'%(i.name_lower, m.name_lower))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &_%s_method_%s_annotation_info_pointers\n'%(i.name_lower, m.name_lower))
- self.c.write(' },\n'
- ' "handle-%s",\n'
- ' %s\n'
- %(m.name_hyphen, 'TRUE' if unix_fd else 'FALSE'))
- self.c.write('};\n'
- '\n')
-
- self.c.write('static const _ExtendedGDBusMethodInfo * const _%s_method_info_pointers[] =\n'
- '{\n'%(i.name_lower))
+ self.outfile.write(' (GDBusAnnotationInfo **) &_%s_method_%s_annotation_info_pointers\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' },\n'
+ ' "handle-%s",\n'
+ ' %s\n'
+ %(m.name_hyphen, 'TRUE' if unix_fd else 'FALSE'))
+ self.outfile.write('};\n'
+ '\n')
+
+ self.outfile.write('static const _ExtendedGDBusMethodInfo * const _%s_method_info_pointers[] =\n'
+ '{\n'%(i.name_lower))
for m in i.methods:
- self.c.write(' &_%s_method_info_%s,\n'%(i.name_lower, m.name_lower))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &_%s_method_info_%s,\n'%(i.name_lower, m.name_lower))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
# ---
@@ -879,32 +905,32 @@ class CodeGenerator:
self.generate_args('_%s_signal_info_%s_ARG'%(i.name_lower, s.name_lower), s.args)
num_anno = self.generate_annotations('_%s_signal_%s_annotation_info'%(i.name_lower, s.name_lower), s.annotations)
- self.c.write('static const _ExtendedGDBusSignalInfo _%s_signal_info_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'%(i.name_lower, s.name_lower, s.name))
+ self.outfile.write('static const _ExtendedGDBusSignalInfo _%s_signal_info_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'%(i.name_lower, s.name_lower, s.name))
if len(s.args) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusArgInfo **) &_%s_signal_info_%s_ARG_pointers,\n'%(i.name_lower, s.name_lower))
+ self.outfile.write(' (GDBusArgInfo **) &_%s_signal_info_%s_ARG_pointers,\n'%(i.name_lower, s.name_lower))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &_%s_signal_%s_annotation_info_pointers\n'%(i.name_lower, s.name_lower))
- self.c.write(' },\n'
- ' "%s"\n'
- %(s.name_hyphen))
- self.c.write('};\n'
- '\n')
-
- self.c.write('static const _ExtendedGDBusSignalInfo * const _%s_signal_info_pointers[] =\n'
- '{\n'%(i.name_lower))
+ self.outfile.write(' (GDBusAnnotationInfo **) &_%s_signal_%s_annotation_info_pointers\n'%(i.name_lower, s.name_lower))
+ self.outfile.write(' },\n'
+ ' "%s"\n'
+ %(s.name_hyphen))
+ self.outfile.write('};\n'
+ '\n')
+
+ self.outfile.write('static const _ExtendedGDBusSignalInfo * const _%s_signal_info_pointers[] =\n'
+ '{\n'%(i.name_lower))
for s in i.signals:
- self.c.write(' &_%s_signal_info_%s,\n'%(i.name_lower, s.name_lower))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &_%s_signal_info_%s,\n'%(i.name_lower, s.name_lower))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
# ---
@@ -919,64 +945,64 @@ class CodeGenerator:
else:
access = 'G_DBUS_PROPERTY_INFO_FLAGS_NONE'
num_anno = self.generate_annotations('_%s_property_%s_annotation_info'%(i.name_lower, p.name_lower), p.annotations)
- self.c.write('static const _ExtendedGDBusPropertyInfo _%s_property_info_%s =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'
- ' (gchar *) "%s",\n'
- ' %s,\n'%(i.name_lower, p.name_lower, p.name, p.arg.signature, access))
+ self.outfile.write('static const _ExtendedGDBusPropertyInfo _%s_property_info_%s =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'
+ ' (gchar *) "%s",\n'
+ ' %s,\n'%(i.name_lower, p.name_lower, p.name, p.arg.signature, access))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &_%s_property_%s_annotation_info_pointers\n'%(i.name_lower, p.name_lower))
- self.c.write(' },\n'
- ' "%s",\n'
- %(p.name_hyphen))
+ self.outfile.write(' (GDBusAnnotationInfo **) &_%s_property_%s_annotation_info_pointers\n'%(i.name_lower, p.name_lower))
+ self.outfile.write(' },\n'
+ ' "%s",\n'
+ %(p.name_hyphen))
if not utils.lookup_annotation(p.annotations, 'org.gtk.GDBus.C.ForceGVariant'):
- self.c.write(' FALSE\n')
+ self.outfile.write(' FALSE\n')
else:
- self.c.write(' TRUE\n')
- self.c.write('};\n'
- '\n')
+ self.outfile.write(' TRUE\n')
+ self.outfile.write('};\n'
+ '\n')
- self.c.write('static const _ExtendedGDBusPropertyInfo * const _%s_property_info_pointers[] =\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static const _ExtendedGDBusPropertyInfo * const _%s_property_info_pointers[] =\n'
+ '{\n'%(i.name_lower))
for p in i.properties:
- self.c.write(' &_%s_property_info_%s,\n'%(i.name_lower, p.name_lower))
- self.c.write(' NULL\n'
- '};\n'
- '\n')
+ self.outfile.write(' &_%s_property_info_%s,\n'%(i.name_lower, p.name_lower))
+ self.outfile.write(' NULL\n'
+ '};\n'
+ '\n')
num_anno = self.generate_annotations('_%s_annotation_info'%(i.name_lower), i.annotations)
- self.c.write('static const _ExtendedGDBusInterfaceInfo _%s_interface_info =\n'
- '{\n'
- ' {\n'
- ' -1,\n'
- ' (gchar *) "%s",\n'%(i.name_lower, i.name))
+ self.outfile.write('static const _ExtendedGDBusInterfaceInfo _%s_interface_info =\n'
+ '{\n'
+ ' {\n'
+ ' -1,\n'
+ ' (gchar *) "%s",\n'%(i.name_lower, i.name))
if len(i.methods) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusMethodInfo **) &_%s_method_info_pointers,\n'%(i.name_lower))
+ self.outfile.write(' (GDBusMethodInfo **) &_%s_method_info_pointers,\n'%(i.name_lower))
if len(i.signals) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusSignalInfo **) &_%s_signal_info_pointers,\n'%(i.name_lower))
+ self.outfile.write(' (GDBusSignalInfo **) &_%s_signal_info_pointers,\n'%(i.name_lower))
if len(i.properties) == 0:
- self.c.write(' NULL,\n')
+ self.outfile.write(' NULL,\n')
else:
- self.c.write(' (GDBusPropertyInfo **) &_%s_property_info_pointers,\n'%(i.name_lower))
+ self.outfile.write(' (GDBusPropertyInfo **) &_%s_property_info_pointers,\n'%(i.name_lower))
if num_anno == 0:
- self.c.write(' NULL\n')
+ self.outfile.write(' NULL\n')
else:
- self.c.write(' (GDBusAnnotationInfo **) &_%s_annotation_info_pointers\n'%(i.name_lower))
- self.c.write(' },\n'
- ' "%s",\n'
- '};\n'
- '\n'
- %(i.name_hyphen))
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' (GDBusAnnotationInfo **) &_%s_annotation_info_pointers\n'%(i.name_lower))
+ self.outfile.write(' },\n'
+ ' "%s",\n'
+ '};\n'
+ '\n'
+ %(i.name_hyphen))
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_interface_info:\n'
' *\n'
@@ -984,15 +1010,15 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.\n'
%(i.name_lower, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('GDBusInterfaceInfo *\n'
- '%s_interface_info (void)\n'
- '{\n'
- ' return (GDBusInterfaceInfo *) &_%s_interface_info.parent_struct;\n'
- '}\n'
- '\n'%(i.name_lower, i.name_lower))
-
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('GDBusInterfaceInfo *\n'
+ '%s_interface_info (void)\n'
+ '{\n'
+ ' return (GDBusInterfaceInfo *) &_%s_interface_info.parent_struct;\n'
+ '}\n'
+ '\n'%(i.name_lower, i.name_lower))
+
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_override_properties:\n'
' * @klass: The class structure for a #GObject derived class.\n'
@@ -1003,32 +1029,32 @@ class CodeGenerator:
' *\n'
' * Returns: The last property id.\n'
%(i.name_lower, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('guint\n'
- '%s_override_properties (GObjectClass *klass, guint property_id_begin)\n'
- '{\n'%(i.name_lower))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('guint\n'
+ '%s_override_properties (GObjectClass *klass, guint property_id_begin)\n'
+ '{\n'%(i.name_lower))
for p in i.properties:
- self.c.write (' g_object_class_override_property (klass, property_id_begin++, "%s");\n'%(p.name_hyphen))
- self.c.write(' return property_id_begin - 1;\n'
- '}\n'
- '\n')
- self.c.write('\n')
+ self.outfile.write(' g_object_class_override_property (klass, property_id_begin++, "%s");\n'%(p.name_hyphen))
+ self.outfile.write(' return property_id_begin - 1;\n'
+ '}\n'
+ '\n')
+ self.outfile.write('\n')
# ----------------------------------------------------------------------------------------------------
def generate_interface(self, i):
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s:\n'
' *\n'
' * Abstract interface type for the D-Bus interface #%s.\n'
%(i.camel_name, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sIface:\n'
' * @parent_iface: The parent interface.\n'
@@ -1054,40 +1080,40 @@ class CodeGenerator:
value += 'Getter for the #%s:%s property.'%(i.camel_name, p.name_hyphen)
doc_bits[key] = value
for key in sorted(doc_bits.keys(), key=utils.version_cmp_key):
- self.c.write(' * %s\n'%doc_bits[key])
+ self.outfile.write(' * %s\n'%doc_bits[key])
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Virtual table for the D-Bus interface #%s.\n'
%(i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write('typedef %sIface %sInterface;\n'%(i.camel_name, i.camel_name))
- self.c.write('G_DEFINE_INTERFACE (%s, %s, G_TYPE_OBJECT)\n'%(i.camel_name, i.name_lower))
- self.c.write('\n')
+ self.outfile.write('typedef %sIface %sInterface;\n'%(i.camel_name, i.camel_name))
+ self.outfile.write('G_DEFINE_INTERFACE (%s, %s, G_TYPE_OBJECT)\n'%(i.camel_name, i.name_lower))
+ self.outfile.write('\n')
- self.c.write('static void\n'
- '%s_default_init (%sIface *iface)\n'
- '{\n'%(i.name_lower, i.camel_name));
+ self.outfile.write('static void\n'
+ '%s_default_init (%sIface *iface)\n'
+ '{\n'%(i.name_lower, i.camel_name));
if len(i.methods) > 0:
- self.c.write(' /* GObject signals for incoming D-Bus method calls: */\n')
+ self.outfile.write(' /* GObject signals for incoming D-Bus method calls: */\n')
for m in i.methods:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %s::handle-%s:\n'
' * @object: A #%s.\n'
' * @invocation: A #GDBusMethodInvocation.\n'
%(i.camel_name, m.name_hyphen, i.camel_name), False))
if unix_fd:
- self.c.write (' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
for a in m.in_args:
- self.c.write (' * @arg_%s: Argument passed by remote caller.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @arg_%s: Argument passed by remote caller.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Signal emitted when a remote caller is invoking the %s.%s() D-Bus method.\n'
' *\n'
@@ -1095,63 +1121,63 @@ class CodeGenerator:
' *\n'
' * Returns: %%TRUE if the invocation was handled, %%FALSE to let other signal handlers run.\n'
%(i.name, m.name, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 2)
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 2)
if unix_fd:
extra_args = 2
else:
extra_args = 1
- self.c.write(' g_signal_new ("handle-%s",\n'
- ' G_TYPE_FROM_INTERFACE (iface),\n'
- ' G_SIGNAL_RUN_LAST,\n'
- ' G_STRUCT_OFFSET (%sIface, handle_%s),\n'
- ' g_signal_accumulator_true_handled,\n'
- ' NULL,\n' # accu_data
- ' g_cclosure_marshal_generic,\n'
- ' G_TYPE_BOOLEAN,\n'
- ' %d,\n'
- ' G_TYPE_DBUS_METHOD_INVOCATION'
- %(m.name_hyphen, i.camel_name, m.name_lower, len(m.in_args) + extra_args))
+ self.outfile.write(' g_signal_new ("handle-%s",\n'
+ ' G_TYPE_FROM_INTERFACE (iface),\n'
+ ' G_SIGNAL_RUN_LAST,\n'
+ ' G_STRUCT_OFFSET (%sIface, handle_%s),\n'
+ ' g_signal_accumulator_true_handled,\n'
+ ' NULL,\n' # accu_data
+ ' g_cclosure_marshal_generic,\n'
+ ' G_TYPE_BOOLEAN,\n'
+ ' %d,\n'
+ ' G_TYPE_DBUS_METHOD_INVOCATION'
+ %(m.name_hyphen, i.camel_name, m.name_lower, len(m.in_args) + extra_args))
if unix_fd:
- self.c.write(', G_TYPE_UNIX_FD_LIST')
+ self.outfile.write(', G_TYPE_UNIX_FD_LIST')
for a in m.in_args:
- self.c.write (', %s'%(a.gtype))
- self.c.write(');\n')
- self.c.write('\n')
+ self.outfile.write(', %s'%(a.gtype))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
if len(i.signals) > 0:
- self.c.write(' /* GObject signals for received D-Bus signals: */\n')
+ self.outfile.write(' /* GObject signals for received D-Bus signals: */\n')
for s in i.signals:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %s::%s:\n'
' * @object: A #%s.\n'
%(i.camel_name, s.name_hyphen, i.camel_name), False))
for a in s.args:
- self.c.write (' * @arg_%s: Argument.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @arg_%s: Argument.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * On the client-side, this signal is emitted whenever the D-Bus signal #%s::%s is received.\n'
' *\n'
' * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.\n'
%(i.name, s.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(s, self.c, 2)
- self.c.write(' g_signal_new ("%s",\n'
- ' G_TYPE_FROM_INTERFACE (iface),\n'
- ' G_SIGNAL_RUN_LAST,\n'
- ' G_STRUCT_OFFSET (%sIface, %s),\n'
- ' NULL,\n' # accumulator
- ' NULL,\n' # accu_data
- ' g_cclosure_marshal_generic,\n'
- ' G_TYPE_NONE,\n'
- ' %d'
- %(s.name_hyphen, i.camel_name, s.name_lower, len(s.args)))
+ self.write_gtkdoc_deprecated_and_since_and_close(s, self.outfile, 2)
+ self.outfile.write(' g_signal_new ("%s",\n'
+ ' G_TYPE_FROM_INTERFACE (iface),\n'
+ ' G_SIGNAL_RUN_LAST,\n'
+ ' G_STRUCT_OFFSET (%sIface, %s),\n'
+ ' NULL,\n' # accumulator
+ ' NULL,\n' # accu_data
+ ' g_cclosure_marshal_generic,\n'
+ ' G_TYPE_NONE,\n'
+ ' %d'
+ %(s.name_hyphen, i.camel_name, s.name_lower, len(s.args)))
for a in s.args:
- self.c.write (', %s'%(a.gtype))
- self.c.write(');\n')
- self.c.write('\n')
+ self.outfile.write(', %s'%(a.gtype))
+ self.outfile.write(');\n')
+ self.outfile.write('\n')
if len(i.properties) > 0:
- self.c.write(' /* GObject properties for D-Bus properties: */\n')
+ self.outfile.write(' /* GObject properties for D-Bus properties: */\n')
for p in i.properties:
if p.readable and p.writable:
hint = 'Since the D-Bus property for this #GObject property is both readable and writable, it is meaningful to both read from it and write to it on both the service- and client-side.'
@@ -1160,8 +1186,8 @@ class CodeGenerator:
elif p.writable:
hint = 'Since the D-Bus property for this #GObject property is writable but not readable, it is meaningful to write to it on both the client- and service-side. It is only meaningful, however, to read from it on the service-side.'
else:
- raise RuntimeError('Cannot handle property %s that neither readable nor writable'%(p.name))
- self.c.write(self.docbook_gen.expand(
+ print_error('Cannot handle property "{}" that neither readable nor writable'.format(p.name))
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %s:%s:\n'
' *\n'
@@ -1169,8 +1195,8 @@ class CodeGenerator:
' *\n'
' * %s\n'
%(i.camel_name, p.name_hyphen, i.name, p.name, hint), False))
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 2)
- self.c.write(' g_object_interface_install_property (iface,\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 2)
+ self.outfile.write(' g_object_interface_install_property (iface,\n')
if p.arg.gtype == 'G_TYPE_VARIANT':
s = 'g_param_spec_variant ("%s", "%s", "%s", G_VARIANT_TYPE ("%s"), NULL'%(p.name_hyphen, p.name, p.name, p.arg.signature)
elif p.arg.signature == 'b':
@@ -1206,12 +1232,12 @@ class CodeGenerator:
elif p.arg.signature == 'aay':
s = 'g_param_spec_boxed ("%s", "%s", "%s", G_TYPE_STRV'%(p.name_hyphen, p.name, p.name)
else:
- raise RuntimeError('Unsupported gtype %s for GParamSpec'%(p.arg.gtype))
- self.c.write(' %s, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));'%s);
- self.c.write('\n')
+ print_error('Unsupported gtype "{}" for GParamSpec'.format(p.arg.gtype))
+ self.outfile.write(' %s, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));'%s);
+ self.outfile.write('\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write('}\n'
+ '\n')
# ----------------------------------------------------------------------------------------------------
@@ -1225,8 +1251,8 @@ class CodeGenerator:
elif p.writable:
hint = 'Since this D-Bus property is not readable, it is only meaningful to use this function on the service-side.'
else:
- raise RuntimeError('Cannot handle property %s that neither readable nor writable'%(p.name))
- self.c.write(self.docbook_gen.expand(
+ print_error('Cannot handle property "{}" that neither readable nor writable'.format(p.name))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_get_%s: (skip)\n'
' * @object: A #%s.\n'
@@ -1237,22 +1263,22 @@ class CodeGenerator:
' *\n'
%(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
if p.arg.free_func != None:
- self.c.write(' * <warning>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use %s_dup_%s() if on another thread.</warning>\n'
- ' *\n'
- ' * Returns: (transfer none): The property value or %%NULL if the property is not set. Do not free the returned value, it belongs to @object.\n'
- %(i.name_lower, p.name_lower))
+ self.outfile.write(' * <warning>The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use %s_dup_%s() if on another thread.</warning>\n'
+ ' *\n'
+ ' * Returns: (transfer none): The property value or %%NULL if the property is not set. Do not free the returned value, it belongs to @object.\n'
+ %(i.name_lower, p.name_lower))
else:
- self.c.write(' * Returns: The property value.\n')
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
- self.c.write('%s\n'
- '%s_get_%s (%s *object)\n'
- '{\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
- self.c.write(' return %s%s_GET_IFACE (object)->get_%s (object);\n'%(i.ns_upper, i.name_upper, p.name_lower))
- self.c.write('}\n')
- self.c.write('\n')
+ self.outfile.write(' * Returns: The property value.\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 0)
+ self.outfile.write('%s\n'
+ '%s_get_%s (%s *object)\n'
+ '{\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+ self.outfile.write(' return %s%s_GET_IFACE (object)->get_%s (object);\n'%(i.ns_upper, i.name_upper, p.name_lower))
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
if p.arg.free_func != None:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_dup_%s: (skip)\n'
' * @object: A #%s.\n'
@@ -1263,15 +1289,15 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full): The property value or %%NULL if the property is not set. The returned value should be freed with %s().\n'
%(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint, p.arg.free_func), False))
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
- self.c.write('%s\n'
- '%s_dup_%s (%s *object)\n'
- '{\n'
- ' %svalue;\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in_dup))
- self.c.write(' g_object_get (G_OBJECT (object), "%s", &value, NULL);\n'%(p.name_hyphen))
- self.c.write(' return value;\n')
- self.c.write('}\n')
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 0)
+ self.outfile.write('%s\n'
+ '%s_dup_%s (%s *object)\n'
+ '{\n'
+ ' %svalue;\n'%(p.arg.ctype_in_dup, i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in_dup))
+ self.outfile.write(' g_object_get (G_OBJECT (object), "%s", &value, NULL);\n'%(p.name_hyphen))
+ self.outfile.write(' return value;\n')
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
# setter
if p.readable and p.writable:
@@ -1281,8 +1307,8 @@ class CodeGenerator:
elif p.writable:
hint = 'Since this D-Bus property is writable, it is meaningful to use this function on both the client- and service-side.'
else:
- raise RuntimeError('Cannot handle property %s that neither readable nor writable'%(p.name))
- self.c.write(self.docbook_gen.expand(
+ print_error('Cannot handle property "{}" that neither readable nor writable'.format(p.name))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_set_%s: (skip)\n'
' * @object: A #%s.\n'
@@ -1292,43 +1318,43 @@ class CodeGenerator:
' *\n'
' * %s\n'
%(i.name_lower, p.name_lower, i.camel_name, i.name, p.name, hint), False))
- self.write_gtkdoc_deprecated_and_since_and_close(p, self.c, 0)
- self.c.write('void\n'
- '%s_set_%s (%s *object, %svalue)\n'
- '{\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
- self.c.write(' g_object_set (G_OBJECT (object), "%s", value, NULL);\n'%(p.name_hyphen))
- self.c.write('}\n')
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(p, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_set_%s (%s *object, %svalue)\n'
+ '{\n'%(i.name_lower, p.name_lower, i.camel_name, p.arg.ctype_in, ))
+ self.outfile.write(' g_object_set (G_OBJECT (object), "%s", value, NULL);\n'%(p.name_hyphen))
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
# ---------------------------------------------------------------------------------------------------
def generate_signal_emitters(self, i):
for s in i.signals:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_emit_%s:\n'
' * @object: A #%s.\n'
%(i.name_lower, s.name_lower, i.camel_name), False))
for a in s.args:
- self.c.write(' * @arg_%s: Argument to pass with the signal.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @arg_%s: Argument to pass with the signal.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Emits the #%s::%s D-Bus signal.\n'
%(i.name, s.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(s, self.c, 0)
- self.c.write('void\n'
- '%s_emit_%s (\n'
- ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(s, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_emit_%s (\n'
+ ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
for a in s.args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
- self.c.write(')\n'
- '{\n'
- ' g_signal_emit_by_name (object, "%s"'%(s.name_hyphen))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(')\n'
+ '{\n'
+ ' g_signal_emit_by_name (object, "%s"'%(s.name_hyphen))
for a in s.args:
- self.c.write(', arg_%s'%a.name)
- self.c.write(');\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write(', arg_%s'%a.name)
+ self.outfile.write(');\n')
+ self.outfile.write('}\n'
+ '\n')
# ---------------------------------------------------------------------------------------------------
@@ -1338,15 +1364,15 @@ class CodeGenerator:
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
# async begin
- self.c.write('/**\n'
- ' * %s_call_%s:\n'
- ' * @proxy: A #%sProxy.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_call_%s:\n'
+ ' * @proxy: A #%sProxy.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
+ self.outfile.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
if unix_fd:
- self.c.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(self.docbook_gen.expand(
' * @cancellable: (nullable): A #GCancellable or %%NULL.\n'
' * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %%NULL.\n'
' * @user_data: User data to pass to @callback.\n'
@@ -1357,50 +1383,50 @@ class CodeGenerator:
' *\n'
' * See %s_call_%s_sync() for the synchronous, blocking version of this method.\n'
%(i.name, m.name, i.name_lower, m.name_lower, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('void\n'
- '%s_call_%s (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_call_%s (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList *fd_list')
- self.c.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n')
+ self.outfile.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n')
if unix_fd:
- self.c.write(' g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),\n')
else:
- self.c.write(' g_dbus_proxy_call (G_DBUS_PROXY (proxy),\n')
- self.c.write(' "%s",\n'
- ' g_variant_new ("('%(m.name))
+ self.outfile.write(' g_dbus_proxy_call (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' "%s",\n'
+ ' g_variant_new ("('%(m.name))
for a in m.in_args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in m.in_args:
- self.c.write(',\n arg_%s'%(a.name))
- self.c.write('),\n'
- ' G_DBUS_CALL_FLAGS_NONE,\n'
- ' -1,\n')
+ self.outfile.write(',\n arg_%s'%(a.name))
+ self.outfile.write('),\n'
+ ' G_DBUS_CALL_FLAGS_NONE,\n'
+ ' -1,\n')
if unix_fd:
- self.c.write(' fd_list,\n')
- self.c.write(' cancellable,\n'
- ' callback,\n'
- ' user_data);\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' fd_list,\n')
+ self.outfile.write(' cancellable,\n'
+ ' callback,\n'
+ ' user_data);\n')
+ self.outfile.write('}\n'
+ '\n')
# async finish
- self.c.write('/**\n'
- ' * %s_call_%s_finish:\n'
- ' * @proxy: A #%sProxy.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_call_%s_finish:\n'
+ ' * @proxy: A #%sProxy.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
for a in m.out_args:
- self.c.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
+ self.outfile.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
if unix_fd:
- self.c.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
+ self.outfile.write(self.docbook_gen.expand(
' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_call_%s().\n'
' * @error: Return location for error or %%NULL.\n'
' *\n'
@@ -1408,54 +1434,54 @@ class CodeGenerator:
' *\n'
' * Returns: (skip): %%TRUE if the call succeded, %%FALSE if @error is set.\n'
%(i.name_lower, m.name_lower, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('gboolean\n'
- '%s_call_%s_finish (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('gboolean\n'
+ '%s_call_%s_finish (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.out_args:
- self.c.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList **out_fd_list')
- self.c.write(',\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GVariant *_ret;\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GVariant *_ret;\n')
if unix_fd:
- self.c.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY (proxy), out_fd_list, res, error);\n')
+ self.outfile.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY (proxy), out_fd_list, res, error);\n')
else:
- self.c.write(' _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);\n')
- self.c.write(' if (_ret == NULL)\n'
- ' goto _out;\n')
- self.c.write(' g_variant_get (_ret,\n'
- ' \"(')
+ self.outfile.write(' _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);\n')
+ self.outfile.write(' if (_ret == NULL)\n'
+ ' goto _out;\n')
+ self.outfile.write(' g_variant_get (_ret,\n'
+ ' \"(')
for a in m.out_args:
- self.c.write('%s'%(a.format_out))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_out))
+ self.outfile.write(')"')
for a in m.out_args:
- self.c.write(',\n out_%s'%(a.name))
- self.c.write(');\n'
- ' g_variant_unref (_ret);\n')
- self.c.write('_out:\n'
- ' return _ret != NULL;\n'
- '}\n'
- '\n')
+ self.outfile.write(',\n out_%s'%(a.name))
+ self.outfile.write(');\n'
+ ' g_variant_unref (_ret);\n')
+ self.outfile.write('_out:\n'
+ ' return _ret != NULL;\n'
+ '}\n'
+ '\n')
# sync
- self.c.write('/**\n'
- ' * %s_call_%s_sync:\n'
- ' * @proxy: A #%sProxy.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_call_%s_sync:\n'
+ ' * @proxy: A #%sProxy.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
+ self.outfile.write(' * @arg_%s: Argument to pass with the method invocation.\n'%(a.name))
if unix_fd:
- self.c.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
for a in m.out_args:
- self.c.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
+ self.outfile.write(' * @out_%s: (out)%s: Return location for return parameter or %%NULL to ignore.\n'%(a.name, ' ' + a.array_annotation if a.array_annotation else ''))
if unix_fd:
- self.c.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.\n')
+ self.outfile.write(self.docbook_gen.expand(
' * @cancellable: (nullable): A #GCancellable or %%NULL.\n'
' * @error: Return location for error or %%NULL.\n'
' *\n'
@@ -1465,57 +1491,57 @@ class CodeGenerator:
' *\n'
' * Returns: (skip): %%TRUE if the call succeded, %%FALSE if @error is set.\n'
%(i.name, m.name, i.name_lower, m.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('gboolean\n'
- '%s_call_%s_sync (\n'
- ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('gboolean\n'
+ '%s_call_%s_sync (\n'
+ ' %s *proxy'%(i.name_lower, m.name_lower, i.camel_name))
for a in m.in_args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.c.write(',\n %sout_%s'%(a.ctype_out, a.name))
+ self.outfile.write(',\n %sout_%s'%(a.ctype_out, a.name))
if unix_fd:
- self.c.write(',\n GUnixFDList **out_fd_list')
- self.c.write(',\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GVariant *_ret;\n')
+ self.outfile.write(',\n GUnixFDList **out_fd_list')
+ self.outfile.write(',\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GVariant *_ret;\n')
if unix_fd:
- self.c.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY (proxy),\n')
else:
- self.c.write(' _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),\n')
- self.c.write(' "%s",\n'
- ' g_variant_new ("('%(m.name))
+ self.outfile.write(' _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),\n')
+ self.outfile.write(' "%s",\n'
+ ' g_variant_new ("('%(m.name))
for a in m.in_args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in m.in_args:
- self.c.write(',\n arg_%s'%(a.name))
- self.c.write('),\n'
- ' G_DBUS_CALL_FLAGS_NONE,\n'
- ' -1,\n')
+ self.outfile.write(',\n arg_%s'%(a.name))
+ self.outfile.write('),\n'
+ ' G_DBUS_CALL_FLAGS_NONE,\n'
+ ' -1,\n')
if unix_fd:
- self.c.write(' fd_list,\n'
- ' out_fd_list,\n')
- self.c.write(' cancellable,\n'
- ' error);\n'
- ' if (_ret == NULL)\n'
- ' goto _out;\n')
- self.c.write(' g_variant_get (_ret,\n'
- ' \"(')
+ self.outfile.write(' fd_list,\n'
+ ' out_fd_list,\n')
+ self.outfile.write(' cancellable,\n'
+ ' error);\n'
+ ' if (_ret == NULL)\n'
+ ' goto _out;\n')
+ self.outfile.write(' g_variant_get (_ret,\n'
+ ' \"(')
for a in m.out_args:
- self.c.write('%s'%(a.format_out))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_out))
+ self.outfile.write(')"')
for a in m.out_args:
- self.c.write(',\n out_%s'%(a.name))
- self.c.write(');\n'
- ' g_variant_unref (_ret);\n')
- self.c.write('_out:\n'
- ' return _ret != NULL;\n'
- '}\n'
- '\n')
+ self.outfile.write(',\n out_%s'%(a.name))
+ self.outfile.write(');\n'
+ ' g_variant_unref (_ret);\n')
+ self.outfile.write('_out:\n'
+ ' return _ret != NULL;\n'
+ '}\n'
+ '\n')
# ---------------------------------------------------------------------------------------------------
@@ -1524,368 +1550,368 @@ class CodeGenerator:
unix_fd = False
if utils.lookup_annotation(m.annotations, 'org.gtk.GDBus.C.UnixFD'):
unix_fd = True
- self.c.write('/**\n'
- ' * %s_complete_%s:\n'
- ' * @object: A #%s.\n'
- ' * @invocation: (transfer full): A #GDBusMethodInvocation.\n'
- %(i.name_lower, m.name_lower, i.camel_name))
+ self.outfile.write('/**\n'
+ ' * %s_complete_%s:\n'
+ ' * @object: A #%s.\n'
+ ' * @invocation: (transfer full): A #GDBusMethodInvocation.\n'
+ %(i.name_lower, m.name_lower, i.camel_name))
if unix_fd:
- self.c.write (' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
+ self.outfile.write(' * @fd_list: (nullable): A #GUnixFDList or %NULL.\n')
for a in m.out_args:
- self.c.write(' * @%s: Parameter to return.\n'%(a.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' * @%s: Parameter to return.\n'%(a.name))
+ self.outfile.write(self.docbook_gen.expand(
' *\n'
' * Helper function used in service implementations to finish handling invocations of the %s.%s() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.\n'
' *\n'
' * This method will free @invocation, you cannot use it afterwards.\n'
%(i.name, m.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(m, self.c, 0)
- self.c.write('void\n'
- '%s_complete_%s (\n'
- ' %s *object,\n'
- ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(m, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_complete_%s (\n'
+ ' %s *object,\n'
+ ' GDBusMethodInvocation *invocation'%(i.name_lower, m.name_lower, i.camel_name))
if unix_fd:
- self.c.write(',\n GUnixFDList *fd_list')
+ self.outfile.write(',\n GUnixFDList *fd_list')
for a in m.out_args:
- self.c.write(',\n %s%s'%(a.ctype_in, a.name))
- self.c.write(')\n'
- '{\n')
+ self.outfile.write(',\n %s%s'%(a.ctype_in, a.name))
+ self.outfile.write(')\n'
+ '{\n')
if unix_fd:
- self.c.write(' g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,\n'
- ' g_variant_new ("(')
+ self.outfile.write(' g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,\n'
+ ' g_variant_new ("(')
else:
- self.c.write(' g_dbus_method_invocation_return_value (invocation,\n'
- ' g_variant_new ("(')
+ self.outfile.write(' g_dbus_method_invocation_return_value (invocation,\n'
+ ' g_variant_new ("(')
for a in m.out_args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in m.out_args:
- self.c.write(',\n %s'%(a.name))
+ self.outfile.write(',\n %s'%(a.name))
if unix_fd:
- self.c.write('),\n fd_list);\n')
+ self.outfile.write('),\n fd_list);\n')
else:
- self.c.write('));\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write('));\n')
+ self.outfile.write('}\n'
+ '\n')
# ---------------------------------------------------------------------------------------------------
def generate_proxy(self, i):
# class boilerplate
- self.c.write('/* ------------------------------------------------------------------------ */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------ */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sProxy:\n'
' *\n'
' * The #%sProxy structure contains only private data and should only be accessed using the provided API.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sProxyClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sProxy.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
-
- self.c.write('struct _%sProxyPrivate\n'
- '{\n'
- ' GData *qdata;\n'
- '};\n'
- '\n'%i.camel_name)
-
- self.c.write('static void %s_proxy_iface_init (%sIface *iface);\n'
- '\n'%(i.name_lower, i.camel_name))
- self.c.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name, i.name_lower))
- self.c.write(' G_ADD_PRIVATE (%sProxy)\n'%(i.camel_name))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#else\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name, i.name_lower))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#endif\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
+
+ self.outfile.write('struct _%sProxyPrivate\n'
+ '{\n'
+ ' GData *qdata;\n'
+ '};\n'
+ '\n'%i.camel_name)
+
+ self.outfile.write('static void %s_proxy_iface_init (%sIface *iface);\n'
+ '\n'%(i.name_lower, i.camel_name))
+ self.outfile.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name, i.name_lower))
+ self.outfile.write(' G_ADD_PRIVATE (%sProxy)\n'%(i.camel_name))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#else\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sProxy, %s_proxy, G_TYPE_DBUS_PROXY,\n'%(i.camel_name, i.name_lower))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_proxy_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#endif\n')
# finalize
- self.c.write('static void\n'
- '%s_proxy_finalize (GObject *object)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sProxy *proxy = %s%s_PROXY (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' g_datalist_clear (&proxy->priv->qdata);\n')
- self.c.write(' G_OBJECT_CLASS (%s_proxy_parent_class)->finalize (object);\n'
- '}\n'
- '\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_finalize (GObject *object)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sProxy *proxy = %s%s_PROXY (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' g_datalist_clear (&proxy->priv->qdata);\n')
+ self.outfile.write(' G_OBJECT_CLASS (%s_proxy_parent_class)->finalize (object);\n'
+ '}\n'
+ '\n'%(i.name_lower))
# property accessors
#
# Note that we are guaranteed that prop_id starts at 1 and is
# laid out in the same order as introspection data pointers
#
- self.c.write('static void\n'
- '%s_proxy_get_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_get_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'%(i.name_lower))
if len(i.properties) > 0:
- self.c.write(' const _ExtendedGDBusPropertyInfo *info;\n'
- ' GVariant *variant;\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' info = _%s_property_info_pointers[prop_id - 1];\n'
- ' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);\n'
- ' if (info->use_gvariant)\n'
- ' {\n'
- ' g_value_set_variant (value, variant);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- # could be that we don't have the value in cache - in that case, we do
- # nothing and the user gets the default value for the GType
- ' if (variant != NULL)\n'
- ' g_dbus_gvariant_to_gvalue (variant, value);\n'
- ' }\n'
- ' if (variant != NULL)\n'
- ' g_variant_unref (variant);\n'
- %(len(i.properties), i.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' const _ExtendedGDBusPropertyInfo *info;\n'
+ ' GVariant *variant;\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' info = _%s_property_info_pointers[prop_id - 1];\n'
+ ' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);\n'
+ ' if (info->use_gvariant)\n'
+ ' {\n'
+ ' g_value_set_variant (value, variant);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ # could be that we don't have the value in cache - in that case, we do
+ # nothing and the user gets the default value for the GType
+ ' if (variant != NULL)\n'
+ ' g_dbus_gvariant_to_gvalue (variant, value);\n'
+ ' }\n'
+ ' if (variant != NULL)\n'
+ ' g_variant_unref (variant);\n'
+ %(len(i.properties), i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
if len(i.properties) > 0:
- self.c.write('static void\n'
- '%s_proxy_set_property_cb (GDBusProxy *proxy,\n'
- ' GAsyncResult *res,\n'
- ' gpointer user_data)\n'
- '{\n'%(i.name_lower))
- self.c.write(' const _ExtendedGDBusPropertyInfo *info = user_data;\n'
- ' GError *error;\n'
- ' GVariant *_ret;\n'
- ' error = NULL;\n'
- ' _ret = g_dbus_proxy_call_finish (proxy, res, &error);\n'
- ' if (!_ret)\n'
- ' {\n'
- ' g_warning ("Error setting property \'%%s\' on interface %s: %%s (%%s, %%d)",\n'
- ' info->parent_struct.name, \n'
- ' error->message, g_quark_to_string (error->domain), error->code);\n'
- ' g_error_free (error);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_variant_unref (_ret);\n'
- ' }\n'
- %(i.name))
- self.c.write('}\n'
- '\n')
- self.c.write('static void\n'
- '%s_proxy_set_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' const GValue *value,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_set_property_cb (GDBusProxy *proxy,\n'
+ ' GAsyncResult *res,\n'
+ ' gpointer user_data)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' const _ExtendedGDBusPropertyInfo *info = user_data;\n'
+ ' GError *error;\n'
+ ' GVariant *_ret;\n'
+ ' error = NULL;\n'
+ ' _ret = g_dbus_proxy_call_finish (proxy, res, &error);\n'
+ ' if (!_ret)\n'
+ ' {\n'
+ ' g_warning ("Error setting property \'%%s\' on interface %s: %%s (%%s, %%d)",\n'
+ ' info->parent_struct.name, \n'
+ ' error->message, g_quark_to_string (error->domain), error->code);\n'
+ ' g_error_free (error);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_variant_unref (_ret);\n'
+ ' }\n'
+ %(i.name))
+ self.outfile.write('}\n'
+ '\n')
+ self.outfile.write('static void\n'
+ '%s_proxy_set_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'%(i.name_lower))
if len(i.properties) > 0:
- self.c.write(' const _ExtendedGDBusPropertyInfo *info;\n'
- ' GVariant *variant;\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' info = _%s_property_info_pointers[prop_id - 1];\n'
- ' variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));\n'
- ' g_dbus_proxy_call (G_DBUS_PROXY (object),\n'
- ' "org.freedesktop.DBus.Properties.Set",\n'
- ' g_variant_new ("(ssv)", "%s", info->parent_struct.name, variant),\n'
- ' G_DBUS_CALL_FLAGS_NONE,\n'
- ' -1,\n'
- ' NULL, (GAsyncReadyCallback) %s_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);\n'
- ' g_variant_unref (variant);\n'
- %(len(i.properties), i.name_lower, i.name, i.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' const _ExtendedGDBusPropertyInfo *info;\n'
+ ' GVariant *variant;\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' info = _%s_property_info_pointers[prop_id - 1];\n'
+ ' variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));\n'
+ ' g_dbus_proxy_call (G_DBUS_PROXY (object),\n'
+ ' "org.freedesktop.DBus.Properties.Set",\n'
+ ' g_variant_new ("(ssv)", "%s", info->parent_struct.name, variant),\n'
+ ' G_DBUS_CALL_FLAGS_NONE,\n'
+ ' -1,\n'
+ ' NULL, (GAsyncReadyCallback) %s_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);\n'
+ ' g_variant_unref (variant);\n'
+ %(len(i.properties), i.name_lower, i.name, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
# signal received
- self.c.write('static void\n'
- '%s_proxy_g_signal (GDBusProxy *proxy,\n'
- ' const gchar *sender_name G_GNUC_UNUSED,\n'
- ' const gchar *signal_name,\n'
- ' GVariant *parameters)\n'
- '{\n'%(i.name_lower))
- self.c.write(' _ExtendedGDBusSignalInfo *info;\n'
- ' GVariantIter iter;\n'
- ' GVariant *child;\n'
- ' GValue *paramv;\n'
- ' gsize num_params;\n'
- ' gsize n;\n'
- ' guint signal_id;\n');
+ self.outfile.write('static void\n'
+ '%s_proxy_g_signal (GDBusProxy *proxy,\n'
+ ' const gchar *sender_name G_GNUC_UNUSED,\n'
+ ' const gchar *signal_name,\n'
+ ' GVariant *parameters)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' _ExtendedGDBusSignalInfo *info;\n'
+ ' GVariantIter iter;\n'
+ ' GVariant *child;\n'
+ ' GValue *paramv;\n'
+ ' gsize num_params;\n'
+ ' gsize n;\n'
+ ' guint signal_id;\n');
# Note: info could be NULL if we are talking to a newer version of the interface
- self.c.write(' info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, signal_name);\n'
- ' if (info == NULL)\n'
- ' return;\n'
- %(i.name_lower))
- self.c.write (' num_params = g_variant_n_children (parameters);\n'
- ' paramv = g_new0 (GValue, num_params + 1);\n'
- ' g_value_init (&paramv[0], %sTYPE_%s);\n'
- ' g_value_set_object (&paramv[0], proxy);\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_variant_iter_init (&iter, parameters);\n'
- ' n = 1;\n'
- ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
- ' {\n'
- ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];\n'
- ' if (arg_info->use_gvariant)\n'
- ' {\n'
- ' g_value_init (&paramv[n], G_TYPE_VARIANT);\n'
- ' g_value_set_variant (&paramv[n], child);\n'
- ' n++;\n'
- ' }\n'
- ' else\n'
- ' g_dbus_gvariant_to_gvalue (child, &paramv[n++]);\n'
- ' g_variant_unref (child);\n'
- ' }\n'
- )
- self.c.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_signal_emitv (paramv, signal_id, 0, NULL);\n')
- self.c.write(' for (n = 0; n < num_params + 1; n++)\n'
- ' g_value_unset (&paramv[n]);\n'
- ' g_free (paramv);\n')
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, signal_name);\n'
+ ' if (info == NULL)\n'
+ ' return;\n'
+ %(i.name_lower))
+ self.outfile.write(' num_params = g_variant_n_children (parameters);\n'
+ ' paramv = g_new0 (GValue, num_params + 1);\n'
+ ' g_value_init (&paramv[0], %sTYPE_%s);\n'
+ ' g_value_set_object (&paramv[0], proxy);\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_variant_iter_init (&iter, parameters);\n'
+ ' n = 1;\n'
+ ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
+ ' {\n'
+ ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];\n'
+ ' if (arg_info->use_gvariant)\n'
+ ' {\n'
+ ' g_value_init (&paramv[n], G_TYPE_VARIANT);\n'
+ ' g_value_set_variant (&paramv[n], child);\n'
+ ' n++;\n'
+ ' }\n'
+ ' else\n'
+ ' g_dbus_gvariant_to_gvalue (child, &paramv[n++]);\n'
+ ' g_variant_unref (child);\n'
+ ' }\n'
+ )
+ self.outfile.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_signal_emitv (paramv, signal_id, 0, NULL);\n')
+ self.outfile.write(' for (n = 0; n < num_params + 1; n++)\n'
+ ' g_value_unset (&paramv[n]);\n'
+ ' g_free (paramv);\n')
+ self.outfile.write('}\n'
+ '\n')
# property changed
- self.c.write('static void\n'
- '%s_proxy_g_properties_changed (GDBusProxy *_proxy,\n'
- ' GVariant *changed_properties,\n'
- ' const gchar *const *invalidated_properties)\n'
- '{\n'%(i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_g_properties_changed (GDBusProxy *_proxy,\n'
+ ' GVariant *changed_properties,\n'
+ ' const gchar *const *invalidated_properties)\n'
+ '{\n'%(i.name_lower))
# Note: info could be NULL if we are talking to a newer version of the interface
- self.c.write(' %sProxy *proxy = %s%s_PROXY (_proxy);\n'
- ' guint n;\n'
- ' const gchar *key;\n'
- ' GVariantIter *iter;\n'
- ' _ExtendedGDBusPropertyInfo *info;\n'
- ' g_variant_get (changed_properties, "a{sv}", &iter);\n'
- ' while (g_variant_iter_next (iter, "{&sv}", &key, NULL))\n'
- ' {\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, key);\n'
- ' g_datalist_remove_data (&proxy->priv->qdata, key);\n'
- ' if (info != NULL)\n'
- ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
- ' }\n'
- ' g_variant_iter_free (iter);\n'
- ' for (n = 0; invalidated_properties[n] != NULL; n++)\n'
- ' {\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, invalidated_properties[n]);\n'
- ' g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);\n'
- ' if (info != NULL)\n'
- ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
- ' }\n'
- '}\n'
- '\n'
- %(i.camel_name, i.ns_upper, i.name_upper,
- i.name_lower, i.name_lower))
+ self.outfile.write(' %sProxy *proxy = %s%s_PROXY (_proxy);\n'
+ ' guint n;\n'
+ ' const gchar *key;\n'
+ ' GVariantIter *iter;\n'
+ ' _ExtendedGDBusPropertyInfo *info;\n'
+ ' g_variant_get (changed_properties, "a{sv}", &iter);\n'
+ ' while (g_variant_iter_next (iter, "{&sv}", &key, NULL))\n'
+ ' {\n'
+ ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, key);\n'
+ ' g_datalist_remove_data (&proxy->priv->qdata, key);\n'
+ ' if (info != NULL)\n'
+ ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
+ ' }\n'
+ ' g_variant_iter_free (iter);\n'
+ ' for (n = 0; invalidated_properties[n] != NULL; n++)\n'
+ ' {\n'
+ ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, invalidated_properties[n]);\n'
+ ' g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);\n'
+ ' if (info != NULL)\n'
+ ' g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
+ ' }\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.ns_upper, i.name_upper,
+ i.name_lower, i.name_lower))
# property vfuncs
for p in i.properties:
nul_value = '0'
if p.arg.free_func != None:
nul_value = 'NULL'
- self.c.write('static %s\n'
- '%s_proxy_get_%s (%s *object)\n'
- '{\n'
- ' %sProxy *proxy = %s%s_PROXY (object);\n'
- ' GVariant *variant;\n'
- ' %svalue = %s;\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name,
- i.camel_name, i.ns_upper, i.name_upper,
- p.arg.ctype_in, nul_value))
+ self.outfile.write('static %s\n'
+ '%s_proxy_get_%s (%s *object)\n'
+ '{\n'
+ ' %sProxy *proxy = %s%s_PROXY (object);\n'
+ ' GVariant *variant;\n'
+ ' %svalue = %s;\n'%(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name,
+ i.camel_name, i.ns_upper, i.name_upper,
+ p.arg.ctype_in, nul_value))
# For some property types, we have to free the returned
# value (or part of it, e.g. the container) because of how
# GVariant works.. see https://bugzilla.gnome.org/show_bug.cgi?id=657100
# for details
#
free_container = False;
- if p.arg.gvariant_get == 'g_variant_get_strv' or p.arg.gvariant_get == 'g_variant_get_objpathv' or p.arg.gvariant_get == 'g_variant_get_bytestring_array':
+ if p.arg.gvariant_get == 'g_variant_get_strv' or p.arg.gvariant_get == 'g_variant_get_objv' or p.arg.gvariant_get == 'g_variant_get_bytestring_array':
free_container = True;
- # If already using an old value for strv, objpathv, bytestring_array (see below),
+ # If already using an old value for strv, objv, bytestring_array (see below),
# then just return that... that way the result from multiple consecutive calls
# to the getter are valid as long as they're freed
#
if free_container:
- self.c.write(' value = g_datalist_get_data (&proxy->priv->qdata, \"%s\");\n'
- ' if (value != NULL)\n'
- ' return value;\n'
- %(p.name))
- self.c.write(' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), \"%s\");\n'%(p.name))
+ self.outfile.write(' value = g_datalist_get_data (&proxy->priv->qdata, \"%s\");\n'
+ ' if (value != NULL)\n'
+ ' return value;\n'
+ %(p.name))
+ self.outfile.write(' variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), \"%s\");\n'%(p.name))
if p.arg.gtype == 'G_TYPE_VARIANT':
- self.c.write(' value = variant;\n')
- self.c.write(' if (variant != NULL)\n')
- self.c.write(' g_variant_unref (variant);\n')
+ self.outfile.write(' value = variant;\n')
+ self.outfile.write(' if (variant != NULL)\n')
+ self.outfile.write(' g_variant_unref (variant);\n')
else:
- self.c.write(' if (variant != NULL)\n'
- ' {\n')
+ self.outfile.write(' if (variant != NULL)\n'
+ ' {\n')
extra_len = ''
if p.arg.gvariant_get == 'g_variant_get_string' or p.arg.gvariant_get == 'g_variant_get_strv' or p.arg.gvariant_get == 'g_variant_get_objv' or p.arg.gvariant_get == 'g_variant_get_bytestring_array':
extra_len = ', NULL'
- self.c.write(' value = %s (variant%s);\n'%(p.arg.gvariant_get, extra_len))
+ self.outfile.write(' value = %s (variant%s);\n'%(p.arg.gvariant_get, extra_len))
if free_container:
- self.c.write(' g_datalist_set_data_full (&proxy->priv->qdata, \"%s\", (gpointer) value, g_free);\n'
- %(p.name))
- self.c.write(' g_variant_unref (variant);\n')
- self.c.write(' }\n')
- self.c.write(' return value;\n')
- self.c.write('}\n')
- self.c.write('\n')
+ self.outfile.write(' g_datalist_set_data_full (&proxy->priv->qdata, \"%s\", (gpointer) value, g_free);\n'
+ %(p.name))
+ self.outfile.write(' g_variant_unref (variant);\n')
+ self.outfile.write(' }\n')
+ self.outfile.write(' return value;\n')
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('static void\n'
- '%s_proxy_init (%sProxy *proxy)\n'
- '{\n'
- '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
- ' proxy->priv = %s_proxy_get_instance_private (proxy);\n'
- '#else\n'
- ' proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, %sTYPE_%s_PROXY, %sProxyPrivate);\n'
- '#endif\n\n'
- ' g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), %s_interface_info ());\n'
- '}\n'
- '\n'
- %(i.name_lower, i.camel_name,
- i.name_lower,
- i.ns_upper, i.name_upper, i.camel_name,
- i.name_lower))
- self.c.write('static void\n'
- '%s_proxy_class_init (%sProxyClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class;\n'
- ' GDBusProxyClass *proxy_class;\n'
- '\n'
- ' gobject_class = G_OBJECT_CLASS (klass);\n'
- ' gobject_class->finalize = %s_proxy_finalize;\n'
- ' gobject_class->get_property = %s_proxy_get_property;\n'
- ' gobject_class->set_property = %s_proxy_set_property;\n'
- '\n'
- ' proxy_class = G_DBUS_PROXY_CLASS (klass);\n'
- ' proxy_class->g_signal = %s_proxy_g_signal;\n'
- ' proxy_class->g_properties_changed = %s_proxy_g_properties_changed;\n'
- '\n'%(i.name_lower, i.camel_name,
- i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_init (%sProxy *proxy)\n'
+ '{\n'
+ '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
+ ' proxy->priv = %s_proxy_get_instance_private (proxy);\n'
+ '#else\n'
+ ' proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, %sTYPE_%s_PROXY, %sProxyPrivate);\n'
+ '#endif\n\n'
+ ' g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), %s_interface_info ());\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.camel_name,
+ i.name_lower,
+ i.ns_upper, i.name_upper, i.camel_name,
+ i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_proxy_class_init (%sProxyClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class;\n'
+ ' GDBusProxyClass *proxy_class;\n'
+ '\n'
+ ' gobject_class = G_OBJECT_CLASS (klass);\n'
+ ' gobject_class->finalize = %s_proxy_finalize;\n'
+ ' gobject_class->get_property = %s_proxy_get_property;\n'
+ ' gobject_class->set_property = %s_proxy_set_property;\n'
+ '\n'
+ ' proxy_class = G_DBUS_PROXY_CLASS (klass);\n'
+ ' proxy_class->g_signal = %s_proxy_g_signal;\n'
+ ' proxy_class->g_properties_changed = %s_proxy_g_properties_changed;\n'
+ '\n'%(i.name_lower, i.camel_name,
+ i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name_lower))
if len(i.properties) > 0:
- self.c.write(' %s_override_properties (gobject_class, 1);\n\n'%(i.name_lower))
- self.c.write('#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
- ' g_type_class_add_private (klass, sizeof (%sProxyPrivate));\n'
- '#endif\n'%(i.camel_name))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void\n'
- '%s_proxy_iface_init (%sIface *iface)\n'
- '{\n'%(i.name_lower, i.camel_name))
+ self.outfile.write(' %s_override_properties (gobject_class, 1);\n\n'%(i.name_lower))
+ self.outfile.write('#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
+ ' g_type_class_add_private (klass, sizeof (%sProxyPrivate));\n'
+ '#endif\n'%(i.camel_name))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void\n'
+ '%s_proxy_iface_init (%sIface *iface)\n'
+ '{\n'%(i.name_lower, i.camel_name))
for p in i.properties:
- self.c.write(' iface->get_%s = %s_proxy_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' iface->get_%s = %s_proxy_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
+ self.outfile.write('}\n'
+ '\n')
# constructors
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new:\n'
' * @connection: A #GDBusConnection.\n'
@@ -1903,49 +1929,49 @@ class CodeGenerator:
' *\n'
' * See %s_proxy_new_sync() for the synchronous, blocking version of this constructor.\n'
%(i.name_lower, i.name, i.name_lower, i.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('void\n'
- '%s_proxy_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.ns_upper, i.name_upper, i.name))
- self.c.write('/**\n'
- ' * %s_proxy_new_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_proxy_new().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %s_proxy_new().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
- %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_proxy_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.ns_upper, i.name_upper, i.name))
+ self.outfile.write('/**\n'
+ ' * %s_proxy_new_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_proxy_new().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %s_proxy_new().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
+ %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new_sync:\n'
' * @connection: A #GDBusConnection.\n'
@@ -1963,27 +1989,27 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
%(i.name_lower, i.name, i.name_lower, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper, i.name_upper))
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper, i.name_upper))
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new_for_bus:\n'
' * @bus_type: A #GBusType.\n'
@@ -2001,49 +2027,49 @@ class CodeGenerator:
' *\n'
' * See %s_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.\n'
%(i.name_lower, i.name_lower, i.name_lower, i.name_lower), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('void\n'
- '%s_proxy_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.ns_upper, i.name_upper, i.name))
- self.c.write('/**\n'
- ' * %s_proxy_new_for_bus_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_proxy_new_for_bus().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %s_proxy_new_for_bus().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
- %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
- self.c.write(self.docbook_gen.expand(
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('void\n'
+ '%s_proxy_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_%s_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.ns_upper, i.name_upper, i.name))
+ self.outfile.write('/**\n'
+ ' * %s_proxy_new_for_bus_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %s_proxy_new_for_bus().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %s_proxy_new_for_bus().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
+ %(i.name_lower, i.name_lower, i.name_lower, i.camel_name))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_proxy_new_for_bus_sync:\n'
' * @bus_type: A #GBusType.\n'
@@ -2061,379 +2087,377 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sProxy): The constructed proxy object or %%NULL if @error is set.\n'
%(i.name_lower, i.name_lower, i.name_lower, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_proxy_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusProxyFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
- ' if (ret != NULL)\n'
- ' return %s%s (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper, i.name_upper))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_proxy_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusProxyFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_%s_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "%s", NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return %s%s (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.name, i.ns_upper, i.name_upper))
+ self.outfile.write('\n')
# ---------------------------------------------------------------------------------------------------
def generate_skeleton(self, i):
# class boilerplate
- self.c.write('/* ------------------------------------------------------------------------ */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------ */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sSkeleton:\n'
' *\n'
' * The #%sSkeleton structure contains only private data and should only be accessed using the provided API.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sSkeletonClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sSkeleton.\n'
%(i.camel_name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('\n')
-
- self.c.write('struct _%sSkeletonPrivate\n'
- '{\n'
- ' GValue *properties;\n'
- ' GList *changed_properties;\n'
- ' GSource *changed_properties_idle_source;\n'
- ' GMainContext *context;\n'
- ' GMutex lock;\n'
- '};\n'
- '\n'%i.camel_name)
-
- self.c.write('static void\n'
- '_%s_skeleton_handle_method_call (\n'
- ' GDBusConnection *connection G_GNUC_UNUSED,\n'
- ' const gchar *sender G_GNUC_UNUSED,\n'
- ' const gchar *object_path G_GNUC_UNUSED,\n'
- ' const gchar *interface_name,\n'
- ' const gchar *method_name,\n'
- ' GVariant *parameters,\n'
- ' GDBusMethodInvocation *invocation,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- ' _ExtendedGDBusMethodInfo *info;\n'
- ' GVariantIter iter;\n'
- ' GVariant *child;\n'
- ' GValue *paramv;\n'
- ' gsize num_params;\n'
- ' guint num_extra;\n'
- ' gsize n;\n'
- ' guint signal_id;\n'
- ' GValue return_value = G_VALUE_INIT;\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);\n'
- ' g_assert (info != NULL);\n'
- %())
- self.c.write (' num_params = g_variant_n_children (parameters);\n'
- ' num_extra = info->pass_fdlist ? 3 : 2;'
- ' paramv = g_new0 (GValue, num_params + num_extra);\n'
- ' n = 0;\n'
- ' g_value_init (&paramv[n], %sTYPE_%s);\n'
- ' g_value_set_object (&paramv[n++], skeleton);\n'
- ' g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n'
- ' g_value_set_object (&paramv[n++], invocation);\n'
- ' if (info->pass_fdlist)\n'
- ' {\n'
- '#ifdef G_OS_UNIX\n'
- ' g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);\n'
- ' g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));\n'
- '#else\n'
- ' g_assert_not_reached ();\n'
- '#endif\n'
- ' }\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_variant_iter_init (&iter, parameters);\n'
- ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
- ' {\n'
- ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];\n'
- ' if (arg_info->use_gvariant)\n'
- ' {\n'
- ' g_value_init (&paramv[n], G_TYPE_VARIANT);\n'
- ' g_value_set_variant (&paramv[n], child);\n'
- ' n++;\n'
- ' }\n'
- ' else\n'
- ' g_dbus_gvariant_to_gvalue (child, &paramv[n++]);\n'
- ' g_variant_unref (child);\n'
- ' }\n'
- )
- self.c.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
- %(i.ns_upper, i.name_upper))
- self.c.write(' g_value_init (&return_value, G_TYPE_BOOLEAN);\n'
- ' g_signal_emitv (paramv, signal_id, 0, &return_value);\n'
- ' if (!g_value_get_boolean (&return_value))\n'
- ' g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);\n'
- ' g_value_unset (&return_value);\n'
- )
- self.c.write(' for (n = 0; n < num_params + num_extra; n++)\n'
- ' g_value_unset (&paramv[n]);\n'
- ' g_free (paramv);\n')
- self.c.write('}\n'
- '\n')
-
- self.c.write('static GVariant *\n'
- '_%s_skeleton_handle_get_property (\n'
- ' GDBusConnection *connection G_GNUC_UNUSED,\n'
- ' const gchar *sender G_GNUC_UNUSED,\n'
- ' const gchar *object_path G_GNUC_UNUSED,\n'
- ' const gchar *interface_name G_GNUC_UNUSED,\n'
- ' const gchar *property_name,\n'
- ' GError **error,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- ' GValue value = G_VALUE_INIT;\n'
- ' GParamSpec *pspec;\n'
- ' _ExtendedGDBusPropertyInfo *info;\n'
- ' GVariant *ret;\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' ret = NULL;\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
- ' g_assert (info != NULL);\n'
- ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);\n'
- ' if (pspec == NULL)\n'
- ' {\n'
- ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %%s", property_name);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_value_init (&value, pspec->value_type);\n'
- ' g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
- ' ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));\n'
- ' g_value_unset (&value);\n'
- ' }\n'
- ' return ret;\n'
- '}\n'
- '\n'
- %(i.name_lower))
-
- self.c.write('static gboolean\n'
- '_%s_skeleton_handle_set_property (\n'
- ' GDBusConnection *connection G_GNUC_UNUSED,\n'
- ' const gchar *sender G_GNUC_UNUSED,\n'
- ' const gchar *object_path G_GNUC_UNUSED,\n'
- ' const gchar *interface_name G_GNUC_UNUSED,\n'
- ' const gchar *property_name,\n'
- ' GVariant *variant,\n'
- ' GError **error,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- ' GValue value = G_VALUE_INIT;\n'
- ' GParamSpec *pspec;\n'
- ' _ExtendedGDBusPropertyInfo *info;\n'
- ' gboolean ret;\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' ret = FALSE;\n'
- ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
- ' g_assert (info != NULL);\n'
- ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);\n'
- ' if (pspec == NULL)\n'
- ' {\n'
- ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %%s", property_name);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' if (info->use_gvariant)\n'
- ' g_value_set_variant (&value, variant);\n'
- ' else\n'
- ' g_dbus_gvariant_to_gvalue (variant, &value);\n'
- ' g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
- ' g_value_unset (&value);\n'
- ' ret = TRUE;\n'
- ' }\n'
- ' return ret;\n'
- '}\n'
- '\n'
- %(i.name_lower))
-
-
- self.c.write('static const GDBusInterfaceVTable _%s_skeleton_vtable =\n'
- '{\n'
- ' _%s_skeleton_handle_method_call,\n'
- ' _%s_skeleton_handle_get_property,\n'
- ' _%s_skeleton_handle_set_property,\n'
- ' {NULL}\n'
- '};\n'
- '\n'%(i.name_lower, i.name_lower, i.name_lower, i.name_lower))
-
- self.c.write('static GDBusInterfaceInfo *\n'
- '%s_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
- '{\n'
- ' return %s_interface_info ();\n'
- %(i.name_lower, i.name_lower))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static GDBusInterfaceVTable *\n'
- '%s_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
- '{\n'
- ' return (GDBusInterfaceVTable *) &_%s_skeleton_vtable;\n'
- %(i.name_lower, i.name_lower))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static GVariant *\n'
- '%s_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write('\n'
- ' GVariantBuilder builder;\n'
- ' guint n;\n'
- ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
- ' if (_%s_interface_info.parent_struct.properties == NULL)\n'
- ' goto out;\n'
- ' for (n = 0; _%s_interface_info.parent_struct.properties[n] != NULL; n++)\n'
- ' {\n'
- ' GDBusPropertyInfo *info = _%s_interface_info.parent_struct.properties[n];\n'
- ' if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)\n'
- ' {\n'
- ' GVariant *value;\n'
- ' value = _%s_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", info->name, NULL, skeleton);\n'
- ' if (value != NULL)\n'
- ' {\n'
- ' g_variant_take_ref (value);\n'
- ' g_variant_builder_add (&builder, "{sv}", info->name, value);\n'
- ' g_variant_unref (value);\n'
- ' }\n'
- ' }\n'
- ' }\n'
- 'out:\n'
- ' return g_variant_builder_end (&builder);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('\n')
+
+ self.outfile.write('struct _%sSkeletonPrivate\n'
+ '{\n'
+ ' GValue *properties;\n'
+ ' GList *changed_properties;\n'
+ ' GSource *changed_properties_idle_source;\n'
+ ' GMainContext *context;\n'
+ ' GMutex lock;\n'
+ '};\n'
+ '\n'%i.camel_name)
+
+ self.outfile.write('static void\n'
+ '_%s_skeleton_handle_method_call (\n'
+ ' GDBusConnection *connection G_GNUC_UNUSED,\n'
+ ' const gchar *sender G_GNUC_UNUSED,\n'
+ ' const gchar *object_path G_GNUC_UNUSED,\n'
+ ' const gchar *interface_name,\n'
+ ' const gchar *method_name,\n'
+ ' GVariant *parameters,\n'
+ ' GDBusMethodInvocation *invocation,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ ' _ExtendedGDBusMethodInfo *info;\n'
+ ' GVariantIter iter;\n'
+ ' GVariant *child;\n'
+ ' GValue *paramv;\n'
+ ' gsize num_params;\n'
+ ' guint num_extra;\n'
+ ' gsize n;\n'
+ ' guint signal_id;\n'
+ ' GValue return_value = G_VALUE_INIT;\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);\n'
+ ' g_assert (info != NULL);\n'
+ %())
+ self.outfile.write(' num_params = g_variant_n_children (parameters);\n'
+ ' num_extra = info->pass_fdlist ? 3 : 2;'
+ ' paramv = g_new0 (GValue, num_params + num_extra);\n'
+ ' n = 0;\n'
+ ' g_value_init (&paramv[n], %sTYPE_%s);\n'
+ ' g_value_set_object (&paramv[n++], skeleton);\n'
+ ' g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n'
+ ' g_value_set_object (&paramv[n++], invocation);\n'
+ ' if (info->pass_fdlist)\n'
+ ' {\n'
+ '#ifdef G_OS_UNIX\n'
+ ' g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);\n'
+ ' g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));\n'
+ '#else\n'
+ ' g_assert_not_reached ();\n'
+ '#endif\n'
+ ' }\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_variant_iter_init (&iter, parameters);\n'
+ ' while ((child = g_variant_iter_next_value (&iter)) != NULL)\n'
+ ' {\n'
+ ' _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];\n'
+ ' if (arg_info->use_gvariant)\n'
+ ' {\n'
+ ' g_value_init (&paramv[n], G_TYPE_VARIANT);\n'
+ ' g_value_set_variant (&paramv[n], child);\n'
+ ' n++;\n'
+ ' }\n'
+ ' else\n'
+ ' g_dbus_gvariant_to_gvalue (child, &paramv[n++]);\n'
+ ' g_variant_unref (child);\n'
+ ' }\n')
+ self.outfile.write(' signal_id = g_signal_lookup (info->signal_name, %sTYPE_%s);\n'
+ %(i.ns_upper, i.name_upper))
+ self.outfile.write(' g_value_init (&return_value, G_TYPE_BOOLEAN);\n'
+ ' g_signal_emitv (paramv, signal_id, 0, &return_value);\n'
+ ' if (!g_value_get_boolean (&return_value))\n'
+ ' g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);\n'
+ ' g_value_unset (&return_value);\n')
+ self.outfile.write(' for (n = 0; n < num_params + num_extra; n++)\n'
+ ' g_value_unset (&paramv[n]);\n'
+ ' g_free (paramv);\n')
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static GVariant *\n'
+ '_%s_skeleton_handle_get_property (\n'
+ ' GDBusConnection *connection G_GNUC_UNUSED,\n'
+ ' const gchar *sender G_GNUC_UNUSED,\n'
+ ' const gchar *object_path G_GNUC_UNUSED,\n'
+ ' const gchar *interface_name G_GNUC_UNUSED,\n'
+ ' const gchar *property_name,\n'
+ ' GError **error,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ ' GValue value = G_VALUE_INIT;\n'
+ ' GParamSpec *pspec;\n'
+ ' _ExtendedGDBusPropertyInfo *info;\n'
+ ' GVariant *ret;\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' ret = NULL;\n'
+ ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
+ ' g_assert (info != NULL);\n'
+ ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);\n'
+ ' if (pspec == NULL)\n'
+ ' {\n'
+ ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %%s", property_name);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_value_init (&value, pspec->value_type);\n'
+ ' g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
+ ' ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));\n'
+ ' g_value_unset (&value);\n'
+ ' }\n'
+ ' return ret;\n'
+ '}\n'
+ '\n'
+ %(i.name_lower))
+
+ self.outfile.write('static gboolean\n'
+ '_%s_skeleton_handle_set_property (\n'
+ ' GDBusConnection *connection G_GNUC_UNUSED,\n'
+ ' const gchar *sender G_GNUC_UNUSED,\n'
+ ' const gchar *object_path G_GNUC_UNUSED,\n'
+ ' const gchar *interface_name G_GNUC_UNUSED,\n'
+ ' const gchar *property_name,\n'
+ ' GVariant *variant,\n'
+ ' GError **error,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ ' GValue value = G_VALUE_INIT;\n'
+ ' GParamSpec *pspec;\n'
+ ' _ExtendedGDBusPropertyInfo *info;\n'
+ ' gboolean ret;\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' ret = FALSE;\n'
+ ' info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info.parent_struct, property_name);\n'
+ ' g_assert (info != NULL);\n'
+ ' pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);\n'
+ ' if (pspec == NULL)\n'
+ ' {\n'
+ ' g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %%s", property_name);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' if (info->use_gvariant)\n'
+ ' g_value_set_variant (&value, variant);\n'
+ ' else\n'
+ ' g_dbus_gvariant_to_gvalue (variant, &value);\n'
+ ' g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);\n'
+ ' g_value_unset (&value);\n'
+ ' ret = TRUE;\n'
+ ' }\n'
+ ' return ret;\n'
+ '}\n'
+ '\n'
+ %(i.name_lower))
+
+
+ self.outfile.write('static const GDBusInterfaceVTable _%s_skeleton_vtable =\n'
+ '{\n'
+ ' _%s_skeleton_handle_method_call,\n'
+ ' _%s_skeleton_handle_get_property,\n'
+ ' _%s_skeleton_handle_set_property,\n'
+ ' {NULL}\n'
+ '};\n'
+ '\n'%(i.name_lower, i.name_lower, i.name_lower, i.name_lower))
+
+ self.outfile.write('static GDBusInterfaceInfo *\n'
+ '%s_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
+ '{\n'
+ ' return %s_interface_info ();\n'
+ %(i.name_lower, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static GDBusInterfaceVTable *\n'
+ '%s_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)\n'
+ '{\n'
+ ' return (GDBusInterfaceVTable *) &_%s_skeleton_vtable;\n'
+ %(i.name_lower, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static GVariant *\n'
+ '%s_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write('\n'
+ ' GVariantBuilder builder;\n'
+ ' guint n;\n'
+ ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
+ ' if (_%s_interface_info.parent_struct.properties == NULL)\n'
+ ' goto out;\n'
+ ' for (n = 0; _%s_interface_info.parent_struct.properties[n] != NULL; n++)\n'
+ ' {\n'
+ ' GDBusPropertyInfo *info = _%s_interface_info.parent_struct.properties[n];\n'
+ ' if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)\n'
+ ' {\n'
+ ' GVariant *value;\n'
+ ' value = _%s_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", info->name, NULL, skeleton);\n'
+ ' if (value != NULL)\n'
+ ' {\n'
+ ' g_variant_take_ref (value);\n'
+ ' g_variant_builder_add (&builder, "{sv}", info->name, value);\n'
+ ' g_variant_unref (value);\n'
+ ' }\n'
+ ' }\n'
+ ' }\n'
+ 'out:\n'
+ ' return g_variant_builder_end (&builder);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.name_lower, i.name_lower, i.name_lower, i.name))
if len(i.properties) > 0:
- self.c.write('static gboolean _%s_emit_changed (gpointer user_data);\n'
- '\n'
- %(i.name_lower))
-
- self.c.write('static void\n'
- '%s_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)\n'
- '{\n'
- %(i.name_lower))
+ self.outfile.write('static gboolean _%s_emit_changed (gpointer user_data);\n'
+ '\n'
+ %(i.name_lower))
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)\n'
+ '{\n'
+ %(i.name_lower))
if len(i.properties) > 0:
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
- ' gboolean emit_changed = FALSE;\n'
- '\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' if (skeleton->priv->changed_properties_idle_source != NULL)\n'
- ' {\n'
- ' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n'
- ' skeleton->priv->changed_properties_idle_source = NULL;\n'
- ' emit_changed = TRUE;\n'
- ' }\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- '\n'
- ' if (emit_changed)\n'
- ' _%s_emit_changed (skeleton);\n'
- %(i.camel_name, i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (_skeleton);\n'
+ ' gboolean emit_changed = FALSE;\n'
+ '\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' if (skeleton->priv->changed_properties_idle_source != NULL)\n'
+ ' {\n'
+ ' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n'
+ ' skeleton->priv->changed_properties_idle_source = NULL;\n'
+ ' emit_changed = TRUE;\n'
+ ' }\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ '\n'
+ ' if (emit_changed)\n'
+ ' _%s_emit_changed (skeleton);\n'
+ %(i.camel_name, i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
for s in i.signals:
- self.c.write('static void\n'
- '_%s_on_signal_%s (\n'
- ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
+ self.outfile.write('static void\n'
+ '_%s_on_signal_%s (\n'
+ ' %s *object'%(i.name_lower, s.name_lower, i.camel_name))
for a in s.args:
- self.c.write(',\n %sarg_%s'%(a.ctype_in, a.name))
- self.c.write(')\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n\n'
- ' GList *connections, *l;\n'
- ' GVariant *signal_variant;\n'
- ' connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));\n'
- %(i.camel_name, i.ns_upper, i.name_upper))
- self.c.write('\n'
- ' signal_variant = g_variant_ref_sink (g_variant_new ("(')
+ self.outfile.write(',\n %sarg_%s'%(a.ctype_in, a.name))
+ self.outfile.write(')\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n\n'
+ ' GList *connections, *l;\n'
+ ' GVariant *signal_variant;\n'
+ ' connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));\n'
+ %(i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write('\n'
+ ' signal_variant = g_variant_ref_sink (g_variant_new ("(')
for a in s.args:
- self.c.write('%s'%(a.format_in))
- self.c.write(')"')
+ self.outfile.write('%s'%(a.format_in))
+ self.outfile.write(')"')
for a in s.args:
- self.c.write(',\n arg_%s'%(a.name))
- self.c.write('));\n')
-
- self.c.write(' for (l = connections; l != NULL; l = l->next)\n'
- ' {\n'
- ' GDBusConnection *connection = l->data;\n'
- ' g_dbus_connection_emit_signal (connection,\n'
- ' NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", "%s",\n'
- ' signal_variant, NULL);\n'
- ' }\n'
- %(i.name, s.name))
- self.c.write(' g_variant_unref (signal_variant);\n')
- self.c.write(' g_list_free_full (connections, g_object_unref);\n')
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void %s_skeleton_iface_init (%sIface *iface);\n'
- %(i.name_lower, i.camel_name))
-
- self.c.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
- self.c.write(' G_ADD_PRIVATE (%sSkeleton)\n'%(i.camel_name))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#else\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
- self.c.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
- self.c.write('#endif\n')
+ self.outfile.write(',\n arg_%s'%(a.name))
+ self.outfile.write('));\n')
+
+ self.outfile.write(' for (l = connections; l != NULL; l = l->next)\n'
+ ' {\n'
+ ' GDBusConnection *connection = l->data;\n'
+ ' g_dbus_connection_emit_signal (connection,\n'
+ ' NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "%s", "%s",\n'
+ ' signal_variant, NULL);\n'
+ ' }\n'
+ %(i.name, s.name))
+ self.outfile.write(' g_variant_unref (signal_variant);\n')
+ self.outfile.write(' g_list_free_full (connections, g_object_unref);\n')
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void %s_skeleton_iface_init (%sIface *iface);\n'
+ %(i.name_lower, i.camel_name))
+
+ self.outfile.write('#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
+ self.outfile.write(' G_ADD_PRIVATE (%sSkeleton)\n'%(i.camel_name))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#else\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sSkeleton, %s_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,\n'%(i.camel_name, i.name_lower))
+ self.outfile.write(' G_IMPLEMENT_INTERFACE (%sTYPE_%s, %s_skeleton_iface_init))\n\n'%(i.ns_upper, i.name_upper, i.name_lower))
+ self.outfile.write('#endif\n')
# finalize
- self.c.write('static void\n'
- '%s_skeleton_finalize (GObject *object)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write('static void\n'
+ '%s_skeleton_finalize (GObject *object)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
if len(i.properties) > 0:
- self.c.write(' guint n;\n'
- ' for (n = 0; n < %d; n++)\n'
- ' g_value_unset (&skeleton->priv->properties[n]);\n'%(len(i.properties)))
- self.c.write(' g_free (skeleton->priv->properties);\n')
- self.c.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);\n')
- self.c.write(' if (skeleton->priv->changed_properties_idle_source != NULL)\n')
- self.c.write(' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n')
- self.c.write(' g_main_context_unref (skeleton->priv->context);\n')
- self.c.write(' g_mutex_clear (&skeleton->priv->lock);\n')
- self.c.write(' G_OBJECT_CLASS (%s_skeleton_parent_class)->finalize (object);\n'
- '}\n'
- '\n'%(i.name_lower))
+ self.outfile.write(' guint n;\n'
+ ' for (n = 0; n < %d; n++)\n'
+ ' g_value_unset (&skeleton->priv->properties[n]);\n'%(len(i.properties)))
+ self.outfile.write(' g_free (skeleton->priv->properties);\n')
+ self.outfile.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);\n')
+ self.outfile.write(' if (skeleton->priv->changed_properties_idle_source != NULL)\n')
+ self.outfile.write(' g_source_destroy (skeleton->priv->changed_properties_idle_source);\n')
+ self.outfile.write(' g_main_context_unref (skeleton->priv->context);\n')
+ self.outfile.write(' g_mutex_clear (&skeleton->priv->lock);\n')
+ self.outfile.write(' G_OBJECT_CLASS (%s_skeleton_parent_class)->finalize (object);\n'
+ '}\n'
+ '\n'%(i.name_lower))
# property accessors (TODO: generate PropertiesChanged signals in setter)
if len(i.properties) > 0:
- self.c.write('static void\n'
- '%s_skeleton_get_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' g_value_copy (&skeleton->priv->properties[prop_id - 1], value);\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties)))
- self.c.write('}\n'
- '\n')
+ self.outfile.write('static void\n'
+ '%s_skeleton_get_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' g_value_copy (&skeleton->priv->properties[prop_id - 1], value);\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties)))
+ self.outfile.write('}\n'
+ '\n')
# if property is already scheduled then re-use entry.. though it could be
# that the user did
@@ -2447,232 +2471,232 @@ class CodeGenerator:
# change event. If the latest value is not different from the original
# one, we can simply ignore the ChangedProperty
#
- self.c.write('static gboolean\n'
- '_%s_emit_changed (gpointer user_data)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' GList *l;\n'
- ' GVariantBuilder builder;\n'
- ' GVariantBuilder invalidated_builder;\n'
- ' guint num_changes;\n'
- '\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
- ' g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
- ' for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)\n'
- ' {\n'
- ' ChangedProperty *cp = l->data;\n'
- ' GVariant *variant;\n'
- ' const GValue *cur_value;\n'
- '\n'
- ' cur_value = &skeleton->priv->properties[cp->prop_id - 1];\n'
- ' if (!_g_value_equal (cur_value, &cp->orig_value))\n'
- ' {\n'
- ' variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));\n'
- ' g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);\n'
- ' g_variant_unref (variant);\n'
- ' num_changes++;\n'
- ' }\n'
- ' }\n'
- ' if (num_changes > 0)\n'
- ' {\n'
- ' GList *connections, *ll;\n'
- ' GVariant *signal_variant;'
- '\n'
- ' signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "%s",\n'
- ' &builder, &invalidated_builder));\n'
- ' connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));\n'
- ' for (ll = connections; ll != NULL; ll = ll->next)\n'
- ' {\n'
- ' GDBusConnection *connection = ll->data;\n'
- '\n'
- ' g_dbus_connection_emit_signal (connection,\n'
- ' NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),\n'
- ' "org.freedesktop.DBus.Properties",\n'
- ' "PropertiesChanged",\n'
- ' signal_variant,\n'
- ' NULL);\n'
- ' }\n'
- ' g_variant_unref (signal_variant);\n'
- ' g_list_free_full (connections, g_object_unref);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_variant_builder_clear (&builder);\n'
- ' g_variant_builder_clear (&invalidated_builder);\n'
- ' }\n'
- %(i.name))
- self.c.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);\n')
- self.c.write(' skeleton->priv->changed_properties = NULL;\n')
- self.c.write(' skeleton->priv->changed_properties_idle_source = NULL;\n')
- self.c.write(' g_mutex_unlock (&skeleton->priv->lock);\n')
- self.c.write(' return FALSE;\n'
- '}\n'
- '\n')
+ self.outfile.write('static gboolean\n'
+ '_%s_emit_changed (gpointer user_data)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (user_data);\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' GList *l;\n'
+ ' GVariantBuilder builder;\n'
+ ' GVariantBuilder invalidated_builder;\n'
+ ' guint num_changes;\n'
+ '\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));\n'
+ ' g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));\n'
+ ' for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)\n'
+ ' {\n'
+ ' ChangedProperty *cp = l->data;\n'
+ ' GVariant *variant;\n'
+ ' const GValue *cur_value;\n'
+ '\n'
+ ' cur_value = &skeleton->priv->properties[cp->prop_id - 1];\n'
+ ' if (!_g_value_equal (cur_value, &cp->orig_value))\n'
+ ' {\n'
+ ' variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));\n'
+ ' g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);\n'
+ ' g_variant_unref (variant);\n'
+ ' num_changes++;\n'
+ ' }\n'
+ ' }\n'
+ ' if (num_changes > 0)\n'
+ ' {\n'
+ ' GList *connections, *ll;\n'
+ ' GVariant *signal_variant;'
+ '\n'
+ ' signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "%s",\n'
+ ' &builder, &invalidated_builder));\n'
+ ' connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));\n'
+ ' for (ll = connections; ll != NULL; ll = ll->next)\n'
+ ' {\n'
+ ' GDBusConnection *connection = ll->data;\n'
+ '\n'
+ ' g_dbus_connection_emit_signal (connection,\n'
+ ' NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),\n'
+ ' "org.freedesktop.DBus.Properties",\n'
+ ' "PropertiesChanged",\n'
+ ' signal_variant,\n'
+ ' NULL);\n'
+ ' }\n'
+ ' g_variant_unref (signal_variant);\n'
+ ' g_list_free_full (connections, g_object_unref);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_variant_builder_clear (&builder);\n'
+ ' g_variant_builder_clear (&invalidated_builder);\n'
+ ' }\n'
+ %(i.name))
+ self.outfile.write(' g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);\n')
+ self.outfile.write(' skeleton->priv->changed_properties = NULL;\n')
+ self.outfile.write(' skeleton->priv->changed_properties_idle_source = NULL;\n')
+ self.outfile.write(' g_mutex_unlock (&skeleton->priv->lock);\n')
+ self.outfile.write(' return FALSE;\n'
+ '}\n'
+ '\n')
# holding lock while being called
- self.c.write('static void\n'
- '_%s_schedule_emit_changed (%sSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)\n'
- '{\n'
- ' ChangedProperty *cp;\n'
- ' GList *l;\n'
- ' cp = NULL;\n'
- ' for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)\n'
- ' {\n'
- ' ChangedProperty *i_cp = l->data;\n'
- ' if (i_cp->info == info)\n'
- ' {\n'
- ' cp = i_cp;\n'
- ' break;\n'
- ' }\n'
- ' }\n'
- %(i.name_lower, i.camel_name))
- self.c.write(' if (cp == NULL)\n'
- ' {\n'
- ' cp = g_new0 (ChangedProperty, 1);\n'
- ' cp->prop_id = prop_id;\n'
- ' cp->info = info;\n'
- ' skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);\n'
- ' g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));\n'
- ' g_value_copy (orig_value, &cp->orig_value);\n'
- ' }\n'
- '}\n'
- '\n'
- %())
+ self.outfile.write('static void\n'
+ '_%s_schedule_emit_changed (%sSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)\n'
+ '{\n'
+ ' ChangedProperty *cp;\n'
+ ' GList *l;\n'
+ ' cp = NULL;\n'
+ ' for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)\n'
+ ' {\n'
+ ' ChangedProperty *i_cp = l->data;\n'
+ ' if (i_cp->info == info)\n'
+ ' {\n'
+ ' cp = i_cp;\n'
+ ' break;\n'
+ ' }\n'
+ ' }\n'
+ %(i.name_lower, i.camel_name))
+ self.outfile.write(' if (cp == NULL)\n'
+ ' {\n'
+ ' cp = g_new0 (ChangedProperty, 1);\n'
+ ' cp->prop_id = prop_id;\n'
+ ' cp->info = info;\n'
+ ' skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);\n'
+ ' g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));\n'
+ ' g_value_copy (orig_value, &cp->orig_value);\n'
+ ' }\n'
+ '}\n'
+ '\n'
+ %())
# Postpone setting up the refresh source until the ::notify signal is emitted as
# this allows use of g_object_freeze_notify()/g_object_thaw_notify() ...
# This is useful when updating several properties from another thread than
# where the idle will be emitted from
- self.c.write('static void\n'
- '%s_skeleton_notify (GObject *object,\n'
- ' GParamSpec *pspec G_GNUC_UNUSED)\n'
- '{\n'
- ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' if (skeleton->priv->changed_properties != NULL &&\n'
- ' skeleton->priv->changed_properties_idle_source == NULL)\n'
- ' {\n'
- ' skeleton->priv->changed_properties_idle_source = g_idle_source_new ();\n'
- ' g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);\n'
- ' g_source_set_callback (skeleton->priv->changed_properties_idle_source, _%s_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);\n'
- ' g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _%s_emit_changed");\n'
- ' g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);\n'
- ' g_source_unref (skeleton->priv->changed_properties_idle_source);\n'
- ' }\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- '}\n'
- '\n'
- %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper, i.name_lower, i.name_lower))
-
- self.c.write('static void\n'
- '%s_skeleton_set_property (GObject *object,\n'
- ' guint prop_id,\n'
- ' const GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'%(i.name_lower))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
- ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' g_object_freeze_notify (object);\n'
- ' if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))\n'
- ' {\n'
- ' if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)\n'
- ' _%s_schedule_emit_changed (skeleton, _%s_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);\n'
- ' g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);\n'
- ' g_object_notify_by_pspec (object, pspec);\n'
- ' }\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- ' g_object_thaw_notify (object);\n'
- %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties), i.name_lower, i.name_lower))
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void\n'
- '%s_skeleton_init (%sSkeleton *skeleton)\n'
- '{\n'
- '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
- ' skeleton->priv = %s_skeleton_get_instance_private (skeleton);\n'
- '#else\n'
- ' skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, %sTYPE_%s_SKELETON, %sSkeletonPrivate);\n'
- '#endif\n\n'
- %(i.name_lower, i.camel_name,
- i.name_lower,
- i.ns_upper, i.name_upper, i.camel_name))
- self.c.write(' g_mutex_init (&skeleton->priv->lock);\n')
- self.c.write(' skeleton->priv->context = g_main_context_ref_thread_default ();\n')
+ self.outfile.write('static void\n'
+ '%s_skeleton_notify (GObject *object,\n'
+ ' GParamSpec *pspec G_GNUC_UNUSED)\n'
+ '{\n'
+ ' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' if (skeleton->priv->changed_properties != NULL &&\n'
+ ' skeleton->priv->changed_properties_idle_source == NULL)\n'
+ ' {\n'
+ ' skeleton->priv->changed_properties_idle_source = g_idle_source_new ();\n'
+ ' g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);\n'
+ ' g_source_set_callback (skeleton->priv->changed_properties_idle_source, _%s_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);\n'
+ ' g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _%s_emit_changed");\n'
+ ' g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);\n'
+ ' g_source_unref (skeleton->priv->changed_properties_idle_source);\n'
+ ' }\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ '}\n'
+ '\n'
+ %(i.name_lower, i.camel_name, i.ns_upper, i.name_upper, i.name_lower, i.name_lower))
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_set_property (GObject *object,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'%(i.name_lower))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'
+ ' g_assert (prop_id != 0 && prop_id - 1 < %d);\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' g_object_freeze_notify (object);\n'
+ ' if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))\n'
+ ' {\n'
+ ' if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL)\n'
+ ' _%s_schedule_emit_changed (skeleton, _%s_property_info_pointers[prop_id - 1], prop_id, &skeleton->priv->properties[prop_id - 1]);\n'
+ ' g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);\n'
+ ' g_object_notify_by_pspec (object, pspec);\n'
+ ' }\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ ' g_object_thaw_notify (object);\n'
+ %(i.camel_name, i.ns_upper, i.name_upper, len(i.properties), i.name_lower, i.name_lower))
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_init (%sSkeleton *skeleton)\n'
+ '{\n'
+ '#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38\n'
+ ' skeleton->priv = %s_skeleton_get_instance_private (skeleton);\n'
+ '#else\n'
+ ' skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, %sTYPE_%s_SKELETON, %sSkeletonPrivate);\n'
+ '#endif\n\n'
+ %(i.name_lower, i.camel_name,
+ i.name_lower,
+ i.ns_upper, i.name_upper, i.camel_name))
+ self.outfile.write(' g_mutex_init (&skeleton->priv->lock);\n')
+ self.outfile.write(' skeleton->priv->context = g_main_context_ref_thread_default ();\n')
if len(i.properties) > 0:
- self.c.write(' skeleton->priv->properties = g_new0 (GValue, %d);\n'%(len(i.properties)))
+ self.outfile.write(' skeleton->priv->properties = g_new0 (GValue, %d);\n'%(len(i.properties)))
n = 0
for p in i.properties:
- self.c.write(' g_value_init (&skeleton->priv->properties[%d], %s);\n'%(n, p.arg.gtype))
+ self.outfile.write(' g_value_init (&skeleton->priv->properties[%d], %s);\n'%(n, p.arg.gtype))
n += 1
- self.c.write('}\n'
- '\n')
+ self.outfile.write('}\n'
+ '\n')
# property vfuncs
n = 0
for p in i.properties:
- self.c.write('static %s\n'
- '%s_skeleton_get_%s (%s *object)\n'
- '{\n'
- %(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
- self.c.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
- self.c.write(' %svalue;\n'
- ' g_mutex_lock (&skeleton->priv->lock);\n'
- ' value = %s (&(skeleton->priv->properties[%d]));\n'
- ' g_mutex_unlock (&skeleton->priv->lock);\n'
- %(p.arg.ctype_in_g, p.arg.gvalue_get, n))
- self.c.write(' return value;\n')
- self.c.write('}\n')
- self.c.write('\n')
+ self.outfile.write('static %s\n'
+ '%s_skeleton_get_%s (%s *object)\n'
+ '{\n'
+ %(p.arg.ctype_in, i.name_lower, p.name_lower, i.camel_name))
+ self.outfile.write(' %sSkeleton *skeleton = %s%s_SKELETON (object);\n'%(i.camel_name, i.ns_upper, i.name_upper))
+ self.outfile.write(' %svalue;\n'
+ ' g_mutex_lock (&skeleton->priv->lock);\n'
+ ' value = %s (&(skeleton->priv->properties[%d]));\n'
+ ' g_mutex_unlock (&skeleton->priv->lock);\n'
+ %(p.arg.ctype_in_g, p.arg.gvalue_get, n))
+ self.outfile.write(' return value;\n')
+ self.outfile.write('}\n')
+ self.outfile.write('\n')
n += 1
- self.c.write('static void\n'
- '%s_skeleton_class_init (%sSkeletonClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class;\n'
- ' GDBusInterfaceSkeletonClass *skeleton_class;\n'
- '\n'
- ' gobject_class = G_OBJECT_CLASS (klass);\n'
- ' gobject_class->finalize = %s_skeleton_finalize;\n'
- %(i.name_lower, i.camel_name, i.name_lower))
+ self.outfile.write('static void\n'
+ '%s_skeleton_class_init (%sSkeletonClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class;\n'
+ ' GDBusInterfaceSkeletonClass *skeleton_class;\n'
+ '\n'
+ ' gobject_class = G_OBJECT_CLASS (klass);\n'
+ ' gobject_class->finalize = %s_skeleton_finalize;\n'
+ %(i.name_lower, i.camel_name, i.name_lower))
if len(i.properties) > 0:
- self.c.write(' gobject_class->get_property = %s_skeleton_get_property;\n'
- ' gobject_class->set_property = %s_skeleton_set_property;\n'
- ' gobject_class->notify = %s_skeleton_notify;\n'
- '\n'%(i.name_lower, i.name_lower, i.name_lower))
- self.c.write('\n'
- ' %s_override_properties (gobject_class, 1);\n'%(i.name_lower))
- self.c.write('\n'
- ' skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);\n');
- self.c.write(' skeleton_class->get_info = %s_skeleton_dbus_interface_get_info;\n'%(i.name_lower))
- self.c.write(' skeleton_class->get_properties = %s_skeleton_dbus_interface_get_properties;\n'%(i.name_lower))
- self.c.write(' skeleton_class->flush = %s_skeleton_dbus_interface_flush;\n'%(i.name_lower))
- self.c.write(' skeleton_class->get_vtable = %s_skeleton_dbus_interface_get_vtable;\n'%(i.name_lower))
-
- self.c.write('\n'
- '#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
- ' g_type_class_add_private (klass, sizeof (%sSkeletonPrivate));\n'
- '#endif\n'%(i.camel_name))
-
- self.c.write('}\n'
- '\n')
-
- self.c.write('static void\n'
- '%s_skeleton_iface_init (%sIface *iface)\n'
- '{\n'
- %(i.name_lower, i.camel_name))
+ self.outfile.write(' gobject_class->get_property = %s_skeleton_get_property;\n'
+ ' gobject_class->set_property = %s_skeleton_set_property;\n'
+ ' gobject_class->notify = %s_skeleton_notify;\n'
+ '\n'%(i.name_lower, i.name_lower, i.name_lower))
+ self.outfile.write('\n'
+ ' %s_override_properties (gobject_class, 1);\n'%(i.name_lower))
+ self.outfile.write('\n'
+ ' skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);\n');
+ self.outfile.write(' skeleton_class->get_info = %s_skeleton_dbus_interface_get_info;\n'%(i.name_lower))
+ self.outfile.write(' skeleton_class->get_properties = %s_skeleton_dbus_interface_get_properties;\n'%(i.name_lower))
+ self.outfile.write(' skeleton_class->flush = %s_skeleton_dbus_interface_flush;\n'%(i.name_lower))
+ self.outfile.write(' skeleton_class->get_vtable = %s_skeleton_dbus_interface_get_vtable;\n'%(i.name_lower))
+
+ self.outfile.write('\n'
+ '#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38\n'
+ ' g_type_class_add_private (klass, sizeof (%sSkeletonPrivate));\n'
+ '#endif\n'%(i.camel_name))
+
+ self.outfile.write('}\n'
+ '\n')
+
+ self.outfile.write('static void\n'
+ '%s_skeleton_iface_init (%sIface *iface)\n'
+ '{\n'
+ %(i.name_lower, i.camel_name))
for s in i.signals:
- self.c.write(' iface->%s = _%s_on_signal_%s;\n'
- %(s.name_lower, i.name_lower, s.name_lower))
+ self.outfile.write(' iface->%s = _%s_on_signal_%s;\n'
+ %(s.name_lower, i.name_lower, s.name_lower))
for p in i.properties:
- self.c.write(' iface->get_%s = %s_skeleton_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
- self.c.write('}\n'
- '\n')
+ self.outfile.write(' iface->get_%s = %s_skeleton_get_%s;\n'%(p.name_lower, i.name_lower, p.name_lower))
+ self.outfile.write('}\n'
+ '\n')
# constructors
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %s_skeleton_new:\n'
' *\n'
@@ -2680,24 +2704,24 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sSkeleton): The skeleton object.\n'
%(i.name_lower, i.name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write('%s *\n'
- '%s_skeleton_new (void)\n'
- '{\n'
- ' return %s%s (g_object_new (%sTYPE_%s_SKELETON, NULL));\n'
- '}\n'
- '\n'%(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *\n'
+ '%s_skeleton_new (void)\n'
+ '{\n'
+ ' return %s%s (g_object_new (%sTYPE_%s_SKELETON, NULL));\n'
+ '}\n'
+ '\n'%(i.camel_name, i.name_lower, i.ns_upper, i.name_upper, i.ns_upper, i.name_upper))
# ---------------------------------------------------------------------------------------------------
def generate_object(self):
- self.c.write('/* ------------------------------------------------------------------------\n'
- ' * Code for Object, ObjectProxy and ObjectSkeleton\n'
- ' * ------------------------------------------------------------------------\n'
- ' */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------\n'
+ ' * Code for Object, ObjectProxy and ObjectSkeleton\n'
+ ' * ------------------------------------------------------------------------\n'
+ ' */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * SECTION:%sObject\n'
' * @title: %sObject\n'
@@ -2706,18 +2730,18 @@ class CodeGenerator:
' * This section contains the #%sObject, #%sObjectProxy, and #%sObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.\n'
' */\n'
%(self.namespace, self.namespace, self.namespace, self.namespace, self.namespace), False))
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObject:\n'
' *\n'
' * The #%sObject type is a specialized container of interfaces.\n'
' */\n'
%(self.namespace, self.namespace), False))
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectIface:\n'
' * @parent_iface: The parent interface.\n'
@@ -2725,17 +2749,17 @@ class CodeGenerator:
' * Virtual table for the #%sObject interface.\n'
' */\n'
%(self.namespace, self.namespace), False))
- self.c.write('\n')
-
- self.c.write('typedef %sObjectIface %sObjectInterface;\n'%(self.namespace, self.namespace))
- self.c.write('G_DEFINE_INTERFACE_WITH_CODE (%sObject, %sobject, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);)\n'%(self.namespace, self.ns_lower))
- self.c.write('\n')
- self.c.write('static void\n'
- '%sobject_default_init (%sObjectIface *iface)\n'
- '{\n'
- %(self.ns_lower, self.namespace));
+ self.outfile.write('\n')
+
+ self.outfile.write('typedef %sObjectIface %sObjectInterface;\n'%(self.namespace, self.namespace))
+ self.outfile.write('G_DEFINE_INTERFACE_WITH_CODE (%sObject, %sobject, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT);)\n'%(self.namespace, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('static void\n'
+ '%sobject_default_init (%sObjectIface *iface)\n'
+ '{\n'
+ %(self.ns_lower, self.namespace));
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
' /**\n'
' * %sObject:%s:\n'
' *\n'
@@ -2743,15 +2767,15 @@ class CodeGenerator:
' *\n'
' * Connect to the #GObject::notify signal to get informed of property changes.\n'
%(self.namespace, i.name_hyphen, i.camel_name, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 2)
- self.c.write(' g_object_interface_install_property (iface, g_param_spec_object ("%s", "%s", "%s", %sTYPE_%s, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));\n'
- '\n'
- %(i.name_hyphen, i.name_hyphen, i.name_hyphen, self.ns_upper, i.name_upper))
- self.c.write('}\n'
- '\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 2)
+ self.outfile.write(' g_object_interface_install_property (iface, g_param_spec_object ("%s", "%s", "%s", %sTYPE_%s, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));\n'
+ '\n'
+ %(i.name_hyphen, i.name_hyphen, i.name_hyphen, self.ns_upper, i.name_upper))
+ self.outfile.write('}\n'
+ '\n')
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_get_%s:\n'
' * @object: A #%sObject.\n'
@@ -2760,21 +2784,21 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full): A #%s that must be freed with g_object_unref() or %%NULL if @object does not implement the interface.\n'
%(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name, i.name, i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write ('%s *%sobject_get_%s (%sObject *object)\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
- self.c.write('{\n'
- ' GDBusInterface *ret;\n'
- ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' if (ret == NULL)\n'
- ' return NULL;\n'
- ' return %s%s (ret);\n'
- '}\n'
- '\n'
- %(i.name, self.ns_upper, i.name_upper))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *%sobject_get_%s (%sObject *object)\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('{\n'
+ ' GDBusInterface *ret;\n'
+ ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+ ' if (ret == NULL)\n'
+ ' return NULL;\n'
+ ' return %s%s (ret);\n'
+ '}\n'
+ '\n'
+ %(i.name, self.ns_upper, i.name_upper))
+ self.outfile.write('\n')
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_peek_%s: (skip)\n'
' * @object: A #%sObject.\n'
@@ -2785,134 +2809,134 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer none): A #%s or %%NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.\n'
%(self.ns_lower, i.name_upper.lower(), self.namespace, self.ns_lower, i.name_upper.lower(), i.camel_name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write ('%s *%sobject_peek_%s (%sObject *object)\n'
- %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
- self.c.write('{\n'
- ' GDBusInterface *ret;\n'
- ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' if (ret == NULL)\n'
- ' return NULL;\n'
- ' g_object_unref (ret);\n'
- ' return %s%s (ret);\n'
- '}\n'
- '\n'
- %(i.name, self.ns_upper, i.name_upper))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('%s *%sobject_peek_%s (%sObject *object)\n'
+ %(i.camel_name, self.ns_lower, i.name_upper.lower(), self.namespace))
+ self.outfile.write('{\n'
+ ' GDBusInterface *ret;\n'
+ ' ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+ ' if (ret == NULL)\n'
+ ' return NULL;\n'
+ ' g_object_unref (ret);\n'
+ ' return %s%s (ret);\n'
+ '}\n'
+ '\n'
+ %(i.name, self.ns_upper, i.name_upper))
+ self.outfile.write('\n')
# shared by ObjectProxy and ObjectSkeleton classes
- self.c.write('static void\n'
- '%sobject_notify (GDBusObject *object, GDBusInterface *interface)\n'
- '{\n'
- ' _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);\n'
- ' /* info can be NULL if the other end is using a D-Bus interface we don\'t know\n'
- ' * anything about, for example old generated code in this process talking to\n'
- ' * newer generated code in the other process. */\n'
- ' if (info != NULL)\n'
- ' g_object_notify (G_OBJECT (object), info->hyphen_name);\n'
- '}\n'
- '\n'
- %(self.ns_lower))
-
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write('static void\n'
+ '%sobject_notify (GDBusObject *object, GDBusInterface *interface)\n'
+ '{\n'
+ ' _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);\n'
+ ' /* info can be NULL if the other end is using a D-Bus interface we don\'t know\n'
+ ' * anything about, for example old generated code in this process talking to\n'
+ ' * newer generated code in the other process. */\n'
+ ' if (info != NULL)\n'
+ ' g_object_notify (G_OBJECT (object), info->hyphen_name);\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower))
+
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectProxy:\n'
' *\n'
' * The #%sObjectProxy structure contains only private data and should only be accessed using the provided API.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectProxyClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sObjectProxy.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('static void\n'
- '%sobject_proxy__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
- '{\n'
- ' iface->interface_added = %sobject_notify;\n'
- ' iface->interface_removed = %sobject_notify;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower))
- self.c.write('\n')
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sObjectProxy, %sobject_proxy, G_TYPE_DBUS_OBJECT_PROXY,\n'
- ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT, %sobject_proxy__%sobject_iface_init)\n'
- ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, %sobject_proxy__g_dbus_object_iface_init))\n'
- '\n'
- %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower, self.ns_lower))
+ self.outfile.write('static void\n'
+ '%sobject_proxy__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
+ '{\n'
+ ' iface->interface_added = %sobject_notify;\n'
+ ' iface->interface_removed = %sobject_notify;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sObjectProxy, %sobject_proxy, G_TYPE_DBUS_OBJECT_PROXY,\n'
+ ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT, %sobject_proxy__%sobject_iface_init)\n'
+ ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, %sobject_proxy__g_dbus_object_iface_init))\n'
+ '\n'
+ %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower, self.ns_lower))
# class boilerplate
- self.c.write('static void\n'
- '%sobject_proxy_init (%sObjectProxy *object G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_proxy_set_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' const GValue *value G_GNUC_UNUSED,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
- %(self.ns_lower))
- self.c.write('}\n'
- '\n'%())
- self.c.write('static void\n'
- '%sobject_proxy_get_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' %sObjectProxy *object = %sOBJECT_PROXY (gobject);\n'
- ' GDBusInterface *interface;\n'
- '\n'
- ' switch (prop_id)\n'
- ' {\n'
- %(self.ns_lower, self.namespace, self.ns_upper))
+ self.outfile.write('static void\n'
+ '%sobject_proxy_init (%sObjectProxy *object G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_proxy_set_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value G_GNUC_UNUSED,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+ %(self.ns_lower))
+ self.outfile.write('}\n'
+ '\n'%())
+ self.outfile.write('static void\n'
+ '%sobject_proxy_get_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' %sObjectProxy *object = %sOBJECT_PROXY (gobject);\n'
+ ' GDBusInterface *interface;\n'
+ '\n'
+ ' switch (prop_id)\n'
+ ' {\n'
+ %(self.ns_lower, self.namespace, self.ns_upper))
n = 1
for i in self.ifaces:
- self.c.write(' case %d:\n'
- ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' g_value_take_object (value, interface);\n'
- ' break;\n'
- '\n'
- %(n, i.name))
+ self.outfile.write(' case %d:\n'
+ ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+ ' g_value_take_object (value, interface);\n'
+ ' break;\n'
+ '\n'
+ %(n, i.name))
n += 1
- self.c.write(' default:\n'
- ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
- ' break;\n'
- ' }\n'
- '}\n'
- '\n'%())
- self.c.write('static void\n'
- '%sobject_proxy_class_init (%sObjectProxyClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
- '\n'
- ' gobject_class->set_property = %sobject_proxy_set_property;\n'
- ' gobject_class->get_property = %sobject_proxy_get_property;\n'
- '\n'
- %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
+ self.outfile.write(' default:\n'
+ ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+ ' break;\n'
+ ' }\n'
+ '}\n'
+ '\n'%())
+ self.outfile.write('static void\n'
+ '%sobject_proxy_class_init (%sObjectProxyClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
+ '\n'
+ ' gobject_class->set_property = %sobject_proxy_set_property;\n'
+ ' gobject_class->get_property = %sobject_proxy_get_property;\n'
+ '\n'
+ %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
n = 1
for i in self.ifaces:
- self.c.write(' g_object_class_override_property (gobject_class, %d, "%s");'
- '\n'
- %(n, i.name_hyphen))
+ self.outfile.write(' g_object_class_override_property (gobject_class, %d, "%s");'
+ '\n'
+ %(n, i.name_hyphen))
n += 1
- self.c.write('}\n'
- '\n')
+ self.outfile.write('}\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_proxy_new:\n'
' * @connection: A #GDBusConnection.\n'
@@ -2923,7 +2947,7 @@ class CodeGenerator:
' * Returns: (transfer full): The proxy object.\n'
' */\n'
%(self.ns_lower), False))
- self.c.write('%sObjectProxy *\n'
+ self.outfile.write('%sObjectProxy *\n'
'%sobject_proxy_new (GDBusConnection *connection,\n'
' const gchar *object_path)\n'
'{\n'
@@ -2933,130 +2957,130 @@ class CodeGenerator:
'}\n'
'\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectSkeleton:\n'
' *\n'
' * The #%sObjectSkeleton structure contains only private data and should only be accessed using the provided API.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectSkeletonClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sObjectSkeleton.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('static void\n'
- '%sobject_skeleton__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.namespace))
- self.c.write('\n')
- self.c.write('static void\n'
- '%sobject_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
- '{\n'
- ' iface->interface_added = %sobject_notify;\n'
- ' iface->interface_removed = %sobject_notify;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower))
- self.c.write('G_DEFINE_TYPE_WITH_CODE (%sObjectSkeleton, %sobject_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,\n'
- ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT, %sobject_skeleton__%sobject_iface_init)\n'
- ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, %sobject_skeleton__g_dbus_object_iface_init))\n'
- '\n'
- %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower, self.ns_lower))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton__%sobject_iface_init (%sObjectIface *iface G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write('\n')
+ self.outfile.write('static void\n'
+ '%sobject_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)\n'
+ '{\n'
+ ' iface->interface_added = %sobject_notify;\n'
+ ' iface->interface_removed = %sobject_notify;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower))
+ self.outfile.write('G_DEFINE_TYPE_WITH_CODE (%sObjectSkeleton, %sobject_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,\n'
+ ' G_IMPLEMENT_INTERFACE (%sTYPE_OBJECT, %sobject_skeleton__%sobject_iface_init)\n'
+ ' G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, %sobject_skeleton__g_dbus_object_iface_init))\n'
+ '\n'
+ %(self.namespace, self.ns_lower, self.ns_upper, self.ns_lower, self.ns_lower, self.ns_lower))
# class boilerplate
- self.c.write('static void\n'
- '%sobject_skeleton_init (%sObjectSkeleton *object G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_skeleton_set_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' const GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
- ' GDBusInterfaceSkeleton *interface;\n'
- '\n'
- ' switch (prop_id)\n'
- ' {\n'
- %(self.ns_lower, self.namespace, self.ns_upper))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_init (%sObjectSkeleton *object G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_set_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' const GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
+ ' GDBusInterfaceSkeleton *interface;\n'
+ '\n'
+ ' switch (prop_id)\n'
+ ' {\n'
+ %(self.ns_lower, self.namespace, self.ns_upper))
n = 1
for i in self.ifaces:
- self.c.write(' case %d:\n'
- ' interface = g_value_get_object (value);\n'
- ' if (interface != NULL)\n'
- ' {\n'
- ' g_warn_if_fail (%sIS_%s (interface));\n'
- ' g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);\n'
- ' }\n'
- ' else\n'
- ' {\n'
- ' g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "%s");\n'
- ' }\n'
- ' break;\n'
- '\n'
- %(n, self.ns_upper, i.name_upper, i.name))
+ self.outfile.write(' case %d:\n'
+ ' interface = g_value_get_object (value);\n'
+ ' if (interface != NULL)\n'
+ ' {\n'
+ ' g_warn_if_fail (%sIS_%s (interface));\n'
+ ' g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);\n'
+ ' }\n'
+ ' else\n'
+ ' {\n'
+ ' g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "%s");\n'
+ ' }\n'
+ ' break;\n'
+ '\n'
+ %(n, self.ns_upper, i.name_upper, i.name))
n += 1
- self.c.write(' default:\n'
+ self.outfile.write(' default:\n'
' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
' break;\n'
' }\n'
'}\n'
'\n'%())
- self.c.write('static void\n'
- '%sobject_skeleton_get_property (GObject *gobject,\n'
- ' guint prop_id,\n'
- ' GValue *value,\n'
- ' GParamSpec *pspec)\n'
- '{\n'
- ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
- ' GDBusInterface *interface;\n'
- '\n'
- ' switch (prop_id)\n'
- ' {\n'
- %(self.ns_lower, self.namespace, self.ns_upper))
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_get_property (GObject *gobject,\n'
+ ' guint prop_id,\n'
+ ' GValue *value,\n'
+ ' GParamSpec *pspec)\n'
+ '{\n'
+ ' %sObjectSkeleton *object = %sOBJECT_SKELETON (gobject);\n'
+ ' GDBusInterface *interface;\n'
+ '\n'
+ ' switch (prop_id)\n'
+ ' {\n'
+ %(self.ns_lower, self.namespace, self.ns_upper))
n = 1
for i in self.ifaces:
- self.c.write(' case %d:\n'
- ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
- ' g_value_take_object (value, interface);\n'
- ' break;\n'
- '\n'
- %(n, i.name))
+ self.outfile.write(' case %d:\n'
+ ' interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "%s");\n'
+ ' g_value_take_object (value, interface);\n'
+ ' break;\n'
+ '\n'
+ %(n, i.name))
n += 1
- self.c.write(' default:\n'
- ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
- ' break;\n'
- ' }\n'
- '}\n'
- '\n'%())
- self.c.write('static void\n'
- '%sobject_skeleton_class_init (%sObjectSkeletonClass *klass)\n'
- '{\n'
- ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
- '\n'
- ' gobject_class->set_property = %sobject_skeleton_set_property;\n'
- ' gobject_class->get_property = %sobject_skeleton_get_property;\n'
- '\n'
- %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
+ self.outfile.write(' default:\n'
+ ' G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);\n'
+ ' break;\n'
+ ' }\n'
+ '}\n'
+ '\n'%())
+ self.outfile.write('static void\n'
+ '%sobject_skeleton_class_init (%sObjectSkeletonClass *klass)\n'
+ '{\n'
+ ' GObjectClass *gobject_class = G_OBJECT_CLASS (klass);\n'
+ '\n'
+ ' gobject_class->set_property = %sobject_skeleton_set_property;\n'
+ ' gobject_class->get_property = %sobject_skeleton_get_property;\n'
+ '\n'
+ %(self.ns_lower, self.namespace, self.ns_lower, self.ns_lower))
n = 1
for i in self.ifaces:
- self.c.write(' g_object_class_override_property (gobject_class, %d, "%s");'
- '\n'
- %(n, i.name_hyphen))
+ self.outfile.write(' g_object_class_override_property (gobject_class, %d, "%s");'
+ '\n'
+ %(n, i.name_hyphen))
n += 1
- self.c.write('}\n'
- '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write('}\n'
+ '\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_skeleton_new:\n'
' * @object_path: An object path.\n'
@@ -3066,15 +3090,15 @@ class CodeGenerator:
' * Returns: (transfer full): The skeleton object.\n'
' */\n'
%(self.ns_lower), False))
- self.c.write('%sObjectSkeleton *\n'
- '%sobject_skeleton_new (const gchar *object_path)\n'
- '{\n'
- ' g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);\n'
- ' return %sOBJECT_SKELETON (g_object_new (%sTYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));\n'
- '}\n'
- '\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
+ self.outfile.write('%sObjectSkeleton *\n'
+ '%sobject_skeleton_new (const gchar *object_path)\n'
+ '{\n'
+ ' g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);\n'
+ ' return %sOBJECT_SKELETON (g_object_new (%sTYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));\n'
+ '}\n'
+ '\n'%(self.namespace, self.ns_lower, self.ns_upper, self.ns_upper))
for i in self.ifaces:
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_skeleton_set_%s:\n'
' * @object: A #%sObjectSkeleton.\n'
@@ -3082,25 +3106,25 @@ class CodeGenerator:
' *\n'
' * Sets the #%s instance for the D-Bus interface #%s on @object.\n'
%(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name, i.camel_name, i.name), False))
- self.write_gtkdoc_deprecated_and_since_and_close(i, self.c, 0)
- self.c.write ('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_)\n'
- %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
- self.c.write('{\n'
- ' g_object_set (G_OBJECT (object), "%s", interface_, NULL);\n'
- '}\n'
- '\n'
- %(i.name_hyphen))
- self.c.write('\n')
+ self.write_gtkdoc_deprecated_and_since_and_close(i, self.outfile, 0)
+ self.outfile.write('void %sobject_skeleton_set_%s (%sObjectSkeleton *object, %s *interface_)\n'
+ %(self.ns_lower, i.name_upper.lower(), self.namespace, i.camel_name))
+ self.outfile.write('{\n'
+ ' g_object_set (G_OBJECT (object), "%s", interface_, NULL);\n'
+ '}\n'
+ '\n'
+ %(i.name_hyphen))
+ self.outfile.write('\n')
def generate_object_manager_client(self):
- self.c.write('/* ------------------------------------------------------------------------\n'
- ' * Code for ObjectManager client\n'
- ' * ------------------------------------------------------------------------\n'
- ' */\n'
- '\n')
+ self.outfile.write('/* ------------------------------------------------------------------------\n'
+ ' * Code for ObjectManager client\n'
+ ' * ------------------------------------------------------------------------\n'
+ ' */\n'
+ '\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * SECTION:%sObjectManagerClient\n'
' * @title: %sObjectManagerClient\n'
@@ -3109,45 +3133,45 @@ class CodeGenerator:
' * This section contains a #GDBusObjectManagerClient that uses %sobject_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.\n'
' */\n'
%(self.namespace, self.namespace, self.ns_lower), False))
- self.c.write('\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectManagerClient:\n'
' *\n'
' * The #%sObjectManagerClient structure contains only private data and should only be accessed using the provided API.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sObjectManagerClientClass:\n'
' * @parent_class: The parent class.\n'
' *\n'
' * Class structure for #%sObjectManagerClient.\n'
%(self.namespace, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('\n')
# class boilerplate
- self.c.write('G_DEFINE_TYPE (%sObjectManagerClient, %sobject_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT)\n'
- '\n'
- %(self.namespace, self.ns_lower))
+ self.outfile.write('G_DEFINE_TYPE (%sObjectManagerClient, %sobject_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT)\n'
+ '\n'
+ %(self.namespace, self.ns_lower))
# class boilerplate
- self.c.write('static void\n'
- '%sobject_manager_client_init (%sObjectManagerClient *manager G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
- self.c.write('static void\n'
- '%sobject_manager_client_class_init (%sObjectManagerClientClass *klass G_GNUC_UNUSED)\n'
- '{\n'
- '}\n'
- '\n'%(self.ns_lower, self.namespace))
-
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write('static void\n'
+ '%sobject_manager_client_init (%sObjectManagerClient *manager G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+ self.outfile.write('static void\n'
+ '%sobject_manager_client_class_init (%sObjectManagerClientClass *klass G_GNUC_UNUSED)\n'
+ '{\n'
+ '}\n'
+ '\n'%(self.ns_lower, self.namespace))
+
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_get_proxy_type:\n'
' * @manager: A #GDBusObjectManagerClient.\n'
@@ -3159,35 +3183,35 @@ class CodeGenerator:
' *\n'
' * Returns: A #GDBusProxy derived #GType if @interface_name is not %%NULL, otherwise the #GType for #%sObjectProxy.\n'
%(self.ns_lower, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('GType\n'
- '%sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)\n'
- '{\n'
- %(self.ns_lower))
- self.c.write(' static gsize once_init_value = 0;\n'
- ' static GHashTable *lookup_hash;\n'
- ' GType ret;\n'
- '\n'
- ' if (interface_name == NULL)\n'
- ' return %sTYPE_OBJECT_PROXY;\n'
- ' if (g_once_init_enter (&once_init_value))\n'
- ' {\n'
- ' lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);\n'
- %(self.ns_upper))
+ self.outfile.write(' */\n')
+ self.outfile.write('GType\n'
+ '%sobject_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)\n'
+ '{\n'
+ %(self.ns_lower))
+ self.outfile.write(' static gsize once_init_value = 0;\n'
+ ' static GHashTable *lookup_hash;\n'
+ ' GType ret;\n'
+ '\n'
+ ' if (interface_name == NULL)\n'
+ ' return %sTYPE_OBJECT_PROXY;\n'
+ ' if (g_once_init_enter (&once_init_value))\n'
+ ' {\n'
+ ' lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);\n'
+ %(self.ns_upper))
for i in self.ifaces:
- self.c.write(' g_hash_table_insert (lookup_hash, (gpointer) "%s", GSIZE_TO_POINTER (%sTYPE_%s_PROXY));\n'
- %(i.name, i.ns_upper, i.name_upper))
- self.c.write(' g_once_init_leave (&once_init_value, 1);\n'
- ' }\n')
- self.c.write(' ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));\n'
- ' if (ret == (GType) 0)\n'
- ' ret = G_TYPE_DBUS_PROXY;\n')
- self.c.write(' return ret;\n'
- '}\n'
- '\n')
+ self.outfile.write(' g_hash_table_insert (lookup_hash, (gpointer) "%s", GSIZE_TO_POINTER (%sTYPE_%s_PROXY));\n'
+ %(i.name, i.ns_upper, i.name_upper))
+ self.outfile.write(' g_once_init_leave (&once_init_value, 1);\n'
+ ' }\n')
+ self.outfile.write(' ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));\n'
+ ' if (ret == (GType) 0)\n'
+ ' ret = G_TYPE_DBUS_PROXY;\n')
+ self.outfile.write(' return ret;\n'
+ '}\n'
+ '\n')
# constructors
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new:\n'
' * @connection: A #GDBusConnection.\n'
@@ -3205,49 +3229,49 @@ class CodeGenerator:
' *\n'
' * See %sobject_manager_client_new_sync() for the synchronous, blocking version of this constructor.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.ns_lower), False))
- self.c.write(' */\n')
- self.c.write('void\n'
- '%sobject_manager_client_new (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('/**\n'
- ' * %sobject_manager_client_new_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %sobject_manager_client_new().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %sobject_manager_client_new().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('void\n'
+ '%sobject_manager_client_new (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('/**\n'
+ ' * %sobject_manager_client_new_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %sobject_manager_client_new().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %sobject_manager_client_new().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new_sync:\n'
' * @connection: A #GDBusConnection.\n'
@@ -3265,27 +3289,27 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_sync (\n'
- ' GDBusConnection *connection,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('\n')
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_sync (\n'
+ ' GDBusConnection *connection,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('\n')
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new_for_bus:\n'
' * @bus_type: A #GBusType.\n'
@@ -3303,49 +3327,49 @@ class CodeGenerator:
' *\n'
' * See %sobject_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.ns_lower), False))
- self.c.write(' */\n')
- self.c.write('void\n'
- '%sobject_manager_client_new_for_bus (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GAsyncReadyCallback callback,\n'
- ' gpointer user_data)\n'
- '{\n'
- ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('/**\n'
- ' * %sobject_manager_client_new_for_bus_finish:\n'
- ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %sobject_manager_client_new_for_bus().\n'
- ' * @error: Return location for error or %%NULL\n'
- ' *\n'
- ' * Finishes an operation started with %sobject_manager_client_new_for_bus().\n'
- ' *\n'
- ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
- %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_for_bus_finish (\n'
- ' GAsyncResult *res,\n'
- ' GError **error)\n'
- '{\n'
- ' GObject *ret;\n'
- ' GObject *source_object;\n'
- ' source_object = g_async_result_get_source_object (res);\n'
- ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
- ' g_object_unref (source_object);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(' */\n')
+ self.outfile.write('void\n'
+ '%sobject_manager_client_new_for_bus (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GAsyncReadyCallback callback,\n'
+ ' gpointer user_data)\n'
+ '{\n'
+ ' g_async_initable_new_async (%sTYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('/**\n'
+ ' * %sobject_manager_client_new_for_bus_finish:\n'
+ ' * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to %sobject_manager_client_new_for_bus().\n'
+ ' * @error: Return location for error or %%NULL\n'
+ ' *\n'
+ ' * Finishes an operation started with %sobject_manager_client_new_for_bus().\n'
+ ' *\n'
+ ' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
+ %(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace))
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_for_bus_finish (\n'
+ ' GAsyncResult *res,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GObject *ret;\n'
+ ' GObject *source_object;\n'
+ ' source_object = g_async_result_get_source_object (res);\n'
+ ' ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);\n'
+ ' g_object_unref (source_object);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower))
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * %sobject_manager_client_new_for_bus_sync:\n'
' * @bus_type: A #GBusType.\n'
@@ -3363,26 +3387,26 @@ class CodeGenerator:
' *\n'
' * Returns: (transfer full) (type %sObjectManagerClient): The constructed object manager client or %%NULL if @error is set.\n'
%(self.ns_lower, self.ns_lower, self.ns_lower, self.namespace), False))
- self.c.write(' */\n')
- self.c.write('GDBusObjectManager *\n'
- '%sobject_manager_client_new_for_bus_sync (\n'
- ' GBusType bus_type,\n'
- ' GDBusObjectManagerClientFlags flags,\n'
- ' const gchar *name,\n'
- ' const gchar *object_path,\n'
- ' GCancellable *cancellable,\n'
- ' GError **error)\n'
- '{\n'
- ' GInitable *ret;\n'
- ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
- ' if (ret != NULL)\n'
- ' return G_DBUS_OBJECT_MANAGER (ret);\n'
- ' else\n'
- ' return NULL;\n'
- '}\n'
- '\n'
- %(self.ns_lower, self.ns_upper, self.ns_lower))
- self.c.write('\n')
+ self.outfile.write(' */\n')
+ self.outfile.write('GDBusObjectManager *\n'
+ '%sobject_manager_client_new_for_bus_sync (\n'
+ ' GBusType bus_type,\n'
+ ' GDBusObjectManagerClientFlags flags,\n'
+ ' const gchar *name,\n'
+ ' const gchar *object_path,\n'
+ ' GCancellable *cancellable,\n'
+ ' GError **error)\n'
+ '{\n'
+ ' GInitable *ret;\n'
+ ' ret = g_initable_new (%sTYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", %sobject_manager_client_get_proxy_type, NULL);\n'
+ ' if (ret != NULL)\n'
+ ' return G_DBUS_OBJECT_MANAGER (ret);\n'
+ ' else\n'
+ ' return NULL;\n'
+ '}\n'
+ '\n'
+ %(self.ns_lower, self.ns_upper, self.ns_lower))
+ self.outfile.write('\n')
# ---------------------------------------------------------------------------------------------------
@@ -3401,7 +3425,7 @@ class CodeGenerator:
elif isinstance(obj, dbustypes.Property):
thing = 'The D-Bus property'
else:
- raise RuntimeError('Cannot handle object ', obj)
+ print_error('Cannot handle object "{}"'.format(obj))
f.write(self.docbook_gen.expand(
'%*s *\n'
'%*s * Deprecated: %s has been deprecated.\n'
@@ -3411,13 +3435,13 @@ class CodeGenerator:
# ---------------------------------------------------------------------------------------------------
def generate_interface_intro(self, i):
- self.c.write('/* ------------------------------------------------------------------------\n'
- ' * Code for interface %s\n'
- ' * ------------------------------------------------------------------------\n'
- ' */\n'
- '\n'%(i.name))
+ self.outfile.write('/* ------------------------------------------------------------------------\n'
+ ' * Code for interface %s\n'
+ ' * ------------------------------------------------------------------------\n'
+ ' */\n'
+ '\n'%(i.name))
- self.c.write(self.docbook_gen.expand(
+ self.outfile.write(self.docbook_gen.expand(
'/**\n'
' * SECTION:%s\n'
' * @title: %s\n'
@@ -3426,11 +3450,10 @@ class CodeGenerator:
' * This section contains code for working with the #%s D-Bus interface in C.\n'
' */\n'
%(i.camel_name, i.camel_name, i.name, i.name), False))
- self.c.write('\n')
+ self.outfile.write('\n')
def generate(self):
- self.generate_intro()
- self.declare_types()
+ self.generate_body_preamble()
for i in self.ifaces:
self.generate_interface_intro(i)
self.generate_introspection_for_interface(i)
@@ -3444,5 +3467,3 @@ class CodeGenerator:
if self.generate_objmanager:
self.generate_object()
self.generate_object_manager_client()
-
- self.generate_outro()
diff --git a/gio/gdbus-2.0/codegen/codegen_docbook.py b/gio/gdbus-2.0/codegen/codegen_docbook.py
index c727562d9..c08aa1a0e 100644
--- a/gio/gdbus-2.0/codegen/codegen_docbook.py
+++ b/gio/gdbus-2.0/codegen/codegen_docbook.py
@@ -31,10 +31,8 @@ from . import parser
# ----------------------------------------------------------------------------------------------------
class DocbookCodeGenerator:
- def __init__(self, ifaces, docbook, outdir):
+ def __init__(self, ifaces):
self.ifaces = ifaces
- self.docbook = docbook
- self.outdir = outdir
self.generate_expand_dicts()
def print_method_prototype(self, i, m, in_synopsis):
@@ -270,9 +268,9 @@ class DocbookCodeGenerator:
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(self):
+ def generate(self, docbook, outdir):
for i in self.ifaces:
- self.out = open(path.join(self.outdir, '%s-%s.xml'%(self.docbook, i.name)), 'w')
+ self.out = open(path.join(outdir, '%s-%s.xml'%(docbook, i.name)), 'w')
self.out.write(''%())
self.out.write('<?xml version="1.0" encoding="utf-8"?>\n'%())
self.out.write('<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"\n'%())
diff --git a/gio/gdbus-2.0/codegen/codegen_main.py b/gio/gdbus-2.0/codegen/codegen_main.py
index 0f26f11be..9d9099f72 100755
--- a/gio/gdbus-2.0/codegen/codegen_main.py
+++ b/gio/gdbus-2.0/codegen/codegen_main.py
@@ -1,8 +1,10 @@
# -*- Mode: Python -*-
+# coding=utf-8
# GDBus - GLib D-Bus Library
#
# Copyright (C) 2008-2011 Red Hat, Inc.
+# Copyright (C) 2018 Iñigo Martínez <inigomartinez@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -19,16 +21,16 @@
#
# Author: David Zeuthen <davidz@redhat.com>
+import argparse
+import os
import sys
-import optparse
-from os import path
from . import config
-from . import utils
from . import dbustypes
from . import parser
from . import codegen
from . import codegen_docbook
+from .utils import print_error, print_warning
def find_arg(arg_list, arg_name):
for a in arg_list:
@@ -62,38 +64,38 @@ def apply_annotation(iface_list, iface, method, signal, prop, arg, key, value):
break
if iface_obj == None:
- raise RuntimeError('No interface %s'%iface)
+ print_error('No interface "{}"'.format(iface))
target_obj = None
if method:
method_obj = find_method(iface_obj, method)
if method_obj == None:
- raise RuntimeError('No method %s on interface %s'%(method, iface))
+ print_error('No method "{}" on interface "{}"'.format(method, iface))
if arg:
arg_obj = find_arg(method_obj.in_args, arg)
if (arg_obj == None):
arg_obj = find_arg(method_obj.out_args, arg)
if (arg_obj == None):
- raise RuntimeError('No arg %s on method %s on interface %s'%(arg, method, iface))
+ print_error('No arg "{}" on method "{}" on interface "{}"'.format(arg, method, iface))
target_obj = arg_obj
else:
target_obj = method_obj
elif signal:
signal_obj = find_signal(iface_obj, signal)
if signal_obj == None:
- raise RuntimeError('No signal %s on interface %s'%(signal, iface))
+ print_error('No signal "{}" on interface "{}"'.format(signal, iface))
if arg:
arg_obj = find_arg(signal_obj.args, arg)
if (arg_obj == None):
- raise RuntimeError('No arg %s on signal %s on interface %s'%(arg, signal, iface))
+ print_error('No arg "{}" on signal "{}" on interface "{}"'.format(arg, signal, iface))
target_obj = arg_obj
else:
target_obj = signal_obj
elif prop:
prop_obj = find_prop(iface_obj, prop)
if prop_obj == None:
- raise RuntimeError('No property %s on interface %s'%(prop, iface))
+ print_error('No property "{}" on interface "{}"'.format(prop, iface))
target_obj = prop_obj
else:
target_obj = iface_obj
@@ -146,64 +148,107 @@ def apply_annotations(iface_list, annotation_list):
apply_annotation(iface_list, iface, None, None, None, None, key, value)
def codegen_main():
- arg_parser = optparse.OptionParser('%prog [options]')
- arg_parser.add_option('', '--xml-files', metavar='FILE', action='append',
- help='D-Bus introspection XML file')
- arg_parser.add_option('', '--interface-prefix', metavar='PREFIX', default='',
+ arg_parser = argparse.ArgumentParser(description='D-Bus code and documentation generator')
+ arg_parser.add_argument('files', metavar='FILE', nargs='*',
+ help='D-Bus introspection XML file')
+ arg_parser.add_argument('--xml-files', metavar='FILE', action='append', default=[],
+ help='D-Bus introspection XML file')
+ arg_parser.add_argument('--interface-prefix', metavar='PREFIX', default='',
help='String to strip from D-Bus interface names for code and docs')
- arg_parser.add_option('', '--c-namespace', metavar='NAMESPACE', default='',
+ arg_parser.add_argument('--c-namespace', metavar='NAMESPACE', default='',
help='The namespace to use for generated C code')
- arg_parser.add_option('', '--c-generate-object-manager', action='store_true',
+ arg_parser.add_argument('--c-generate-object-manager', action='store_true',
help='Generate a GDBusObjectManagerClient subclass when generating C code')
- arg_parser.add_option('', '--generate-c-code', metavar='OUTFILES',
- help='Generate C code in OUTFILES.[ch]')
- arg_parser.add_option('', '--c-generate-autocleanup', type='choice', choices=['none', 'objects', 'all'], default='objects',
- help='Generate autocleanup support')
- arg_parser.add_option('', '--generate-docbook', metavar='OUTFILES',
- help='Generate Docbook in OUTFILES-org.Project.IFace.xml')
- arg_parser.add_option('', '--annotate', nargs=3, action='append', metavar='WHAT KEY VALUE',
- help='Add annotation (may be used several times)')
- arg_parser.add_option('', '--output-directory', metavar='OUTDIR', default='',
- help='Location to output generated files')
- (opts, args) = arg_parser.parse_args();
+ arg_parser.add_argument('--c-generate-autocleanup', choices=['none', 'objects', 'all'], default='objects',
+ help='Generate autocleanup support')
+ arg_parser.add_argument('--generate-docbook', metavar='OUTFILES',
+ help='Generate Docbook in OUTFILES-org.Project.IFace.xml')
+ arg_parser.add_argument('--pragma-once', action='store_true',
+ help='Use "pragma once" as the inclusion guard')
+ arg_parser.add_argument('--annotate', nargs=3, action='append', metavar='WHAT KEY VALUE',
+ help='Add annotation (may be used several times)')
+
+ group = arg_parser.add_mutually_exclusive_group()
+ group.add_argument('--generate-c-code', metavar='OUTFILES',
+ help='Generate C code in OUTFILES.[ch]')
+ group.add_argument('--header', action='store_true',
+ help='Generate C headers')
+ group.add_argument('--body', action='store_true',
+ help='Generate C code')
+
+ group = arg_parser.add_mutually_exclusive_group()
+ group.add_argument('--output', metavar='FILE',
+ help='Write output into the specified file')
+ group.add_argument('--output-directory', metavar='OUTDIR', default='',
+ help='Location to output generated files')
+
+ args = arg_parser.parse_args();
+
+ if len(args.xml_files) > 0:
+ print_warning('The "--xml-files" option is deprecated; use positional arguments instead')
+
+ if ((args.generate_c_code is not None or args.generate_docbook is not None) and
+ args.output is not None):
+ print_error('Using --generate-c-code or --generate-docbook and '
+ '--output at the same time is not allowed')
+
+ if args.generate_c_code:
+ header_name = args.generate_c_code + '.h'
+ h_file = os.path.join(args.output_directory, header_name)
+ args.header = True
+ c_file = os.path.join(args.output_directory, args.generate_c_code + '.c')
+ args.body = True
+ elif args.header:
+ if args.output is None:
+ print_error('Using --header requires --output')
+
+ h_file = args.output
+ header_name = os.path.basename(h_file)
+ elif args.body:
+ if args.output is None:
+ print_error('Using --body requires --output')
+
+ c_file = args.output
+ header_name = os.path.splitext(c_file)[0] + '.h'
all_ifaces = []
- for fname in args:
- f = open(fname, 'rb')
- xml_data = f.read()
- f.close()
+ for fname in args.files + args.xml_files:
+ with open(fname, 'rb') as f:
+ xml_data = f.read()
parsed_ifaces = parser.parse_dbus_xml(xml_data)
all_ifaces.extend(parsed_ifaces)
- if opts.annotate != None:
- apply_annotations(all_ifaces, opts.annotate)
+ if args.annotate != None:
+ apply_annotations(all_ifaces, args.annotate)
for i in all_ifaces:
- i.post_process(opts.interface_prefix, opts.c_namespace)
-
- outdir = opts.output_directory
+ i.post_process(args.interface_prefix, args.c_namespace)
- docbook = opts.generate_docbook
- docbook_gen = codegen_docbook.DocbookCodeGenerator(all_ifaces, docbook, outdir);
+ docbook = args.generate_docbook
+ docbook_gen = codegen_docbook.DocbookCodeGenerator(all_ifaces);
if docbook:
- ret = docbook_gen.generate()
-
- c_code = opts.generate_c_code
- if c_code:
- header_name = c_code + '.h'
- h = open(path.join(outdir, header_name), 'w')
- c = open(path.join(outdir, c_code + '.c'), 'w')
- gen = codegen.CodeGenerator(all_ifaces,
- opts.c_namespace,
- opts.interface_prefix,
- opts.c_generate_object_manager,
- opts.c_generate_autocleanup,
- docbook_gen,
- h, c,
- header_name)
- ret = gen.generate()
- h.close()
- c.close()
+ ret = docbook_gen.generate(docbook, args.output_directory)
+
+ if args.header:
+ with open(h_file, 'w') as outfile:
+ gen = codegen.HeaderCodeGenerator(all_ifaces,
+ args.c_namespace,
+ args.c_generate_object_manager,
+ args.c_generate_autocleanup,
+ header_name,
+ args.pragma_once,
+ outfile)
+ gen.generate()
+
+ if args.body:
+ with open(c_file, 'w') as outfile:
+ gen = codegen.CodeGenerator(all_ifaces,
+ args.c_namespace,
+ args.c_generate_object_manager,
+ header_name,
+ docbook_gen,
+ outfile)
+ gen.generate()
sys.exit(0)
diff --git a/gio/gdbus-2.0/codegen/dbustypes.py b/gio/gdbus-2.0/codegen/dbustypes.py
index 2dc8e11eb..bfc69f596 100644
--- a/gio/gdbus-2.0/codegen/dbustypes.py
+++ b/gio/gdbus-2.0/codegen/dbustypes.py
@@ -20,6 +20,7 @@
# Author: David Zeuthen <davidz@redhat.com>
from . import utils
+from .utils import print_error
class Annotation:
def __init__(self, key, value):
@@ -322,7 +323,7 @@ class Property:
elif self.access == 'write':
self.writable = True
else:
- raise RuntimeError('Invalid access type %s'%self.access)
+ print_error('Invalid access type "{}"'.format(self.access))
self.doc_string = ''
self.since = ''
self.deprecated = False
@@ -399,7 +400,7 @@ class Interface:
self.name_lower = cns_lower + overridden_name.lower()
self.name_upper = overridden_name.upper()
- #raise RuntimeError('handle Ugly_Case ', overridden_name)
+ #print_error('handle Ugly_Case "{}"'.format(overridden_name))
else:
if overridden_name:
name = overridden_name
diff --git a/gio/gdbus-2.0/codegen/parser.py b/gio/gdbus-2.0/codegen/parser.py
index df8f84593..f49136d6e 100644
--- a/gio/gdbus-2.0/codegen/parser.py
+++ b/gio/gdbus-2.0/codegen/parser.py
@@ -23,6 +23,7 @@ import sys
import xml.parsers.expat
from . import dbustypes
+from .utils import print_error
class DBusXMLParser:
STATE_TOP = 'top'
@@ -203,7 +204,7 @@ class DBusXMLParser:
elif direction == 'out':
self._cur_object.out_args.append(arg)
else:
- raise RuntimeError('Invalid direction "%s"'%(direction))
+ print_error('Invalid direction "{}"'.format(direction))
self._cur_object = arg
elif name == DBusXMLParser.STATE_ANNOTATION:
self.state = DBusXMLParser.STATE_ANNOTATION
@@ -278,7 +279,7 @@ class DBusXMLParser:
self.state = DBusXMLParser.STATE_IGNORED
else:
- raise RuntimeError('Unhandled state "%s" while entering element with name "%s"'%(self.state, name))
+ print_error('Unhandled state "{}" while entering element with name "{}"'.format(self.state, name))
self.state_stack.append(old_state)
self._cur_object_stack.append(old_cur_object)
diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py
index 39e046351..bdfa703ac 100644
--- a/gio/gdbus-2.0/codegen/utils.py
+++ b/gio/gdbus-2.0/codegen/utils.py
@@ -20,6 +20,46 @@
# Author: David Zeuthen <davidz@redhat.com>
import distutils.version
+import os
+import sys
+
+# pylint: disable=too-few-public-methods
+class Color:
+ '''ANSI Terminal colors'''
+ GREEN = '\033[1;32m'
+ BLUE = '\033[1;34m'
+ YELLOW = '\033[1;33m'
+ RED = '\033[1;31m'
+ END = '\033[0m'
+
+def print_color(msg, color=Color.END, prefix='MESSAGE'):
+ '''Print a string with a color prefix'''
+ if os.isatty(sys.stderr.fileno()):
+ real_prefix = '{start}{prefix}{end}'.format(start=color, prefix=prefix, end=Color.END)
+ else:
+ real_prefix = prefix
+ sys.stderr.write('{prefix}: {msg}\n'.format(prefix=real_prefix, msg=msg))
+
+def print_error(msg):
+ '''Print an error, and terminate'''
+ print_color(msg, color=Color.RED, prefix='ERROR')
+ sys.exit(1)
+
+def print_warning(msg, fatal=False):
+ '''Print a warning, and optionally terminate'''
+ if fatal:
+ color = Color.RED
+ prefix = 'ERROR'
+ else:
+ color = Color.YELLOW
+ prefix = 'WARNING'
+ print_color(msg, color, prefix)
+ if fatal:
+ sys.exit(1)
+
+def print_info(msg):
+ '''Print a message'''
+ print_color(msg, color=Color.GREEN, prefix='INFO')
def strip_dots(s):
ret = ''
diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c
index faee80087..2191c115a 100644
--- a/gio/gdbusaddress.c
+++ b/gio/gdbusaddress.c
@@ -66,6 +66,9 @@
* like `unix:tmpdir=/tmp/my-app-name`. The exact format of addresses
* is explained in detail in the
* [D-Bus specification](http://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
+ *
+ * TCP D-Bus connections are supported, but accessing them via a proxy is
+ * currently not supported.
*/
static gchar *get_session_address_platform_specific (GError **error);
@@ -675,6 +678,13 @@ g_dbus_address_connect (const gchar *address_entry,
g_assert (ret == NULL);
client = g_socket_client_new ();
+
+ /* Disable proxy support to prevent a deadlock on startup, since loading a
+ * proxy resolver causes the GIO modules to be loaded, and there will
+ * almost certainly be one of them which then tries to use GDBus.
+ * See: https://bugzilla.gnome.org/show_bug.cgi?id=792499 */
+ g_socket_client_set_enable_proxy (client, FALSE);
+
connection = g_socket_client_connect (client,
connectable,
cancellable,
diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
index 99998060f..6f922c4b2 100644
--- a/gio/gdbusconnection.c
+++ b/gio/gdbusconnection.c
@@ -6006,7 +6006,8 @@ g_dbus_connection_call_sync_internal (GDBusConnection *connection,
* @method_name: the name of the method to invoke
* @parameters: (nullable): a #GVariant tuple with parameters for the method
* or %NULL if not passing parameters
- * @reply_type: (nullable): the expected type of the reply, or %NULL
+ * @reply_type: (nullable): the expected type of the reply (which will be a
+ * tuple), or %NULL
* @flags: flags from the #GDBusCallFlags enumeration
* @timeout_msec: the timeout in milliseconds, -1 to use the default
* timeout or %G_MAXINT for no timeout
@@ -6028,7 +6029,9 @@ g_dbus_connection_call_sync_internal (GDBusConnection *connection,
*
* If @reply_type is non-%NULL then the reply will be checked for having this type and an
* error will be raised if it does not match. Said another way, if you give a @reply_type
- * then any non-%NULL return value will be of this type.
+ * then any non-%NULL return value will be of this type. Unless it’s
+ * %G_VARIANT_TYPE_UNIT, the @reply_type will be a tuple containing one or more
+ * values.
*
* If the @parameters #GVariant is floating, it is consumed. This allows
* convenient 'inline' use of g_variant_new(), e.g.:
diff --git a/gio/gdbusconnection.h b/gio/gdbusconnection.h
index b0219e966..b2c50354d 100644
--- a/gio/gdbusconnection.h
+++ b/gio/gdbusconnection.h
@@ -604,7 +604,7 @@ void g_dbus_connection_signal_unsubscribe (GDBusConnection
* gboolean incoming,
* gpointer user_data)
* {
- * /<!-- -->* inspect @message *<!-- -->/
+ * // inspect @message
* return message;
* }
* ]|
@@ -637,10 +637,10 @@ void g_dbus_connection_signal_unsubscribe (GDBusConnection
*
* error = NULL;
* copy = g_dbus_message_copy (message, &error);
- * /<!-- -->* handle @error being is set *<!-- -->/
+ * // handle @error being set
* g_object_unref (message);
*
- * /<!-- -->* modify @copy *<!-- -->/
+ * // modify @copy
*
* return copy;
* }
diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c
index 4c82bd0a4..96bd520aa 100644
--- a/gio/gdbusinterfaceskeleton.c
+++ b/gio/gdbusinterfaceskeleton.c
@@ -381,7 +381,7 @@ g_dbus_interface_skeleton_get_properties (GDBusInterfaceSkeleton *interface_)
*
* For example, an exported D-Bus interface may queue up property
* changes and emit the
- * `org.freedesktop.DBus.Properties::PropertiesChanged`
+ * `org.freedesktop.DBus.Properties.PropertiesChanged`
* signal later (e.g. in an idle handler). This technique is useful
* for collapsing multiple property changes into one.
*
diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c
index 717f2697a..be001ae55 100644
--- a/gio/gdbusmessage.c
+++ b/gio/gdbusmessage.c
@@ -2653,7 +2653,7 @@ g_dbus_message_to_blob (GDBusMessage *message,
g_set_error (error,
G_IO_ERROR,
G_IO_ERROR_INVALID_ARGUMENT,
- _("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)"),
num_fds_in_message,
num_fds_according_to_header);
goto out;
diff --git a/gio/gdbusmethodinvocation.c b/gio/gdbusmethodinvocation.c
index fe2820349..18ae9d1be 100644
--- a/gio/gdbusmethodinvocation.c
+++ b/gio/gdbusmethodinvocation.c
@@ -554,7 +554,7 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
* g_dbus_method_invocation_return_value (invocation,
* g_variant_new ("(s)", result_string));
*
- * /<!-- -->* Do not free @invocation here; returning a value does that *<!-- -->/
+ * // Do not free @invocation here; returning a value does that
* ]|
*
* This method will take ownership of @invocation. See
diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c
index 14f484096..ef77e40a8 100644
--- a/gio/gdbusproxy.c
+++ b/gio/gdbusproxy.c
@@ -53,7 +53,7 @@
* both well-known and unique names.
*
* By default, #GDBusProxy will cache all properties (and listen to
- * changes) of the remote object, and proxy all signals that gets
+ * changes) of the remote object, and proxy all signals that get
* emitted. This behaviour can be changed by passing suitable
* #GDBusProxyFlags when the proxy is created. If the proxy is for a
* well-known name, the property cache is flushed when the name owner
diff --git a/gio/gfile.c b/gio/gfile.c
index 812b148b7..bf08d2098 100644
--- a/gio/gfile.c
+++ b/gio/gfile.c
@@ -534,6 +534,107 @@ g_file_get_path (GFile *file)
return (* iface->get_path) (file);
}
+/* Original commit introducing this in libgsystem:
+ *
+ * fileutil: Handle recent: and trash: URIs
+ *
+ * The gs_file_get_path_cached() was rather brittle in its handling
+ * of URIs. It would assert() when a GFile didn't have a backing path
+ * (such as when handling trash: or recent: URIs), and didn't know
+ * how to get the target URI for those items either.
+ *
+ * Make sure that we do not assert() when a backing path cannot be
+ * found, and handle recent: and trash: URIs.
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=708435
+ */
+static char *
+file_get_target_path (GFile *file)
+{
+ GFileInfo *info;
+ const char *target;
+ char *path;
+
+ info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI, G_FILE_QUERY_INFO_NONE, NULL, NULL);
+ if (info == NULL)
+ return NULL;
+ target = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
+ path = g_filename_from_uri (target, NULL, NULL);
+ g_object_unref (info);
+
+ return path;
+}
+
+static const char *
+file_peek_path_generic (GFile *file)
+{
+ const char *path;
+ static GQuark _file_path_quark = 0;
+
+ if (G_UNLIKELY (_file_path_quark) == 0)
+ _file_path_quark = g_quark_from_static_string ("gio-file-path");
+
+ /* We need to be careful about threading, as two threads calling
+ * g_file_peek_path() on the same file could race: both would see
+ * (g_object_get_qdata(…) == NULL) to begin with, both would generate and add
+ * the path, but the second thread to add it would end up freeing the path
+ * set by the first thread. The first thread would still return the pointer
+ * to that freed path, though, resulting an a read-after-free. Handle that
+ * with a compare-and-swap loop. The g_object_*_qdata() functions are atomic. */
+
+ while (TRUE)
+ {
+ gchar *new_path = NULL;
+
+ path = g_object_get_qdata ((GObject*)file, _file_path_quark);
+
+ if (path != NULL)
+ break;
+
+ if (g_file_has_uri_scheme (file, "trash") ||
+ g_file_has_uri_scheme (file, "recent"))
+ new_path = file_get_target_path (file);
+ else
+ new_path = g_file_get_path (file);
+ if (new_path == NULL)
+ return NULL;
+
+ /* By passing NULL here, we ensure we never replace existing data: */
+ if (g_object_replace_qdata ((GObject *) file, _file_path_quark,
+ NULL, (gpointer) new_path,
+ (GDestroyNotify) g_free, NULL))
+ break;
+ else
+ g_free (new_path);
+ }
+
+ return path;
+}
+
+/**
+ * g_file_peek_path:
+ * @file: input #GFile
+ *
+ * Exactly like g_file_get_path(), but caches the result via
+ * g_object_set_qdata_full(). This is useful for example in C
+ * applications which mix `g_file_*` APIs with native ones. It
+ * also avoids an extra duplicated string when possible, so will be
+ * generally more efficient.
+ *
+ * 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.
+ * Since: 2.56
+ */
+const char *
+g_file_peek_path (GFile *file)
+{
+ if (G_IS_LOCAL_FILE (file))
+ return _g_local_file_get_filename ((GLocalFile *) file);
+ return file_peek_path_generic (file);
+}
+
/**
* g_file_get_uri:
* @file: input #GFile
@@ -1060,7 +1161,7 @@ g_file_enumerate_children_finish (GFile *file,
* Utility function to check if a particular file exists. This is
* implemented using g_file_query_info() and as such does blocking I/O.
*
- * Note that in many cases it is racy to first check for file existence
+ * Note that in many cases it is [racy to first check for file existence](https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use)
* and then execute something based on the outcome of that, because the
* file might have been created or removed in between the operations. The
* general approach to handling that is to not check, but just do the
diff --git a/gio/gfile.h b/gio/gfile.h
index 1717665e4..4aff644c3 100644
--- a/gio/gfile.h
+++ b/gio/gfile.h
@@ -620,6 +620,8 @@ GLIB_AVAILABLE_IN_ALL
char * g_file_get_basename (GFile *file);
GLIB_AVAILABLE_IN_ALL
char * g_file_get_path (GFile *file);
+GLIB_AVAILABLE_IN_2_56
+const char * g_file_peek_path (GFile *file);
GLIB_AVAILABLE_IN_ALL
char * g_file_get_uri (GFile *file);
GLIB_AVAILABLE_IN_ALL
diff --git a/gio/gioenums.h b/gio/gioenums.h
index c6ee8c433..bc844b9b9 100644
--- a/gio/gioenums.h
+++ b/gio/gioenums.h
@@ -1816,12 +1816,12 @@ typedef enum /*< flags >*/ {
* spawned process that can be accessed with
* g_subprocess_get_stdout_pipe().
* @G_SUBPROCESS_FLAGS_STDOUT_SILENCE: silence the stdout of the spawned
- * process (ie: redirect to /dev/null).
+ * process (ie: redirect to `/dev/null`).
* @G_SUBPROCESS_FLAGS_STDERR_PIPE: create a pipe for the stderr of the
* spawned process that can be accessed with
* g_subprocess_get_stderr_pipe().
* @G_SUBPROCESS_FLAGS_STDERR_SILENCE: silence the stderr of the spawned
- * process (ie: redirect to /dev/null).
+ * process (ie: redirect to `/dev/null`).
* @G_SUBPROCESS_FLAGS_STDERR_MERGE: merge the stderr of the spawned
* process with whatever the stdout happens to be. This is a good way
* of directing both streams to a common log file, for example.
@@ -1832,7 +1832,7 @@ typedef enum /*< flags >*/ {
*
* Flags to define the behaviour of a #GSubprocess.
*
- * Note that the default for stdin is to redirect from /dev/null. For
+ * Note that the default for stdin is to redirect from `/dev/null`. For
* stdout and stderr the default are for them to inherit the
* corresponding descriptor from the calling process.
*
diff --git a/gio/giomodule.c b/gio/giomodule.c
index 1adfd937e..1ead84cf8 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -964,6 +964,7 @@ extern GType g_cocoa_notification_backend_get_type (void);
#ifdef G_PLATFORM_WIN32
#include <windows.h>
+extern GType _g_win32_network_monitor_get_type (void);
static HMODULE gio_dll = NULL;
@@ -1180,6 +1181,9 @@ _g_io_modules_ensure_loaded (void)
g_type_ensure (_g_network_monitor_netlink_get_type ());
g_type_ensure (_g_network_monitor_nm_get_type ());
#endif
+#ifdef G_OS_WIN32
+ g_type_ensure (_g_win32_network_monitor_get_type ());
+#endif
}
G_UNLOCK (loaded_dirs);
diff --git a/gio/gnetworkaddress.c b/gio/gnetworkaddress.c
index 07f923a90..4fa64123e 100644
--- a/gio/gnetworkaddress.c
+++ b/gio/gnetworkaddress.c
@@ -489,9 +489,10 @@ gboolean
_g_uri_parse_authority (const char *uri,
char **host,
guint16 *port,
- char **userinfo)
+ char **userinfo,
+ GError **error)
{
- char *tmp_str;
+ char *ascii_uri, *tmp_str;
const char *start, *p, *at, *delim;
char c;
@@ -506,6 +507,11 @@ _g_uri_parse_authority (const char *uri,
if (userinfo)
*userinfo = NULL;
+ /* Catch broken URIs early by trying to convert to ASCII. */
+ ascii_uri = g_hostname_to_ascii (uri);
+ if (!ascii_uri)
+ goto error;
+
/* From RFC 3986 Decodes:
* URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
* hier-part = "//" authority path-abempty
@@ -514,21 +520,21 @@ _g_uri_parse_authority (const char *uri,
*/
/* Check we have a valid scheme */
- tmp_str = g_uri_parse_scheme (uri);
+ tmp_str = g_uri_parse_scheme (ascii_uri);
if (tmp_str == NULL)
- return FALSE;
+ goto error;
g_free (tmp_str);
/* Decode hier-part:
* hier-part = "//" authority path-abempty
*/
- p = uri;
+ p = ascii_uri;
start = strstr (p, "//");
if (start == NULL)
- return FALSE;
+ goto error;
start += 2;
@@ -559,7 +565,7 @@ _g_uri_parse_authority (const char *uri,
{
if (!(g_ascii_isxdigit (p[0]) ||
g_ascii_isxdigit (p[1])))
- return FALSE;
+ goto error;
p++;
@@ -571,7 +577,7 @@ _g_uri_parse_authority (const char *uri,
strchr (G_URI_OTHER_UNRESERVED, c) ||
strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c) ||
c == ':'))
- return FALSE;
+ goto error;
}
if (userinfo)
@@ -618,7 +624,7 @@ _g_uri_parse_authority (const char *uri,
strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c) ||
c == ':' ||
c == '.'))
- goto error;
+ goto error;
}
if (host)
@@ -649,7 +655,7 @@ _g_uri_parse_authority (const char *uri,
{
if (!(g_ascii_isxdigit (p[0]) ||
g_ascii_isxdigit (p[1])))
- goto error;
+ goto error;
p++;
@@ -660,7 +666,7 @@ _g_uri_parse_authority (const char *uri,
if (!(g_ascii_isalnum (c) ||
strchr (G_URI_OTHER_UNRESERVED, c) ||
strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c)))
- goto error;
+ goto error;
}
if (host)
@@ -685,7 +691,7 @@ _g_uri_parse_authority (const char *uri,
break;
if (!g_ascii_isdigit (c))
- goto error;
+ goto error;
tmp = (tmp * 10) + (c - '0');
@@ -696,9 +702,14 @@ _g_uri_parse_authority (const char *uri,
*port = (guint16) tmp;
}
+ g_free (ascii_uri);
+
return TRUE;
error:
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ "Invalid URI ‘%s’", uri);
+
if (host && *host)
{
g_free (*host);
@@ -711,6 +722,8 @@ error:
*userinfo = NULL;
}
+ g_free (ascii_uri);
+
return FALSE;
}
@@ -782,13 +795,8 @@ g_network_address_parse_uri (const gchar *uri,
gchar *hostname;
guint16 port;
- if (!_g_uri_parse_authority (uri, &hostname, &port, NULL))
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
- "Invalid URI '%s'",
- uri);
- return NULL;
- }
+ if (!_g_uri_parse_authority (uri, &hostname, &port, NULL, error))
+ return NULL;
if (port == 0)
port = default_port;
diff --git a/gio/gnetworkingprivate.h b/gio/gnetworkingprivate.h
index fe126d6ec..ed0feb823 100644
--- a/gio/gnetworkingprivate.h
+++ b/gio/gnetworkingprivate.h
@@ -26,7 +26,8 @@ G_BEGIN_DECLS
gboolean _g_uri_parse_authority (const char *uri,
char **host,
guint16 *port,
- char **userinfo);
+ char **userinfo,
+ GError **error);
gchar * _g_uri_from_authority (const gchar *protocol,
const gchar *host,
guint port,
diff --git a/gio/gnetworkmonitor.c b/gio/gnetworkmonitor.c
index b38f4086a..657c7047a 100644
--- a/gio/gnetworkmonitor.c
+++ b/gio/gnetworkmonitor.c
@@ -309,13 +309,9 @@ g_network_monitor_default_init (GNetworkMonitorInterface *iface)
/**
* GNetworkMonitor::network-changed:
* @monitor: a #GNetworkMonitor
- * @available: the current value of #GNetworkMonitor:network-available
+ * @network_available: the current value of #GNetworkMonitor:network-available
*
- * Emitted when the network configuration changes. If @available is
- * %TRUE, then some hosts may be reachable that were not reachable
- * before, while others that were reachable before may no longer be
- * reachable. If @available is %FALSE, then no remote hosts are
- * reachable.
+ * Emitted when the network configuration changes.
*
* Since: 2.32
*/
diff --git a/gio/gnetworkmonitor.h b/gio/gnetworkmonitor.h
index c863fbf2d..dcaeaad33 100644
--- a/gio/gnetworkmonitor.h
+++ b/gio/gnetworkmonitor.h
@@ -48,7 +48,7 @@ struct _GNetworkMonitorInterface {
GTypeInterface g_iface;
void (*network_changed) (GNetworkMonitor *monitor,
- gboolean available);
+ gboolean network_available);
gboolean (*can_reach) (GNetworkMonitor *monitor,
GSocketConnectable *connectable,
diff --git a/gio/gnotification.c b/gio/gnotification.c
index 76f813eca..8e837ed03 100644
--- a/gio/gnotification.c
+++ b/gio/gnotification.c
@@ -310,6 +310,8 @@ g_notification_get_priority (GNotification *notification)
* Deprecated in favor of g_notification_set_priority().
*
* Since: 2.40
+ * Deprecated: 2.42: Since 2.42, this has been deprecated in favour of
+ * g_notification_set_priority().
*/
void
g_notification_set_urgent (GNotification *notification,
@@ -317,7 +319,9 @@ g_notification_set_urgent (GNotification *notification,
{
g_return_if_fail (G_IS_NOTIFICATION (notification));
- g_notification_set_priority (notification, G_NOTIFICATION_PRIORITY_URGENT);
+ notification->priority = urgent ?
+ G_NOTIFICATION_PRIORITY_URGENT :
+ G_NOTIFICATION_PRIORITY_NORMAL;
}
/**
diff --git a/gio/gpollableoutputstream.c b/gio/gpollableoutputstream.c
index 9bd6b8cd0..40c649f0d 100644
--- a/gio/gpollableoutputstream.c
+++ b/gio/gpollableoutputstream.c
@@ -178,6 +178,9 @@ g_pollable_output_stream_default_write_nonblocking (GPollableOutputStream *stre
* may happen if you call this method after a source triggers due
* to having been cancelled.
*
+ * Also note that if %G_IO_ERROR_WOULD_BLOCK is returned some underlying
+ * transports like D/TLS require that you send the same @buffer and @count.
+ *
* Virtual: write_nonblocking
* Returns: the number of bytes written, or -1 on error (including
* %G_IO_ERROR_WOULD_BLOCK).
diff --git a/gio/gproxyaddressenumerator.c b/gio/gproxyaddressenumerator.c
index 698df3e82..74a486e9f 100644
--- a/gio/gproxyaddressenumerator.c
+++ b/gio/gproxyaddressenumerator.c
@@ -93,7 +93,7 @@ save_userinfo (GProxyAddressEnumeratorPrivate *priv,
priv->proxy_password = NULL;
}
- if (_g_uri_parse_authority (proxy, NULL, NULL, &userinfo))
+ if (_g_uri_parse_authority (proxy, NULL, NULL, &userinfo, NULL))
{
if (userinfo)
{
diff --git a/gio/gproxyresolver.c b/gio/gproxyresolver.c
index 082274e4f..bd9528dd0 100644
--- a/gio/gproxyresolver.c
+++ b/gio/gproxyresolver.c
@@ -27,8 +27,10 @@
#include "gasyncresult.h"
#include "gcancellable.h"
+#include "gtask.h"
#include "giomodule.h"
#include "giomodule-priv.h"
+#include "gnetworkingprivate.h"
/**
* SECTION:gproxyresolver
@@ -145,6 +147,9 @@ g_proxy_resolver_lookup (GProxyResolver *resolver,
g_return_val_if_fail (G_IS_PROXY_RESOLVER (resolver), NULL);
g_return_val_if_fail (uri != NULL, NULL);
+ if (!_g_uri_parse_authority (uri, NULL, NULL, NULL, error))
+ return NULL;
+
iface = G_PROXY_RESOLVER_GET_IFACE (resolver);
return (* iface->lookup) (resolver, uri, cancellable, error);
@@ -171,10 +176,19 @@ g_proxy_resolver_lookup_async (GProxyResolver *resolver,
gpointer user_data)
{
GProxyResolverInterface *iface;
+ GError *error = NULL;
g_return_if_fail (G_IS_PROXY_RESOLVER (resolver));
g_return_if_fail (uri != NULL);
+ if (!_g_uri_parse_authority (uri, NULL, NULL, NULL, &error))
+ {
+ g_task_report_error (resolver, callback, user_data,
+ g_proxy_resolver_lookup_async,
+ g_steal_pointer (&error));
+ return;
+ }
+
iface = G_PROXY_RESOLVER_GET_IFACE (resolver);
(* iface->lookup_async) (resolver, uri, cancellable, callback, user_data);
diff --git a/gio/gresolver.c b/gio/gresolver.c
index f9d0573fb..b60544a20 100644
--- a/gio/gresolver.c
+++ b/gio/gresolver.c
@@ -659,6 +659,8 @@ g_resolver_get_service_rrname (const char *service,
if (g_hostname_is_non_ascii (domain))
domain = ascii_domain = g_hostname_to_ascii (domain);
+ if (!domain)
+ return NULL;
rrname = g_strdup_printf ("_%s._%s.%s", service, protocol, domain);
@@ -721,6 +723,12 @@ g_resolver_lookup_service (GResolver *resolver,
g_return_val_if_fail (domain != NULL, NULL);
rrname = g_resolver_get_service_rrname (service, protocol, domain);
+ if (!rrname)
+ {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Invalid domain"));
+ return NULL;
+ }
g_resolver_maybe_reload (resolver);
targets = G_RESOLVER_GET_CLASS (resolver)->
@@ -765,6 +773,14 @@ g_resolver_lookup_service_async (GResolver *resolver,
g_return_if_fail (domain != NULL);
rrname = g_resolver_get_service_rrname (service, protocol, domain);
+ if (!rrname)
+ {
+ g_task_report_new_error (resolver, callback, user_data,
+ g_resolver_lookup_service_async,
+ G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("Invalid domain"));
+ return;
+ }
g_resolver_maybe_reload (resolver);
G_RESOLVER_GET_CLASS (resolver)->
diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c
index 57eb838a1..b7dd9d8fb 100644
--- a/gio/gsettings-tool.c
+++ b/gio/gsettings-tool.c
@@ -262,10 +262,28 @@ list_recursively (GSettings *settings)
children = g_settings_list_children (settings);
for (i = 0; children[i]; i++)
{
+ gboolean will_see_elsewhere = FALSE;
GSettings *child;
child = g_settings_get_child (settings, children[i]);
- list_recursively (child);
+
+ if (global_settings == NULL)
+ {
+ /* we're listing all non-relocatable settings objects from the
+ * top-level, so if this one is non-relocatable, don't recurse,
+ * because we will pick it up later on.
+ */
+
+ GSettingsSchema *child_schema;
+
+ g_object_get (child, "settings-schema", &child_schema, NULL);
+ will_see_elsewhere = !is_relocatable_schema (child_schema);
+ g_settings_schema_unref (child_schema);
+ }
+
+ if (!will_see_elsewhere)
+ list_recursively (child);
+
g_object_unref (child);
}
diff --git a/gio/gsettingsschema.c b/gio/gsettingsschema.c
index 4e12243d8..f1274a369 100644
--- a/gio/gsettingsschema.c
+++ b/gio/gsettingsschema.c
@@ -850,7 +850,7 @@ ensure_schema_lists (void)
/**
* g_settings_list_schemas:
*
- * <!-- -->
+ * Deprecated.
*
* Returns: (element-type utf8) (transfer none): a list of #GSettings
* schemas that are available. The list must not be modified or
@@ -874,7 +874,7 @@ g_settings_list_schemas (void)
/**
* g_settings_list_relocatable_schemas:
*
- * <!-- -->
+ * Deprecated.
*
* Returns: (element-type utf8) (transfer none): a list of relocatable
* #GSettings schemas that are available. The list must not be
diff --git a/gio/gsimpleproxyresolver.c b/gio/gsimpleproxyresolver.c
index 145bd5e8c..f33d49f8c 100644
--- a/gio/gsimpleproxyresolver.c
+++ b/gio/gsimpleproxyresolver.c
@@ -287,11 +287,13 @@ ignore_host (GSimpleProxyResolver *resolver,
if (priv->ignore_domains)
{
+ length = 0;
if (g_hostname_is_non_ascii (host))
host = ascii_host = g_hostname_to_ascii (host);
- length = strlen (host);
+ if (host)
+ length = strlen (host);
- for (i = 0; priv->ignore_domains[i].length; i++)
+ for (i = 0; length > 0 && priv->ignore_domains[i].length; i++)
{
GSimpleProxyResolverDomain *domain = &priv->ignore_domains[i];
@@ -327,7 +329,7 @@ g_simple_proxy_resolver_lookup (GProxyResolver *proxy_resolver,
gchar *host = NULL;
gushort port;
- if (_g_uri_parse_authority (uri, &host, &port, NULL) &&
+ if (_g_uri_parse_authority (uri, &host, &port, NULL, NULL) &&
ignore_host (resolver, host, port))
proxy = "direct://";
diff --git a/gio/gsocketaddressenumerator.h b/gio/gsocketaddressenumerator.h
index d11b7e482..f148f6369 100644
--- a/gio/gsocketaddressenumerator.h
+++ b/gio/gsocketaddressenumerator.h
@@ -38,7 +38,7 @@ G_BEGIN_DECLS
* GSocketAddressEnumerator:
*
* Enumerator type for objects that contain or generate
- * #GSocketAddress<!-- -->es.
+ * #GSocketAddress instances.
*/
typedef struct _GSocketAddressEnumeratorClass GSocketAddressEnumeratorClass;
diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c
index 7941d95fc..fc5c1bb77 100644
--- a/gio/gthreadedresolver.c
+++ b/gio/gthreadedresolver.c
@@ -824,12 +824,36 @@ do_lookup_records (GTask *task,
GByteArray *answer;
gint rrtype;
+#ifdef HAVE_RES_NQUERY
+ /* Load the resolver state. This is done once per worker thread, and the
+ * #GResolver::reload signal is ignored (since we always reload). This could
+ * be improved by having an explicit worker thread pool, with each thread
+ * containing some state which is initialised at thread creation time and
+ * updated in response to #GResolver::reload.
+ *
+ * What we have currently is not particularly worse than using res_query() in
+ * worker threads, since it would transparently call res_init() for each new
+ * worker thread. (Although the workers would get reused by the
+ * #GThreadPool.) */
+ struct __res_state res;
+ if (res_ninit (&res) != 0)
+ {
+ g_task_return_new_error (task, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+ _("Error resolving “%sâ€"), lrd->rrname);
+ return;
+ }
+#endif
+
rrtype = g_resolver_record_type_to_rrtype (lrd->record_type);
answer = g_byte_array_new ();
for (;;)
{
g_byte_array_set_size (answer, len * 2);
+#if defined(HAVE_RES_NQUERY)
+ len = res_nquery (&res, lrd->rrname, C_IN, rrtype, answer->data, answer->len);
+#else
len = res_query (lrd->rrname, C_IN, rrtype, answer->data, answer->len);
+#endif
/* If answer fit in the buffer then we're done */
if (len < 0 || len < (gint)answer->len)
@@ -845,6 +869,14 @@ do_lookup_records (GTask *task,
records = g_resolver_records_from_res_query (lrd->rrname, rrtype, answer->data, len, herr, &error);
g_byte_array_free (answer, TRUE);
+#if defined(HAVE_RES_NDESTROY)
+ res_ndestroy (&res);
+#elif defined(HAVE_RES_NCLOSE)
+ res_nclose (&res);
+#elif defined(HAVE_RES_NINIT)
+#error "Your platform has res_ninit() but not res_nclose() or res_ndestroy(). Please file a bug at https://bugzilla.gnome.org/enter_bug.cgi?product=glib"
+#endif
+
#else
DNS_STATUS status;
diff --git a/gio/gtlsclientconnection.c b/gio/gtlsclientconnection.c
index 0fc188c3a..f80c62572 100644
--- a/gio/gtlsclientconnection.c
+++ b/gio/gtlsclientconnection.c
@@ -103,18 +103,21 @@ g_tls_client_connection_default_init (GTlsClientConnectionInterface *iface)
/**
* GTlsClientConnection:use-ssl3:
*
- * If %TRUE, tells the connection to use a fallback version of TLS
+ * If %TRUE, forces the connection to use a fallback version of TLS
* or SSL, rather than trying to negotiate the best version of TLS
* to use. This can be used when talking to servers that don't
* implement version negotiation correctly and therefore refuse to
- * handshake at all with a "modern" TLS handshake.
+ * handshake at all with a modern TLS handshake.
*
- * Despite the property name, the fallback version is not
- * necessarily SSL 3.0; if SSL 3.0 has been disabled, the
- * #GTlsClientConnection will use the next highest available version
- * (normally TLS 1.0) as the fallback version.
+ * Despite the property name, the fallback version is usually not
+ * SSL 3.0, because SSL 3.0 is generally disabled by the #GTlsBackend.
+ * #GTlsClientConnection will use the next-highest available version
+ * as the fallback version.
*
* Since: 2.28
+ *
+ * Deprecated: 2.56: SSL 3.0 is insecure, and this property does not
+ * generally enable or disable it, despite its name.
*/
g_object_interface_install_property (iface,
g_param_spec_boolean ("use-ssl3",
@@ -123,7 +126,8 @@ g_tls_client_connection_default_init (GTlsClientConnectionInterface *iface)
FALSE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT |
- G_PARAM_STATIC_STRINGS));
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_DEPRECATED));
/**
* GTlsClientConnection:accepted-cas: (type GLib.List) (element-type GLib.ByteArray)
@@ -273,13 +277,16 @@ g_tls_client_connection_set_server_identity (GTlsClientConnection *conn,
* g_tls_client_connection_get_use_ssl3:
* @conn: the #GTlsClientConnection
*
- * Gets whether @conn will use SSL 3.0 rather than the
- * highest-supported version of TLS; see
- * g_tls_client_connection_set_use_ssl3().
+ * Gets whether @conn will force the lowest-supported TLS protocol
+ * version rather than attempt to negotiate the highest mutually-
+ * supported version of TLS; see g_tls_client_connection_set_use_ssl3().
*
- * Returns: whether @conn will use SSL 3.0
+ * Returns: whether @conn will use the lowest-supported TLS protocol version
*
* Since: 2.28
+ *
+ * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
+ * actually indicate whether it is enabled.
*/
gboolean
g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn)
@@ -295,15 +302,21 @@ g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn)
/**
* g_tls_client_connection_set_use_ssl3:
* @conn: the #GTlsClientConnection
- * @use_ssl3: whether to use SSL 3.0
+ * @use_ssl3: whether to use the lowest-supported protocol version
*
- * If @use_ssl3 is %TRUE, this forces @conn to use SSL 3.0 rather than
- * trying to properly negotiate the right version of TLS or SSL to use.
- * This can be used when talking to servers that do not implement the
- * fallbacks correctly and which will therefore fail to handshake with
- * a "modern" TLS handshake attempt.
+ * If @use_ssl3 is %TRUE, this forces @conn to use the lowest-supported
+ * TLS protocol version rather than trying to properly negotiate the
+ * highest mutually-supported protocol version with the peer. This can
+ * be used when talking to broken TLS servers that exhibit protocol
+ * version intolerance.
+ *
+ * Be aware that SSL 3.0 is generally disabled by the #GTlsBackend, so
+ * the lowest-supported protocol version is probably not SSL 3.0.
*
* Since: 2.28
+ *
+ * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
+ * generally enable or disable it, despite its name.
*/
void
g_tls_client_connection_set_use_ssl3 (GTlsClientConnection *conn,
diff --git a/gio/gtlsclientconnection.h b/gio/gtlsclientconnection.h
index 84711ec0b..29dbafcf4 100644
--- a/gio/gtlsclientconnection.h
+++ b/gio/gtlsclientconnection.h
@@ -69,9 +69,9 @@ GSocketConnectable *g_tls_client_connection_get_server_identity (GTlsClientCo
GLIB_AVAILABLE_IN_ALL
void g_tls_client_connection_set_server_identity (GTlsClientConnection *conn,
GSocketConnectable *identity);
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_56
gboolean g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn);
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_56
void g_tls_client_connection_set_use_ssl3 (GTlsClientConnection *conn,
gboolean use_ssl3);
GLIB_AVAILABLE_IN_ALL
diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
index fc3712987..add8e3f31 100644
--- a/gio/gunixmounts.c
+++ b/gio/gunixmounts.c
@@ -1656,6 +1656,7 @@ static GFileMonitor *fstab_monitor;
static GFileMonitor *mtab_monitor;
static GSource *proc_mounts_watch_source;
static GList *mount_poller_mounts;
+static guint mtab_file_changed_id;
static gboolean
proc_mounts_watch_is_running (void)
@@ -1679,6 +1680,15 @@ fstab_file_changed (GFileMonitor *monitor,
g_context_specific_group_emit (&mount_monitor_group, signals[MOUNTPOINTS_CHANGED]);
}
+static gboolean
+mtab_file_changed_cb (gpointer user_data)
+{
+ mtab_file_changed_id = 0;
+ g_context_specific_group_emit (&mount_monitor_group, signals[MOUNTS_CHANGED]);
+
+ return G_SOURCE_REMOVE;
+}
+
static void
mtab_file_changed (GFileMonitor *monitor,
GFile *file,
@@ -1691,7 +1701,14 @@ mtab_file_changed (GFileMonitor *monitor,
event_type != G_FILE_MONITOR_EVENT_DELETED)
return;
- g_context_specific_group_emit (&mount_monitor_group, signals[MOUNTS_CHANGED]);
+ /* Skip accumulated events from file monitor which we are not able to handle
+ * in a real time instead of emitting mounts_changed signal several times.
+ * This should behave equally to GIOChannel based monitoring. See Bug 792235.
+ */
+ if (mtab_file_changed_id > 0)
+ return;
+
+ mtab_file_changed_id = g_idle_add (mtab_file_changed_cb, NULL);
}
static gboolean
diff --git a/gio/gwin32networkmonitor.c b/gio/gwin32networkmonitor.c
new file mode 100644
index 000000000..8380f0100
--- /dev/null
+++ b/gio/gwin32networkmonitor.c
@@ -0,0 +1,333 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2014-2018 Jan-Michael Brummer <jan.brummer@tabos.org>
+ *
+ * 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 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <errno.h>
+#include <unistd.h>
+
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <iphlpapi.h>
+#include <stdio.h>
+
+#include "gwin32networkmonitor.h"
+#include "ginetaddress.h"
+#include "ginetaddressmask.h"
+#include "ginitable.h"
+#include "giomodule-priv.h"
+#include "glibintl.h"
+#include "glib/gstdio.h"
+#include "gnetworkingprivate.h"
+#include "gsocket.h"
+#include "gnetworkmonitor.h"
+#include "gioerror.h"
+
+static void g_win32_network_monitor_iface_init (GNetworkMonitorInterface *iface);
+static void g_win32_network_monitor_initable_iface_init (GInitableIface *iface);
+
+struct _GWin32NetworkMonitorPrivate
+{
+ gboolean initialized;
+ GError *init_error;
+ GMainContext *main_context;
+ GSource *route_change_source;
+ HANDLE handle;
+};
+
+#define g_win32_network_monitor_get_type _g_win32_network_monitor_get_type
+G_DEFINE_TYPE_WITH_CODE (GWin32NetworkMonitor, g_win32_network_monitor, G_TYPE_NETWORK_MONITOR_BASE,
+ G_ADD_PRIVATE (GWin32NetworkMonitor)
+ G_IMPLEMENT_INTERFACE (G_TYPE_NETWORK_MONITOR,
+ g_win32_network_monitor_iface_init)
+ G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+ g_win32_network_monitor_initable_iface_init)
+ _g_io_modules_ensure_extension_points_registered ();
+ g_io_extension_point_implement (G_NETWORK_MONITOR_EXTENSION_POINT_NAME,
+ g_define_type_id,
+ "win32",
+ 20))
+
+static void
+g_win32_network_monitor_init (GWin32NetworkMonitor *win)
+{
+ win->priv = g_win32_network_monitor_get_instance_private (win);
+}
+
+static gboolean
+win_network_monitor_get_ip_info (IP_ADDRESS_PREFIX prefix,
+ GSocketFamily *family,
+ const guint8 **dest,
+ gsize *len)
+{
+ switch (prefix.Prefix.si_family)
+ {
+ case AF_UNSPEC:
+ /* Fall-through: AF_UNSPEC deliveres both IPV4 and IPV6 infos, let`s stick with IPV4 here */
+ case AF_INET:
+ *family = G_SOCKET_FAMILY_IPV4;
+ *dest = (guint8 *) &prefix.Prefix.Ipv4.sin_addr;
+ *len = prefix.PrefixLength;
+ break;
+ case AF_INET6:
+ *family = G_SOCKET_FAMILY_IPV6;
+ *dest = (guint8 *) &prefix.Prefix.Ipv6.sin6_addr;
+ *len = prefix.PrefixLength;
+ break;
+ default:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static GInetAddressMask *
+get_network_mask (GSocketFamily family,
+ const guint8 *dest,
+ gsize len)
+{
+ GInetAddressMask *network;
+ GInetAddress *dest_addr;
+
+ if (dest != NULL)
+ dest_addr = g_inet_address_new_from_bytes (dest, family);
+ else
+ dest_addr = g_inet_address_new_any (family);
+
+ network = g_inet_address_mask_new (dest_addr, len, NULL);
+ g_object_unref (dest_addr);
+
+ return network;
+}
+
+static gboolean
+win_network_monitor_process_table (GWin32NetworkMonitor *win,
+ GError **error)
+{
+ DWORD ret = 0;
+ GPtrArray *networks;
+ gsize i;
+ MIB_IPFORWARD_TABLE2 *routes = NULL;
+ MIB_IPFORWARD_ROW2 *route;
+
+ ret = GetIpForwardTable2 (AF_UNSPEC, &routes);
+ if (ret != ERROR_SUCCESS)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "GetIpForwardTable2 () failed: %ld", ret);
+
+ return FALSE;
+ }
+
+ networks = g_ptr_array_new_full (routes->NumEntries, g_object_unref);
+ for (i = 0; i < routes->NumEntries; i++)
+ {
+ GInetAddressMask *network;
+ const guint8 *dest;
+ gsize len;
+ GSocketFamily family;
+
+ route = routes->Table + i;
+
+ if (!win_network_monitor_get_ip_info (route->DestinationPrefix, &family, &dest, &len))
+ continue;
+
+ network = get_network_mask (family, dest, len);
+ if (network == NULL)
+ continue;
+
+ g_ptr_array_add (networks, network);
+ }
+
+ g_network_monitor_base_set_networks (G_NETWORK_MONITOR_BASE (win),
+ (GInetAddressMask **) networks->pdata,
+ networks->len);
+
+ return TRUE;
+}
+
+static void
+add_network (GWin32NetworkMonitor *win,
+ GSocketFamily family,
+ const guint8 *dest,
+ gsize dest_len)
+{
+ GInetAddressMask *network;
+
+ network = get_network_mask (family, dest, dest_len);
+ if (network != NULL)
+ {
+ g_network_monitor_base_add_network (G_NETWORK_MONITOR_BASE (win), network);
+ g_object_unref (network);
+ }
+}
+
+static void
+remove_network (GWin32NetworkMonitor *win,
+ GSocketFamily family,
+ const guint8 *dest,
+ gsize dest_len)
+{
+ GInetAddressMask *network;
+
+ network = get_network_mask (family, dest, dest_len);
+ if (network != NULL)
+ {
+ g_network_monitor_base_remove_network (G_NETWORK_MONITOR_BASE (win), network);
+ g_object_unref (network);
+ }
+}
+
+typedef struct {
+ PMIB_IPFORWARD_ROW2 route;
+ MIB_NOTIFICATION_TYPE type;
+ GWin32NetworkMonitor *win;
+} RouteData;
+
+static gboolean
+win_network_monitor_invoke_route_changed (gpointer user_data)
+{
+ GSocketFamily family;
+ RouteData *route_data = user_data;
+ const guint8 *dest;
+ gsize len;
+
+ switch (route_data->type)
+ {
+ case MibDeleteInstance:
+ if (!win_network_monitor_get_ip_info (route_data->route->DestinationPrefix, &family, &dest, &len))
+ break;
+
+ remove_network (route_data->win, family, dest, len);
+ break;
+ case MibAddInstance:
+ if (!win_network_monitor_get_ip_info (route_data->route->DestinationPrefix, &family, &dest, &len))
+ break;
+
+ add_network (route_data->win, family, dest, len);
+ break;
+ case MibInitialNotification:
+ default:
+ break;
+ }
+
+ return G_SOURCE_REMOVE;
+}
+
+static VOID WINAPI
+win_network_monitor_route_changed_cb (PVOID context,
+ PMIB_IPFORWARD_ROW2 route,
+ MIB_NOTIFICATION_TYPE type)
+{
+ GWin32NetworkMonitor *win = context;
+ RouteData *route_data;
+
+ route_data = g_new0 (RouteData, 1);
+ route_data->route = route;
+ route_data->type = type;
+ route_data->win = win;
+
+ win->priv->route_change_source = g_idle_source_new ();
+ g_source_set_priority (win->priv->route_change_source, G_PRIORITY_DEFAULT);
+ g_source_set_callback (win->priv->route_change_source,
+ win_network_monitor_invoke_route_changed,
+ route_data,
+ g_free);
+
+ g_source_attach (win->priv->route_change_source, win->priv->main_context);
+}
+
+static gboolean
+g_win32_network_monitor_initable_init (GInitable *initable,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GWin32NetworkMonitor *win = G_WIN32_NETWORK_MONITOR (initable);
+ NTSTATUS status;
+ gboolean read;
+
+ if (!win->priv->initialized)
+ {
+ win->priv->main_context = g_main_context_ref_thread_default ();
+
+ /* Read current IP routing table. */
+ read = win_network_monitor_process_table (win, &win->priv->init_error);
+ if (read)
+ {
+ /* Register for IPv4 and IPv6 route updates. */
+ status = NotifyRouteChange2 (AF_UNSPEC, (PIPFORWARD_CHANGE_CALLBACK) win_network_monitor_route_changed_cb, win, FALSE, &win->priv->handle);
+ if (status != NO_ERROR)
+ g_set_error (&win->priv->init_error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "NotifyRouteChange2() error: %ld", status);
+ }
+
+ win->priv->initialized = TRUE;
+ }
+
+ /* Forward the results. */
+ if (win->priv->init_error != NULL)
+ {
+ g_propagate_error (error, g_error_copy (win->priv->init_error));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+g_win32_network_monitor_finalize (GObject *object)
+{
+ GWin32NetworkMonitor *win = G_WIN32_NETWORK_MONITOR (object);
+
+ /* Cancel notification event */
+ if (win->priv->handle)
+ CancelMibChangeNotify2 (win->priv->handle);
+
+ g_clear_error (&win->priv->init_error);
+
+ if (win->priv->route_change_source != NULL)
+ {
+ g_source_destroy (win->priv->route_change_source);
+ g_source_unref (win->priv->route_change_source);
+ }
+
+ g_main_context_unref (win->priv->main_context);
+
+ G_OBJECT_CLASS (g_win32_network_monitor_parent_class)->finalize (object);
+}
+
+static void
+g_win32_network_monitor_class_init (GWin32NetworkMonitorClass *win_class)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (win_class);
+
+ gobject_class->finalize = g_win32_network_monitor_finalize;
+}
+
+static void
+g_win32_network_monitor_iface_init (GNetworkMonitorInterface *monitor_iface)
+{
+}
+
+static void
+g_win32_network_monitor_initable_iface_init (GInitableIface *iface)
+{
+ iface->init = g_win32_network_monitor_initable_init;
+}
diff --git a/gio/gwin32networkmonitor.h b/gio/gwin32networkmonitor.h
new file mode 100644
index 000000000..49408cf52
--- /dev/null
+++ b/gio/gwin32networkmonitor.h
@@ -0,0 +1,53 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2014-2018 Jan-Michael Brummer <jan.brummer@tabos.org>
+ *
+ * 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 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __G_WIN32_NETWORK_MONITOR_H__
+#define __G_WIN32_NETWORK_MONITOR_H__
+
+#include "gnetworkmonitorbase.h"
+
+G_BEGIN_DECLS
+
+#define G_TYPE_WIN32_NETWORK_MONITOR (_g_win32_network_monitor_get_type ())
+#define G_WIN32_NETWORK_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_WIN32_NETWORK_MONITOR, GWin32NetworkMonitor))
+#define G_WIN32_NETWORK_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_WIN32_NETWORK_MONITOR, GWin32NetworkMonitorClass))
+#define G_IS_WIN32_NETWORK_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_WIN32_NETWORK_MONITOR))
+#define G_IS_WIN32_NETWORK_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_WIN32_NETWORK_MONITOR))
+#define G_WIN32_NETWORK_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_WIN32_NETWORK_MONITOR, GWin32NetworkMonitorClass))
+
+typedef struct _GWin32NetworkMonitor GWin32NetworkMonitor;
+typedef struct _GWin32NetworkMonitorClass GWin32NetworkMonitorClass;
+typedef struct _GWin32NetworkMonitorPrivate GWin32NetworkMonitorPrivate;
+
+struct _GWin32NetworkMonitor {
+ GNetworkMonitorBase parent_instance;
+
+ GWin32NetworkMonitorPrivate *priv;
+};
+
+struct _GWin32NetworkMonitorClass {
+ GNetworkMonitorBaseClass parent_class;
+};
+
+GType _g_win32_network_monitor_get_type (void);
+
+G_END_DECLS
+
+#endif /* __G_WIN32_NETWORK_MONITOR_H__ */
diff --git a/gio/meson.build b/gio/meson.build
index 83160734e..1d61d235d 100644
--- a/gio/meson.build
+++ b/gio/meson.build
@@ -87,6 +87,54 @@ if host_system != 'windows'
glib_conf.set('HAVE_RES_INIT', 1)
endif
+ # res_nclose()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ return res_nclose(&res);
+ }''', args : network_args, name : 'res_nclose()')
+ glib_conf.set('HAVE_RES_NCLOSE', 1)
+ endif
+
+ # res_ndestroy()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ return res_ndestroy(&res);
+ }''', args : network_args, name : 'res_ndestroy()')
+ glib_conf.set('HAVE_RES_NDESTROY', 1)
+ endif
+
+ # res_ninit()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ return res_ninit(&res);
+ }''', args : network_args, name : 'res_ninit()')
+ glib_conf.set('HAVE_RES_NINIT', 1)
+ endif
+
+ # res_nquery()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ return res_nquery(&res, "test", 0, 0, (void *)0, 0);
+ }''', args : network_args, name : 'res_nquery()')
+ glib_conf.set('HAVE_RES_NQUERY', 1)
+ endif
+
if cc.compiles('''#include <netinet/in.h>
struct ip_mreqn foo;''',
name : 'struct ip_mreqn')
@@ -388,6 +436,8 @@ else
'gwin32volumemonitor.c',
'gwin32inputstream.c',
'gwin32outputstream.c',
+ 'gwin32networkmonitor.c',
+ 'gwin32networkmonitor.h',
)
gio_win_rc = configure_file(
diff --git a/gio/tests/data-input-stream.c b/gio/tests/data-input-stream.c
index 58a3b3ac2..d82b3e3f1 100644
--- a/gio/tests/data-input-stream.c
+++ b/gio/tests/data-input-stream.c
@@ -222,6 +222,8 @@ test_read_lines_LF_invalid_utf8 (void)
g_object_unref (stream);
}
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+
static void
test_read_until (void)
{
@@ -268,6 +270,8 @@ test_read_until (void)
g_object_unref (stream);
}
+G_GNUC_END_IGNORE_DEPRECATIONS
+
static void
test_read_upto (void)
{
diff --git a/gio/tests/file.c b/gio/tests/file.c
index cf2aae253..98eeb85d4 100644
--- a/gio/tests/file.c
+++ b/gio/tests/file.c
@@ -169,9 +169,12 @@ monitor_changed (GFileMonitor *monitor,
{
CreateDeleteData *data = user_data;
gchar *path;
+ const gchar *peeked_path;
path = g_file_get_path (file);
+ peeked_path = g_file_peek_path (file);
g_assert_cmpstr (data->monitor_path, ==, path);
+ g_assert_cmpstr (path, ==, peeked_path);
g_free (path);
if (event_type == G_FILE_MONITOR_EVENT_CREATED)
@@ -619,7 +622,7 @@ static void
test_replace_load (void)
{
ReplaceLoadData *data;
- gchar *path;
+ const gchar *path;
GFileIOStream *iostream;
data = g_new0 (ReplaceLoadData, 1);
@@ -631,7 +634,7 @@ test_replace_load (void)
g_assert (data->file != NULL);
g_object_unref (iostream);
- path = g_file_get_path (data->file);
+ path = g_file_peek_path (data->file);
remove (path);
g_assert (!g_file_query_exists (data->file, NULL));
@@ -653,7 +656,6 @@ test_replace_load (void)
g_main_loop_unref (data->loop);
g_object_unref (data->file);
g_free (data);
- free (path);
}
static void
diff --git a/gio/tests/gdbus-threading.c b/gio/tests/gdbus-threading.c
index a4ef721cb..3e4dc92e5 100644
--- a/gio/tests/gdbus-threading.c
+++ b/gio/tests/gdbus-threading.c
@@ -406,7 +406,7 @@ test_method_calls_on_proxy (GDBusProxy *proxy)
/* elapsed_msec should be 4000 msec +/- change for overhead/inaccuracy */
g_assert_cmpint (elapsed_msec, >=, 3950);
- g_assert_cmpint (elapsed_msec, <, 8000);
+ g_assert_cmpint (elapsed_msec, <, 30000);
if (g_test_verbose ())
g_printerr (" ");
diff --git a/gio/tests/simple-proxy.c b/gio/tests/simple-proxy.c
index 0f1f63d81..00bdb2ea4 100644
--- a/gio/tests/simple-proxy.c
+++ b/gio/tests/simple-proxy.c
@@ -20,12 +20,66 @@
#include <gio/gio.h>
static void
+async_result_cb (GObject *obj,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GAsyncResult **result_out = user_data;
+ *result_out = g_object_ref (result);
+}
+
+static void
test_uris (void)
{
GProxyResolver *resolver;
gchar *ignore_hosts[2] = { "127.0.0.1", NULL };
gchar **proxies;
GError *error = NULL;
+ const gchar *uri;
+ gchar *str = NULL;
+ GAsyncResult *result = NULL;
+
+ /* Valid URI. */
+ uri = "http://%E0%B4%A8%E0%B4%B2:80/";
+ resolver = g_simple_proxy_resolver_new (NULL, ignore_hosts);
+
+ proxies = g_proxy_resolver_lookup (resolver, uri, NULL, &error);
+ g_assert_no_error (error);
+ g_strfreev (proxies);
+
+ g_proxy_resolver_lookup_async (resolver, uri, NULL, async_result_cb, &result);
+ while (result == NULL)
+ g_main_context_iteration (NULL, TRUE);
+ proxies = g_proxy_resolver_lookup_finish (resolver, result, &error);
+ g_assert_no_error (error);
+ g_strfreev (proxies);
+ g_clear_object (&result);
+
+ g_object_unref (resolver);
+
+ /* Invalid URI. */
+ uri = "%E0%B4%A8%E0%B4%B2";
+ str = g_strdup_printf ("Invalid URI ‘%s’", uri);
+ resolver = g_simple_proxy_resolver_new (NULL, ignore_hosts);
+
+ proxies = g_proxy_resolver_lookup (resolver, uri, NULL, &error);
+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT);
+ g_assert_cmpstr (error->message, ==, str);
+ g_clear_error (&error);
+ g_assert_null (proxies);
+ g_clear_object (&result);
+
+ g_proxy_resolver_lookup_async (resolver, uri, NULL, async_result_cb, &result);
+ while (result == NULL)
+ g_main_context_iteration (NULL, TRUE);
+ proxies = g_proxy_resolver_lookup_finish (resolver, result, &error);
+ g_assert_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT);
+ g_assert_cmpstr (error->message, ==, str);
+ g_clear_error (&error);
+ g_assert_null (proxies);
+
+ g_object_unref (resolver);
+ g_free (str);
resolver = g_simple_proxy_resolver_new ("default://", ignore_hosts);
g_simple_proxy_resolver_set_uri_proxy (G_SIMPLE_PROXY_RESOLVER (resolver),
diff --git a/glib.doap b/glib.doap
index a13dea82d..0f43d3b34 100644
--- a/glib.doap
+++ b/glib.doap
@@ -37,10 +37,27 @@
</foaf:Person>
</maintainer>
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Philip Withnall</foaf:name>
+ <foaf:mbox rdf:resource="mailto:philip@tecnocode.co.uk"/>
+ <foaf:mbox rdf:resource="mailto:withnall@endlessm.com"/>
+ <gnome:userid>pwithnall</gnome:userid>
+ </foaf:Person>
+ </maintainer>
+
+ <maintainer>
+ <foaf:Person>
+ <foaf:name>Emmanuele Bassi</foaf:name>
+ <foaf:mbox rdf:resource="mailto:ebassi@gnome.org"/>
+ <gnome:userid>ebassi</gnome:userid>
+ </foaf:Person>
+ </maintainer>
+
<repository>
<GitRepository>
- <browse rdf:resource="http://git.gnome.org/browse/glib/"/>
- <location rdf:resource="git://git.gnome.org/glib"/>
+ <browse rdf:resource="https://gitlab.gnome.org/GNOME/glib/tree/master"/>
+ <location rdf:resource="https://gitlab.gnome.org/GNOME/glib.git"/>
</GitRepository>
</repository>
diff --git a/glib/docs.c b/glib/docs.c
index b9c42454a..5031a6225 100644
--- a/glib/docs.c
+++ b/glib/docs.c
@@ -617,7 +617,9 @@
* goffset:
*
* A signed integer type that is used for file offsets,
- * corresponding to the C99 type off64_t.
+ * 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.
*
@@ -2597,9 +2599,9 @@
*
* membuf = g_malloc (8192);
*
- * /<!-- -->* Some computation on membuf *<!-- -->/
+ * // Some computation on membuf
*
- * /<!-- -->* membuf will be automatically freed here *<!-- -->/
+ * // membuf will be automatically freed here
* return TRUE;
* }
* ]|
diff --git a/glib/gbookmarkfile.c b/glib/gbookmarkfile.c
index 92a5e0f19..4661b9daf 100644
--- a/glib/gbookmarkfile.c
+++ b/glib/gbookmarkfile.c
@@ -2862,7 +2862,7 @@ g_bookmark_file_set_groups (GBookmarkFile *bookmark,
if (groups)
{
- for (i = 0; groups[i] != NULL && i < length; i++)
+ for (i = 0; i < length && groups[i] != NULL; i++)
item->metadata->groups = g_list_append (item->metadata->groups,
g_strdup (groups[i]));
}
diff --git a/glib/gbytes.c b/glib/gbytes.c
index 81dc9dbf6..3b14a51cd 100644
--- a/glib/gbytes.c
+++ b/glib/gbytes.c
@@ -64,6 +64,7 @@
* Since: 2.32
**/
+/* Keep in sync with glib/tests/bytes.c */
struct _GBytes
{
gconstpointer data; /* may be NULL iff (size == 0) */
@@ -203,6 +204,12 @@ g_bytes_new_with_free_func (gconstpointer data,
* A reference to @bytes will be held by the newly created #GBytes until
* the byte data is no longer needed.
*
+ * Since 2.56, if @offset is 0 and @length matches the size of @bytes, then
+ * @bytes will be returned with the reference count incremented by 1. If @bytes
+ * is a slice of another #GBytes, then the resulting #GBytes will reference
+ * the same #GBytes instead of @bytes. This allows consumers to simplify the
+ * usage of #GBytes when asynchronously writing to streams.
+ *
* Returns: (transfer full): a new #GBytes
*
* Since: 2.32
@@ -212,12 +219,31 @@ g_bytes_new_from_bytes (GBytes *bytes,
gsize offset,
gsize length)
{
+ gchar *base;
+
/* Note that length may be 0. */
g_return_val_if_fail (bytes != NULL, NULL);
g_return_val_if_fail (offset <= bytes->size, NULL);
g_return_val_if_fail (offset + length <= bytes->size, NULL);
- return g_bytes_new_with_free_func ((gchar *)bytes->data + offset, length,
+ /* Avoid an extra GBytes if all bytes were requested */
+ if (offset == 0 && length == bytes->size)
+ return g_bytes_ref (bytes);
+
+ base = (gchar *)bytes->data + offset;
+
+ /* Avoid referencing intermediate GBytes. In practice, this should
+ * only loop once.
+ */
+ while (bytes->free_func == (gpointer)g_bytes_unref)
+ bytes = bytes->user_data;
+
+ g_return_val_if_fail (bytes != NULL, NULL);
+ g_return_val_if_fail (base >= (gchar *)bytes->data, NULL);
+ g_return_val_if_fail (base <= (gchar *)bytes->data + bytes->size, NULL);
+ g_return_val_if_fail (base + length <= (gchar *)bytes->data + bytes->size, NULL);
+
+ return g_bytes_new_with_free_func (base, length,
(GDestroyNotify)g_bytes_unref, g_bytes_ref (bytes));
}
diff --git a/glib/gcharset.c b/glib/gcharset.c
index 9d25db584..704ea13c8 100644
--- a/glib/gcharset.c
+++ b/glib/gcharset.c
@@ -166,6 +166,10 @@ charset_cache_free (gpointer data)
* handle file names. It might be different from the character set
* used by the C library's current locale.
*
+ * On Linux, the character set is found by consulting nl_langinfo() if
+ * available. If not, the environment variables `LC_ALL`, `LC_CTYPE`, `LANG`
+ * and `CHARSET` are queried in order.
+ *
* The return value is %TRUE if the locale's encoding is UTF-8, in that
* case you can perhaps avoid calling g_convert().
*
diff --git a/glib/gconvert.c b/glib/gconvert.c
index 194b2fc3f..3784a3906 100644
--- a/glib/gconvert.c
+++ b/glib/gconvert.c
@@ -76,7 +76,7 @@
* in it ("/"). However, displaying file names may require conversion:
* from the character set in which they were created, to the character
* set in which the application operates. Consider the Spanish file name
- * "Presentaci&oacute;n.sxi". If the application which created it uses
+ * "Presentación.sxi". If the application which created it uses
* ISO-8859-1 for its encoding,
* |[
* Character: P r e s e n t a c i ó n . s x i
@@ -89,31 +89,31 @@
* Hex code: 50 72 65 73 65 6e 74 61 63 69 c3 b3 6e 2e 73 78 69
* ]|
* Glib uses UTF-8 for its strings, and GUI toolkits like GTK+ that use
- * Glib do the same thing. If you get a file name from the file system,
+ * GLib do the same thing. If you get a file name from the file system,
* for example, from readdir() or from g_dir_read_name(), and you wish
* to display the file name to the user, you will need to convert it
* into UTF-8. The opposite case is when the user types the name of a
- * file he wishes to save: the toolkit will give you that string in
+ * file they wish to save: the toolkit will give you that string in
* UTF-8 encoding, and you will need to convert it to the character
* set used for file names before you can create the file with open()
* or fopen().
*
- * By default, Glib assumes that file names on disk are in UTF-8
+ * By default, GLib assumes that file names on disk are in UTF-8
* encoding. This is a valid assumption for file systems which
* were created relatively recently: most applications use UTF-8
* encoding for their strings, and that is also what they use for
* the file names they create. However, older file systems may
* still contain file names created in "older" encodings, such as
* ISO-8859-1. In this case, for compatibility reasons, you may want
- * to instruct Glib to use that particular encoding for file names
+ * to instruct GLib to use that particular encoding for file names
* rather than UTF-8. You can do this by specifying the encoding for
* file names in the [`G_FILENAME_ENCODING`][G_FILENAME_ENCODING]
* environment variable. For example, if your installation uses
- * ISO-8859-1 for file names, you can put this in your `~/.profile`
+ * ISO-8859-1 for file names, you can put this in your `~/.profile`:
* |[
* export G_FILENAME_ENCODING=ISO-8859-1
* ]|
- * Glib provides the functions g_filename_to_utf8() and
+ * GLib provides the functions g_filename_to_utf8() and
* g_filename_from_utf8() to perform the necessary conversions.
* These functions convert file names from the encoding specified
* in `G_FILENAME_ENCODING` to UTF-8 and vice-versa. This
@@ -264,6 +264,13 @@ g_iconv_open (const gchar *to_codeset,
* GLib provides g_convert() and g_locale_to_utf8() which are likely
* more convenient than the raw iconv wrappers.
*
+ * Note that the behaviour of iconv() for characters which are valid in the
+ * input character set, but which have no representation in the output character
+ * set, is implementation defined. This function may return success (with a
+ * positive number of non-reversible conversions as replacement characters were
+ * used), or it may return -1 and set an error such as %EILSEQ, in such a
+ * situation.
+ *
* Returns: count of non-reversible conversions, or -1 on error
**/
gsize
@@ -340,29 +347,30 @@ close_converter (GIConv cd)
/**
* g_convert_with_iconv: (skip)
- * @str: the string to convert
+ * @str: (array length=len) (element-type guint8):
+ * the string to convert.
* @len: the length of the string in bytes, or -1 if the string is
* nul-terminated (Note that some encodings may allow nul
* bytes to occur inside strings. In that case, using -1
* for the @len parameter is unsafe)
* @converter: conversion descriptor from g_iconv_open()
- * @bytes_read: location to store the number of bytes in the
- * input string that were successfully converted, or %NULL.
+ * @bytes_read: (out) (optional): location to store the number of bytes in
+ * the input string that were successfully converted, or %NULL.
* 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
* stored will the byte offset after the last valid
* input sequence.
- * @bytes_written: the number of bytes stored in the output buffer (not
- * including the terminating nul).
+ * @bytes_written: (out) (optional): the number of bytes stored in
+ * the output buffer (not including the terminating nul).
* @error: location to store the error occurring, or %NULL to ignore
* errors. Any of the errors in #GConvertError may occur.
*
* Converts a string from one character set to another.
*
* Note that you should use g_iconv() for streaming conversions.
- * Despite the fact that @byes_read can return information about partial
+ * Despite the fact that @bytes_read can return information about partial
* characters, the g_convert_... functions are not generally suitable
* for streaming. If the underlying converter maintains internal state,
* then this won't be preserved across successive calls to g_convert(),
@@ -371,8 +379,17 @@ close_converter (GIConv cd)
* character until it knows that the next character is not a mark that
* could combine with the base character.)
*
- * Returns: If the conversion was successful, a newly allocated
- * nul-terminated string, which must be freed with
+ * Characters which are valid in the input character set, but which have no
+ * representation in the output character set will result in a
+ * %G_CONVERT_ERROR_ILLEGAL_SEQUENCE error. This is in contrast to the iconv()
+ * specification, which leaves this behaviour implementation defined. Note that
+ * this is the same error code as is returned for an invalid byte sequence in
+ * the input character set. To get defined behaviour for conversion of
+ * unrepresentable characters, use g_convert_with_fallback().
+ *
+ * Returns: (array length=bytes_written) (element-type guint8) (transfer full):
+ * If the conversion was successful, a newly allocated buffer
+ * containing the converted string, which must be freed with
* g_free(). Otherwise %NULL and @error will be set.
**/
gchar*
@@ -449,6 +466,13 @@ g_convert_with_iconv (const gchar *str,
break;
}
}
+ else if (err > 0)
+ {
+ /* @err gives the number of replacement characters used. */
+ g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+ _("Unrepresentable character in conversion input"));
+ have_error = TRUE;
+ }
else
{
if (!reset)
@@ -493,30 +517,31 @@ g_convert_with_iconv (const gchar *str,
/**
* g_convert:
- * @str: the string to convert
+ * @str: (array length=len) (element-type guint8):
+ * the string to convert.
* @len: the length of the string in bytes, or -1 if the string is
* nul-terminated (Note that some encodings may allow nul
* bytes to occur inside strings. In that case, using -1
* for the @len parameter is unsafe)
* @to_codeset: name of character set into which to convert @str
* @from_codeset: character set of @str.
- * @bytes_read: (out): location to store the number of bytes in the
- * input string that were successfully converted, or %NULL.
+ * @bytes_read: (out) (optional): location to store the number of bytes in
+ * the input string that were successfully converted, or %NULL.
* 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
* stored will the byte offset after the last valid
* input sequence.
- * @bytes_written: (out): the number of bytes stored in the output buffer (not
- * including the terminating nul).
+ * @bytes_written: (out) (optional): the number of bytes stored in
+ * the output buffer (not including the terminating nul).
* @error: location to store the error occurring, or %NULL to ignore
* errors. Any of the errors in #GConvertError may occur.
*
* Converts a string from one character set to another.
*
* Note that you should use g_iconv() for streaming conversions.
- * Despite the fact that @byes_read can return information about partial
+ * Despite the fact that @bytes_read can return information about partial
* characters, the g_convert_... functions are not generally suitable
* for streaming. If the underlying converter maintains internal state,
* then this won't be preserved across successive calls to g_convert(),
@@ -528,9 +553,10 @@ g_convert_with_iconv (const gchar *str,
* Using extensions such as "//TRANSLIT" may not work (or may not work
* well) on many platforms. Consider using g_str_to_ascii() instead.
*
- * Returns: If the conversion was successful, a newly allocated
- * nul-terminated string, which must be freed with
- * g_free(). Otherwise %NULL and @error will be set.
+ * Returns: (array length=bytes_written) (element-type guint8) (transfer full):
+ * If the conversion was successful, a newly allocated buffer
+ * containing the converted string, which must be freed with g_free().
+ * Otherwise %NULL and @error will be set.
**/
gchar*
g_convert (const gchar *str,
@@ -572,25 +598,26 @@ g_convert (const gchar *str,
/**
* g_convert_with_fallback:
- * @str: the string to convert
+ * @str: (array length=len) (element-type guint8):
+ * the string to convert.
* @len: the length of the string in bytes, or -1 if the string is
* nul-terminated (Note that some encodings may allow nul
* bytes to occur inside strings. In that case, using -1
* for the @len parameter is unsafe)
* @to_codeset: name of character set into which to convert @str
* @from_codeset: character set of @str.
- * @fallback: UTF-8 string to use in place of character not
+ * @fallback: UTF-8 string to use in place of characters not
* present in the target encoding. (The string must be
* representable in the target encoding).
* If %NULL, characters not in the target encoding will
* be represented as Unicode escapes \uxxxx or \Uxxxxyyyy.
- * @bytes_read: location to store the number of bytes in the
- * input string that were successfully converted, or %NULL.
+ * @bytes_read: (out) (optional): location to store the number of bytes in
+ * the input string that were successfully converted, or %NULL.
* Even if the conversion was successful, this may be
* less than @len if there were partial characters
* at the end of the input.
- * @bytes_written: the number of bytes stored in the output buffer (not
- * including the terminating nul).
+ * @bytes_written: (out) (optional): the number of bytes stored in
+ * the output buffer (not including the terminating nul).
* @error: location to store the error occurring, or %NULL to ignore
* errors. Any of the errors in #GConvertError may occur.
*
@@ -603,7 +630,7 @@ g_convert (const gchar *str,
* in which case GLib will simply return that approximate conversion.
*
* Note that you should use g_iconv() for streaming conversions.
- * Despite the fact that @byes_read can return information about partial
+ * Despite the fact that @bytes_read can return information about partial
* characters, the g_convert_... functions are not generally suitable
* for streaming. If the underlying converter maintains internal state,
* then this won't be preserved across successive calls to g_convert(),
@@ -612,9 +639,10 @@ g_convert (const gchar *str,
* character until it knows that the next character is not a mark that
* could combine with the base character.)
*
- * Returns: If the conversion was successful, a newly allocated
- * nul-terminated string, which must be freed with
- * g_free(). Otherwise %NULL and @error will be set.
+ * Returns: (array length=bytes_written) (element-type guint8) (transfer full):
+ * If the conversion was successful, a newly allocated buffer
+ * containing the converted string, which must be freed with g_free().
+ * Otherwise %NULL and @error will be set.
**/
gchar*
g_convert_with_fallback (const gchar *str,
@@ -823,20 +851,31 @@ g_convert_with_fallback (const gchar *str,
*
*/
+/*
+ * Validate @string as UTF-8. @len can be negative if @string is
+ * nul-terminated, or a non-negative value in bytes. If @string ends in an
+ * incomplete sequence, or contains any illegal sequences or nul codepoints,
+ * %NULL will be returned and the error set to
+ * %G_CONVERT_ERROR_ILLEGAL_SEQUENCE.
+ * On success, @bytes_read and @bytes_written, if provided, will be set to
+ * the number of bytes in @string up to @len or the terminating nul byte.
+ * On error, @bytes_read will be set to the byte offset after the last valid
+ * and non-nul UTF-8 sequence in @string, and @bytes_written will be set to 0.
+ */
static gchar *
strdup_len (const gchar *string,
gssize len,
- gsize *bytes_written,
gsize *bytes_read,
- GError **error)
-
+ gsize *bytes_written,
+ GError **error)
{
gsize real_len;
+ const gchar *end_valid;
- if (!g_utf8_validate (string, len, NULL))
+ if (!g_utf8_validate (string, len, &end_valid))
{
if (bytes_read)
- *bytes_read = 0;
+ *bytes_read = end_valid - string;
if (bytes_written)
*bytes_written = 0;
@@ -844,17 +883,9 @@ strdup_len (const gchar *string,
_("Invalid byte sequence in conversion input"));
return NULL;
}
-
- if (len < 0)
- real_len = strlen (string);
- else
- {
- real_len = 0;
-
- while (real_len < len && string[real_len])
- real_len++;
- }
-
+
+ real_len = end_valid - string;
+
if (bytes_read)
*bytes_read = real_len;
if (bytes_written)
@@ -863,9 +894,83 @@ strdup_len (const gchar *string,
return g_strndup (string, real_len);
}
+typedef enum
+{
+ CONVERT_CHECK_NO_NULS_IN_INPUT = 1 << 0,
+ CONVERT_CHECK_NO_NULS_IN_OUTPUT = 1 << 1
+} ConvertCheckFlags;
+
+/*
+ * Convert from @string in the encoding identified by @from_codeset,
+ * returning a string in the encoding identifed by @to_codeset.
+ * @len can be negative if @string is nul-terminated, or a non-negative
+ * value in bytes. Flags defined in #ConvertCheckFlags can be set in @flags
+ * to check the input, the output, or both, for embedded nul bytes.
+ * On success, @bytes_read, if provided, will be set to the number of bytes
+ * in @string up to @len or the terminating nul byte, and @bytes_written, if
+ * provided, will be set to the number of output bytes written into the
+ * returned buffer, excluding the terminating nul sequence.
+ * On error, @bytes_read will be set to the byte offset after the last valid
+ * sequence in @string, and @bytes_written will be set to 0.
+ */
+static gchar *
+convert_checked (const gchar *string,
+ gssize len,
+ const gchar *to_codeset,
+ const gchar *from_codeset,
+ ConvertCheckFlags flags,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error)
+{
+ gchar *out;
+ gsize outbytes;
+
+ if ((flags & CONVERT_CHECK_NO_NULS_IN_INPUT) && len > 0)
+ {
+ const gchar *early_nul = memchr (string, '\0', len);
+ if (early_nul != NULL)
+ {
+ if (bytes_read)
+ *bytes_read = early_nul - string;
+ if (bytes_written)
+ *bytes_written = 0;
+
+ g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+ _("Embedded NUL byte in conversion input"));
+ return NULL;
+ }
+ }
+
+ out = g_convert (string, len, to_codeset, from_codeset,
+ bytes_read, &outbytes, error);
+ if (out == NULL)
+ {
+ if (bytes_written)
+ *bytes_written = 0;
+ return NULL;
+ }
+
+ if ((flags & CONVERT_CHECK_NO_NULS_IN_OUTPUT)
+ && memchr (out, '\0', outbytes) != NULL)
+ {
+ g_free (out);
+ if (bytes_written)
+ *bytes_written = 0;
+ g_set_error_literal (error, G_CONVERT_ERROR, G_CONVERT_ERROR_EMBEDDED_NUL,
+ _("Embedded NUL byte in conversion output"));
+ return NULL;
+ }
+
+ if (bytes_written)
+ *bytes_written = outbytes;
+ return out;
+}
+
/**
* g_locale_to_utf8:
- * @opsysstring: a string in the encoding of the current locale. On Windows
+ * @opsysstring: (array length=len) (element-type guint8): a string in the
+ * encoding of the current locale. On Windows
* this means the system codepage.
* @len: the length of the string, or -1 if the string is
* nul-terminated (Note that some encodings may allow nul
@@ -876,7 +981,7 @@ strdup_len (const gchar *string,
* 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 the byte offset after the last valid
* input sequence.
* @bytes_written: (out) (optional): the number of bytes stored in the output
@@ -887,9 +992,16 @@ strdup_len (const gchar *string,
* Converts a string which is in the encoding used for strings by
* the C runtime (usually the same as that used by the operating
* system) in the [current locale][setlocale] into a UTF-8 string.
+ *
+ * If the source encoding is not UTF-8 and the conversion output contains a
+ * nul character, the error %G_CONVERT_ERROR_EMBEDDED_NUL is set and the
+ * function returns %NULL.
+ * If the source encoding is UTF-8, an embedded nul character is treated with
+ * the %G_CONVERT_ERROR_ILLEGAL_SEQUENCE error for backward compatibility with
+ * earlier versions of this library. Use g_convert() to produce output that
+ * may contain embedded nul characters.
*
- * Returns: A newly-allocated buffer containing the converted string,
- * or %NULL on an error, and error will be set.
+ * Returns: (type utf8): The converted string, or %NULL on an error.
**/
gchar *
g_locale_to_utf8 (const gchar *opsysstring,
@@ -903,23 +1015,22 @@ g_locale_to_utf8 (const gchar *opsysstring,
if (g_get_charset (&charset))
return strdup_len (opsysstring, len, bytes_read, bytes_written, error);
else
- return g_convert (opsysstring, len,
- "UTF-8", charset, bytes_read, bytes_written, error);
+ return convert_checked (opsysstring, len, "UTF-8", charset,
+ CONVERT_CHECK_NO_NULS_IN_OUTPUT,
+ bytes_read, bytes_written, error);
}
/**
* g_locale_from_utf8:
* @utf8string: a UTF-8 encoded string
* @len: the length of the string, or -1 if the string is
- * nul-terminated (Note that some encodings may allow nul
- * bytes to occur inside strings. In that case, using -1
- * for the @len parameter is unsafe)
+ * nul-terminated.
* @bytes_read: (out) (optional): location to store the number of bytes in the
* input string that were successfully converted, or %NULL.
* 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 the byte offset after the last valid
* input sequence.
* @bytes_written: (out) (optional): the number of bytes stored in the output
@@ -931,9 +1042,15 @@ g_locale_to_utf8 (const gchar *opsysstring,
* the C runtime (usually the same as that used by the operating
* system) in the [current locale][setlocale]. On Windows this means
* the system codepage.
- *
- * Returns: A newly-allocated buffer containing the converted string,
- * or %NULL on an error, and error will be set.
+ *
+ * The input string shall not contain nul characters even if the @len
+ * argument is positive. A nul character found inside the string will result
+ * in error %G_CONVERT_ERROR_ILLEGAL_SEQUENCE. Use g_convert() to convert
+ * input that may contain embedded nul characters.
+ *
+ * Returns: (array length=bytes_written) (element-type guint8) (transfer full):
+ * A newly-allocated buffer containing the converted string,
+ * or %NULL on an error, and error will be set.
**/
gchar *
g_locale_from_utf8 (const gchar *utf8string,
@@ -947,8 +1064,9 @@ g_locale_from_utf8 (const gchar *utf8string,
if (g_get_charset (&charset))
return strdup_len (utf8string, len, bytes_read, bytes_written, error);
else
- return g_convert (utf8string, len,
- charset, "UTF-8", bytes_read, bytes_written, error);
+ return convert_checked (utf8string, len, charset, "UTF-8",
+ CONVERT_CHECK_NO_NULS_IN_INPUT,
+ bytes_read, bytes_written, error);
}
#ifndef G_PLATFORM_WIN32
@@ -972,7 +1090,8 @@ filename_charset_cache_free (gpointer data)
/**
* g_get_filename_charsets:
- * @charsets: return location for the %NULL-terminated list of encoding names
+ * @filename_charsets: (out) (transfer none) (array zero-terminated=1):
+ * return location for the %NULL-terminated list of encoding names
*
* Determines the preferred character sets used for filenames.
* The first character set from the @charsets is the filename encoding, the
@@ -1123,7 +1242,7 @@ get_filename_charset (const gchar **filename_charset)
* 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 the byte offset after the last valid
* input sequence.
* @bytes_written: (out) (optional): the number of bytes stored in the output
@@ -1135,8 +1254,16 @@ get_filename_charset (const gchar **filename_charset)
* filenames into a UTF-8 string. Note that on Windows GLib uses UTF-8
* for filenames; on other platforms, this function indirectly depends on
* the [current locale][setlocale].
+ *
+ * The input string shall not contain nul characters even if the @len
+ * argument is positive. A nul character found inside the string will result
+ * in error %G_CONVERT_ERROR_ILLEGAL_SEQUENCE.
+ * If the source encoding is not UTF-8 and the conversion output contains a
+ * nul character, the error %G_CONVERT_ERROR_EMBEDDED_NUL is set and the
+ * function returns %NULL. Use g_convert() to produce output that
+ * may contain embedded nul characters.
*
- * Returns: The converted string, or %NULL on an error.
+ * Returns: (type utf8): The converted string, or %NULL on an error.
**/
gchar*
g_filename_to_utf8 (const gchar *opsysstring,
@@ -1152,13 +1279,15 @@ g_filename_to_utf8 (const gchar *opsysstring,
if (get_filename_charset (&charset))
return strdup_len (opsysstring, len, bytes_read, bytes_written, error);
else
- return g_convert (opsysstring, len,
- "UTF-8", charset, bytes_read, bytes_written, error);
+ return convert_checked (opsysstring, len, "UTF-8", charset,
+ CONVERT_CHECK_NO_NULS_IN_INPUT |
+ CONVERT_CHECK_NO_NULS_IN_OUTPUT,
+ bytes_read, bytes_written, error);
}
/**
* g_filename_from_utf8:
- * @utf8string: a UTF-8 encoded string.
+ * @utf8string: (type utf8): a UTF-8 encoded string.
* @len: the length of the string, or -1 if the string is
* nul-terminated.
* @bytes_read: (out) (optional): location to store the number of bytes in
@@ -1166,11 +1295,11 @@ g_filename_to_utf8 (const gchar *opsysstring,
* 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 the byte offset after the last valid
* input sequence.
- * @bytes_written: (out): the number of bytes stored in the output buffer (not
- * including the terminating nul).
+ * @bytes_written: (out) (optional): the number of bytes stored in
+ * the output buffer (not including the terminating nul).
* @error: location to store the error occurring, or %NULL to ignore
* errors. Any of the errors in #GConvertError may occur.
*
@@ -1178,8 +1307,14 @@ g_filename_to_utf8 (const gchar *opsysstring,
* filenames. Note that on Windows GLib uses UTF-8 for filenames;
* on other platforms, this function indirectly depends on the
* [current locale][setlocale].
- *
- * Returns: (array length=bytes_written) (element-type guint8) (transfer full):
+ *
+ * The input string shall not contain nul characters even if the @len
+ * argument is positive. A nul character found inside the string will result
+ * in error %G_CONVERT_ERROR_ILLEGAL_SEQUENCE. If the filename encoding is
+ * not UTF-8 and the conversion output contains a nul character, the error
+ * %G_CONVERT_ERROR_EMBEDDED_NUL is set and the function returns %NULL.
+ *
+ * Returns: (type filename):
* The converted string, or %NULL on an error.
**/
gchar*
@@ -1194,8 +1329,10 @@ g_filename_from_utf8 (const gchar *utf8string,
if (get_filename_charset (&charset))
return strdup_len (utf8string, len, bytes_read, bytes_written, error);
else
- return g_convert (utf8string, len,
- charset, "UTF-8", bytes_read, bytes_written, error);
+ return convert_checked (utf8string, len, charset, "UTF-8",
+ CONVERT_CHECK_NO_NULS_IN_INPUT |
+ CONVERT_CHECK_NO_NULS_IN_OUTPUT,
+ bytes_read, bytes_written, error);
}
/* Test of haystack has the needle prefix, comparing case
diff --git a/glib/gconvert.h b/glib/gconvert.h
index f064e4188..d0d372150 100644
--- a/glib/gconvert.h
+++ b/glib/gconvert.h
@@ -37,12 +37,17 @@ G_BEGIN_DECLS
* GConvertError:
* @G_CONVERT_ERROR_NO_CONVERSION: Conversion between the requested character
* sets is not supported.
- * @G_CONVERT_ERROR_ILLEGAL_SEQUENCE: Invalid byte sequence in conversion input.
+ * @G_CONVERT_ERROR_ILLEGAL_SEQUENCE: Invalid byte sequence in conversion input;
+ * or the character sequence could not be represented in the target
+ * character set.
* @G_CONVERT_ERROR_FAILED: Conversion failed for some reason.
* @G_CONVERT_ERROR_PARTIAL_INPUT: Partial character sequence at end of input.
* @G_CONVERT_ERROR_BAD_URI: URI is invalid.
* @G_CONVERT_ERROR_NOT_ABSOLUTE_PATH: Pathname is not an absolute path.
* @G_CONVERT_ERROR_NO_MEMORY: No memory available. Since: 2.40
+ * @G_CONVERT_ERROR_EMBEDDED_NUL: An embedded NUL character is present in
+ * conversion output where a NUL-terminated string is expected.
+ * Since: 2.56
*
* Error codes returned by character set conversion routines.
*/
@@ -54,7 +59,8 @@ typedef enum
G_CONVERT_ERROR_PARTIAL_INPUT,
G_CONVERT_ERROR_BAD_URI,
G_CONVERT_ERROR_NOT_ABSOLUTE_PATH,
- G_CONVERT_ERROR_NO_MEMORY
+ G_CONVERT_ERROR_NO_MEMORY,
+ G_CONVERT_ERROR_EMBEDDED_NUL
} GConvertError;
/**
diff --git a/glib/gdataset.c b/glib/gdataset.c
index cc4397ca5..d7634099d 100644
--- a/glib/gdataset.c
+++ b/glib/gdataset.c
@@ -900,7 +900,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 registred destroy notify for it (passed out in @old_destroy).
+ * the registered destroy notify for it (passed out in @old_destroy).
* Its up to the caller to free this as he wishes, which may
* or may not include using @old_destroy as sometimes replacement
* should not destroy the object in the normal way.
diff --git a/glib/gdatetime.c b/glib/gdatetime.c
index 88af308e9..4bb13d1da 100644
--- a/glib/gdatetime.c
+++ b/glib/gdatetime.c
@@ -928,7 +928,7 @@ static gboolean
get_iso8601_seconds (const gchar *text, gsize length, gdouble *value)
{
gint i;
- gdouble multiplier = 0.1, v = 0;
+ gdouble divisor = 1, v = 0;
if (length < 2)
return FALSE;
@@ -952,11 +952,11 @@ get_iso8601_seconds (const gchar *text, gsize length, gdouble *value)
const gchar c = text[i];
if (c < '0' || c > '9')
return FALSE;
- v += (c - '0') * multiplier;
- multiplier *= 0.1;
+ v = v * 10 + (c - '0');
+ divisor *= 10;
}
- *value = v;
+ *value = v / divisor;
return TRUE;
}
@@ -1294,7 +1294,11 @@ g_date_time_new (GTimeZone *tz,
{
GDateTime *datetime;
gint64 full_time;
- gint64 usec;
+ /* keep these variables as volatile. We do not want them ending up in
+ * registers - them doing so may cause us to hit precision problems on i386.
+ * See: https://bugzilla.gnome.org/show_bug.cgi?id=792410 */
+ volatile gint64 usec;
+ volatile gdouble usecd;
g_return_val_if_fail (tz != NULL, NULL);
@@ -1328,7 +1332,8 @@ g_date_time_new (GTimeZone *tz,
* FP numbers work.
* See https://bugzilla.gnome.org/show_bug.cgi?id=697715. */
usec = seconds * USEC_PER_SECOND;
- if ((usec + 1) * 1e-6 <= seconds) {
+ usecd = (usec + 1) * 1e-6;
+ if (usecd <= seconds) {
usec++;
}
diff --git a/glib/genviron.c b/glib/genviron.c
index 70cbce931..9c8151c20 100644
--- a/glib/genviron.c
+++ b/glib/genviron.c
@@ -665,7 +665,7 @@ g_setenv_utf8 (const gchar *variable,
void
g_unsetenv_utf8 (const gchar *variable)
{
- return g_unsetenv (variable);
+ g_unsetenv (variable);
}
#endif
diff --git a/glib/gfileutils.h b/glib/gfileutils.h
index 4b4b1f952..b24651e3e 100644
--- a/glib/gfileutils.h
+++ b/glib/gfileutils.h
@@ -23,6 +23,7 @@
#error "Only <glib.h> can be included directly."
#endif
+#include <glibconfig.h>
#include <glib/gerror.h>
G_BEGIN_DECLS
@@ -145,19 +146,11 @@ gint g_mkdir_with_parents (const gchar *pathname,
* the search path separator is the semicolon. Note that also the
* (forward) slash works as directory separator.
*/
-#define G_DIR_SEPARATOR '\\'
-#define G_DIR_SEPARATOR_S "\\"
#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
-#define G_SEARCHPATH_SEPARATOR ';'
-#define G_SEARCHPATH_SEPARATOR_S ";"
#else /* !G_OS_WIN32 */
-#define G_DIR_SEPARATOR '/'
-#define G_DIR_SEPARATOR_S "/"
#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
-#define G_SEARCHPATH_SEPARATOR ':'
-#define G_SEARCHPATH_SEPARATOR_S ":"
#endif /* !G_OS_WIN32 */
diff --git a/glib/ghash.c b/glib/ghash.c
index d3c6c6e8c..1ddd4e9e4 100644
--- a/glib/ghash.c
+++ b/glib/ghash.c
@@ -118,7 +118,7 @@
* g_direct_hash() is also the appropriate hash function for keys
* of the form `GINT_TO_POINTER (n)` (or similar macros).
*
- * <!-- FIXME: Need more here. --> A good hash functions should produce
+ * A good hash functions should produce
* hash values that are evenly distributed over a fairly large range.
* The modulus is taken with the hash table size (a prime number) to
* find the 'bucket' to place each key into. The function should also
diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c
index 732e05b08..ae3bbbc1d 100644
--- a/glib/gkeyfile.c
+++ b/glib/gkeyfile.c
@@ -789,7 +789,7 @@ find_file_in_data_dirs (const gchar *file,
"found in search dirs"));
}
- if (output_file != NULL && fd > 0)
+ if (output_file != NULL && fd != -1)
*output_file = g_strdup (path);
g_free (path);
@@ -2263,6 +2263,71 @@ g_key_file_get_locale_string (GKeyFile *key_file,
}
/**
+ * g_key_file_get_locale_for_key:
+ * @key_file: a #GKeyFile
+ * @group_name: a group name
+ * @key: a key
+ * @locale: (nullable): a locale identifier or %NULL
+ *
+ * Returns the actual locale which the result of
+ * g_key_file_get_locale_string() or g_key_file_get_locale_string_list()
+ * came from.
+ *
+ * If calling g_key_file_get_locale_string() or
+ * g_key_file_get_locale_string_list() with exactly the same @key_file,
+ * @group_name, @key and @locale, the result of those functions will
+ * have originally been tagged with the locale that is the result of
+ * this function.
+ *
+ * Returns: (nullable): the locale from the file, or %NULL if the key was not
+ * found or the entry in the file was was untranslated
+ *
+ * Since: 2.56
+ */
+gchar *
+g_key_file_get_locale_for_key (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale)
+{
+ gchar **languages_allocated = NULL;
+ const gchar * const *languages;
+ gchar *result = NULL;
+ gsize i;
+
+ g_return_val_if_fail (key_file != NULL, NULL);
+ g_return_val_if_fail (group_name != NULL, NULL);
+ g_return_val_if_fail (key != NULL, NULL);
+
+ if (locale != NULL)
+ {
+ languages_allocated = g_get_locale_variants (locale);
+ languages = (const gchar * const *) languages_allocated;
+ }
+ else
+ languages = g_get_language_names ();
+
+ for (i = 0; languages[i] != NULL; i++)
+ {
+ gchar *candidate_key, *translated_value;
+
+ candidate_key = g_strdup_printf ("%s[%s]", key, languages[i]);
+ translated_value = g_key_file_get_string (key_file, group_name, candidate_key, NULL);
+ g_free (translated_value);
+ g_free (candidate_key);
+
+ if (translated_value != NULL)
+ break;
+ }
+
+ result = g_strdup (languages[i]);
+
+ g_strfreev (languages_allocated);
+
+ return result;
+}
+
+/**
* g_key_file_get_locale_string_list:
* @key_file: a #GKeyFile
* @group_name: a group name
diff --git a/glib/gkeyfile.h b/glib/gkeyfile.h
index 7da710763..78495518d 100644
--- a/glib/gkeyfile.h
+++ b/glib/gkeyfile.h
@@ -146,6 +146,11 @@ gchar *g_key_file_get_locale_string (GKeyFile *key_file,
const gchar *key,
const gchar *locale,
GError **error) G_GNUC_MALLOC;
+GLIB_AVAILABLE_IN_2_56
+gchar *g_key_file_get_locale_for_key (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale) G_GNUC_MALLOC;
GLIB_AVAILABLE_IN_ALL
void g_key_file_set_locale_string (GKeyFile *key_file,
const gchar *group_name,
diff --git a/glib/glibconfig.h.in b/glib/glibconfig.h.in
index 076d7ac8d..fb456a972 100644
--- a/glib/glibconfig.h.in
+++ b/glib/glibconfig.h.in
@@ -204,6 +204,11 @@ typedef @g_pid_type@ GPid;
#define GLIB_SYSDEF_MSG_PEEK @g_msg_peek@
#define GLIB_SYSDEF_MSG_DONTROUTE @g_msg_dontroute@
+#define G_DIR_SEPARATOR '@g_dir_separator@'
+#define G_DIR_SEPARATOR_S "@g_dir_separator@"
+#define G_SEARCHPATH_SEPARATOR '@g_searchpath_separator@'
+#define G_SEARCHPATH_SEPARATOR_S "@g_searchpath_separator@"
+
G_END_DECLS
#endif /* __GLIBCONFIG_H__ */
diff --git a/glib/glibconfig.h.win32.in b/glib/glibconfig.h.win32.in
index d16e7c821..b8214c009 100644
--- a/glib/glibconfig.h.win32.in
+++ b/glib/glibconfig.h.win32.in
@@ -252,6 +252,11 @@ typedef void * GPid;
#define GLIB_SYSDEF_MSG_PEEK 2
#define GLIB_SYSDEF_MSG_DONTROUTE 4
+#define G_DIR_SEPARATOR '\\'
+#define G_DIR_SEPARATOR_S "\\"
+#define G_SEARCHPATH_SEPARATOR ';'
+#define G_SEARCHPATH_SEPARATOR_S ";"
+
G_END_DECLS
#endif /* GLIBCONFIG_H */
diff --git a/glib/gmain.c b/glib/gmain.c
index a30eaa71f..227168a0f 100644
--- a/glib/gmain.c
+++ b/glib/gmain.c
@@ -1118,29 +1118,6 @@ source_remove_from_context (GSource *source,
}
}
-/* See https://bugzilla.gnome.org/show_bug.cgi?id=761102 for
- * the introduction of this.
- *
- * The main optimization is to avoid waking up the main
- * context if a change is made by the current owner.
- */
-static void
-conditional_wakeup (GMainContext *context)
-{
- /* We want to signal wakeups in two cases:
- * 1 When the context is owned by another thread
- * 2 When the context owner is NULL (two subcases)
- * 2a Possible if the context has never been acquired
- * 2b Or if the context has no current owner
- *
- * At least case 2a) is necessary to ensure backwards compatibility with
- * qemu's use of GMainContext.
- * https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14
- */
- if (context->owner != G_THREAD_SELF)
- g_wakeup_signal (context->wakeup);
-}
-
static guint
g_source_attach_unlocked (GSource *source,
GMainContext *context,
@@ -1187,8 +1164,8 @@ 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)
- conditional_wakeup (context);
+ if (do_wakeup && context->owner && context->owner != G_THREAD_SELF)
+ g_wakeup_signal (context->wakeup);
return source->source_id;
}
@@ -1877,7 +1854,7 @@ g_source_set_ready_time (GSource *source,
{
/* Quite likely that we need to change the timeout on the poll */
if (!SOURCE_BLOCKED (source))
- conditional_wakeup (context);
+ g_wakeup_signal (context->wakeup);
UNLOCK_CONTEXT (context);
}
}
@@ -4353,7 +4330,7 @@ g_main_context_add_poll_unlocked (GMainContext *context,
context->poll_changed = TRUE;
/* Now wake up the main loop if it is waiting in the poll() */
- conditional_wakeup (context);
+ g_wakeup_signal (context->wakeup);
}
/**
@@ -4413,7 +4390,7 @@ g_main_context_remove_poll_unlocked (GMainContext *context,
context->poll_changed = TRUE;
/* Now wake up the main loop if it is waiting in the poll() */
- conditional_wakeup (context);
+ g_wakeup_signal (context->wakeup);
}
/**
diff --git a/glib/gmem.c b/glib/gmem.c
index 0140d4b71..c4f42c545 100644
--- a/glib/gmem.c
+++ b/glib/gmem.c
@@ -63,9 +63,14 @@ static GMemVTable glib_mem_vtable = {
*
* These functions provide support for allocating and freeing memory.
*
- * If any call to allocate memory fails, the application is terminated.
- * This also means that there is no need to check if the call succeeded.
- *
+ * If any call to allocate memory using functions g_new(), g_new0(), g_renew(),
+ * g_malloc(), g_malloc0(), g_malloc0_n(), g_realloc(), and g_realloc_n()
+ * fails, the application is terminated. This also means that there is no
+ * need to check if the call succeeded. On the other hand, g_try_...() family
+ * of functions returns %NULL on failure that can be used as a check
+ * for unsuccessful memory allocation. The application is not terminated
+ * in this case.
+ *
* It's important to match g_malloc() (and wrappers such as g_new()) with
* g_free(), g_slice_alloc() (and wrappers such as g_slice_new()) with
* g_slice_free(), plain malloc() with free(), and (if you're using C++)
diff --git a/glib/gmessages.c b/glib/gmessages.c
index 8c78568b5..cbaed5da9 100644
--- a/glib/gmessages.c
+++ b/glib/gmessages.c
@@ -1476,17 +1476,17 @@ log_level_to_color (GLogLevelFlags log_level,
return "";
if (log_level & G_LOG_LEVEL_ERROR)
- return "\033[1;31m";
+ return "\033[1;31m"; /* red */
else if (log_level & G_LOG_LEVEL_CRITICAL)
- return "\033[1;35m";
+ return "\033[1;35m"; /* magenta */
else if (log_level & G_LOG_LEVEL_WARNING)
- return "\033[1;33m";
+ return "\033[1;33m"; /* yellow */
else if (log_level & G_LOG_LEVEL_MESSAGE)
- return "\033[1;32m";
+ return "\033[1;32m"; /* green */
else if (log_level & G_LOG_LEVEL_INFO)
- return "\033[1;32m";
+ return "\033[1;32m"; /* green */
else if (log_level & G_LOG_LEVEL_DEBUG)
- return "\033[1;32m";
+ return "\033[1;32m"; /* green */
/* No color for custom log levels. */
return "";
@@ -1976,6 +1976,59 @@ g_log_structured_array (GLogLevelFlags log_level,
_g_log_abort (!(log_level & G_LOG_FLAG_RECURSION));
}
+/* Semi-private helper function to implement the g_message() (etc.) macros
+ * with support for G_GNUC_PRINTF so that @message_format can be checked
+ * with -Wformat. */
+void
+g_log_structured_standard (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *file,
+ const gchar *line,
+ const gchar *func,
+ const gchar *message_format,
+ ...)
+{
+ GLogField fields[] =
+ {
+ { "PRIORITY", log_level_to_priority (log_level), -1 },
+ { "CODE_FILE", file, -1 },
+ { "CODE_LINE", line, -1 },
+ { "CODE_FUNC", func, -1 },
+ /* Filled in later: */
+ { "MESSAGE", NULL, -1 },
+ /* If @log_domain is %NULL, we will not pass this field: */
+ { "GLIB_DOMAIN", log_domain, -1 },
+ };
+ gsize n_fields;
+ gchar *message_allocated = NULL;
+ gchar buffer[1025];
+ va_list args;
+
+ va_start (args, message_format);
+
+ if (log_level & G_LOG_FLAG_RECURSION)
+ {
+ /* we use a stack buffer of fixed size, since we're likely
+ * in an out-of-memory situation
+ */
+ gsize size G_GNUC_UNUSED;
+
+ size = _g_vsnprintf (buffer, sizeof (buffer), message_format, args);
+ fields[4].value = buffer;
+ }
+ else
+ {
+ fields[4].value = message_allocated = g_strdup_vprintf (message_format, args);
+ }
+
+ va_end (args);
+
+ n_fields = G_N_ELEMENTS (fields) - ((log_domain == NULL) ? 1 : 0);
+ g_log_structured_array (log_level, fields, n_fields);
+
+ g_free (message_allocated);
+}
+
/**
* g_log_set_writer_func:
* @func: log writer function, which must not be %NULL
@@ -2556,6 +2609,7 @@ g_log_writer_standard_streams (GLogLevelFlags log_level,
out = g_log_writer_format_fields (log_level, fields, n_fields,
g_log_writer_supports_color (fileno (stream)));
_g_fprintf (stream, "%s\n", out);
+ fflush (stream);
g_free (out);
return G_LOG_WRITER_HANDLED;
diff --git a/glib/gmessages.h b/glib/gmessages.h
index 1815186c0..cebdc1659 100644
--- a/glib/gmessages.h
+++ b/glib/gmessages.h
@@ -282,6 +282,14 @@ void g_assert_warning (const char *log_domain,
const char *pretty_function,
const char *expression) G_GNUC_NORETURN;
+GLIB_AVAILABLE_IN_2_56
+void g_log_structured_standard (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *file,
+ const gchar *line,
+ const gchar *func,
+ const gchar *message_format,
+ ...) G_GNUC_PRINTF (6, 7);
#ifndef G_LOG_DOMAIN
#define G_LOG_DOMAIN ((gchar*) 0)
@@ -290,38 +298,26 @@ void g_assert_warning (const char *log_domain,
#if defined(G_HAVE_ISO_VARARGS) && !G_ANALYZER_ANALYZING
#ifdef G_LOG_USE_STRUCTURED
#define g_error(...) G_STMT_START { \
- g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", __VA_ARGS__); \
+ g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, __VA_ARGS__); \
for (;;) ; \
} G_STMT_END
-#define g_message(...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", __VA_ARGS__)
-#define g_critical(...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", __VA_ARGS__)
-#define g_warning(...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", __VA_ARGS__)
-#define g_info(...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", __VA_ARGS__)
-#define g_debug(...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", __VA_ARGS__)
+#define g_message(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, __VA_ARGS__)
+#define g_critical(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, __VA_ARGS__)
+#define g_warning(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, __VA_ARGS__)
+#define g_info(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, __VA_ARGS__)
+#define g_debug(...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, __VA_ARGS__)
#else
/* for(;;) ; so that GCC knows that control doesn't go past g_error().
* Put space before ending semicolon to avoid C++ build warnings.
@@ -351,38 +347,26 @@ void g_assert_warning (const char *log_domain,
#elif defined(G_HAVE_GNUC_VARARGS) && !G_ANALYZER_ANALYZING
#ifdef G_LOG_USE_STRUCTURED
#define g_error(format...) G_STMT_START { \
- g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", format); \
+ g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, format); \
for (;;) ; \
} G_STMT_END
-#define g_message(format...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", format)
-#define g_critical(format...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", format)
-#define g_warning(format...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", format)
-#define g_info(format...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", format)
-#define g_debug(format...) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
- "CODE_FILE", __FILE__, \
- "CODE_LINE", G_STRINGIFY (__LINE__), \
- "CODE_FUNC", G_STRFUNC, \
- "MESSAGE", format)
+#define g_message(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, format)
+#define g_critical(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, format)
+#define g_warning(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, format)
+#define g_info(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, format)
+#define g_debug(format...) g_log_structured_standard (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, \
+ __FILE__, G_STRINGIFY (__LINE__), \
+ G_STRFUNC, format)
#else
#define g_error(format...) G_STMT_START { \
g_log (G_LOG_DOMAIN, \
diff --git a/glib/gsequence.c b/glib/gsequence.c
index 2dac88a94..a59ff5bf2 100644
--- a/glib/gsequence.c
+++ b/glib/gsequence.c
@@ -61,6 +61,12 @@
* g_sequence_move_range() will not invalidate the iterators pointing
* to it. The only operation that will invalidate an iterator is when
* the element it points to is removed from any sequence.
+ *
+ * To sort the data, either use g_sequence_insert_sorted() or
+ * g_sequence_insert_sorted_iter() to add data to the #GSequence or, if
+ * you want to add a large amount of data, it is more efficient to call
+ * g_sequence_sort() or g_sequence_sort_iter() after doing unsorted
+ * insertions.
*/
/**
@@ -175,10 +181,11 @@ get_sequence (GSequenceNode *node)
return (GSequence *)node_get_last (node)->data;
}
-static void
-check_iter_access (GSequenceIter *iter)
+static gboolean
+seq_is_end (GSequence *seq,
+ GSequenceIter *iter)
{
- check_seq_access (get_sequence (iter));
+ return seq->end_node == iter;
}
static gboolean
@@ -412,13 +419,17 @@ g_sequence_iter_compare (GSequenceIter *a,
GSequenceIter *b)
{
gint a_pos, b_pos;
+ GSequence *seq_a, *seq_b;
g_return_val_if_fail (a != NULL, 0);
g_return_val_if_fail (b != NULL, 0);
- g_return_val_if_fail (get_sequence (a) == get_sequence (b), 0);
- check_iter_access (a);
- check_iter_access (b);
+ seq_a = get_sequence (a);
+ seq_b = get_sequence (b);
+ g_return_val_if_fail (seq_a == seq_b, 0);
+
+ check_seq_access (seq_a);
+ check_seq_access (seq_b);
a_pos = node_get_pos (a);
b_pos = node_get_pos (b);
@@ -502,11 +513,13 @@ GSequenceIter *
g_sequence_insert_before (GSequenceIter *iter,
gpointer data)
{
+ GSequence *seq;
GSequenceNode *node;
g_return_val_if_fail (iter != NULL, NULL);
- check_iter_access (iter);
+ seq = get_sequence (iter);
+ check_seq_access (seq);
node = node_new (data);
@@ -533,11 +546,11 @@ g_sequence_remove (GSequenceIter *iter)
GSequence *seq;
g_return_if_fail (iter != NULL);
- g_return_if_fail (!is_end (iter));
-
- check_iter_access (iter);
seq = get_sequence (iter);
+ g_return_if_fail (!seq_is_end (seq, iter));
+
+ check_seq_access (seq);
node_unlink (iter);
node_free (iter, seq);
@@ -559,10 +572,12 @@ void
g_sequence_remove_range (GSequenceIter *begin,
GSequenceIter *end)
{
- g_return_if_fail (get_sequence (begin) == get_sequence (end));
+ GSequence *seq_begin, *seq_end;
- check_iter_access (begin);
- check_iter_access (end);
+ seq_begin = get_sequence (begin);
+ seq_end = get_sequence (end);
+ g_return_if_fail (seq_begin == seq_end);
+ /* check_seq_access() calls are done by g_sequence_move_range() */
g_sequence_move_range (NULL, begin, end);
}
@@ -589,20 +604,25 @@ g_sequence_move_range (GSequenceIter *dest,
GSequenceIter *begin,
GSequenceIter *end)
{
- GSequence *src_seq;
+ GSequence *src_seq, *end_seq, *dest_seq;
GSequenceNode *first;
g_return_if_fail (begin != NULL);
g_return_if_fail (end != NULL);
- check_iter_access (begin);
- check_iter_access (end);
- if (dest)
- check_iter_access (dest);
-
src_seq = get_sequence (begin);
+ check_seq_access (src_seq);
+
+ end_seq = get_sequence (end);
+ check_seq_access (end_seq);
+
+ if (dest)
+ {
+ dest_seq = get_sequence (dest);
+ check_seq_access (dest_seq);
+ }
- g_return_if_fail (src_seq == get_sequence (end));
+ g_return_if_fail (src_seq == end_seq);
/* Dest points to begin or end? */
if (dest == begin || dest == end)
@@ -613,15 +633,13 @@ g_sequence_move_range (GSequenceIter *dest,
return;
/* dest points somewhere in the (begin, end) range? */
- if (dest && get_sequence (dest) == src_seq &&
+ if (dest && dest_seq == src_seq &&
g_sequence_iter_compare (dest, begin) > 0 &&
g_sequence_iter_compare (dest, end) < 0)
{
return;
}
- src_seq = get_sequence (begin);
-
first = node_get_first (begin);
node_cut (begin);
@@ -695,6 +713,10 @@ g_sequence_sort (GSequence *seq,
* if the first item comes before the second, and a positive value
* if the second item comes before the first.
*
+ * Note that when adding a large amount of data to a #GSequence,
+ * it is more efficient to do unsorted insertions and then call
+ * g_sequence_sort() or g_sequence_sort_iter().
+ *
* Returns: (transfer none): a #GSequenceIter pointing to the new item.
*
* Since: 2.14
@@ -741,14 +763,18 @@ g_sequence_sort_changed (GSequenceIter *iter,
GCompareDataFunc cmp_func,
gpointer cmp_data)
{
+ GSequence *seq;
SortInfo info;
- g_return_if_fail (!is_end (iter));
+ g_return_if_fail (iter != NULL);
+
+ seq = get_sequence (iter);
+ /* check_seq_access() call is done by g_sequence_sort_changed_iter() */
+ g_return_if_fail (!seq_is_end (seq, iter));
info.cmp_func = cmp_func;
info.cmp_data = cmp_data;
- info.end_node = get_sequence (iter)->end_node;
- check_iter_access (iter);
+ info.end_node = seq->end_node;
g_sequence_sort_changed_iter (iter, iter_compare, &info);
}
@@ -772,10 +798,7 @@ g_sequence_sort_changed (GSequenceIter *iter,
* consider using g_sequence_lookup().
*
* This function will fail if the data contained in the sequence is
- * unsorted. Use g_sequence_insert_sorted() or
- * g_sequence_insert_sorted_iter() to add data to your sequence or, if
- * you want to add a large amount of data, call g_sequence_sort() after
- * doing unsorted insertions.
+ * unsorted.
*
* Returns: (transfer none): an #GSequenceIter pointing to the position where @data
* would have been inserted according to @cmp_func and @cmp_data
@@ -819,10 +842,7 @@ g_sequence_search (GSequence *seq,
* the second item comes before the first.
*
* This function will fail if the data contained in the sequence is
- * unsorted. Use g_sequence_insert_sorted() or
- * g_sequence_insert_sorted_iter() to add data to your sequence or, if
- * you want to add a large amount of data, call g_sequence_sort() after
- * doing unsorted insertions.
+ * unsorted.
*
* Returns: (transfer none) (nullable): an #GSequenceIter pointing to the position of the
* first item found equal to @data according to @cmp_func and
@@ -928,9 +948,12 @@ g_sequence_sort_changed_iter (GSequenceIter *iter,
GSequenceIter *next, *prev;
g_return_if_fail (iter != NULL);
- g_return_if_fail (!is_end (iter));
g_return_if_fail (iter_cmp != NULL);
- check_iter_access (iter);
+
+ seq = get_sequence (iter);
+ g_return_if_fail (!seq_is_end (seq, iter));
+
+ check_seq_access (seq);
/* If one of the neighbours is equal to iter, then
* don't move it. This ensures that sort_changed() is
@@ -946,8 +969,6 @@ g_sequence_sort_changed_iter (GSequenceIter *iter,
if (!is_end (next) && iter_cmp (next, iter, cmp_data) == 0)
return;
- seq = get_sequence (iter);
-
seq->access_prohibited = TRUE;
tmp_seq = g_sequence_new (NULL);
@@ -985,6 +1006,10 @@ g_sequence_sort_changed_iter (GSequenceIter *iter,
* first iterator comes before the second, and a positive value
* if the second iterator comes before the first.
*
+ * Note that when adding a large amount of data to a #GSequence,
+ * it is more efficient to do unsorted insertions and then call
+ * g_sequence_sort() or g_sequence_sort_iter().
+ *
* Returns: (transfer none): a #GSequenceIter pointing to the new item
*
* Since: 2.14
@@ -1051,10 +1076,7 @@ g_sequence_insert_sorted_iter (GSequence *seq,
* consider using g_sequence_lookup_iter().
*
* This function will fail if the data contained in the sequence is
- * unsorted. Use g_sequence_insert_sorted() or
- * g_sequence_insert_sorted_iter() to add data to your sequence or, if
- * you want to add a large amount of data, call g_sequence_sort() after
- * doing unsorted insertions.
+ * unsorted.
*
* Returns: (transfer none): a #GSequenceIter pointing to the position in @seq
* where @data would have been inserted according to @iter_cmp
@@ -1109,10 +1131,7 @@ g_sequence_search_iter (GSequence *seq,
* value if the second iterator comes before the first.
*
* This function will fail if the data contained in the sequence is
- * unsorted. Use g_sequence_insert_sorted() or
- * g_sequence_insert_sorted_iter() to add data to your sequence or, if
- * you want to add a large amount of data, call g_sequence_sort() after
- * doing unsorted insertions.
+ * unsorted.
*
* Returns: (transfer none) (nullable): an #GSequenceIter pointing to the position of
* the first item found equal to @data according to @cmp_func
@@ -1213,9 +1232,9 @@ g_sequence_set (GSequenceIter *iter,
GSequence *seq;
g_return_if_fail (iter != NULL);
- g_return_if_fail (!is_end (iter));
seq = get_sequence (iter);
+ g_return_if_fail (!seq_is_end (seq, iter));
/* If @data is identical to iter->data, it is destroyed
* here. This will work right in case of ref-counted objects. Also
diff --git a/glib/gspawn.c b/glib/gspawn.c
index 512257050..89824d176 100644
--- a/glib/gspawn.c
+++ b/glib/gspawn.c
@@ -616,7 +616,7 @@ g_spawn_sync (const gchar *working_directory,
* standard error. If you use this flag, @standard_error must be %NULL.
* %G_SPAWN_CHILD_INHERITS_STDIN means that the child will inherit the parent's
* standard input (by default, the child's standard input is attached to
- * /dev/null). If you use this flag, @standard_input must be %NULL.
+ * `/dev/null`). If you use this flag, @standard_input must be %NULL.
* %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()
@@ -653,8 +653,8 @@ g_spawn_sync (const gchar *working_directory,
* when they are no longer in use. If these parameters are %NULL, the
* corresponding pipe won't be created.
*
- * If @standard_input is NULL, the child's standard input is attached to
- * /dev/null unless %G_SPAWN_CHILD_INHERITS_STDIN is set.
+ * If @standard_input is %NULL, the child's standard input is attached to
+ * `/dev/null` unless %G_SPAWN_CHILD_INHERITS_STDIN is set.
*
* If @standard_error is NULL, the child's standard error goes to the same
* location as the parent's standard error unless %G_SPAWN_STDERR_TO_DEV_NULL
diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c
index 364c9eb24..5fff51477 100644
--- a/glib/gthread-posix.c
+++ b/glib/gthread-posix.c
@@ -105,7 +105,7 @@ g_mutex_impl_new (void)
if G_UNLIKELY ((status = pthread_mutex_init (mutex, pattr)) != 0)
g_thread_abort (status, "pthread_mutex_init");
-#ifdef PTHREAD_ADAPTIVE_MUTEX_NP
+#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_destroy (&attr);
#endif
diff --git a/glib/gutf8.c b/glib/gutf8.c
index ace4ee5a4..a0fb16370 100644
--- a/glib/gutf8.c
+++ b/glib/gutf8.c
@@ -421,6 +421,9 @@ g_utf8_pointer_to_offset (const gchar *str,
* must be valid UTF-8 encoded text. (Use g_utf8_validate() on all
* text before trying to use UTF-8 utility functions with it.)
*
+ * Note you must ensure @dest is at least 4 * @n to fit the
+ * largest possible UTF-8 characters
+ *
* Returns: @dest
*/
gchar *
diff --git a/glib/gvariant.c b/glib/gvariant.c
index ad1ea1613..8be9ce798 100644
--- a/glib/gvariant.c
+++ b/glib/gvariant.c
@@ -5282,7 +5282,7 @@ g_variant_valist_get (const gchar **str,
* GVariant *new_variant;
*
* new_variant = g_variant_new ("(t^as)",
- * /<!-- -->* This cast is required. *<!-- -->/
+ * // This cast is required.
* (guint64) some_flags,
* some_strings);
* ]|
diff --git a/glib/tests/bytes.c b/glib/tests/bytes.c
index a436eaebf..5ea5c2b35 100644
--- a/glib/tests/bytes.c
+++ b/glib/tests/bytes.c
@@ -17,6 +17,16 @@
#include <string.h>
#include "glib.h"
+/* Keep in sync with glib/gbytes.c */
+struct _GBytes
+{
+ gconstpointer data;
+ gsize size;
+ gint ref_count;
+ GDestroyNotify free_func;
+ gpointer user_data;
+};
+
static const gchar *NYAN = "nyannyan";
static const gsize N_NYAN = 8;
@@ -90,6 +100,59 @@ test_new_from_bytes (void)
g_bytes_unref (sub);
}
+/* Verify that creating slices of GBytes reference the top-most bytes
+ * at the correct offset. Ensure that intermediate GBytes are not referenced.
+ */
+static void
+test_new_from_bytes_slice (void)
+{
+ GBytes *bytes = g_bytes_new_static ("Some stupid data", strlen ("Some stupid data") + 1);
+ GBytes *bytes1 = g_bytes_new_from_bytes (bytes, 4, 13);
+ GBytes *bytes2 = g_bytes_new_from_bytes (bytes1, 1, 12);
+ GBytes *bytes3 = g_bytes_new_from_bytes (bytes2, 0, 6);
+
+ g_assert_cmpint (bytes->ref_count, ==, 4);
+ g_assert_cmpint (bytes1->ref_count, ==, 1);
+ g_assert_cmpint (bytes2->ref_count, ==, 1);
+ g_assert_cmpint (bytes3->ref_count, ==, 1);
+
+ g_assert_null (bytes->user_data);
+ g_assert (bytes1->user_data == bytes);
+ g_assert (bytes2->user_data == bytes);
+ g_assert (bytes3->user_data == bytes);
+
+ g_assert_cmpint (17, ==, g_bytes_get_size (bytes));
+ g_assert_cmpint (13, ==, g_bytes_get_size (bytes1));
+ g_assert_cmpint (12, ==, g_bytes_get_size (bytes2));
+ g_assert_cmpint (6, ==, g_bytes_get_size (bytes3));
+
+ g_assert_cmpint (0, ==, strncmp ("Some stupid data", (gchar *)bytes->data, 17));
+ g_assert_cmpint (0, ==, strncmp (" stupid data", (gchar *)bytes1->data, 13));
+ g_assert_cmpint (0, ==, strncmp ("stupid data", (gchar *)bytes2->data, 12));
+ g_assert_cmpint (0, ==, strncmp ("stupid", (gchar *)bytes3->data, 6));
+
+ g_bytes_unref (bytes);
+ g_bytes_unref (bytes1);
+ g_bytes_unref (bytes2);
+ g_bytes_unref (bytes3);
+}
+
+/* Ensure that referencing an entire GBytes just returns the same bytes
+ * instance (with incremented reference count) instead of a new instance.
+ */
+static void
+test_new_from_bytes_shared_ref (void)
+{
+ GBytes *bytes = g_bytes_new_static ("Some data", strlen ("Some data") + 1);
+ GBytes *other = g_bytes_new_from_bytes (bytes, 0, g_bytes_get_size (bytes));
+
+ g_assert (bytes == other);
+ g_assert_cmpint (bytes->ref_count, ==, 2);
+
+ g_bytes_unref (bytes);
+ g_bytes_unref (other);
+}
+
static void
on_destroy_increment (gpointer data)
{
@@ -336,6 +399,8 @@ main (int argc, char *argv[])
g_test_add_func ("/bytes/new-static", test_new_static);
g_test_add_func ("/bytes/new-with-free-func", test_new_with_free_func);
g_test_add_func ("/bytes/new-from-bytes", test_new_from_bytes);
+ g_test_add_func ("/bytes/new-from-bytes-slice", test_new_from_bytes_slice);
+ g_test_add_func ("/bytes/new-from-bytes-shared-ref", test_new_from_bytes_shared_ref);
g_test_add_func ("/bytes/hash", test_hash);
g_test_add_func ("/bytes/equal", test_equal);
g_test_add_func ("/bytes/compare", test_compare);
diff --git a/glib/tests/convert.c b/glib/tests/convert.c
index 5f13a2d2b..03c0d7209 100644
--- a/glib/tests/convert.c
+++ b/glib/tests/convert.c
@@ -25,6 +25,7 @@
#undef G_DISABLE_ASSERT
#undef G_LOG_DOMAIN
+#include <locale.h>
#include <string.h>
#include <glib.h>
@@ -53,17 +54,19 @@ test_iconv_state (void)
g_free (out);
}
-/* some tests involving "vulgar fraction one half" */
+/* Some tests involving "vulgar fraction one half" (U+00BD). This is
+ * represented in UTF-8 as \xC2\xBD, in ISO-8859-1 as \xBD, and is not
+ * represented in ISO-8859-15. */
static void
test_one_half (void)
{
- gchar *in = "\xc2\xbd";
+ const gchar *in_utf8 = "\xc2\xbd";
gchar *out;
gsize bytes_read = 0;
gsize bytes_written = 0;
GError *error = NULL;
- out = g_convert (in, -1,
+ out = g_convert (in_utf8, -1,
"ISO-8859-1", "UTF-8",
&bytes_read, &bytes_written,
&error);
@@ -74,7 +77,7 @@ test_one_half (void)
g_assert_cmpstr (out, ==, "\xbd");
g_free (out);
- out = g_convert (in, -1,
+ out = g_convert (in_utf8, -1,
"ISO-8859-15", "UTF-8",
&bytes_read, &bytes_written,
&error);
@@ -86,7 +89,7 @@ test_one_half (void)
g_clear_error (&error);
g_free (out);
- out = g_convert_with_fallback (in, -1,
+ out = g_convert_with_fallback (in_utf8, -1,
"ISO8859-15", "UTF-8",
"a",
&bytes_read, &bytes_written,
@@ -683,6 +686,230 @@ test_filename_display (void)
g_free (display);
}
+/* g_convert() should accept and produce text buffers with embedded
+ * nul bytes/characters.
+ */
+static void
+test_convert_embedded_nul (void)
+{
+ gchar *res;
+ gsize bytes_read, bytes_written;
+ GError *error = NULL;
+
+ res = g_convert ("ab\0\xf6", 4, "UTF-8", "ISO-8859-1",
+ &bytes_read, &bytes_written, &error);
+ g_assert_no_error (error);
+ g_assert_cmpuint (bytes_read, ==, 4);
+ g_assert_cmpmem (res, bytes_written, "ab\0\xc3\xb6", 5);
+ g_free (res);
+}
+
+static void
+test_locale_to_utf8_embedded_nul (void)
+{
+ g_test_trap_subprocess ("/conversion/locale-to-utf8/embedded-nul/subprocess/utf8", 0, 0);
+ g_test_trap_assert_passed ();
+ g_test_trap_subprocess ("/conversion/locale-to-utf8/embedded-nul/subprocess/iconv", 0, 0);
+ g_test_trap_assert_passed ();
+}
+
+/* Test that embedded nul characters in UTF-8 input to g_locale_to_utf8()
+ * result in an error.
+ */
+static void
+test_locale_to_utf8_embedded_nul_utf8 (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ setlocale (LC_ALL, "");
+ g_setenv ("CHARSET", "UTF-8", TRUE);
+ g_assert_true (g_get_charset (NULL));
+
+ res = g_locale_to_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
+/* Test that embedded nul characters in output of g_locale_to_utf8(),
+ * when converted from non-UTF8 input, result in an error.
+ */
+static void
+test_locale_to_utf8_embedded_nul_iconv (void)
+{
+ gchar *res;
+ GError *error = NULL;
+
+ setlocale (LC_ALL, "C");
+ g_setenv ("CHARSET", "US-ASCII", TRUE);
+ g_assert_false (g_get_charset (NULL));
+
+ res = g_locale_to_utf8 ("ab\0c", 4, NULL, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_EMBEDDED_NUL);
+ g_error_free (error);
+}
+
+static void
+test_locale_from_utf8_embedded_nul (void)
+{
+ g_test_trap_subprocess ("/conversion/locale-from-utf8/embedded-nul/subprocess/utf8", 0, 0);
+ g_test_trap_assert_passed ();
+ g_test_trap_subprocess ("/conversion/locale-from-utf8/embedded-nul/subprocess/iconv", 0, 0);
+ g_test_trap_assert_passed ();
+}
+
+/* Test that embedded nul characters in input to g_locale_from_utf8(),
+ * when converting (copying) to UTF-8 output, result in an error.
+ */
+static void
+test_locale_from_utf8_embedded_nul_utf8 (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ setlocale (LC_ALL, "");
+ g_setenv ("CHARSET", "UTF-8", TRUE);
+ g_assert_true (g_get_charset (NULL));
+
+ res = g_locale_from_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
+/* Test that embedded nul characters in input to g_locale_from_utf8(),
+ * when converting to non-UTF-8 output, result in an error.
+ */
+static void
+test_locale_from_utf8_embedded_nul_iconv (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ setlocale (LC_ALL, "C");
+ g_setenv ("CHARSET", "US-ASCII", TRUE);
+ g_assert_false (g_get_charset (NULL));
+
+ res = g_locale_from_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
+static void
+test_filename_to_utf8_embedded_nul (void)
+{
+ g_test_trap_subprocess ("/conversion/filename-to-utf8/embedded-nul/subprocess/utf8", 0, 0);
+ g_test_trap_assert_passed ();
+ g_test_trap_subprocess ("/conversion/filename-to-utf8/embedded-nul/subprocess/iconv", 0, 0);
+ g_test_trap_assert_passed ();
+}
+
+/* Test that embedded nul characters in UTF-8 input to g_filename_to_utf8()
+ * result in an error.
+ */
+static void
+test_filename_to_utf8_embedded_nul_utf8 (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ g_setenv ("G_FILENAME_ENCODING", "UTF-8", TRUE);
+ g_assert_true (g_get_filename_charsets (NULL));
+
+ res = g_filename_to_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
+/* Test that embedded nul characters in non-UTF-8 input of g_filename_to_utf8()
+ * result in an error.
+ */
+static void
+test_filename_to_utf8_embedded_nul_iconv (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ g_setenv ("G_FILENAME_ENCODING", "US-ASCII", TRUE);
+ g_assert_false (g_get_filename_charsets (NULL));
+
+ res = g_filename_to_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
+static void
+test_filename_from_utf8_embedded_nul (void)
+{
+ g_test_trap_subprocess ("/conversion/filename-from-utf8/embedded-nul/subprocess/utf8", 0, 0);
+ g_test_trap_assert_passed ();
+ g_test_trap_subprocess ("/conversion/filename-from-utf8/embedded-nul/subprocess/iconv", 0, 0);
+ g_test_trap_assert_passed ();
+}
+
+/* Test that embedded nul characters in input to g_filename_from_utf8(),
+ * when converting (copying) to UTF-8 output, result in an error.
+ */
+static void
+test_filename_from_utf8_embedded_nul_utf8 (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ g_setenv ("G_FILENAME_ENCODING", "UTF-8", TRUE);
+ g_assert_true (g_get_filename_charsets (NULL));
+
+ res = g_filename_from_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
+/* Test that embedded nul characters in input to g_filename_from_utf8(),
+ * when converting to non-UTF-8 output, result in an error.
+ */
+static void
+test_filename_from_utf8_embedded_nul_iconv (void)
+{
+ gchar *res;
+ gsize bytes_read;
+ GError *error = NULL;
+
+ g_setenv ("G_FILENAME_ENCODING", "US-ASCII", TRUE);
+ g_assert_false (g_get_filename_charsets (NULL));
+
+ res = g_filename_from_utf8 ("ab\0c", 4, &bytes_read, NULL, &error);
+
+ g_assert_null (res);
+ g_assert_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE);
+ g_assert_cmpuint (bytes_read, ==, 2);
+ g_error_free (error);
+}
+
static void
test_no_conv (void)
{
@@ -712,6 +939,19 @@ main (int argc, char *argv[])
g_test_add_func ("/conversion/unicode", test_unicode_conversions);
g_test_add_func ("/conversion/filename-utf8", test_filename_utf8);
g_test_add_func ("/conversion/filename-display", test_filename_display);
+ g_test_add_func ("/conversion/convert-embedded-nul", test_convert_embedded_nul);
+ g_test_add_func ("/conversion/locale-to-utf8/embedded-nul", test_locale_to_utf8_embedded_nul);
+ g_test_add_func ("/conversion/locale-to-utf8/embedded-nul/subprocess/utf8", test_locale_to_utf8_embedded_nul_utf8);
+ g_test_add_func ("/conversion/locale-to-utf8/embedded-nul/subprocess/iconv", test_locale_to_utf8_embedded_nul_iconv);
+ g_test_add_func ("/conversion/locale-from-utf8/embedded-nul", test_locale_from_utf8_embedded_nul);
+ g_test_add_func ("/conversion/locale-from-utf8/embedded-nul/subprocess/utf8", test_locale_from_utf8_embedded_nul_utf8);
+ g_test_add_func ("/conversion/locale-from-utf8/embedded-nul/subprocess/iconv", test_locale_from_utf8_embedded_nul_iconv);
+ g_test_add_func ("/conversion/filename-to-utf8/embedded-nul", test_filename_to_utf8_embedded_nul);
+ g_test_add_func ("/conversion/filename-to-utf8/embedded-nul/subprocess/utf8", test_filename_to_utf8_embedded_nul_utf8);
+ g_test_add_func ("/conversion/filename-to-utf8/embedded-nul/subprocess/iconv", test_filename_to_utf8_embedded_nul_iconv);
+ g_test_add_func ("/conversion/filename-from-utf8/embedded-nul", test_filename_from_utf8_embedded_nul);
+ g_test_add_func ("/conversion/filename-from-utf8/embedded-nul/subprocess/utf8", test_filename_from_utf8_embedded_nul_utf8);
+ g_test_add_func ("/conversion/filename-from-utf8/embedded-nul/subprocess/iconv", test_filename_from_utf8_embedded_nul_iconv);
return g_test_run ();
}
diff --git a/glib/tests/keyfile.c b/glib/tests/keyfile.c
index 865368b22..16f3b788b 100644
--- a/glib/tests/keyfile.c
+++ b/glib/tests/keyfile.c
@@ -68,6 +68,20 @@ check_locale_string_value (GKeyFile *keyfile,
}
static void
+check_string_locale_value (GKeyFile *keyfile,
+ const gchar *group,
+ const gchar *key,
+ const gchar *locale,
+ const gchar *expected)
+{
+ gchar *value;
+
+ value = g_key_file_get_locale_for_key (keyfile, group, key, locale);
+ g_assert_cmpstr (value, ==, expected);
+ g_free (value);
+}
+
+static void
check_string_list_value (GKeyFile *keyfile,
const gchar *group,
const gchar *key,
@@ -1686,6 +1700,32 @@ test_bytes (void)
g_key_file_free (kf);
}
+static void
+test_get_locale (void)
+{
+ GKeyFile *kf;
+
+ kf = g_key_file_new ();
+ g_key_file_load_from_data (kf,
+ "[Group]\n"
+ "x[fr_CA]=a\n"
+ "x[fr]=b\n"
+ "x=c\n",
+ -1, G_KEY_FILE_KEEP_TRANSLATIONS,
+ NULL);
+
+ check_locale_string_value (kf, "Group", "x", "fr_CA", "a");
+ check_string_locale_value (kf, "Group", "x", "fr_CA", "fr_CA");
+
+ check_locale_string_value (kf, "Group", "x", "fr_CH", "b");
+ check_string_locale_value (kf, "Group", "x", "fr_CH", "fr");
+
+ check_locale_string_value (kf, "Group", "x", "eo", "c");
+ check_string_locale_value (kf, "Group", "x", "eo", NULL);
+
+ g_key_file_free (kf);
+}
+
int
main (int argc, char *argv[])
{
@@ -1730,6 +1770,7 @@ main (int argc, char *argv[])
g_test_add_func ("/keyfile/utf8", test_utf8);
g_test_add_func ("/keyfile/roundtrip", test_roundtrip);
g_test_add_func ("/keyfile/bytes", test_bytes);
+ g_test_add_func ("/keyfile/get-locale", test_get_locale);
return g_test_run ();
}
diff --git a/gobject/gobject.c b/gobject/gobject.c
index d03d39fe2..c5bef2ecf 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -3480,7 +3480,7 @@ g_object_dup_qdata (GObject *object,
* 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
+ * It’s up to the caller to free this as needed, which may
* or may not include using @old_destroy as sometimes replacement
* should not destroy the object in the normal way.
*
@@ -3690,7 +3690,7 @@ g_object_dup_data (GObject *object,
* 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
+ * It’s up to the caller to free this as needed, which may
* or may not include using @old_destroy as sometimes replacement
* should not destroy the object in the normal way.
*
diff --git a/gobject/gtypemodule.h b/gobject/gtypemodule.h
index d989e82f6..deeadcdd3 100644
--- a/gobject/gtypemodule.h
+++ b/gobject/gtypemodule.h
@@ -93,7 +93,7 @@ struct _GTypeModuleClass
* A convenience macro for dynamic type implementations, which declares a
* class initialization function, an instance initialization function (see
* #GTypeInfo for information about these) and a static variable named
- * @t_n<!-- -->_parent_class pointing to the parent class. Furthermore,
+ * `t_n`_parent_class pointing to the parent class. Furthermore,
* it defines a `*_get_type()` and a static `*_register_type()` functions
* for use in your `module_init()`.
*
diff --git a/meson.build b/meson.build
index e35b54d64..efd1740a4 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('glib', 'c', 'cpp',
- version : '2.55.1',
+ version : '2.55.2',
meson_version : '>= 0.44.0',
default_options : [
'warning_level=1',
@@ -65,7 +65,9 @@ add_project_arguments('-D_GNU_SOURCE', language: 'c')
# Disable strict aliasing;
# see https://bugzilla.gnome.org/show_bug.cgi?id=791622
-add_project_arguments('-fno-strict-aliasing', language: 'c')
+if cc.has_argument('-fno-strict-aliasing')
+ add_project_arguments('-fno-strict-aliasing', language: 'c')
+endif
########################
# Configuration begins #
@@ -997,10 +999,14 @@ if host_system == 'windows'
else
glibconfig_conf.set_quoted('g_pollfd_format', '%#x')
endif
+ glibconfig_conf.set('g_dir_separator', '\\\\')
+ glibconfig_conf.set('g_searchpath_separator', ';')
else
glibconfig_conf.set('g_pid_type', 'int')
glibconfig_conf.set_quoted('g_pid_format', 'i')
glibconfig_conf.set_quoted('g_pollfd_format', '%d')
+ glibconfig_conf.set('g_dir_separator', '/')
+ glibconfig_conf.set('g_searchpath_separator', ':')
endif
if sizet_size == short_size
@@ -1289,7 +1295,7 @@ if host_cpu_family == 'x86' or host_cpu_family == 'x86_64' or host_cpu_family ==
elif host_cpu_family.startswith('sparc') or host_cpu_family.startswith('alpha') or host_cpu_family.startswith('powerpc') or host_cpu_family == 'ia64'
glib_memory_barrier_needed = true
else
- error('Unknown host cpu: ' + host_cpu_family)
+ warning('Unknown host cpu: ' + host_cpu_family)
glib_memory_barrier_needed = true
endif
glibconfig_conf.set('G_ATOMIC_OP_MEMORY_BARRIER_NEEDED', glib_memory_barrier_needed)
diff --git a/po/gl.po b/po/gl.po
index a7c39fd17..16ba57ced 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -11,14 +11,14 @@
# 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, 2013, 2014, 2015, 2016, 2017.
+# Fran Dieguez <frandieguez@gnome.org>, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
msgid ""
msgstr ""
"Project-Id-Version: glib.master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=glib&k"
"eywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2017-08-10 09:30+0000\n"
-"PO-Revision-Date: 2017-08-12 12:28+0200\n"
+"POT-Creation-Date: 2018-02-02 09:07+0000\n"
+"PO-Revision-Date: 2018-02-09 14:56+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician\n"
"Language: gl\n"
@@ -29,27 +29,27 @@ msgstr ""
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "GApplication options"
msgstr "Opcións de GApplication"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "Show GApplication options"
msgstr "Mostrar as opcións de GApplication"
-#: ../gio/gapplication.c:535
+#: ../gio/gapplication.c:540
msgid "Enter GApplication service mode (use from D-Bus service files)"
msgstr ""
"Escriba o modo de servizo de GApplication (usar desde os ficheiros de "
"servizo D-Bus)"
-#: ../gio/gapplication.c:547
+#: ../gio/gapplication.c:552
msgid "Override the application’s ID"
msgstr "Omitir o ID do aplicativo"
#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:522
+#: ../gio/gsettings-tool.c:551
msgid "Print help"
msgstr "Imprimir axuda"
@@ -62,7 +62,7 @@ msgstr "[ORDE]"
msgid "Print version"
msgstr "Mostrar versión"
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:557
msgid "Print version information and exit"
msgstr "Mostrar información da versión e saír"
@@ -153,7 +153,7 @@ 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:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:614
+#: ../gio/gsettings-tool.c:643
#, c-format
msgid ""
"Unknown command %s\n"
@@ -167,7 +167,7 @@ msgid "Usage:\n"
msgstr "Uso:\n"
#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:649
+#: ../gio/gsettings-tool.c:678
msgid "Arguments:\n"
msgstr "Argumentos:\n"
@@ -271,7 +271,7 @@ msgstr ""
#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:209
#, c-format
msgid "Too large count value passed to %s"
msgstr "O valor de conta pasado a %s é demasiado longo"
@@ -295,8 +295,8 @@ msgid "Truncate not supported on base stream"
msgstr "Non se permite truncar no fluxo base"
#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:870
-#: ../gio/gsimpleasyncresult.c:896
+#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
+#: ../gio/gsimpleasyncresult.c:897
#, c-format
msgid "Operation was cancelled"
msgstr "A operación foi cancelada"
@@ -314,29 +314,29 @@ msgid "Not enough space in destination"
msgstr "Non hai espazo abondo para o enderezo do socket"
#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:438 ../glib/gconvert.c:845
-#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
-#: ../glib/giochannel.c:2442 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
+#: ../gio/gdatainputstream.c:1261 ../glib/gconvert.c:452 ../glib/gconvert.c:877
+#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
+#: ../glib/giochannel.c:2443 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
msgid "Invalid byte sequence in conversion input"
msgstr "A secuencia de bytes non é válida na entrada da conversión"
-#: ../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:460 ../glib/gconvert.c:791
+#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
#, c-format
msgid "Error during conversion: %s"
msgstr "Produciuse un erro durante a conversión: %s"
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1096
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
msgid "Cancellable initialization not supported"
msgstr "Non se permite a inicialización cancelábel"
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:321
-#: ../glib/giochannel.c:1384
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:327
+#: ../glib/giochannel.c:1385
#, c-format
msgid "Conversion from character set “%s†to “%s†is not supported"
msgstr "Non se admite a conversión do conxunto de caracteres «%s» a «%s»"
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:325
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:331
#, c-format
msgid "Could not open converter from “%s†to “%sâ€"
msgstr "Non foi posíbel abrir o conversor de «%s» a «%s»"
@@ -375,13 +375,13 @@ msgstr "Non é posíbel burlar as credenciais neste SO"
msgid "Unexpected early end-of-stream"
msgstr "Final de fluxo inesperadamente prematuro"
-#: ../gio/gdbusaddress.c:155 ../gio/gdbusaddress.c:243
-#: ../gio/gdbusaddress.c:324
+#: ../gio/gdbusaddress.c:158 ../gio/gdbusaddress.c:246
+#: ../gio/gdbusaddress.c:327
#, c-format
msgid "Unsupported key “%s†in address entry “%sâ€"
msgstr "Clave «%s» non admitida na entrada do enderezo «%s»"
-#: ../gio/gdbusaddress.c:182
+#: ../gio/gdbusaddress.c:185
#, c-format
msgid ""
"Address “%s†is invalid (need exactly one of path, tmpdir or abstract keys)"
@@ -389,27 +389,27 @@ msgstr ""
"O enderezo «%s» non é válido (necesítase exactamente unha ruta, tmpdir ou "
"claves abstractas)"
-#: ../gio/gdbusaddress.c:195
+#: ../gio/gdbusaddress.c:198
#, 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:258 ../gio/gdbusaddress.c:339
+#: ../gio/gdbusaddress.c:261 ../gio/gdbusaddress.c:342
#, c-format
msgid "Error in address “%s†— the port attribute is malformed"
msgstr "Erro no enderezo «%s» — o atributo do porto está mal formado"
-#: ../gio/gdbusaddress.c:269 ../gio/gdbusaddress.c:350
+#: ../gio/gdbusaddress.c:272 ../gio/gdbusaddress.c:353
#, c-format
msgid "Error in address “%s†— the family attribute is malformed"
msgstr "Erro no enderezo «%s» — o atributo da familia está mal formado"
-#: ../gio/gdbusaddress.c:460
+#: ../gio/gdbusaddress.c:463
#, c-format
msgid "Address element “%s†does not contain a colon (:)"
msgstr "O elemento do enderezo «%s» non contén un caracter dous puntos (:)"
-#: ../gio/gdbusaddress.c:481
+#: ../gio/gdbusaddress.c:484
#, c-format
msgid ""
"Key/Value pair %d, “%sâ€, in address element “%s†does not contain an equal "
@@ -418,7 +418,7 @@ msgstr ""
"O par clave/valor %d, «%s» no elemento do enderezo «%s» non contén un signo "
"de igual"
-#: ../gio/gdbusaddress.c:495
+#: ../gio/gdbusaddress.c:498
#, c-format
msgid ""
"Error unescaping key or value in Key/Value pair %d, “%sâ€, in address element "
@@ -427,7 +427,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:573
+#: ../gio/gdbusaddress.c:576
#, c-format
msgid ""
"Error in address “%s†— the unix transport requires exactly one of the keys "
@@ -436,98 +436,98 @@ msgstr ""
"Erro no enderezo «%s» — o transporte unix require que se estabeleza "
"exactamente unha das claves «path» ou «abstract»"
-#: ../gio/gdbusaddress.c:609
+#: ../gio/gdbusaddress.c:612
#, 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:623
+#: ../gio/gdbusaddress.c:626
#, 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:637
+#: ../gio/gdbusaddress.c:640
#, 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:658
+#: ../gio/gdbusaddress.c:661
msgid "Error auto-launching: "
msgstr "Produciuse un erro ao autoiniciar: "
-#: ../gio/gdbusaddress.c:666
+#: ../gio/gdbusaddress.c:669
#, 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:704
+#: ../gio/gdbusaddress.c:714
#, 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:723
+#: ../gio/gdbusaddress.c:733
#, 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:732
+#: ../gio/gdbusaddress.c:742
#, 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:750
+#: ../gio/gdbusaddress.c:760
#, 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:959
+#: ../gio/gdbusaddress.c:969
msgid "The given address is empty"
msgstr "O enderezo fornecido está baleiro"
-#: ../gio/gdbusaddress.c:1072
+#: ../gio/gdbusaddress.c:1082
#, c-format
msgid "Cannot spawn a message bus when setuid"
msgstr "Non é posíbel iniciar («spawn») unha bus de mensaxe sen setuid"
-#: ../gio/gdbusaddress.c:1079
+#: ../gio/gdbusaddress.c:1089
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:1086
+#: ../gio/gdbusaddress.c:1096
#, c-format
msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
msgstr "Non é posíbel autoiniciar D-Bus sen un $DISPLAY X11"
-#: ../gio/gdbusaddress.c:1128
+#: ../gio/gdbusaddress.c:1138
#, c-format
msgid "Error spawning command line “%sâ€: "
msgstr "Produciuse un erro ao iniciar («spawn») a orde «%s»:"
-#: ../gio/gdbusaddress.c:1345
+#: ../gio/gdbusaddress.c:1355
#, c-format
msgid "(Type any character to close this window)\n"
msgstr "(Prema calquera caracter para pechar esta xanela)\n"
-#: ../gio/gdbusaddress.c:1499
+#: ../gio/gdbusaddress.c:1509
#, 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/gdbusaddress.c:1510
+#: ../gio/gdbusaddress.c:1520
#, 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:1648
+#: ../gio/gdbusaddress.c:1658
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -536,7 +536,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:1657 ../gio/gdbusconnection.c:7155
+#: ../gio/gdbusaddress.c:1667 ../gio/gdbusconnection.c:7158
msgid ""
"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
"variable is not set"
@@ -544,7 +544,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:1667
+#: ../gio/gdbusaddress.c:1677
#, c-format
msgid "Unknown bus type %d"
msgstr "Tipo de bus %d descoñecido"
@@ -565,7 +565,7 @@ msgstr ""
"Agotáronse todos os mecanismos de autenticación dispoñíbel (tentaronse: %s) "
"(dispoñíbeis: %s)"
-#: ../gio/gdbusauth.c:1174
+#: ../gio/gdbusauth.c:1171
msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
msgstr "Cancelando mediante GDBusAuthObserver::authorize-authenticated-peer"
@@ -592,12 +592,12 @@ msgstr "Produciuse un erro ao crear o directorio %s: %s"
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:403 ../gio/gdbusauthmechanismsha1.c:721
+#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:720
#, 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:417 ../gio/gdbusauthmechanismsha1.c:735
+#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:734
#, c-format
msgid ""
"First token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -605,7 +605,7 @@ msgstr ""
"O primeiro token da liña %d no anel de chaves en «%s» co contido «%s» está "
"malformado"
-#: ../gio/gdbusauthmechanismsha1.c:432 ../gio/gdbusauthmechanismsha1.c:749
+#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:748
#, c-format
msgid ""
"Second token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -613,7 +613,7 @@ msgstr ""
"O segundo token da liña %d no anel de chaves en «%s» co contido «%s» estaÌ "
"malformado"
-#: ../gio/gdbusauthmechanismsha1.c:456
+#: ../gio/gdbusauthmechanismsha1.c:454
#, 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»"
@@ -623,27 +623,27 @@ msgstr "Non foi posíbel atopar a cookie co id %d no anel de chave en «%s»"
msgid "Error deleting stale lock file “%sâ€: %s"
msgstr "Produciuse un erro ao eliminar o ficheiro de bloqueo antigo «%s»: %s"
-#: ../gio/gdbusauthmechanismsha1.c:569
+#: ../gio/gdbusauthmechanismsha1.c:568
#, c-format
msgid "Error creating lock file “%sâ€: %s"
msgstr "Produciuse un erro ao crear o ficheiro de bloqueo «%s»: %s"
-#: ../gio/gdbusauthmechanismsha1.c:600
+#: ../gio/gdbusauthmechanismsha1.c:599
#, 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:611
+#: ../gio/gdbusauthmechanismsha1.c:610
#, c-format
msgid "Error unlinking lock file “%sâ€: %s"
msgstr "Produciuse un erro ao abrir o ficheiro de bloqueo «%s»: %s"
-#: ../gio/gdbusauthmechanismsha1.c:688
+#: ../gio/gdbusauthmechanismsha1.c:687
#, 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:885
+#: ../gio/gdbusauthmechanismsha1.c:883
#, 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) "
@@ -693,12 +693,12 @@ msgstr ""
"pero obtívose «%s»"
#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
-#: ../gio/gdbusconnection.c:6586
+#: ../gio/gdbusconnection.c:6589
#, c-format
msgid "No such interface '%s'"
msgstr "Non existe a interface «%s»"
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7095
+#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7098
#, c-format
msgid "No such interface '%s' on object at path %s"
msgstr "Non existe a interface «%s» no obxecto coa ruta %s"
@@ -733,17 +733,17 @@ msgstr "Non é posíbel estabelecer a propiedade %s.%s"
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:6697
+#: ../gio/gdbusconnection.c:6700
#, 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:6818
+#: ../gio/gdbusconnection.c:6821
#, c-format
msgid "A subtree is already exported for %s"
msgstr "Xa se exportou un subárbore para %s"
-#: ../gio/gdbusconnection.c:7146
+#: ../gio/gdbusconnection.c:7149
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -810,17 +810,17 @@ msgstr ""
"byte desvío %d (a lonxitude da cadea é %d). A cadea UTF-8 correcta até ese "
"punto foi «%s»"
-#: ../gio/gdbusmessage.c:1589
+#: ../gio/gdbusmessage.c:1593
#, 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:1611
+#: ../gio/gdbusmessage.c:1615
#, 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:1658
+#: ../gio/gdbusmessage.c:1662
#, c-format
msgid ""
"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -833,7 +833,7 @@ msgstr[1] ""
"Atopouse unha matriz cunha lonxitude de %u bytes. A lonxitude máxima é 2<<26 "
"bytes (64 MiB)."
-#: ../gio/gdbusmessage.c:1678
+#: ../gio/gdbusmessage.c:1682
#, c-format
msgid ""
"Encountered array of type “a%câ€, expected to have a length a multiple of %u "
@@ -842,13 +842,13 @@ 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:1845
+#: ../gio/gdbusmessage.c:1849
#, 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:1869
+#: ../gio/gdbusmessage.c:1873
#, c-format
msgid ""
"Error deserializing GVariant with type string “%s†from the D-Bus wire format"
@@ -856,7 +856,7 @@ msgstr ""
"Produciuse un erro ao deserializar o GVariant co tipo cadea «%s» desde o "
"formato ligado D-Bus"
-#: ../gio/gdbusmessage.c:2053
+#: ../gio/gdbusmessage.c:2055
#, c-format
msgid ""
"Invalid endianness value. Expected 0x6c (“lâ€) or 0x42 (“Bâ€) but found value "
@@ -865,26 +865,26 @@ msgstr ""
"Valor de «endianness» non válido. Esperábase 0x6c («|») ou 0x42 («B») pero "
"atopouse 0x%02x"
-#: ../gio/gdbusmessage.c:2066
+#: ../gio/gdbusmessage.c:2068
#, 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:2122
+#: ../gio/gdbusmessage.c:2124
#, 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:2136
+#: ../gio/gdbusmessage.c:2138
#, 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:2166
+#: ../gio/gdbusmessage.c:2168
#, 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"
@@ -895,11 +895,11 @@ msgstr[1] ""
"Non hai unha cabeceira da sinatura na mensaxe pero o corpo da mensaxe ten %u "
"bytes"
-#: ../gio/gdbusmessage.c:2176
+#: ../gio/gdbusmessage.c:2178
msgid "Cannot deserialize message: "
msgstr "Non foi posíbel deserializar a mensaxe: "
-#: ../gio/gdbusmessage.c:2517
+#: ../gio/gdbusmessage.c:2519
#, c-format
msgid ""
"Error serializing GVariant with type string “%s†to the D-Bus wire format"
@@ -907,27 +907,26 @@ msgstr ""
"Produciuse un erro ao serializar o GVariant co tipo cadea «%s» desde o "
"formato ligado D-Bus"
-#: ../gio/gdbusmessage.c:2654
+#: ../gio/gdbusmessage.c:2656
#, 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 ""
-"A mensaxe ten %d descritores de ficheiro pero o campo da cabeceira indica %d "
-"descritores de ficheiro"
+"O número de descritores de ficheiro no mensaxe (%d) difire do campo "
+"cabeceira (%d)"
-#: ../gio/gdbusmessage.c:2662
+#: ../gio/gdbusmessage.c:2664
msgid "Cannot serialize message: "
msgstr "Non foi posíbel serializar a mensaxe: "
-#: ../gio/gdbusmessage.c:2706
+#: ../gio/gdbusmessage.c:2708
#, 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:2716
+#: ../gio/gdbusmessage.c:2718
#, c-format
msgid ""
"Message body has type signature “%s†but signature in the header field is "
@@ -936,19 +935,19 @@ msgstr ""
"O corpo da mensaxe ten a sinatura de tipo «%s» pero a sintura no campo da "
"cabeceira é «%s»"
-#: ../gio/gdbusmessage.c:2732
+#: ../gio/gdbusmessage.c:2734
#, 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:3285
+#: ../gio/gdbusmessage.c:3287
#, c-format
msgid "Error return with body of type “%sâ€"
msgstr "Produciuse un erro ao devolver co corpo de tipo «%s»"
-#: ../gio/gdbusmessage.c:3293
+#: ../gio/gdbusmessage.c:3295
msgid "Error return with empty body"
msgstr "Produciuse un erro ao devolver co corpo baleiro"
@@ -1027,60 +1026,60 @@ msgstr ""
"\n"
"Use '%s ORDE --help' para obter axuda sobre cada orde.\n"
-#: ../gio/gdbus-tool.c:165 ../gio/gdbus-tool.c:227 ../gio/gdbus-tool.c:299
-#: ../gio/gdbus-tool.c:323 ../gio/gdbus-tool.c:725 ../gio/gdbus-tool.c:1068
-#: ../gio/gdbus-tool.c:1510
+#: ../gio/gdbus-tool.c:167 ../gio/gdbus-tool.c:234 ../gio/gdbus-tool.c:306
+#: ../gio/gdbus-tool.c:330 ../gio/gdbus-tool.c:811 ../gio/gdbus-tool.c:1150
+#: ../gio/gdbus-tool.c:1592
#, c-format
msgid "Error: %s\n"
msgstr "Erro: %s\n"
-#: ../gio/gdbus-tool.c:176 ../gio/gdbus-tool.c:240 ../gio/gdbus-tool.c:1526
+#: ../gio/gdbus-tool.c:178 ../gio/gdbus-tool.c:247 ../gio/gdbus-tool.c:1608
#, 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:209
+#: ../gio/gdbus-tool.c:216
#, c-format
msgid "Error: %s is not a valid name\n"
msgstr "Erro: %s non é un nome válido\n"
-#: ../gio/gdbus-tool.c:357
+#: ../gio/gdbus-tool.c:364
msgid "Connect to the system bus"
msgstr "Conectar ao bus do sistema"
-#: ../gio/gdbus-tool.c:358
+#: ../gio/gdbus-tool.c:365
msgid "Connect to the session bus"
msgstr "Conectar ao bus de sesión"
-#: ../gio/gdbus-tool.c:359
+#: ../gio/gdbus-tool.c:366
msgid "Connect to given D-Bus address"
msgstr "Conectar a un enderezo D-Bus fornecido"
-#: ../gio/gdbus-tool.c:369
+#: ../gio/gdbus-tool.c:376
msgid "Connection Endpoint Options:"
msgstr "Opcións da conexión do extremo:"
-#: ../gio/gdbus-tool.c:370
+#: ../gio/gdbus-tool.c:377
msgid "Options specifying the connection endpoint"
msgstr "Opción para especificar a conexión do extremo"
-#: ../gio/gdbus-tool.c:392
+#: ../gio/gdbus-tool.c:399
#, c-format
msgid "No connection endpoint specified"
msgstr "Non se especificou o punto final da conexión"
-#: ../gio/gdbus-tool.c:402
+#: ../gio/gdbus-tool.c:409
#, c-format
msgid "Multiple connection endpoints specified"
msgstr "Especificáronse varios puntos finais da conexión"
-#: ../gio/gdbus-tool.c:472
+#: ../gio/gdbus-tool.c:479
#, 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:481
+#: ../gio/gdbus-tool.c:488
#, c-format
msgid ""
"Warning: According to introspection data, method “%s†does not exist on "
@@ -1089,166 +1088,169 @@ msgstr ""
"Aviso: segundo os datos de introspección o método «%s» non existe na "
"interface «%s»\n"
-#: ../gio/gdbus-tool.c:543
+#: ../gio/gdbus-tool.c:550
msgid "Optional destination for signal (unique name)"
msgstr "Destino opcional para o sinal (nome único)"
-#: ../gio/gdbus-tool.c:544
+#: ../gio/gdbus-tool.c:551
msgid "Object path to emit signal on"
msgstr "Ruta do obxecto sobre o que emitir o sinal"
-#: ../gio/gdbus-tool.c:545
+#: ../gio/gdbus-tool.c:552
msgid "Signal and interface name"
msgstr "Nomes da interface e sinal"
-#: ../gio/gdbus-tool.c:579
+#: ../gio/gdbus-tool.c:587
msgid "Emit a signal."
msgstr "Emitir un sinal."
-#: ../gio/gdbus-tool.c:613 ../gio/gdbus-tool.c:858 ../gio/gdbus-tool.c:1616
-#: ../gio/gdbus-tool.c:1851 ../gio/gdbus-tool.c:2067
+#: ../gio/gdbus-tool.c:642 ../gio/gdbus-tool.c:944 ../gio/gdbus-tool.c:1698
+#: ../gio/gdbus-tool.c:1931 ../gio/gdbus-tool.c:2152
#, c-format
msgid "Error connecting: %s\n"
msgstr "Produciuse un erro ao conectar: %s\n"
-#: ../gio/gdbus-tool.c:625
+#: ../gio/gdbus-tool.c:659 ../gio/gdbus-tool.c:961 ../gio/gdbus-tool.c:1715
+#: ../gio/gdbus-tool.c:1956
#, c-format
-msgid "Error: object path not specified.\n"
-msgstr "Erro: non se especificou unha ruta de obxecto.\n"
+msgid "Error: Destination is not specified\n"
+msgstr "Erro: non se especificou un destino\n"
+
+#: ../gio/gdbus-tool.c:670
+#, 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:685 ../gio/gdbus-tool.c:987 ../gio/gdbus-tool.c:1741
+#, c-format
+msgid "Error: Object path is not specified\n"
+msgstr "Erro: non se especificou unha ruta de obxecto\n"
-#: ../gio/gdbus-tool.c:630 ../gio/gdbus-tool.c:925 ../gio/gdbus-tool.c:1681
-#: ../gio/gdbus-tool.c:1917
+#: ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1007 ../gio/gdbus-tool.c:1761
+#: ../gio/gdbus-tool.c:2002
#, 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:636
+#: ../gio/gdbus-tool.c:720
#, c-format
-msgid "Error: signal not specified.\n"
-msgstr "Erro: non se especificou o sinal.\n"
+#| msgid "Error: Method name is not specified\n"
+msgid "Error: Signal name is not specified\n"
+msgstr "Erro: non se especificou o nome do sinal\n"
-#: ../gio/gdbus-tool.c:643
+#: ../gio/gdbus-tool.c:731
#, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr "Erro: o sinal debe ser un nome cualificado completo.\n"
+#| msgid "Error: Method name “%s†is invalid\n"
+msgid "Error: Signal name “%s†is invalid\n"
+msgstr "Erro: o nome do sinal «%s» non é válido\n"
-#: ../gio/gdbus-tool.c:651
+#: ../gio/gdbus-tool.c:743
#, 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:657
+#: ../gio/gdbus-tool.c:749
#, c-format
msgid "Error: %s is not a valid member name\n"
msgstr "Erro: %s non é un nome de membro correcto\n"
-#: ../gio/gdbus-tool.c:663
-#, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "Erro: %s non é un nome de bus único correcto.\n"
-
#. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:700 ../gio/gdbus-tool.c:1037
+#: ../gio/gdbus-tool.c:786 ../gio/gdbus-tool.c:1119
#, 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:732
+#: ../gio/gdbus-tool.c:818
#, c-format
msgid "Error flushing connection: %s\n"
msgstr "Produciuse un erro ao limpar a conexión: %s\n"
-#: ../gio/gdbus-tool.c:759
+#: ../gio/gdbus-tool.c:845
msgid "Destination name to invoke method on"
msgstr "Nome do destino onde invocar o método"
-#: ../gio/gdbus-tool.c:760
+#: ../gio/gdbus-tool.c:846
msgid "Object path to invoke method on"
msgstr "Ruta ao obxecto onde invocar o método"
-#: ../gio/gdbus-tool.c:761
+#: ../gio/gdbus-tool.c:847
msgid "Method and interface name"
msgstr "Método e nome da interface"
-#: ../gio/gdbus-tool.c:762
+#: ../gio/gdbus-tool.c:848
msgid "Timeout in seconds"
msgstr "Tempo de expiración en segundos"
-#: ../gio/gdbus-tool.c:803
+#: ../gio/gdbus-tool.c:889
msgid "Invoke a method on a remote object."
msgstr "Invocar un método nun obxecto remoto."
-#: ../gio/gdbus-tool.c:878 ../gio/gdbus-tool.c:1635 ../gio/gdbus-tool.c:1870
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr "Erro: non se especificou un destino\n"
-
-#: ../gio/gdbus-tool.c:890 ../gio/gdbus-tool.c:1652 ../gio/gdbus-tool.c:1882
+#: ../gio/gdbus-tool.c:972 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1967
#, 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:905 ../gio/gdbus-tool.c:1661
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "Erro: non se especificou unha ruta de obxecto\n"
-
-#: ../gio/gdbus-tool.c:940
+#: ../gio/gdbus-tool.c:1022
#, c-format
msgid "Error: Method name is not specified\n"
msgstr "Erro: non se especificou o nome do método\n"
-#: ../gio/gdbus-tool.c:951
+#: ../gio/gdbus-tool.c:1033
#, 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:1029
+#: ../gio/gdbus-tool.c:1111
#, 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:1473
+#: ../gio/gdbus-tool.c:1555
msgid "Destination name to introspect"
msgstr "Nome de destino a introspeccionar"
-#: ../gio/gdbus-tool.c:1474
+#: ../gio/gdbus-tool.c:1556
msgid "Object path to introspect"
msgstr "Ruta do obxecto a introspeccionar"
-#: ../gio/gdbus-tool.c:1475
+#: ../gio/gdbus-tool.c:1557
msgid "Print XML"
msgstr "Imprimir XML"
-#: ../gio/gdbus-tool.c:1476
+#: ../gio/gdbus-tool.c:1558
msgid "Introspect children"
msgstr "Introspeccionar fillo"
-#: ../gio/gdbus-tool.c:1477
+#: ../gio/gdbus-tool.c:1559
msgid "Only print properties"
msgstr "Só mostrar propiedades"
-#: ../gio/gdbus-tool.c:1568
+#: ../gio/gdbus-tool.c:1650
msgid "Introspect a remote object."
msgstr "Introspecciona un obxecto remoto."
-#: ../gio/gdbus-tool.c:1773
+#: ../gio/gdbus-tool.c:1853
msgid "Destination name to monitor"
msgstr "Nome de destino a monitorizar"
-#: ../gio/gdbus-tool.c:1774
+#: ../gio/gdbus-tool.c:1854
msgid "Object path to monitor"
msgstr "Ruta do obxecto a monitorizar"
-#: ../gio/gdbus-tool.c:1803
+#: ../gio/gdbus-tool.c:1883
msgid "Monitor a remote object."
msgstr "Monitoriza un obxecto remoto."
-#: ../gio/gdbus-tool.c:1980
+#: ../gio/gdbus-tool.c:1941
+#, c-format
+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:2065
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:1983
+#: ../gio/gdbus-tool.c:2068
msgid ""
"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
"(default)"
@@ -1256,35 +1258,35 @@ 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:2031
+#: ../gio/gdbus-tool.c:2116
msgid "[OPTION…] BUS-NAME"
msgstr "[OPCIÓN…] NOME-BUS"
-#: ../gio/gdbus-tool.c:2033
+#: ../gio/gdbus-tool.c:2118
msgid "Wait for a bus name to appear."
msgstr "Agardar que apareza un nome de bus."
-#: ../gio/gdbus-tool.c:2109
+#: ../gio/gdbus-tool.c:2194
#, c-format
msgid "Error: A service to activate for must be specified.\n"
msgstr "Erro: Debe especificar un servizo a activar.\n"
-#: ../gio/gdbus-tool.c:2114
+#: ../gio/gdbus-tool.c:2199
#, c-format
msgid "Error: A service to wait for must be specified.\n"
msgstr "Erro: Debe especificar un servizo a agardar.\n"
-#: ../gio/gdbus-tool.c:2119
+#: ../gio/gdbus-tool.c:2204
#, c-format
msgid "Error: Too many arguments.\n"
msgstr "Erro: Demasiados argumentos.\n"
-#: ../gio/gdbus-tool.c:2127 ../gio/gdbus-tool.c:2134
+#: ../gio/gdbus-tool.c:2212 ../gio/gdbus-tool.c:2219
#, 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:2001 ../gio/gdesktopappinfo.c:4533
+#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4566
msgid "Unnamed"
msgstr "Sen nome"
@@ -1292,33 +1294,33 @@ msgstr "Sen nome"
msgid "Desktop file didn’t specify Exec field"
msgstr "O ficheiro de escritorio non especificou o campo Exec"
-#: ../gio/gdesktopappinfo.c:2696
+#: ../gio/gdesktopappinfo.c:2701
msgid "Unable to find terminal required for application"
msgstr "Non é posíbel atopar o terminal requirido polo aplicativo"
-#: ../gio/gdesktopappinfo.c:3129
+#: ../gio/gdesktopappinfo.c:3135
#, c-format
msgid "Can’t create user application configuration folder %s: %s"
msgstr ""
"Non é posíbel crear o directorio de configuración do aplicativo de usuario "
"%s: %s"
-#: ../gio/gdesktopappinfo.c:3133
+#: ../gio/gdesktopappinfo.c:3139
#, 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:3373 ../gio/gdesktopappinfo.c:3397
+#: ../gio/gdesktopappinfo.c:3379 ../gio/gdesktopappinfo.c:3403
msgid "Application information lacks an identifier"
msgstr "A información do aplicativo carece dun identificador"
-#: ../gio/gdesktopappinfo.c:3631
+#: ../gio/gdesktopappinfo.c:3637
#, 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:3765
+#: ../gio/gdesktopappinfo.c:3771
#, c-format
msgid "Custom definition for %s"
msgstr "Definición personalizada para %s"
@@ -1382,14 +1384,14 @@ msgstr ""
msgid "Expected a GEmblem for GEmblemedIcon"
msgstr "Esperábase un GEmblem para o 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:3614 ../gio/gfile.c:3669
-#: ../gio/gfile.c:3905 ../gio/gfile.c:3947 ../gio/gfile.c:4415
-#: ../gio/gfile.c:4826 ../gio/gfile.c:4911 ../gio/gfile.c:5001
-#: ../gio/gfile.c:5098 ../gio/gfile.c:5185 ../gio/gfile.c:5286
-#: ../gio/gfile.c:7827 ../gio/gfile.c:7917 ../gio/gfile.c:8001
+#: ../gio/gfile.c:1071 ../gio/gfile.c:1309 ../gio/gfile.c:1447
+#: ../gio/gfile.c:1685 ../gio/gfile.c:1740 ../gio/gfile.c:1798
+#: ../gio/gfile.c:1882 ../gio/gfile.c:1939 ../gio/gfile.c:2003
+#: ../gio/gfile.c:2058 ../gio/gfile.c:3704 ../gio/gfile.c:3759
+#: ../gio/gfile.c:3995 ../gio/gfile.c:4037 ../gio/gfile.c:4505
+#: ../gio/gfile.c:4916 ../gio/gfile.c:5001 ../gio/gfile.c:5091
+#: ../gio/gfile.c:5188 ../gio/gfile.c:5275 ../gio/gfile.c:5376
+#: ../gio/gfile.c:7954 ../gio/gfile.c:8044 ../gio/gfile.c:8128
#: ../gio/win32/gwinhttpfile.c:437
msgid "Operation not supported"
msgstr "Operación non permitida"
@@ -1398,69 +1400,69 @@ msgstr "Operación non permitida"
#. * trying to find the enclosing (user visible)
#. * mount of a file, but none exists.
#.
-#: ../gio/gfile.c:1468
+#: ../gio/gfile.c:1570
msgid "Containing mount does not exist"
msgstr "O punto de montaxe contido non existe"
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2377
+#: ../gio/gfile.c:2617 ../gio/glocalfile.c:2446
msgid "Can’t copy over directory"
msgstr "Non é posíbel copiar sobre o directorio"
-#: ../gio/gfile.c:2575
+#: ../gio/gfile.c:2677
msgid "Can’t copy directory over directory"
msgstr "Non é posíbel copiar un directorio sobre o directorio"
-#: ../gio/gfile.c:2583
+#: ../gio/gfile.c:2685
msgid "Target file exists"
msgstr "O ficheiro de destino xa existe"
-#: ../gio/gfile.c:2602
+#: ../gio/gfile.c:2704
msgid "Can’t recursively copy directory"
msgstr "Non é posíbel copiar o directorio recursivamente"
-#: ../gio/gfile.c:2889
+#: ../gio/gfile.c:2979
msgid "Splice not supported"
msgstr "Non se admite a unión"
-#: ../gio/gfile.c:2893
+#: ../gio/gfile.c:2983
#, c-format
msgid "Error splicing file: %s"
msgstr "Produciuse un erro ao empalmar o ficheiro: %s"
-#: ../gio/gfile.c:3025
+#: ../gio/gfile.c:3115
msgid "Copy (reflink/clone) between mounts is not supported"
msgstr "Copiar (reflink/clonar) entre montaxes non é compatíbel"
-#: ../gio/gfile.c:3029
+#: ../gio/gfile.c:3119
msgid "Copy (reflink/clone) is not supported or invalid"
msgstr "Copiar (reflink/clone) non é compatíbel ou non é válido"
-#: ../gio/gfile.c:3034
+#: ../gio/gfile.c:3124
msgid "Copy (reflink/clone) is not supported or didn’t work"
msgstr "Copiar (reflink/clone) non é compatíbel ou non funciona"
-#: ../gio/gfile.c:3097
+#: ../gio/gfile.c:3187
msgid "Can’t copy special file"
msgstr "Non é posíbel copiar o ficheiro especial"
-#: ../gio/gfile.c:3895
+#: ../gio/gfile.c:3985
msgid "Invalid symlink value given"
msgstr "O valor da ligazón simbólica dada non é válido"
-#: ../gio/gfile.c:4056
+#: ../gio/gfile.c:4146
msgid "Trash not supported"
msgstr "O Lixo non é compatíbel"
-#: ../gio/gfile.c:4168
+#: ../gio/gfile.c:4258
#, c-format
msgid "File names cannot contain “%câ€"
msgstr "Os nomes de ficheiro non poden conter «%c»"
-#: ../gio/gfile.c:6614 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6739 ../gio/gvolume.c:363
msgid "volume doesn’t implement mount"
msgstr "o volume non implementa o montado"
-#: ../gio/gfile.c:6723
+#: ../gio/gfile.c:6848
msgid "No application is registered as handling this file"
msgstr "Non hai ningún aplicativo rexistrado para manexar este ficheiro"
@@ -1506,7 +1508,7 @@ msgid "Truncate not supported on stream"
msgstr "Non se permite truncar no fluxo"
#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1650
+#: ../glib/gconvert.c:1777
msgid "Invalid hostname"
msgstr "O nome do host non é válido"
@@ -1588,7 +1590,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:106 ../gio/gunixsocketaddress.c:218
+#: ../gio/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:218
msgid "Not enough space for socket address"
msgstr "Non hai espazo abondo para o enderezo do socket"
@@ -1708,27 +1710,27 @@ msgstr "Lista os contidos da localización nunha árbore"
msgid "Use %s to get detailed help.\n"
msgstr "Use '%s help ORDE' para obter axuda detallada.\n"
-#: ../gio/gio-tool-cat.c:83
+#: ../gio/gio-tool-cat.c:87
msgid "Error writing to stdout"
msgstr "Produciuse un erro ao escribir ao stdout"
#. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:127 ../gio/gio-tool-info.c:282
+#: ../gio/gio-tool-cat.c:133 ../gio/gio-tool-info.c:282
#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
-#: ../gio/gio-tool-open.c:45 ../gio/gio-tool-remove.c:48
+#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
msgid "LOCATION"
msgstr "LOCALICCIÓN"
-#: ../gio/gio-tool-cat.c:132
+#: ../gio/gio-tool-cat.c:138
msgid "Concatenate files and print to standard output."
msgstr "Concatenar ficheiros e imprimir á saída estándar."
-#: ../gio/gio-tool-cat.c:134
+#: ../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"
@@ -1739,9 +1741,9 @@ msgstr ""
"GIO no lugar de ficheiros locais: por exemplo, pode usar algo así como \n"
"smb:////server/resource/file.txt como localización."
-#: ../gio/gio-tool-cat.c:156 ../gio/gio-tool-info.c:313
+#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
-#: ../gio/gio-tool-open.c:71 ../gio/gio-tool-remove.c:72
+#: ../gio/gio-tool-open.c:139 ../gio/gio-tool-remove.c:72
msgid "No locations given"
msgstr "Non se forneceron localizacións"
@@ -1782,7 +1784,7 @@ msgstr "ORIXE"
#. Translators: commandline placeholder
#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
-#: ../gio/gio-tool-save.c:165
+#: ../gio/gio-tool-save.c:160
msgid "DESTINATION"
msgstr "DESTINO"
@@ -2139,7 +2141,7 @@ msgstr ""
msgid "Target %s is not a directory"
msgstr "O destino %s non é un directorio"
-#: ../gio/gio-tool-open.c:50
+#: ../gio/gio-tool-open.c:118
msgid ""
"Open files with the default application that\n"
"is registered to handle files of this type."
@@ -2168,7 +2170,7 @@ msgstr "Renomear un ficheiro."
msgid "Missing argument"
msgstr "Falta un argumento"
-#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:195
+#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:190
#: ../gio/gio-tool-set.c:137
msgid "Too many arguments"
msgstr "Demasiados argumentos"
@@ -2208,21 +2210,21 @@ msgstr "O etag do ficheiro foi sobrescrito"
msgid "ETAG"
msgstr "ETAG"
-#: ../gio/gio-tool-save.c:119
+#: ../gio/gio-tool-save.c:113
msgid "Error reading from standard input"
msgstr "Produciuse un erro ao ler da entrada estándar"
#. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:145
+#: ../gio/gio-tool-save.c:139
#, c-format
msgid "Etag not available\n"
msgstr "ETAG non dispoñíbel\n"
-#: ../gio/gio-tool-save.c:168
+#: ../gio/gio-tool-save.c:163
msgid "Read from standard input and save to DEST."
msgstr "Ler da entrada en estándar e gardar en DEST."
-#: ../gio/gio-tool-save.c:188
+#: ../gio/gio-tool-save.c:183
msgid "No destination given"
msgstr "Non se forneceu un destino"
@@ -2857,7 +2859,7 @@ msgstr "retirouse o ficheiro de saída existente.\n"
msgid "Invalid filename %s"
msgstr "O nome do ficheiro non é válido %s"
-#: ../gio/glocalfile.c:1037
+#: ../gio/glocalfile.c:1105
#, c-format
msgid "Error getting filesystem info for %s: %s"
msgstr ""
@@ -2867,241 +2869,241 @@ msgstr ""
#. * the enclosing (user visible) mount of a file, but none
#. * exists.
#.
-#: ../gio/glocalfile.c:1176
+#: ../gio/glocalfile.c:1244
#, c-format
msgid "Containing mount for file %s not found"
msgstr "Non se atopa o punto de montaxe que contén o ficheiro %s"
-#: ../gio/glocalfile.c:1199
+#: ../gio/glocalfile.c:1267
msgid "Can’t rename root directory"
msgstr "Non é posíbel renomear o directorio raíz"
-#: ../gio/glocalfile.c:1217 ../gio/glocalfile.c:1240
+#: ../gio/glocalfile.c:1285 ../gio/glocalfile.c:1308
#, c-format
msgid "Error renaming file %s: %s"
msgstr "Produciuse un erro ao renomear o ficheiro %s: %s"
-#: ../gio/glocalfile.c:1224
+#: ../gio/glocalfile.c:1292
msgid "Can’t rename file, filename already exists"
msgstr "Non é posíbel renomear o ficheiro, o ficheiro xa existe"
-#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2253 ../gio/glocalfile.c:2281
-#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
+#: ../gio/glocalfile.c:1305 ../gio/glocalfile.c:2322 ../gio/glocalfile.c:2350
+#: ../gio/glocalfile.c:2507 ../gio/glocalfileoutputstream.c:551
msgid "Invalid filename"
msgstr "O nome do ficheiro non é válido"
-#: ../gio/glocalfile.c:1404 ../gio/glocalfile.c:1419
+#: ../gio/glocalfile.c:1473 ../gio/glocalfile.c:1488
#, c-format
msgid "Error opening file %s: %s"
msgstr "Produciuse un erro ao abrir o ficheiro %s: %s"
-#: ../gio/glocalfile.c:1544
+#: ../gio/glocalfile.c:1613
#, c-format
msgid "Error removing file %s: %s"
msgstr "Produciuse un erro ao eliminar o ficheiro %s: %s"
-#: ../gio/glocalfile.c:1928
+#: ../gio/glocalfile.c:1997
#, c-format
msgid "Error trashing file %s: %s"
msgstr "Produciuse un erro ao mover ao lixo o ficheiro %s: %s"
-#: ../gio/glocalfile.c:1951
+#: ../gio/glocalfile.c:2020
#, c-format
msgid "Unable to create trash dir %s: %s"
msgstr "Non é posíbel crear o directorio do lixo %s: %s"
-#: ../gio/glocalfile.c:1971
+#: ../gio/glocalfile.c:2040
#, 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:2050 ../gio/glocalfile.c:2070
+#: ../gio/glocalfile.c:2119 ../gio/glocalfile.c:2139
#, c-format
msgid "Unable to find or create trash directory for %s"
msgstr "Non é posíbel atopar ou crear o directorio do lixo para %s"
-#: ../gio/glocalfile.c:2105
+#: ../gio/glocalfile.c:2174
#, 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:2164
+#: ../gio/glocalfile.c:2233
#, 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:2168 ../gio/glocalfile.c:2224
+#: ../gio/glocalfile.c:2237 ../gio/glocalfile.c:2293
#, c-format
msgid "Unable to trash file %s: %s"
msgstr "Non é posíbel mover ao lixo o ficheiro %s: %s"
-#: ../gio/glocalfile.c:2230
+#: ../gio/glocalfile.c:2299
#, c-format
msgid "Unable to trash file %s"
msgstr "Non é posíbel mover ao lixo o ficheiro %s"
-#: ../gio/glocalfile.c:2256
+#: ../gio/glocalfile.c:2325
#, c-format
msgid "Error creating directory %s: %s"
msgstr "Produciuse un erro ao crear o directorio %s: %s"
-#: ../gio/glocalfile.c:2285
+#: ../gio/glocalfile.c:2354
#, 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:2288
+#: ../gio/glocalfile.c:2357
#, 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:2294 ../glib/gfileutils.c:2077
+#: ../gio/glocalfile.c:2363 ../glib/gfileutils.c:2127
msgid "Symbolic links not supported"
msgstr "As ligazóns simbólicas non se admiten"
-#: ../gio/glocalfile.c:2349 ../gio/glocalfile.c:2384 ../gio/glocalfile.c:2441
+#: ../gio/glocalfile.c:2418 ../gio/glocalfile.c:2453 ../gio/glocalfile.c:2510
#, c-format
msgid "Error moving file %s: %s"
msgstr "Produciuse un erro ao mover o ficheiro %s: %s"
-#: ../gio/glocalfile.c:2372
+#: ../gio/glocalfile.c:2441
msgid "Can’t move directory over directory"
msgstr "Non é posíbel mover o directorio sobre un directorio"
-#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:933
-#: ../gio/glocalfileoutputstream.c:947 ../gio/glocalfileoutputstream.c:962
-#: ../gio/glocalfileoutputstream.c:979 ../gio/glocalfileoutputstream.c:993
+#: ../gio/glocalfile.c:2467 ../gio/glocalfileoutputstream.c:935
+#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
+#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
msgid "Backup file creation failed"
msgstr "Fallou a creación do ficheiro de seguranza"
-#: ../gio/glocalfile.c:2417
+#: ../gio/glocalfile.c:2486
#, c-format
msgid "Error removing target file: %s"
msgstr "Produciuse un erro ao retirar o ficheiro obxectivo: %s"
-#: ../gio/glocalfile.c:2431
+#: ../gio/glocalfile.c:2500
msgid "Move between mounts not supported"
msgstr "Non se permite mover entre puntos de montaxe"
-#: ../gio/glocalfile.c:2622
+#: ../gio/glocalfile.c:2691
#, 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"
-#: ../gio/glocalfileinfo.c:731
+#: ../gio/glocalfileinfo.c:745
msgid "Attribute value must be non-NULL"
msgstr "O valor do atributo debe ser non nulo"
-#: ../gio/glocalfileinfo.c:738
+#: ../gio/glocalfileinfo.c:752
msgid "Invalid attribute type (string expected)"
msgstr "Tipo de atributo non válido (esperábase unha cadea)"
-#: ../gio/glocalfileinfo.c:745
+#: ../gio/glocalfileinfo.c:759
msgid "Invalid extended attribute name"
msgstr "Nome estendido do atributo non válido"
-#: ../gio/glocalfileinfo.c:785
+#: ../gio/glocalfileinfo.c:799
#, c-format
msgid "Error setting extended attribute “%sâ€: %s"
msgstr "Produciuse un erro ao estabelecer o atributo estendido «%s»: %s"
-#: ../gio/glocalfileinfo.c:1586
+#: ../gio/glocalfileinfo.c:1607
msgid " (invalid encoding)"
msgstr " (codificación non válida)"
-#: ../gio/glocalfileinfo.c:1777 ../gio/glocalfileoutputstream.c:811
+#: ../gio/glocalfileinfo.c:1776 ../gio/glocalfileoutputstream.c:813
#, c-format
msgid "Error when getting information for file “%sâ€: %s"
msgstr "Produciuse un erro ao obter a información do ficheiro «%s»: %s"
-#: ../gio/glocalfileinfo.c:2028
+#: ../gio/glocalfileinfo.c:2038
#, c-format
msgid "Error when getting information for file descriptor: %s"
msgstr "Produciuse un erro ao obter información do descritor do ficheiro: %s"
-#: ../gio/glocalfileinfo.c:2073
+#: ../gio/glocalfileinfo.c:2083
msgid "Invalid attribute type (uint32 expected)"
msgstr "O tipo de atributo non é válido (esperábase uint32)"
-#: ../gio/glocalfileinfo.c:2091
+#: ../gio/glocalfileinfo.c:2101
msgid "Invalid attribute type (uint64 expected)"
msgstr "O tipo de atributo non é válido (esperábase uint64)"
-#: ../gio/glocalfileinfo.c:2110 ../gio/glocalfileinfo.c:2129
+#: ../gio/glocalfileinfo.c:2120 ../gio/glocalfileinfo.c:2139
msgid "Invalid attribute type (byte string expected)"
msgstr "O tipo de atributo non é válido (esperábase unha cadea de bytes)"
-#: ../gio/glocalfileinfo.c:2164
+#: ../gio/glocalfileinfo.c:2184
msgid "Cannot set permissions on symlinks"
msgstr "Non foi posíbel estabelecer os permisos nas ligazóns simbólicas"
-#: ../gio/glocalfileinfo.c:2180
+#: ../gio/glocalfileinfo.c:2200
#, c-format
msgid "Error setting permissions: %s"
msgstr "Produciuse un erro ao estabelecer os permisos: %s"
-#: ../gio/glocalfileinfo.c:2231
+#: ../gio/glocalfileinfo.c:2251
#, c-format
msgid "Error setting owner: %s"
msgstr "Produciuse un erro ao estabelecer o propietario: %s"
-#: ../gio/glocalfileinfo.c:2254
+#: ../gio/glocalfileinfo.c:2274
msgid "symlink must be non-NULL"
msgstr "a ligazón simbólica debe ser non nula"
-#: ../gio/glocalfileinfo.c:2264 ../gio/glocalfileinfo.c:2283
-#: ../gio/glocalfileinfo.c:2294
+#: ../gio/glocalfileinfo.c:2284 ../gio/glocalfileinfo.c:2303
+#: ../gio/glocalfileinfo.c:2314
#, c-format
msgid "Error setting symlink: %s"
msgstr "Produciuse un erro ao estabelecer a ligazón simbólica: %s"
-#: ../gio/glocalfileinfo.c:2273
+#: ../gio/glocalfileinfo.c:2293
msgid "Error setting symlink: file is not a symlink"
msgstr ""
"Produciuse un erro ao estabelecer a ligazón simbólica: o ficheiro non é unha "
"ligazón"
-#: ../gio/glocalfileinfo.c:2399
+#: ../gio/glocalfileinfo.c:2419
#, c-format
msgid "Error setting modification or access time: %s"
msgstr ""
"Produciuse un erro ao modificar a configuración ou o tempo de acceso: %s"
-#: ../gio/glocalfileinfo.c:2422
+#: ../gio/glocalfileinfo.c:2442
msgid "SELinux context must be non-NULL"
msgstr "O contexto SELinux debe ser non-NULL"
-#: ../gio/glocalfileinfo.c:2437
+#: ../gio/glocalfileinfo.c:2457
#, c-format
msgid "Error setting SELinux context: %s"
msgstr "Produciuse un erro ao estabelecer o contexto SELinux: %s"
-#: ../gio/glocalfileinfo.c:2444
+#: ../gio/glocalfileinfo.c:2464
msgid "SELinux is not enabled on this system"
msgstr "SELinux non está activado neste sistema"
-#: ../gio/glocalfileinfo.c:2536
+#: ../gio/glocalfileinfo.c:2556
#, c-format
msgid "Setting attribute %s not supported"
msgstr "Non se permite estabelecer o atributo %s "
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694
+#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:696
#, c-format
msgid "Error reading from file: %s"
msgstr "Produciuse un erro ao ler do ficheiro: %s"
#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1011
+#: ../gio/glocalfileoutputstream.c:458 ../gio/glocalfileoutputstream.c:1013
#, c-format
msgid "Error seeking in file: %s"
msgstr "Produciuse un erro ao buscar no ficheiro: %s"
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:246
-#: ../gio/glocalfileoutputstream.c:340
+#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:248
+#: ../gio/glocalfileoutputstream.c:342
#, c-format
msgid "Error closing file: %s"
msgstr "Produciuse un erro ao pechar o ficheiro: %s"
@@ -3112,52 +3114,52 @@ msgstr ""
"Non é posíbel atopar o tipo de monitorización do ficheiro local "
"predeterminado"
-#: ../gio/glocalfileoutputstream.c:194 ../gio/glocalfileoutputstream.c:226
-#: ../gio/glocalfileoutputstream.c:715
+#: ../gio/glocalfileoutputstream.c:196 ../gio/glocalfileoutputstream.c:228
+#: ../gio/glocalfileoutputstream.c:717
#, c-format
msgid "Error writing to file: %s"
msgstr "Produciuse un erro ao escribir no ficheiro: %s"
-#: ../gio/glocalfileoutputstream.c:273
+#: ../gio/glocalfileoutputstream.c:275
#, c-format
msgid "Error removing old backup link: %s"
msgstr ""
"Produciuse un erro ao retirar a ligazón da copia de seguranza antiga: %s"
-#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300
+#: ../gio/glocalfileoutputstream.c:289 ../gio/glocalfileoutputstream.c:302
#, c-format
msgid "Error creating backup copy: %s"
msgstr "Produciuse un erro ao crear a copia de seguranza: %s"
-#: ../gio/glocalfileoutputstream.c:318
+#: ../gio/glocalfileoutputstream.c:320
#, c-format
msgid "Error renaming temporary file: %s"
msgstr "Produciuse un erro ao renomear o ficheiro temporal: %s"
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1062
+#: ../gio/glocalfileoutputstream.c:504 ../gio/glocalfileoutputstream.c:1064
#, c-format
msgid "Error truncating file: %s"
msgstr "Produciuse un erro ao truncar o ficheiro: %s"
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:793
-#: ../gio/glocalfileoutputstream.c:1043 ../gio/gsubprocess.c:380
+#: ../gio/glocalfileoutputstream.c:557 ../gio/glocalfileoutputstream.c:795
+#: ../gio/glocalfileoutputstream.c:1045 ../gio/gsubprocess.c:380
#, c-format
msgid "Error opening file “%sâ€: %s"
msgstr "Produciuse un erro ao abrir o ficheiro %s: %s"
-#: ../gio/glocalfileoutputstream.c:824
+#: ../gio/glocalfileoutputstream.c:826
msgid "Target file is a directory"
msgstr "O ficheiro destino é un directorio"
-#: ../gio/glocalfileoutputstream.c:829
+#: ../gio/glocalfileoutputstream.c:831
msgid "Target file is not a regular file"
msgstr "O ficheiro destino non é un ficheiro normal"
-#: ../gio/glocalfileoutputstream.c:841
+#: ../gio/glocalfileoutputstream.c:843
msgid "The file was externally modified"
msgstr "O ficheiro foi modificado externamente"
-#: ../gio/glocalfileoutputstream.c:1027
+#: ../gio/glocalfileoutputstream.c:1029
#, c-format
msgid "Error removing old file: %s"
msgstr "Produciuse un erro ao retirar o ficheiro antigo: %s"
@@ -3201,49 +3203,49 @@ msgstr "Solicitouse unha busca máis aló do final do fluxo"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement unmount.
-#: ../gio/gmount.c:393
+#: ../gio/gmount.c:396
msgid "mount doesn’t implement “unmountâ€"
msgstr "montaxe non implementa «desmontaxe»"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement eject.
-#: ../gio/gmount.c:469
+#: ../gio/gmount.c:472
msgid "mount doesn’t implement “ejectâ€"
msgstr "mount non implementa «extraer»"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:547
+#: ../gio/gmount.c:550
msgid "mount doesn’t implement “unmount†or “unmount_with_operationâ€"
msgstr "a montaxe non implementa o «unmount» ou a «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:632
+#: ../gio/gmount.c:635
msgid "mount doesn’t implement “eject†or “eject_with_operationâ€"
msgstr "a montaxe non implementa a «eject» ou a \"eject_with_operation\""
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement remount.
-#: ../gio/gmount.c:720
+#: ../gio/gmount.c:723
msgid "mount doesn’t implement “remountâ€"
msgstr "a montaxe non implementa \"remount\""
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:802
+#: ../gio/gmount.c:805
msgid "mount doesn’t implement content type guessing"
msgstr "a montaxe non implementa a averiguación do tipo de contido"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:889
+#: ../gio/gmount.c:892
msgid "mount doesn’t implement synchronous content type guessing"
msgstr "a montaxe non implementa a averiguación síncrona do tipo de contido"
@@ -3293,25 +3295,30 @@ msgstr "O fluxo de orixe xa está pechado"
msgid "Error resolving “%sâ€: %s"
msgstr "Produciuse un erro ao resolver «%s»: %s"
-#: ../gio/gresource.c:606 ../gio/gresource.c:857 ../gio/gresource.c:874
-#: ../gio/gresource.c:998 ../gio/gresource.c:1070 ../gio/gresource.c:1143
-#: ../gio/gresource.c:1213 ../gio/gresourcefile.c:453
-#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713
+#: ../gio/gresolver.c:729 ../gio/gresolver.c:781
+#| msgid "Invalid hostname"
+msgid "Invalid domain"
+msgstr "Dominio non válido"
+
+#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
+#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
+#: ../gio/gresource.c:1258 ../gio/gresourcefile.c:476
+#: ../gio/gresourcefile.c:599 ../gio/gresourcefile.c:736
#, c-format
msgid "The resource at “%s†does not exist"
msgstr "Non existe o recurso en «%s»"
-#: ../gio/gresource.c:771
+#: ../gio/gresource.c:786
#, c-format
msgid "The resource at “%s†failed to decompress"
msgstr "Produciuse un erro ao descomprimir o recurso en «%s»"
-#: ../gio/gresourcefile.c:709
+#: ../gio/gresourcefile.c:732
#, c-format
msgid "The resource at “%s†is not a directory"
msgstr "O recurso en «%s» non é un cartafol"
-#: ../gio/gresourcefile.c:917
+#: ../gio/gresourcefile.c:940
msgid "Input stream doesn’t implement seek"
msgstr "O fluxo de entrada non implementa seek"
@@ -3405,7 +3412,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:559 ../gio/gsettings-tool.c:656
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:685
msgid " COMMAND The (optional) command to explain\n"
msgstr " ORDE A orde que explicar (opcional)\n"
@@ -3439,7 +3446,7 @@ msgid " PATH A resource path\n"
msgstr " RUTA Unha ruta dun recurso\n"
#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:853
+#: ../gio/gsettings-tool.c:890
#, c-format
msgid "No such schema “%sâ€\n"
msgstr "Non existe o esquema «%s»\n"
@@ -3474,38 +3481,38 @@ 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:491
+#: ../gio/gsettings-tool.c:520
#, c-format
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:498
+#: ../gio/gsettings-tool.c:527
#, c-format
msgid "The key is not writable\n"
msgstr "Esta chave non é escribíbel\n"
-#: ../gio/gsettings-tool.c:534
+#: ../gio/gsettings-tool.c:563
msgid "List the installed (non-relocatable) schemas"
msgstr "Lista dos esquemas instalados (non reposicionábeis)"
-#: ../gio/gsettings-tool.c:540
+#: ../gio/gsettings-tool.c:569
msgid "List the installed relocatable schemas"
msgstr "Lista dos esquemas instalados reposicionábeis"
-#: ../gio/gsettings-tool.c:546
+#: ../gio/gsettings-tool.c:575
msgid "List the keys in SCHEMA"
msgstr "Lista das claves de ESQUEMA"
-#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
-#: ../gio/gsettings-tool.c:596
+#: ../gio/gsettings-tool.c:576 ../gio/gsettings-tool.c:582
+#: ../gio/gsettings-tool.c:625
msgid "SCHEMA[:PATH]"
msgstr "ESQUEMA[:RUTA]"
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:581
msgid "List the children of SCHEMA"
msgstr "Lista dos fillos do SCHEMA"
-#: ../gio/gsettings-tool.c:558
+#: ../gio/gsettings-tool.c:587
msgid ""
"List keys and values, recursively\n"
"If no SCHEMA is given, list all keys\n"
@@ -3513,50 +3520,50 @@ msgstr ""
"Lista as clave e valores, recursivamente\n"
"Se non se fornece un ESQUEMA, lista todas as claves\n"
-#: ../gio/gsettings-tool.c:560
+#: ../gio/gsettings-tool.c:589
msgid "[SCHEMA[:PATH]]"
msgstr "[ESQUEMA[:RUTA]]"
-#: ../gio/gsettings-tool.c:565
+#: ../gio/gsettings-tool.c:594
msgid "Get the value of KEY"
msgstr "Obtén o valor de CLAVE"
-#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
-#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
-#: ../gio/gsettings-tool.c:602
+#: ../gio/gsettings-tool.c:595 ../gio/gsettings-tool.c:601
+#: ../gio/gsettings-tool.c:607 ../gio/gsettings-tool.c:619
+#: ../gio/gsettings-tool.c:631
msgid "SCHEMA[:PATH] KEY"
msgstr "ESQUEMA[:RUTA] CLAVE"
-#: ../gio/gsettings-tool.c:571
+#: ../gio/gsettings-tool.c:600
msgid "Query the range of valid values for KEY"
msgstr "Consulta o intervalo de valores válidos de CLAVE"
-#: ../gio/gsettings-tool.c:577
+#: ../gio/gsettings-tool.c:606
msgid "Query the description for KEY"
msgstr "Consulta a descrición para a CLAVE"
-#: ../gio/gsettings-tool.c:583
+#: ../gio/gsettings-tool.c:612
msgid "Set the value of KEY to VALUE"
msgstr "Estabelece o valor de CLAVE a VALOR"
-#: ../gio/gsettings-tool.c:584
+#: ../gio/gsettings-tool.c:613
msgid "SCHEMA[:PATH] KEY VALUE"
msgstr "ESQUEMA[:RUTA] CLAVE VALOR"
-#: ../gio/gsettings-tool.c:589
+#: ../gio/gsettings-tool.c:618
msgid "Reset KEY to its default value"
msgstr "Estabelece a CLAVE ao seu valor predeterminado"
-#: ../gio/gsettings-tool.c:595
+#: ../gio/gsettings-tool.c:624
msgid "Reset all keys in SCHEMA to their defaults"
msgstr ""
"Restabelecer todas as claves nun ESQUEMA aos seus valores predeterminados"
-#: ../gio/gsettings-tool.c:601
+#: ../gio/gsettings-tool.c:630
msgid "Check if KEY is writable"
msgstr "Comproba se a CLAVE é escribíbel"
-#: ../gio/gsettings-tool.c:607
+#: ../gio/gsettings-tool.c:636
msgid ""
"Monitor KEY for changes.\n"
"If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3566,11 +3573,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:610
+#: ../gio/gsettings-tool.c:639
msgid "SCHEMA[:PATH] [KEY]"
msgstr "ESQUEMA[:RUTA] [CLAVE]"
-#: ../gio/gsettings-tool.c:622
+#: ../gio/gsettings-tool.c:651
msgid ""
"Usage:\n"
" gsettings --version\n"
@@ -3619,7 +3626,7 @@ msgstr ""
"Use 'gsettings help ORDE' para obter máis axuda.\n"
"\n"
-#: ../gio/gsettings-tool.c:646
+#: ../gio/gsettings-tool.c:675
#, c-format
msgid ""
"Usage:\n"
@@ -3634,11 +3641,11 @@ msgstr ""
"%s\n"
"\n"
-#: ../gio/gsettings-tool.c:652
+#: ../gio/gsettings-tool.c:681
msgid " SCHEMADIR A directory to search for additional schemas\n"
msgstr " CARTAFOL_ESQUEMA: un directorio para buscar esquemas adicionais\n"
-#: ../gio/gsettings-tool.c:660
+#: ../gio/gsettings-tool.c:689
msgid ""
" SCHEMA The name of the schema\n"
" PATH The path, for relocatable schemas\n"
@@ -3646,180 +3653,213 @@ msgstr ""
" SCHEMA O nome do esquema\n"
" KEY A ruta, para os esquemas reposicionábeis\n"
-#: ../gio/gsettings-tool.c:665
+#: ../gio/gsettings-tool.c:694
msgid " KEY The (optional) key within the schema\n"
msgstr " KEY A clave (opcional) no esquema\n"
-#: ../gio/gsettings-tool.c:669
+#: ../gio/gsettings-tool.c:698
msgid " KEY The key within the schema\n"
msgstr " KEY A clave nun esquema\n"
-#: ../gio/gsettings-tool.c:673
+#: ../gio/gsettings-tool.c:702
msgid " VALUE The value to set\n"
msgstr " VALUE O valor a estabelecer\n"
-#: ../gio/gsettings-tool.c:728
+#: ../gio/gsettings-tool.c:757
#, 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:740
+#: ../gio/gsettings-tool.c:769
#, c-format
msgid "No schemas installed\n"
msgstr "Non hai esquemas instalados\n"
-#: ../gio/gsettings-tool.c:811
+#: ../gio/gsettings-tool.c:848
#, c-format
msgid "Empty schema name given\n"
msgstr "Forneceuse un nome de esquema baleiro\n"
-#: ../gio/gsettings-tool.c:866
+#: ../gio/gsettings-tool.c:903
#, c-format
msgid "No such key “%sâ€\n"
msgstr "Non existe a clave «%s»\n"
-#: ../gio/gsocket.c:379
+#: ../gio/gsocket.c:384
msgid "Invalid socket, not initialized"
msgstr "O socket non é válido, non se inicializou"
-#: ../gio/gsocket.c:386
+#: ../gio/gsocket.c:391
#, 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:394
+#: ../gio/gsocket.c:399
msgid "Socket is already closed"
msgstr "O fluxo de orixe xa está pechado"
-#: ../gio/gsocket.c:409 ../gio/gsocket.c:2765 ../gio/gsocket.c:3950
-#: ../gio/gsocket.c:4008
+#: ../gio/gsocket.c:414 ../gio/gsocket.c:3010 ../gio/gsocket.c:4220
+#: ../gio/gsocket.c:4278
msgid "Socket I/O timed out"
msgstr "Tempo de espera do Socket de E/S superado"
-#: ../gio/gsocket.c:541
+#: ../gio/gsocket.c:549
#, c-format
msgid "creating GSocket from fd: %s"
msgstr "creando o GSocket a partir de fd: %s"
-#: ../gio/gsocket.c:570 ../gio/gsocket.c:624 ../gio/gsocket.c:631
+#: ../gio/gsocket.c:578 ../gio/gsocket.c:632 ../gio/gsocket.c:639
#, c-format
msgid "Unable to create socket: %s"
msgstr "Non é posíbel crear o socket: %s"
-#: ../gio/gsocket.c:624
+#: ../gio/gsocket.c:632
msgid "Unknown family was specified"
msgstr "Especificouse unha familia descoñecida"
-#: ../gio/gsocket.c:631
+#: ../gio/gsocket.c:639
msgid "Unknown protocol was specified"
msgstr "Especificouse un protocolo descoñecido"
-#: ../gio/gsocket.c:1122
+#: ../gio/gsocket.c:1130
#, c-format
msgid "Cannot use datagram operations on a non-datagram socket."
msgstr ""
"Non é posíbel usar as operacions de datagramas nun socket que non é de "
"datagramas."
-#: ../gio/gsocket.c:1139
+#: ../gio/gsocket.c:1147
#, 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:1943
+#: ../gio/gsocket.c:1954
#, c-format
msgid "could not get local address: %s"
msgstr "non foi posíbel obter un enderezo local: %s"
-#: ../gio/gsocket.c:1986
+#: ../gio/gsocket.c:2000
#, c-format
msgid "could not get remote address: %s"
msgstr "non foi posíbel obter un enderezo remoto: %s"
-#: ../gio/gsocket.c:2052
+#: ../gio/gsocket.c:2066
#, c-format
msgid "could not listen: %s"
msgstr "non foi posíbel escoitar: %s"
-#: ../gio/gsocket.c:2151
+#: ../gio/gsocket.c:2168
#, c-format
msgid "Error binding to address: %s"
msgstr "Produciuse un erro ao conectar co enderezo: %s"
-#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
+#: ../gio/gsocket.c:2226 ../gio/gsocket.c:2263 ../gio/gsocket.c:2373
+#: ../gio/gsocket.c:2391 ../gio/gsocket.c:2461 ../gio/gsocket.c:2519
+#: ../gio/gsocket.c:2537
#, c-format
msgid "Error joining multicast group: %s"
msgstr "Produciuse un erro ao unirse ao grupo multicast: %s"
-#: ../gio/gsocket.c:2267 ../gio/gsocket.c:2304
+#: ../gio/gsocket.c:2227 ../gio/gsocket.c:2264 ../gio/gsocket.c:2374
+#: ../gio/gsocket.c:2392 ../gio/gsocket.c:2462 ../gio/gsocket.c:2520
+#: ../gio/gsocket.c:2538
#, c-format
msgid "Error leaving multicast group: %s"
msgstr "Produciuse un erro ao deixar o grupo multicast: %s"
-#: ../gio/gsocket.c:2268
+#: ../gio/gsocket.c:2228
msgid "No support for source-specific multicast"
msgstr "Non se admite o multicast específico da fonte"
-#: ../gio/gsocket.c:2488
+#: ../gio/gsocket.c:2375
+#| msgid "Unsupported socket address"
+msgid "Unsupported socket family"
+msgstr "Familia de socket non admitida"
+
+#: ../gio/gsocket.c:2393
+msgid "source-specific not an IPv4 address"
+msgstr "o source-specific non é un enderezo IPv4"
+
+#: ../gio/gsocket.c:2411 ../gio/gsocket.c:2440 ../gio/gsocket.c:2487
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Interface non atopada: %s"
+
+#: ../gio/gsocket.c:2427
+#, c-format
+msgid "Interface name too long"
+msgstr "Nome da interface demasiado larga"
+
+#: ../gio/gsocket.c:2463
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv4 source-specific multicast"
+msgstr "Non se admite o multicast IPv4 específico da fonte"
+
+#: ../gio/gsocket.c:2521
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv6 source-specific multicast"
+msgstr "Non se admite o multicast IPv6 específico da fonte"
+
+#: ../gio/gsocket.c:2730
#, c-format
msgid "Error accepting connection: %s"
msgstr "Produciuse un erro ao aceptar a conexión: %s"
-#: ../gio/gsocket.c:2609
+#: ../gio/gsocket.c:2854
msgid "Connection in progress"
msgstr "Conexión en marcha"
-#: ../gio/gsocket.c:2658
+#: ../gio/gsocket.c:2903
msgid "Unable to get pending error: "
msgstr "Non é posíbel obter o erro pendente:"
-#: ../gio/gsocket.c:2828
+#: ../gio/gsocket.c:3073
#, c-format
msgid "Error receiving data: %s"
msgstr "Produciuse un erro ao recibir datos: %s"
-#: ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3268
#, c-format
msgid "Error sending data: %s"
msgstr "Produciuse un erro ao enviar datos: %s"
-#: ../gio/gsocket.c:3210
+#: ../gio/gsocket.c:3455
#, c-format
msgid "Unable to shutdown socket: %s"
msgstr "Non é posíbel desconectar o socket: %s"
-#: ../gio/gsocket.c:3291
+#: ../gio/gsocket.c:3536
#, c-format
msgid "Error closing socket: %s"
msgstr "Produciuse un erro ao pechar o socket: %s"
-#: ../gio/gsocket.c:3943
+#: ../gio/gsocket.c:4213
#, c-format
msgid "Waiting for socket condition: %s"
msgstr "Agardando pola situación do socket: %s"
-#: ../gio/gsocket.c:4417 ../gio/gsocket.c:4497 ../gio/gsocket.c:4675
+#: ../gio/gsocket.c:4687 ../gio/gsocket.c:4767 ../gio/gsocket.c:4945
#, c-format
msgid "Error sending message: %s"
msgstr "Produciuse un erro ao enviar a mensaxe: %s"
-#: ../gio/gsocket.c:4441
+#: ../gio/gsocket.c:4711
msgid "GSocketControlMessage not supported on Windows"
msgstr "O GSocketControlMessage non está permitido en Windows"
-#: ../gio/gsocket.c:4894 ../gio/gsocket.c:4967 ../gio/gsocket.c:5193
+#: ../gio/gsocket.c:5164 ../gio/gsocket.c:5237 ../gio/gsocket.c:5463
#, c-format
msgid "Error receiving message: %s"
msgstr "Produciuse un erro ao recibir a mensaxe: %s"
-#: ../gio/gsocket.c:5465
+#: ../gio/gsocket.c:5735
#, c-format
msgid "Unable to read socket credentials: %s"
msgstr "Non é posíbel ler as credenciais do socket: %s"
-#: ../gio/gsocket.c:5474
+#: ../gio/gsocket.c:5744
msgid "g_socket_get_credentials not implemented for this OS"
msgstr ""
"g_socket_get_credentials non está implementado para este sistema operativo"
@@ -3965,18 +4005,18 @@ 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:550 ../gio/gthreadedresolver.c:630
-#: ../gio/gthreadedresolver.c:728 ../gio/gthreadedresolver.c:778
+#: ../gio/gthreadedresolver.c:549 ../gio/gthreadedresolver.c:628
+#: ../gio/gthreadedresolver.c:726 ../gio/gthreadedresolver.c:776
#, 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:555 ../gio/gthreadedresolver.c:733
+#: ../gio/gthreadedresolver.c:554 ../gio/gthreadedresolver.c:731
#, c-format
msgid "Temporarily unable to resolve “%sâ€"
msgstr "Non é posíbel resolver temporalmente «%s»"
-#: ../gio/gthreadedresolver.c:560 ../gio/gthreadedresolver.c:738
+#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
#, c-format
msgid "Error resolving “%sâ€"
msgstr "Produciuse un erro ao resolver «%s»"
@@ -4088,7 +4128,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:2430 ../gio/gunixmounts.c:2483
+#: ../gio/gunixmounts.c:2556 ../gio/gunixmounts.c:2609
msgid "Filesystem root"
msgstr "Raíz do sistema de ficheiros"
@@ -4193,93 +4233,108 @@ msgstr "Etiqueta «%s» inesperada, esperábase a etiqueta «%s»"
msgid "Unexpected tag “%s†inside “%sâ€"
msgstr "Etiqueta «%s» inesperada dentro de «%s»"
-#: ../glib/gbookmarkfile.c:1756
+#: ../glib/gbookmarkfile.c:1757
msgid "No valid bookmark file found in data dirs"
msgstr ""
"Non foi posíbel atopar un ficheiro de marcadores válido nos directorios de "
"datos"
-#: ../glib/gbookmarkfile.c:1957
+#: ../glib/gbookmarkfile.c:1958
#, c-format
msgid "A bookmark for URI “%s†already exists"
msgstr "Xa existe un marcador para o URI «%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
+#: ../glib/gbookmarkfile.c:2004 ../glib/gbookmarkfile.c:2162
+#: ../glib/gbookmarkfile.c:2247 ../glib/gbookmarkfile.c:2327
+#: ../glib/gbookmarkfile.c:2412 ../glib/gbookmarkfile.c:2495
+#: ../glib/gbookmarkfile.c:2573 ../glib/gbookmarkfile.c:2652
+#: ../glib/gbookmarkfile.c:2694 ../glib/gbookmarkfile.c:2791
+#: ../glib/gbookmarkfile.c:2912 ../glib/gbookmarkfile.c:3102
+#: ../glib/gbookmarkfile.c:3178 ../glib/gbookmarkfile.c:3346
+#: ../glib/gbookmarkfile.c:3435 ../glib/gbookmarkfile.c:3524
+#: ../glib/gbookmarkfile.c:3640
#, c-format
msgid "No bookmark found for URI “%sâ€"
msgstr "Non se atopou ningún marcador para o URI «%s»"
-#: ../glib/gbookmarkfile.c:2335
+#: ../glib/gbookmarkfile.c:2336
#, c-format
msgid "No MIME type defined in the bookmark for URI “%sâ€"
msgstr "Non hai ningún tipo MIME definido no marcador para o URI «%s»"
-#: ../glib/gbookmarkfile.c:2420
+#: ../glib/gbookmarkfile.c:2421
#, c-format
msgid "No private flag has been defined in bookmark for URI “%sâ€"
msgstr "Non se definiu ningún parámetro privado no marcador para o URI «%s»"
-#: ../glib/gbookmarkfile.c:2799
+#: ../glib/gbookmarkfile.c:2800
#, c-format
msgid "No groups set in bookmark for URI “%sâ€"
msgstr "Non existe ningún grupo definido no marcador para o URI «%s»"
-#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
+#: ../glib/gbookmarkfile.c:3199 ../glib/gbookmarkfile.c:3356
#, c-format
msgid "No application with name “%s†registered a bookmark for “%sâ€"
msgstr "Ningún aplicativo denominado «%s» rexistrou un marcador para «%s»"
-#: ../glib/gbookmarkfile.c:3377
+#: ../glib/gbookmarkfile.c:3379
#, c-format
msgid "Failed to expand exec line “%s†with URI “%sâ€"
msgstr "Produciuse un erro ao expandir a liña executábel «%s» co URI «%s»"
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
+#: ../glib/gconvert.c:471
+#| msgid "Invalid sequence in conversion input"
+msgid "Unrepresentable character in conversion input"
+msgstr "Caracter non representábel na entrada da conversión"
+
+#: ../glib/gconvert.c:498 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
msgid "Partial character sequence at end of input"
msgstr "Hai unha secuencia de carácter parcial ao final da entrada"
-#: ../glib/gconvert.c:742
+#: ../glib/gconvert.c:763
#, c-format
msgid "Cannot convert fallback “%s†to codeset “%sâ€"
msgstr ""
"Non é posíbel converter o modo de emerxencia «%s» na codificación de "
"caracteres «%s»"
-#: ../glib/gconvert.c:1513
+#: ../glib/gconvert.c:934
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "Byte NUL incrustado na entrada de conversión"
+
+#: ../glib/gconvert.c:955
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "Byte NUL incrustado na saída de conversión"
+
+#: ../glib/gconvert.c:1640
#, c-format
msgid "The URI “%s†is not an absolute URI using the “file†scheme"
msgstr "O URI «%s» non é un URI absoluto usando o esquema «file»"
-#: ../glib/gconvert.c:1523
+#: ../glib/gconvert.c:1650
#, c-format
msgid "The local file URI “%s†may not include a “#â€"
msgstr "O URI do ficheiro local «%s» non pode incluír un «#»"
-#: ../glib/gconvert.c:1540
+#: ../glib/gconvert.c:1667
#, c-format
msgid "The URI “%s†is invalid"
msgstr "O URI «%s» non é válido"
-#: ../glib/gconvert.c:1552
+#: ../glib/gconvert.c:1679
#, c-format
msgid "The hostname of the URI “%s†is invalid"
msgstr "O nome de host do URI «%s» non é válido"
-#: ../glib/gconvert.c:1568
+#: ../glib/gconvert.c:1695
#, c-format
msgid "The URI “%s†contains invalidly escaped characters"
msgstr "O URI «%s» contén caracteres de escape non válidos"
-#: ../glib/gconvert.c:1640
+#: ../glib/gconvert.c:1767
#, c-format
msgid "The pathname “%s†is not an absolute path"
msgstr "O nome da ruta «%s» non é un camiño absoluto"
@@ -4515,120 +4570,120 @@ msgstr "PM"
msgid "Error opening directory “%sâ€: %s"
msgstr "Produciuse un erro ao abrir o directorio «%s»: %s"
-#: ../glib/gfileutils.c:706 ../glib/gfileutils.c:798
+#: ../glib/gfileutils.c:716 ../glib/gfileutils.c:808
#, 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:723
+#: ../glib/gfileutils.c:733
#, c-format
msgid "Error reading file “%sâ€: %s"
msgstr "Produciuse un erro ao ler o ficheiro «%s»: %s"
-#: ../glib/gfileutils.c:759
+#: ../glib/gfileutils.c:769
#, c-format
msgid "File “%s†is too large"
msgstr "O ficheiro «%s» é demasiado grande"
-#: ../glib/gfileutils.c:823
+#: ../glib/gfileutils.c:833
#, c-format
msgid "Failed to read from file “%sâ€: %s"
msgstr "Produciuse un erro ao ler desde o ficheiro «%s»: %s"
-#: ../glib/gfileutils.c:871 ../glib/gfileutils.c:943
+#: ../glib/gfileutils.c:881 ../glib/gfileutils.c:953
#, c-format
msgid "Failed to open file “%sâ€: %s"
msgstr "Produciuse un erro ao abrir o ficheiro «%s»: %s"
-#: ../glib/gfileutils.c:883
+#: ../glib/gfileutils.c:893
#, 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:913
+#: ../glib/gfileutils.c:923
#, 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:1012
+#: ../glib/gfileutils.c:1022
#, 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:1047 ../glib/gfileutils.c:1554
+#: ../glib/gfileutils.c:1057 ../glib/gfileutils.c:1564
#, c-format
msgid "Failed to create file “%sâ€: %s"
msgstr "Produciuse un erro ao crear o ficheiro «%s»: %s"
-#: ../glib/gfileutils.c:1074
+#: ../glib/gfileutils.c:1084
#, 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:1117
+#: ../glib/gfileutils.c:1127
#, 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:1241
+#: ../glib/gfileutils.c:1251
#, 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:1520
+#: ../glib/gfileutils.c:1530
#, 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:1533
+#: ../glib/gfileutils.c:1543
#, c-format
msgid "Template “%s†doesn’t contain XXXXXX"
msgstr "O modelo «%s» non contén XXXXXX"
-#: ../glib/gfileutils.c:2058
+#: ../glib/gfileutils.c:2105
#, c-format
msgid "Failed to read the symbolic link “%sâ€: %s"
msgstr "Produciuse un erro ao ler a ligazón simbólica «%s»: %s"
-#: ../glib/giochannel.c:1388
+#: ../glib/giochannel.c:1389
#, c-format
msgid "Could not open converter from “%s†to “%sâ€: %s"
msgstr "Non foi posíbel abrir o conversor de «%s» a «%s»: %s"
-#: ../glib/giochannel.c:1733
+#: ../glib/giochannel.c:1734
msgid "Can’t do a raw read in g_io_channel_read_line_string"
msgstr ""
"Non é posíbel facer unha lectura en bruto en g_io_channel_read_line_string"
-#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038
-#: ../glib/giochannel.c:2125
+#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039
+#: ../glib/giochannel.c:2126
msgid "Leftover unconverted data in read buffer"
msgstr "Datos restantes non convertidos no búfer de lectura"
-#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938
+#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
msgid "Channel terminates in a partial character"
msgstr "O canal termina nun carácter parcial"
-#: ../glib/giochannel.c:1924
+#: ../glib/giochannel.c:1925
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:736
+#: ../glib/gkeyfile.c:788
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:773
+#: ../glib/gkeyfile.c:825
msgid "Not a regular file"
msgstr "Non é un ficheiro normal"
-#: ../glib/gkeyfile.c:1218
+#: ../glib/gkeyfile.c:1270
#, c-format
msgid ""
"Key file contains line “%s†which is not a key-value pair, group, or comment"
@@ -4636,43 +4691,43 @@ msgstr ""
"O ficheiro clave contén a liña «%s» que non é un par valor-clave, grupo ou "
"comentario"
-#: ../glib/gkeyfile.c:1275
+#: ../glib/gkeyfile.c:1327
#, c-format
msgid "Invalid group name: %s"
msgstr "Nome de grupo non válido: %s"
-#: ../glib/gkeyfile.c:1297
+#: ../glib/gkeyfile.c:1349
msgid "Key file does not start with a group"
msgstr "O ficheiro clave non comeza cun grupo"
-#: ../glib/gkeyfile.c:1323
+#: ../glib/gkeyfile.c:1375
#, c-format
msgid "Invalid key name: %s"
msgstr "Nome de clave non válido: %s"
-#: ../glib/gkeyfile.c:1350
+#: ../glib/gkeyfile.c:1402
#, c-format
msgid "Key file contains unsupported encoding “%sâ€"
msgstr "O ficheiro clave contén unha codificación non permitida «%s»"
-#: ../glib/gkeyfile.c:1593 ../glib/gkeyfile.c:1766 ../glib/gkeyfile.c:3146
-#: ../glib/gkeyfile.c:3209 ../glib/gkeyfile.c:3339 ../glib/gkeyfile.c:3469
-#: ../glib/gkeyfile.c:3613 ../glib/gkeyfile.c:3842 ../glib/gkeyfile.c:3909
+#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3206
+#: ../glib/gkeyfile.c:3269 ../glib/gkeyfile.c:3399 ../glib/gkeyfile.c:3529
+#: ../glib/gkeyfile.c:3673 ../glib/gkeyfile.c:3902 ../glib/gkeyfile.c:3969
#, c-format
msgid "Key file does not have group “%sâ€"
msgstr "O ficheiro clave non ten un grupo «%s»"
-#: ../glib/gkeyfile.c:1721
+#: ../glib/gkeyfile.c:1773
#, 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:1883 ../glib/gkeyfile.c:1999
+#: ../glib/gkeyfile.c:1935 ../glib/gkeyfile.c:2051
#, 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:1903 ../glib/gkeyfile.c:2019 ../glib/gkeyfile.c:2388
+#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2448
#, c-format
msgid ""
"Key file contains key “%s†which has a value that cannot be interpreted."
@@ -4680,7 +4735,7 @@ msgstr ""
"O ficheiro clave contén a clave «%s» que ten un valor que non é posíbel "
"interpretar."
-#: ../glib/gkeyfile.c:2606 ../glib/gkeyfile.c:2975
+#: ../glib/gkeyfile.c:2666 ../glib/gkeyfile.c:3035
#, c-format
msgid ""
"Key file contains key “%s†in group “%s†which has a value that cannot be "
@@ -4689,36 +4744,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:2684 ../glib/gkeyfile.c:2761
+#: ../glib/gkeyfile.c:2744 ../glib/gkeyfile.c:2821
#, 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:4149
+#: ../glib/gkeyfile.c:4209
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:4171
+#: ../glib/gkeyfile.c:4231
#, 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:4315
+#: ../glib/gkeyfile.c:4375
#, 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:4329
+#: ../glib/gkeyfile.c:4389
#, c-format
msgid "Integer value “%s†out of range"
msgstr "O valor enteiro «%s» está fóra do intervalo"
-#: ../glib/gkeyfile.c:4362
+#: ../glib/gkeyfile.c:4422
#, 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:4401
+#: ../glib/gkeyfile.c:4461
#, c-format
msgid "Value “%s†cannot be interpreted as a boolean."
msgstr "Non é posíbel interpretar o valor «%s» como un booleano."
@@ -5414,78 +5469,78 @@ msgstr ""
msgid "Text was empty (or contained only whitespace)"
msgstr "O texto estaba baleiro (ou só contiña espazos en branco)"
-#: ../glib/gspawn.c:250
+#: ../glib/gspawn.c:253
#, 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:394
+#: ../glib/gspawn.c:401
#, c-format
msgid "Unexpected error in select() reading data from a child process (%s)"
msgstr "Erro inesperado en select() ao ler datos dun proceso fillo (%s)"
-#: ../glib/gspawn.c:479
+#: ../glib/gspawn.c:486
#, c-format
msgid "Unexpected error in waitpid() (%s)"
msgstr "Erro inesperado en waitpid() (%s)"
-#: ../glib/gspawn.c:886 ../glib/gspawn-win32.c:1231
+#: ../glib/gspawn.c:897 ../glib/gspawn-win32.c:1231
#, c-format
msgid "Child process exited with code %ld"
msgstr "O proceso fillo rematou co código %ld"
-#: ../glib/gspawn.c:894
+#: ../glib/gspawn.c:905
#, c-format
msgid "Child process killed by signal %ld"
msgstr "O proceso fillo rematou polo sinal %ld"
-#: ../glib/gspawn.c:901
+#: ../glib/gspawn.c:912
#, c-format
msgid "Child process stopped by signal %ld"
msgstr "O proceso fillo detívose polo sinal %ld"
-#: ../glib/gspawn.c:908
+#: ../glib/gspawn.c:919
#, c-format
msgid "Child process exited abnormally"
msgstr "O proceso fillo rematou de forma anormal"
-#: ../glib/gspawn.c:1313 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
+#: ../glib/gspawn.c:1324 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
#, 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:1383
+#: ../glib/gspawn.c:1394
#, c-format
msgid "Failed to fork (%s)"
msgstr "Produciuse un erro ao facer fork (%s)"
-#: ../glib/gspawn.c:1532 ../glib/gspawn-win32.c:368
+#: ../glib/gspawn.c:1543 ../glib/gspawn-win32.c:368
#, c-format
msgid "Failed to change to directory “%s†(%s)"
msgstr "Produciuse un erro ao cambiar ao directorio «%s» (%s)"
-#: ../glib/gspawn.c:1542
+#: ../glib/gspawn.c:1553
#, c-format
msgid "Failed to execute child process “%s†(%s)"
msgstr "Produciuse un erro ao executar o proceso fillo «%s» (%s)"
-#: ../glib/gspawn.c:1552
+#: ../glib/gspawn.c:1563
#, c-format
msgid "Failed to redirect output or input of child process (%s)"
msgstr ""
"Produciuse un erro ao redireccionar a saída ou entrada do proceso fillo (%s)"
-#: ../glib/gspawn.c:1561
+#: ../glib/gspawn.c:1572
#, c-format
msgid "Failed to fork child process (%s)"
msgstr "Produciuse un erro ao facer fork ao proceso fillo (%s)"
-#: ../glib/gspawn.c:1569
+#: ../glib/gspawn.c:1580
#, c-format
msgid "Unknown error executing child process “%sâ€"
msgstr "Produciuse un erro descoñecido ao executar o proceso fillo «%s»"
-#: ../glib/gspawn.c:1593
+#: ../glib/gspawn.c:1604
#, c-format
msgid "Failed to read enough data from child pid pipe (%s)"
msgstr ""
@@ -5576,91 +5631,198 @@ msgstr "Secuencia non válida na entrada da conversión"
msgid "Character out of range for UTF-16"
msgstr "Carácter fóra de intervalo para UTF-16"
-#: ../glib/gutils.c:2149 ../glib/gutils.c:2176 ../glib/gutils.c:2282
+#: ../glib/gutils.c:2229
#, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u byte"
-msgstr[1] "%u bytes"
+msgid "%.1f kB"
+msgstr "%.1f kiB"
+
+#: ../glib/gutils.c:2230 ../glib/gutils.c:2436
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: ../glib/gutils.c:2231 ../glib/gutils.c:2441
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: ../glib/gutils.c:2232 ../glib/gutils.c:2446
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#: ../glib/gutils.c:2233 ../glib/gutils.c:2451
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: ../glib/gutils.c:2234 ../glib/gutils.c:2456
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
-#: ../glib/gutils.c:2155
+#: ../glib/gutils.c:2237
#, c-format
msgid "%.1f KiB"
msgstr "%.1f KiB"
-#: ../glib/gutils.c:2157
+#: ../glib/gutils.c:2238
#, c-format
msgid "%.1f MiB"
msgstr "%.1f MiB"
-#: ../glib/gutils.c:2160
+#: ../glib/gutils.c:2239
#, c-format
msgid "%.1f GiB"
msgstr "%.1f GiB"
-#: ../glib/gutils.c:2163
+#: ../glib/gutils.c:2240
#, c-format
msgid "%.1f TiB"
msgstr "%.1f TiB"
-#: ../glib/gutils.c:2166
+#: ../glib/gutils.c:2241
#, c-format
msgid "%.1f PiB"
msgstr "%.1f PiB"
-#: ../glib/gutils.c:2169
+#: ../glib/gutils.c:2242
#, c-format
msgid "%.1f EiB"
msgstr "%.1f EiB"
-#: ../glib/gutils.c:2182
+#: ../glib/gutils.c:2245
#, c-format
-msgid "%.1f kB"
-msgstr "%.1f kiB"
+#| msgid "%.1f kB"
+msgid "%.1f kb"
+msgstr "%.1f kb"
-#: ../glib/gutils.c:2185 ../glib/gutils.c:2300
+#: ../glib/gutils.c:2246
#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
+#| msgid "%.1f MB"
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
-#: ../glib/gutils.c:2188 ../glib/gutils.c:2305
+#: ../glib/gutils.c:2247
#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
+#| msgid "%.1f GB"
+msgid "%.1f Gb"
+msgstr "%.1f Gb"
-#: ../glib/gutils.c:2190 ../glib/gutils.c:2310
+#: ../glib/gutils.c:2248
#, c-format
-msgid "%.1f TB"
-msgstr "%.1f TB"
+#| msgid "%.1f TB"
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
-#: ../glib/gutils.c:2193 ../glib/gutils.c:2315
+#: ../glib/gutils.c:2249
#, c-format
-msgid "%.1f PB"
-msgstr "%.1f PB"
+#| msgid "%.1f PB"
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
-#: ../glib/gutils.c:2196 ../glib/gutils.c:2320
+#: ../glib/gutils.c:2250
#, c-format
-msgid "%.1f EB"
-msgstr "%.1f EB"
+#| msgid "%.1f EB"
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
+
+#: ../glib/gutils.c:2253
+#, c-format
+#| msgid "%.1f KiB"
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
+
+#: ../glib/gutils.c:2254
+#, c-format
+#| msgid "%.1f MiB"
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
+
+#: ../glib/gutils.c:2255
+#, c-format
+#| msgid "%.1f GiB"
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
+
+#: ../glib/gutils.c:2256
+#, c-format
+#| msgid "%.1f TiB"
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
+
+#: ../glib/gutils.c:2257
+#, c-format
+#| msgid "%.1f PiB"
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
+
+#: ../glib/gutils.c:2258
+#, c-format
+#| msgid "%.1f EiB"
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
+
+#: ../glib/gutils.c:2292 ../glib/gutils.c:2418
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u byte"
+msgstr[1] "%u bytes"
+
+#: ../glib/gutils.c:2296
+#, c-format
+#| msgid "%u byte"
+#| msgid_plural "%u bytes"
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u bit"
+msgstr[1] "%u bit"
#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2233
+#: ../glib/gutils.c:2363
#, c-format
msgid "%s byte"
msgid_plural "%s bytes"
msgstr[0] "%s byte"
msgstr[1] "%s bytes"
+#. Translators: the %s in "%s bits" will always be replaced by a number.
+#: ../glib/gutils.c:2368
+#, c-format
+#| msgid "%s byte"
+#| msgid_plural "%s bytes"
+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.
#. * Please translate as literally as possible.
#.
-#: ../glib/gutils.c:2295
+#: ../glib/gutils.c:2431
#, c-format
msgid "%.1f KB"
msgstr "%.1f KB"
+#~ msgid ""
+#~ "Message has %d file descriptors but the header field indicates %d file "
+#~ "descriptors"
+#~ msgstr ""
+#~ "A mensaxe ten %d descritores de ficheiro pero o campo da cabeceira indica "
+#~ "%d descritores de ficheiro"
+
+#~ msgid "Error: object path not specified.\n"
+#~ msgstr "Erro: non se especificou unha ruta de obxecto.\n"
+
+#~ msgid "Error: signal not specified.\n"
+#~ msgstr "Erro: non se especificou o sinal.\n"
+
+#~ msgid "Error: signal must be the fully-qualified name.\n"
+#~ msgstr "Erro: o sinal debe ser un nome cualificado completo.\n"
+
#~ msgid "No such interface"
#~ msgstr "Non existe a interface"
diff --git a/po/hu.po b/po/hu.po
index 8a0fd5709..7c7cf9726 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,19 +1,19 @@
# Hungarian translation for glib.
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016. Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018. Free Software Foundation, Inc.
# This file is distributed under the same license as the glib package.
#
# Szabolcs Varga <shirokuma at shirokuma dot hu>, 2005.
# Gabor Kelemen <kelemeng at gnome dot hu>, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017.
-# Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2015, 2016.
-# Balázs Meskó <meskobalazs at fedoraproject dot org>, 2017.
+# Balázs Úr <urbalazs at gmail dot com>, 2013, 2014, 2015, 2016, 2018.
+# Balázs Meskó <meskobalazs at fedoraproject dot org>, 2017, 2018.
msgid ""
msgstr ""
"Project-Id-Version: glib master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2017-08-03 15:40+0000\n"
-"PO-Revision-Date: 2017-08-18 10:30+0200\n"
-"Last-Translator: Gabor Kelemen <kelemeng at ubuntu dot com>\n"
+"POT-Creation-Date: 2018-01-19 12:11+0000\n"
+"PO-Revision-Date: 2018-01-21 21:59+0100\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <openscope at googlegroups dot com>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
@@ -21,30 +21,30 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Loco-Source-Locale: de_AT\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 1.2\n"
"X-Loco-Parser: loco_parse_po\n"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "GApplication options"
msgstr "GApplication kapcsolói"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "Show GApplication options"
msgstr "A GApplication kapcsolóinak megjelenítése"
-#: ../gio/gapplication.c:535
+#: ../gio/gapplication.c:540
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:547
+#: ../gio/gapplication.c:552
msgid "Override the application’s ID"
msgstr "Alkalmazások azonosítójának felülbírálása"
#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:522
+#: ../gio/gsettings-tool.c:551
msgid "Print help"
msgstr "Súgó kiírása"
@@ -57,7 +57,7 @@ msgstr "[PARANCS]"
msgid "Print version"
msgstr "Verzió kiírása"
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:557
msgid "Print version information and exit"
msgstr "Verzióinformációk kiírása és kilépés"
@@ -89,7 +89,7 @@ msgstr "Egy művelet aktiválása"
#: ../gio/gapplication-tool.c:60
msgid "Invoke an action on the application"
-msgstr "Művelet meghívása az alkalmazáson."
+msgstr "Művelet meghívása az alkalmazáson"
#: ../gio/gapplication-tool.c:61
msgid "APPID ACTION [PARAMETER]"
@@ -147,7 +147,7 @@ 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:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:614
+#: ../gio/gsettings-tool.c:643
#, c-format
msgid ""
"Unknown command %s\n"
@@ -161,7 +161,7 @@ msgid "Usage:\n"
msgstr "Használat:\n"
#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:649
+#: ../gio/gsettings-tool.c:678
msgid "Arguments:\n"
msgstr "Argumentumok:\n"
@@ -211,7 +211,7 @@ msgstr ""
#: ../gio/gapplication-tool.c:266
#, c-format
msgid "unable to connect to D-Bus: %s\n"
-msgstr "Nem sikerült kapcsolódni a D-Bushoz: %s\n"
+msgstr "nem sikerült kapcsolódni a D-Bushoz: %s\n"
#: ../gio/gapplication-tool.c:286
#, c-format
@@ -290,8 +290,8 @@ msgid "Truncate not supported on base stream"
msgstr "Az alap adatfolyam csonkítása nem engedélyezett"
#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:870
-#: ../gio/gsimpleasyncresult.c:896
+#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
+#: ../gio/gsimpleasyncresult.c:897
#, c-format
msgid "Operation was cancelled"
msgstr "A művelet megszakítva"
@@ -309,29 +309,29 @@ msgid "Not enough space in destination"
msgstr "Nincs elég hely a célon"
#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:438 ../glib/gconvert.c:845
-#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
-#: ../glib/giochannel.c:2442 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
+#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:437 ../glib/gconvert.c:855
+#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
+#: ../glib/giochannel.c:2443 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
msgid "Invalid byte sequence in conversion input"
msgstr "Érvénytelen bájtsorrend az átalakítás bemenetében"
-#: ../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:445 ../glib/gconvert.c:769
+#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
#, c-format
msgid "Error during conversion: %s"
msgstr "Hiba az átalakításkor: %s"
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1096
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
msgid "Cancellable initialization not supported"
msgstr "A megszakítható előkészítés nem támogatott"
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:321
-#: ../glib/giochannel.c:1384
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:320
+#: ../glib/giochannel.c:1385
#, c-format
msgid "Conversion from character set “%s†to “%s†is not supported"
msgstr "A(z) „%s†és „%s†karakterkészletek közötti átalakítás nem támogatott"
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:325
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:324
#, c-format
msgid "Could not open converter from “%s†to “%sâ€"
msgstr ""
@@ -420,7 +420,7 @@ msgid ""
"“%sâ€"
msgstr ""
"Hiba a(z) „%3$s†címelemben található a(z) %1$d. kulcspárban lévő „%2$s†"
-"kulcs vagy érték értelmezésekor."
+"kulcs vagy érték értelmezésekor"
#: ../gio/gdbusaddress.c:573
#, c-format
@@ -529,7 +529,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:1657 ../gio/gdbusconnection.c:7155
+#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7158
msgid ""
"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
"variable is not set"
@@ -558,7 +558,7 @@ msgstr ""
"Minden elérhető hitelesítési mechanizmus kimerítve (próbálva: %s, elérhető: "
"%s)"
-#: ../gio/gdbusauth.c:1174
+#: ../gio/gdbusauth.c:1171
msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
msgstr ""
"Megszakítva a GDBusAuthObserver::authorize-authenticated-peer használatával"
@@ -586,12 +586,12 @@ msgstr "Hiba a(z) %s könyvtár létrehozásakor: %s"
msgid "Error opening keyring “%s†for reading: "
msgstr "Hiba a(z) „%s†kulcstartó megnyitásakor olvasásra: "
-#: ../gio/gdbusauthmechanismsha1.c:403 ../gio/gdbusauthmechanismsha1.c:721
+#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:720
#, 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:417 ../gio/gdbusauthmechanismsha1.c:735
+#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:734
#, c-format
msgid ""
"First token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -599,7 +599,7 @@ msgstr ""
"A(z) „%2$s†kulcstartó „%3$s†tartalmú „%1$dâ€. sorának elsÅ‘ egysége rosszul "
"formázott"
-#: ../gio/gdbusauthmechanismsha1.c:432 ../gio/gdbusauthmechanismsha1.c:749
+#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:748
#, c-format
msgid ""
"Second token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -607,7 +607,7 @@ msgstr ""
"A(z) „%2$s†kulcstartó „%3$s†tartalmú „%1$dâ€. sorának második egysége "
"rosszul formázott"
-#: ../gio/gdbusauthmechanismsha1.c:456
+#: ../gio/gdbusauthmechanismsha1.c:454
#, 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 â€"
@@ -617,27 +617,27 @@ msgstr "Nem található %d azonosítójú süti a kulcstartóban itt: „%s â€"
msgid "Error deleting stale lock file “%sâ€: %s"
msgstr "Hiba az elavult „%s†zárolásfájl törlésekor: %s"
-#: ../gio/gdbusauthmechanismsha1.c:569
+#: ../gio/gdbusauthmechanismsha1.c:568
#, 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:600
+#: ../gio/gdbusauthmechanismsha1.c:599
#, 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:611
+#: ../gio/gdbusauthmechanismsha1.c:610
#, 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:688
+#: ../gio/gdbusauthmechanismsha1.c:687
#, c-format
msgid "Error opening keyring “%s†for writing: "
msgstr "Hiba a(z) „%s†kulcstartó írásra való megnyitásakor: "
-#: ../gio/gdbusauthmechanismsha1.c:885
+#: ../gio/gdbusauthmechanismsha1.c:883
#, 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) "
@@ -661,7 +661,7 @@ msgstr ""
msgid ""
"No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
msgstr ""
-"Nincs „org.freedesktop.DBus.Properties†felület a(z) %s útvonalon lévő "
+"Nincs „org.freedesktop.DBus.Properties†interfész a(z) %s útvonalon lévő "
"objektumon"
#: ../gio/gdbusconnection.c:4266
@@ -687,15 +687,15 @@ msgstr ""
"érkezett"
#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
-#: ../gio/gdbusconnection.c:6586
+#: ../gio/gdbusconnection.c:6589
#, c-format
msgid "No such interface '%s'"
-msgstr "Nincs „%s†felület"
+msgstr "Nincs ilyen interfész: „%sâ€"
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7095
+#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7098
#, c-format
msgid "No such interface '%s' on object at path %s"
-msgstr "Nincs „%s†felület a(z) %s útvonalon lévő objektumon"
+msgstr "Nincs „%s†interfész a(z) %s útvonalon lévő objektumon"
#: ../gio/gdbusconnection.c:4938
#, c-format
@@ -710,7 +710,7 @@ msgstr "Az üzenet „%s†típusa nem felel meg a várt „%s†típusnak"
#: ../gio/gdbusconnection.c:5167
#, c-format
msgid "An object is already exported for the interface %s at %s"
-msgstr "Már exportálva van egy objektum a(z) %s felülethez itt: %s"
+msgstr "Már exportálva van egy objektum a(z) %s interfészhez itt: %s"
#: ../gio/gdbusconnection.c:5393
#, c-format
@@ -727,17 +727,17 @@ msgstr "Nem sikerült beállítani a tulajdonságot: %s.%s"
msgid "Method '%s' returned type '%s', but expected '%s'"
msgstr "A metódus („%sâ€) a(z) „%s†típust adta vissza a várt „%s†helyett"
-#: ../gio/gdbusconnection.c:6697
+#: ../gio/gdbusconnection.c:6700
#, c-format
msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
-msgstr "A metódus („%sâ€) nem létezik a(z) „%s†felületen „%s†aláírással"
+msgstr "A(z) „%s†metódus nem létezik a(z) „%s†interfészen „%s†aláírással"
-#: ../gio/gdbusconnection.c:6818
+#: ../gio/gdbusconnection.c:6821
#, c-format
msgid "A subtree is already exported for %s"
msgstr "Egy részfa már exportálva van a következőhöz: %s"
-#: ../gio/gdbusconnection.c:7146
+#: ../gio/gdbusconnection.c:7149
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -804,17 +804,17 @@ 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:1589
+#: ../gio/gdbusmessage.c:1593
#, 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:1611
+#: ../gio/gdbusmessage.c:1615
#, 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:1658
+#: ../gio/gdbusmessage.c:1662
#, c-format
msgid ""
"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -825,7 +825,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:1678
+#: ../gio/gdbusmessage.c:1682
#, c-format
msgid ""
"Encountered array of type “a%câ€, expected to have a length a multiple of %u "
@@ -834,19 +834,19 @@ 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:1845
+#: ../gio/gdbusmessage.c:1849
#, 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:1869
+#: ../gio/gdbusmessage.c:1873
#, 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:2053
+#: ../gio/gdbusmessage.c:2055
#, c-format
msgid ""
"Invalid endianness value. Expected 0x6c (“lâ€) or 0x42 (“Bâ€) but found value "
@@ -855,40 +855,40 @@ 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:2066
+#: ../gio/gdbusmessage.c:2068
#, 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:2122
+#: ../gio/gdbusmessage.c:2124
#, 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:2136
+#: ../gio/gdbusmessage.c:2138
#, 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:2166
+#: ../gio/gdbusmessage.c:2168
#, 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:2176
+#: ../gio/gdbusmessage.c:2178
msgid "Cannot deserialize message: "
msgstr "Nem fejthető sorba az üzenet: "
-#: ../gio/gdbusmessage.c:2517
+#: ../gio/gdbusmessage.c:2519
#, 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:2654
+#: ../gio/gdbusmessage.c:2656
#, c-format
msgid ""
"Message has %d file descriptors but the header field indicates %d file "
@@ -896,16 +896,16 @@ msgid ""
msgstr ""
"Az üzenethez %d fájlleíró tartozik, de a fejlécmező %d fájlleírót jelez"
-#: ../gio/gdbusmessage.c:2662
+#: ../gio/gdbusmessage.c:2664
msgid "Cannot serialize message: "
msgstr "Az üzenet nem fejthető sorba: "
-#: ../gio/gdbusmessage.c:2706
+#: ../gio/gdbusmessage.c:2708
#, 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:2716
+#: ../gio/gdbusmessage.c:2718
#, c-format
msgid ""
"Message body has type signature “%s†but signature in the header field is "
@@ -914,17 +914,17 @@ 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:2732
+#: ../gio/gdbusmessage.c:2734
#, 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:3285
+#: ../gio/gdbusmessage.c:3287
#, 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:3293
+#: ../gio/gdbusmessage.c:3295
msgid "Error return with empty body"
msgstr "Hiba került visszaadásra az üres törzzsel"
@@ -1000,229 +1000,233 @@ msgstr ""
"\n"
"Az egyes parancsok súgója a „%s PARANCS --help†kiadásával érhető el.\n"
-#: ../gio/gdbus-tool.c:165 ../gio/gdbus-tool.c:227 ../gio/gdbus-tool.c:299
-#: ../gio/gdbus-tool.c:323 ../gio/gdbus-tool.c:725 ../gio/gdbus-tool.c:1068
-#: ../gio/gdbus-tool.c:1510
+#: ../gio/gdbus-tool.c:167 ../gio/gdbus-tool.c:234 ../gio/gdbus-tool.c:306
+#: ../gio/gdbus-tool.c:330 ../gio/gdbus-tool.c:811 ../gio/gdbus-tool.c:1150
+#: ../gio/gdbus-tool.c:1592
#, c-format
msgid "Error: %s\n"
msgstr "Hiba: %s\n"
-#: ../gio/gdbus-tool.c:176 ../gio/gdbus-tool.c:240 ../gio/gdbus-tool.c:1526
+#: ../gio/gdbus-tool.c:178 ../gio/gdbus-tool.c:247 ../gio/gdbus-tool.c:1608
#, c-format
msgid "Error parsing introspection XML: %s\n"
msgstr "Hiba a betekintési XML feldolgozásakor: %s\n"
-#: ../gio/gdbus-tool.c:209
+#: ../gio/gdbus-tool.c:216
#, c-format
msgid "Error: %s is not a valid name\n"
msgstr "Hiba: a(z) %s nem érvényes név\n"
-#: ../gio/gdbus-tool.c:357
+#: ../gio/gdbus-tool.c:364
msgid "Connect to the system bus"
msgstr "Csatlakozás a rendszerbuszhoz"
-#: ../gio/gdbus-tool.c:358
+#: ../gio/gdbus-tool.c:365
msgid "Connect to the session bus"
msgstr "Csatlakozás a munkamenetbuszhoz"
-#: ../gio/gdbus-tool.c:359
+#: ../gio/gdbus-tool.c:366
msgid "Connect to given D-Bus address"
msgstr "Csatlakozás a megadott D-Bus címhez"
-#: ../gio/gdbus-tool.c:369
+#: ../gio/gdbus-tool.c:376
msgid "Connection Endpoint Options:"
msgstr "Kapcsolatvégpont beállításai:"
-#: ../gio/gdbus-tool.c:370
+#: ../gio/gdbus-tool.c:377
msgid "Options specifying the connection endpoint"
msgstr "A kapcsolat végpontját megadó beállítások"
-#: ../gio/gdbus-tool.c:392
+#: ../gio/gdbus-tool.c:399
#, c-format
msgid "No connection endpoint specified"
msgstr "Nincs megadva kapcsolatvégpont"
-#: ../gio/gdbus-tool.c:402
+#: ../gio/gdbus-tool.c:409
#, c-format
msgid "Multiple connection endpoints specified"
msgstr "Több kapcsolatvégpontot adott meg"
-#: ../gio/gdbus-tool.c:472
+#: ../gio/gdbus-tool.c:479
#, c-format
msgid ""
"Warning: According to introspection data, interface “%s†does not exist\n"
msgstr ""
-"Figyelmeztetés: a betekintési adatok szerint a(z) „%s†felület nem létezik\n"
+"Figyelmeztetés: a betekintési adatok szerint a(z) „%s†interfész nem "
+"létezik\n"
-#: ../gio/gdbus-tool.c:481
+#: ../gio/gdbus-tool.c:488
#, c-format
msgid ""
"Warning: According to introspection data, method “%s†does not exist on "
"interface “%sâ€\n"
msgstr ""
-"Figyelmeztetés: a betekintési adatok szerint a felületen („%2$sâ€) nem "
+"Figyelmeztetés: a betekintési adatok szerint a(z) „%2$s†interfészen nem "
"létezik „%1$s†metódus\n"
-#: ../gio/gdbus-tool.c:543
+#: ../gio/gdbus-tool.c:550
msgid "Optional destination for signal (unique name)"
msgstr "A szignál elhagyható célja (egyedi név)"
-#: ../gio/gdbus-tool.c:544
+#: ../gio/gdbus-tool.c:551
msgid "Object path to emit signal on"
msgstr "Szignál kibocsátása ezen az objektumútvonalon"
-#: ../gio/gdbus-tool.c:545
+#: ../gio/gdbus-tool.c:552
msgid "Signal and interface name"
-msgstr "Szignál és felület neve"
+msgstr "Szignál és interfész neve"
-#: ../gio/gdbus-tool.c:579
+#: ../gio/gdbus-tool.c:587
msgid "Emit a signal."
msgstr "Szignál kibocsátása."
-#: ../gio/gdbus-tool.c:613 ../gio/gdbus-tool.c:858 ../gio/gdbus-tool.c:1616
-#: ../gio/gdbus-tool.c:1851 ../gio/gdbus-tool.c:2067
+#: ../gio/gdbus-tool.c:642 ../gio/gdbus-tool.c:944 ../gio/gdbus-tool.c:1698
+#: ../gio/gdbus-tool.c:1931 ../gio/gdbus-tool.c:2152
#, c-format
msgid "Error connecting: %s\n"
msgstr "Hiba a csatlakozáskor: %s\n"
-#: ../gio/gdbus-tool.c:625
+#: ../gio/gdbus-tool.c:659 ../gio/gdbus-tool.c:961 ../gio/gdbus-tool.c:1715
+#: ../gio/gdbus-tool.c:1956
#, c-format
-msgid "Error: object path not specified.\n"
-msgstr "Hiba: az objektumútvonal nincs megadva.\n"
+msgid "Error: Destination is not specified\n"
+msgstr "Hiba: a cél nincs megadva\n"
+
+#: ../gio/gdbus-tool.c:670
+#, c-format
+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:630 ../gio/gdbus-tool.c:925 ../gio/gdbus-tool.c:1681
-#: ../gio/gdbus-tool.c:1917
+#: ../gio/gdbus-tool.c:685 ../gio/gdbus-tool.c:987 ../gio/gdbus-tool.c:1741
+#, c-format
+msgid "Error: Object path is not specified\n"
+msgstr "Hiba: az objektumútvonal nincs megadva\n"
+
+#: ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1007 ../gio/gdbus-tool.c:1761
+#: ../gio/gdbus-tool.c:2002
#, c-format
msgid "Error: %s is not a valid object path\n"
msgstr "Hiba: a(z) %s nem érvényes objektumútvonal\n"
-#: ../gio/gdbus-tool.c:636
+#: ../gio/gdbus-tool.c:720
#, c-format
-msgid "Error: signal not specified.\n"
-msgstr "Hiba: a szignál nincs megadva.\n"
+#| msgid "Error: Method name is not specified\n"
+msgid "Error: Signal name is not specified\n"
+msgstr "Hiba: a szignálnév nincs megadva\n"
-#: ../gio/gdbus-tool.c:643
+#: ../gio/gdbus-tool.c:731
#, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr "Hiba: a szignálnak teljes képzésű névnek kell lennie.\n"
+#| msgid "Error: Method name “%s†is invalid\n"
+msgid "Error: Signal name “%s†is invalid\n"
+msgstr "Hiba: a szignálnév („%sâ€) érvénytelen\n"
-#: ../gio/gdbus-tool.c:651
+#: ../gio/gdbus-tool.c:743
#, c-format
msgid "Error: %s is not a valid interface name\n"
-msgstr "Hiba: a(z) %s nem érvényes felületnév\n"
+msgstr "Hiba: a(z) %s nem érvényes interfésznév\n"
-#: ../gio/gdbus-tool.c:657
+#: ../gio/gdbus-tool.c:749
#, c-format
msgid "Error: %s is not a valid member name\n"
msgstr "Hiba: a(z) %s nem érvényes tagnév\n"
-#: ../gio/gdbus-tool.c:663
-#, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "Hiba: a(z) %s nem érvényes egyedi busznév.\n"
-
#. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:700 ../gio/gdbus-tool.c:1037
+#: ../gio/gdbus-tool.c:786 ../gio/gdbus-tool.c:1119
#, c-format
msgid "Error parsing parameter %d: %s\n"
msgstr "Hiba a(z) %d. paraméter feldolgozásakor: %s\n"
-#: ../gio/gdbus-tool.c:732
+#: ../gio/gdbus-tool.c:818
#, c-format
msgid "Error flushing connection: %s\n"
msgstr "Hiba a kapcsolat kiürítésekor: %s\n"
-#: ../gio/gdbus-tool.c:759
+#: ../gio/gdbus-tool.c:845
msgid "Destination name to invoke method on"
msgstr "A cél neve a metódushíváshoz"
-#: ../gio/gdbus-tool.c:760
+#: ../gio/gdbus-tool.c:846
msgid "Object path to invoke method on"
msgstr "Objektum útvonala a metódushíváshoz"
-#: ../gio/gdbus-tool.c:761
+#: ../gio/gdbus-tool.c:847
msgid "Method and interface name"
-msgstr "Metódus és felület neve"
+msgstr "Metódus és interfész neve"
-#: ../gio/gdbus-tool.c:762
+#: ../gio/gdbus-tool.c:848
msgid "Timeout in seconds"
msgstr "Időkorlát másodpercben"
-#: ../gio/gdbus-tool.c:803
+#: ../gio/gdbus-tool.c:889
msgid "Invoke a method on a remote object."
msgstr "Metódus hívása távoli objektumon."
-#: ../gio/gdbus-tool.c:878 ../gio/gdbus-tool.c:1635 ../gio/gdbus-tool.c:1870
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr "Hiba: a cél nincs megadva\n"
-
-#: ../gio/gdbus-tool.c:890 ../gio/gdbus-tool.c:1652 ../gio/gdbus-tool.c:1882
+#: ../gio/gdbus-tool.c:972 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1967
#, 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:905 ../gio/gdbus-tool.c:1661
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "Hiba: az objektumútvonal nincs megadva\n"
-
-#: ../gio/gdbus-tool.c:940
+#: ../gio/gdbus-tool.c:1022
#, c-format
msgid "Error: Method name is not specified\n"
msgstr "Hiba: a metódusnév nincs megadva\n"
-#: ../gio/gdbus-tool.c:951
+#: ../gio/gdbus-tool.c:1033
#, c-format
msgid "Error: Method name “%s†is invalid\n"
msgstr "Hiba: a metódusnév („%sâ€) érvénytelen\n"
-#: ../gio/gdbus-tool.c:1029
+#: ../gio/gdbus-tool.c:1111
#, 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:1473
+#: ../gio/gdbus-tool.c:1555
msgid "Destination name to introspect"
msgstr "A cél neve a betekintéshez"
-#: ../gio/gdbus-tool.c:1474
+#: ../gio/gdbus-tool.c:1556
msgid "Object path to introspect"
msgstr "Az objektumútvonal a betekintéshez"
-#: ../gio/gdbus-tool.c:1475
+#: ../gio/gdbus-tool.c:1557
msgid "Print XML"
msgstr "XML kiírása"
-#: ../gio/gdbus-tool.c:1476
+#: ../gio/gdbus-tool.c:1558
msgid "Introspect children"
msgstr "Betekintés gyermekekbe"
-#: ../gio/gdbus-tool.c:1477
+#: ../gio/gdbus-tool.c:1559
msgid "Only print properties"
msgstr "Csak a tulajdonságok kiírása"
-#: ../gio/gdbus-tool.c:1568
+#: ../gio/gdbus-tool.c:1650
msgid "Introspect a remote object."
msgstr "Betekintés távoli objektumba."
-#: ../gio/gdbus-tool.c:1773
+#: ../gio/gdbus-tool.c:1853
msgid "Destination name to monitor"
msgstr "Megfigyelendő cél neve"
-#: ../gio/gdbus-tool.c:1774
+#: ../gio/gdbus-tool.c:1854
msgid "Object path to monitor"
msgstr "Megfigyelendő objektumútvonal"
-#: ../gio/gdbus-tool.c:1803
+#: ../gio/gdbus-tool.c:1883
msgid "Monitor a remote object."
msgstr "Távoli objektum megfigyelése."
-#: ../gio/gdbus-tool.c:1980
+#: ../gio/gdbus-tool.c:1941
+#, c-format
+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:2065
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:1983
+#: ../gio/gdbus-tool.c:2068
msgid ""
"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
"(default)"
@@ -1230,35 +1234,35 @@ 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:2031
+#: ../gio/gdbus-tool.c:2116
msgid "[OPTION…] BUS-NAME"
msgstr "[KAPCSOLÓ…] BUSZNÉV"
-#: ../gio/gdbus-tool.c:2033
+#: ../gio/gdbus-tool.c:2118
msgid "Wait for a bus name to appear."
msgstr "Várakozás egy busznévre."
-#: ../gio/gdbus-tool.c:2109
+#: ../gio/gdbus-tool.c:2194
#, c-format
msgid "Error: A service to activate for must be specified.\n"
msgstr "Hiba: az objektumútvonal nincs megadva.\n"
-#: ../gio/gdbus-tool.c:2114
+#: ../gio/gdbus-tool.c:2199
#, c-format
msgid "Error: A service to wait for must be specified.\n"
msgstr "Hiba: az objektumútvonal nincs megadva.\n"
-#: ../gio/gdbus-tool.c:2119
+#: ../gio/gdbus-tool.c:2204
#, c-format
msgid "Error: Too many arguments.\n"
msgstr "Hiba: Túl sok argumentum.\n"
-#: ../gio/gdbus-tool.c:2127 ../gio/gdbus-tool.c:2134
+#: ../gio/gdbus-tool.c:2212 ../gio/gdbus-tool.c:2219
#, 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:2001 ../gio/gdesktopappinfo.c:4533
+#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4566
msgid "Unnamed"
msgstr "Névtelen"
@@ -1266,31 +1270,31 @@ msgstr "Névtelen"
msgid "Desktop file didn’t specify Exec field"
msgstr "A desktop fájl nem adta meg az Exec mezőt"
-#: ../gio/gdesktopappinfo.c:2696
+#: ../gio/gdesktopappinfo.c:2701
msgid "Unable to find terminal required for application"
msgstr "Nem található az alkalmazáshoz szükséges terminál"
-#: ../gio/gdesktopappinfo.c:3129
+#: ../gio/gdesktopappinfo.c:3135
#, 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:3133
+#: ../gio/gdesktopappinfo.c:3139
#, 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:3373 ../gio/gdesktopappinfo.c:3397
+#: ../gio/gdesktopappinfo.c:3379 ../gio/gdesktopappinfo.c:3403
msgid "Application information lacks an identifier"
msgstr "Az alkalmazásinformációkból hiányzik az azonosító"
-#: ../gio/gdesktopappinfo.c:3631
+#: ../gio/gdesktopappinfo.c:3637
#, 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:3765
+#: ../gio/gdesktopappinfo.c:3771
#, c-format
msgid "Custom definition for %s"
msgstr "%s egyéni meghatározása"
@@ -1352,14 +1356,14 @@ msgstr "A GEmblemedIcon kódolásban a jelsorok száma (%d) hibásan formált"
msgid "Expected a GEmblem for GEmblemedIcon"
msgstr "Egy GEmblem kellene a GEmblemedIconhoz"
-#: ../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:3614 ../gio/gfile.c:3669
-#: ../gio/gfile.c:3905 ../gio/gfile.c:3947 ../gio/gfile.c:4415
-#: ../gio/gfile.c:4826 ../gio/gfile.c:4911 ../gio/gfile.c:5001
-#: ../gio/gfile.c:5098 ../gio/gfile.c:5185 ../gio/gfile.c:5286
-#: ../gio/gfile.c:7827 ../gio/gfile.c:7917 ../gio/gfile.c:8001
+#: ../gio/gfile.c:1071 ../gio/gfile.c:1309 ../gio/gfile.c:1447
+#: ../gio/gfile.c:1685 ../gio/gfile.c:1740 ../gio/gfile.c:1798
+#: ../gio/gfile.c:1882 ../gio/gfile.c:1939 ../gio/gfile.c:2003
+#: ../gio/gfile.c:2058 ../gio/gfile.c:3704 ../gio/gfile.c:3759
+#: ../gio/gfile.c:3995 ../gio/gfile.c:4037 ../gio/gfile.c:4505
+#: ../gio/gfile.c:4916 ../gio/gfile.c:5001 ../gio/gfile.c:5091
+#: ../gio/gfile.c:5188 ../gio/gfile.c:5275 ../gio/gfile.c:5376
+#: ../gio/gfile.c:7954 ../gio/gfile.c:8044 ../gio/gfile.c:8128
#: ../gio/win32/gwinhttpfile.c:437
msgid "Operation not supported"
msgstr "A művelet nem támogatott"
@@ -1368,69 +1372,69 @@ msgstr "A művelet nem támogatott"
#. * trying to find the enclosing (user visible)
#. * mount of a file, but none exists.
#.
-#: ../gio/gfile.c:1468
+#: ../gio/gfile.c:1570
msgid "Containing mount does not exist"
msgstr "A tartalmazó csatolás nem létezik"
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2377
+#: ../gio/gfile.c:2617 ../gio/glocalfile.c:2446
msgid "Can’t copy over directory"
msgstr "Nem lehet a könyvtárra másolni"
-#: ../gio/gfile.c:2575
+#: ../gio/gfile.c:2677
msgid "Can’t copy directory over directory"
msgstr "A könyvtár nem másolható könyvtárba"
-#: ../gio/gfile.c:2583
+#: ../gio/gfile.c:2685
msgid "Target file exists"
msgstr "A célfájl létezik"
-#: ../gio/gfile.c:2602
+#: ../gio/gfile.c:2704
msgid "Can’t recursively copy directory"
msgstr "A könyvtár nem másolható rekurzívan"
-#: ../gio/gfile.c:2889
+#: ../gio/gfile.c:2979
msgid "Splice not supported"
msgstr "A fájlillesztés nem támogatott"
-#: ../gio/gfile.c:2893
+#: ../gio/gfile.c:2983
#, c-format
msgid "Error splicing file: %s"
msgstr "Hiba a fájl illesztésekor: %s"
-#: ../gio/gfile.c:3025
+#: ../gio/gfile.c:3115
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:3029
+#: ../gio/gfile.c:3119
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:3034
+#: ../gio/gfile.c:3124
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:3097
+#: ../gio/gfile.c:3187
msgid "Can’t copy special file"
msgstr "A speciális fájl nem másolható"
-#: ../gio/gfile.c:3895
+#: ../gio/gfile.c:3985
msgid "Invalid symlink value given"
msgstr "Érvénytelen szimbolikus link érték került megadásra"
-#: ../gio/gfile.c:4056
+#: ../gio/gfile.c:4146
msgid "Trash not supported"
msgstr "A Kuka nem támogatott"
-#: ../gio/gfile.c:4168
+#: ../gio/gfile.c:4258
#, c-format
msgid "File names cannot contain “%câ€"
msgstr "A fájlnevek nem tartalmazhatnak „%c†karaktert"
-#: ../gio/gfile.c:6614 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6739 ../gio/gvolume.c:363
msgid "volume doesn’t implement mount"
msgstr "a kötet nem valósítja meg a csatolást"
-#: ../gio/gfile.c:6723
+#: ../gio/gfile.c:6848
msgid "No application is registered as handling this file"
msgstr "Nincs alkalmazás regisztrálva a fájl kezeléséhez"
@@ -1476,7 +1480,7 @@ msgid "Truncate not supported on stream"
msgstr "Az adatfolyam csonkítása nem engedélyezett"
#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1650
+#: ../glib/gconvert.c:1755
msgid "Invalid hostname"
msgstr "Érvénytelen gépnév"
@@ -1518,7 +1522,7 @@ msgstr "Nincs típus az osztálynévhez: %s"
#: ../gio/gicon.c:320
#, c-format
msgid "Type %s does not implement the GIcon interface"
-msgstr "A típus (%s) nem valósítja meg a GIcon felületet"
+msgstr "A(z) %s típus nem valósítja meg a GIcon interfészt"
#: ../gio/gicon.c:331
#, c-format
@@ -1534,7 +1538,7 @@ msgstr "Rosszul formált verziószám: %s"
#, c-format
msgid "Type %s does not implement from_tokens() on the GIcon interface"
msgstr ""
-"A típus (%s) nem valósítja meg a from_tokens() függvényt a GIcon felületen"
+"A(z) %s típus nem valósítja meg a from_tokens() függvényt a GIcon interfészen"
#: ../gio/gicon.c:461
msgid "Can’t handle the supplied version of the icon encoding"
@@ -1559,7 +1563,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:106 ../gio/gunixsocketaddress.c:218
+#: ../gio/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:218
msgid "Not enough space for socket address"
msgstr "Nincs elég hely a foglalat címének"
@@ -1679,27 +1683,27 @@ msgstr "A helyek tartalmának felsorolása egy fában"
msgid "Use %s to get detailed help.\n"
msgstr "Részletes segítségért adja ki a %s parancsot.\n"
-#: ../gio/gio-tool-cat.c:83
+#: ../gio/gio-tool-cat.c:87
msgid "Error writing to stdout"
msgstr "Hiba a szabványos kimenetre íráskor"
#. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:127 ../gio/gio-tool-info.c:282
+#: ../gio/gio-tool-cat.c:133 ../gio/gio-tool-info.c:282
#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
-#: ../gio/gio-tool-open.c:45 ../gio/gio-tool-remove.c:48
+#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
msgid "LOCATION"
msgstr "HELY"
-#: ../gio/gio-tool-cat.c:132
+#: ../gio/gio-tool-cat.c:138
msgid "Concatenate files and print to standard output."
msgstr "Fájlok összefűzése és kiírása a szabványos kimenetre."
-#: ../gio/gio-tool-cat.c:134
+#: ../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"
@@ -1709,9 +1713,9 @@ msgstr ""
"fájlok helyett GIO helyeket használ: megadható például helyként az\n"
"smb://kiszolgáló/erőforrás/fájl.txt."
-#: ../gio/gio-tool-cat.c:156 ../gio/gio-tool-info.c:313
+#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
-#: ../gio/gio-tool-open.c:71 ../gio/gio-tool-remove.c:72
+#: ../gio/gio-tool-open.c:139 ../gio/gio-tool-remove.c:72
msgid "No locations given"
msgstr "Nincsenek megadva helyek"
@@ -1752,7 +1756,7 @@ msgstr "FORRÃS"
#. Translators: commandline placeholder
#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
-#: ../gio/gio-tool-save.c:165
+#: ../gio/gio-tool-save.c:160
msgid "DESTINATION"
msgstr "CÉL"
@@ -1893,7 +1897,7 @@ msgid ""
"like smb://server/resource/file.txt as location. File attributes can\n"
"be specified with their GIO name, e.g. standard::icon"
msgstr ""
-"A GIO list a hagyományos ls segédprogramhoz hasonlóan működik, de helyi\n"
+"A gio list a hagyományos ls segédprogramhoz hasonlóan működik, de helyi\n"
"fájlok helyett GIO helyeket használ: megadható például helyként az\n"
"smb://kiszolgáló/erőforrás/fájl.txt. A fájlattribútumok a GIO nevükkel\n"
"adhatók meg, például: standard::icon"
@@ -2105,7 +2109,7 @@ msgstr ""
msgid "Target %s is not a directory"
msgstr "A megadott cél (%s) nem könyvtár"
-#: ../gio/gio-tool-open.c:50
+#: ../gio/gio-tool-open.c:118
msgid ""
"Open files with the default application that\n"
"is registered to handle files of this type."
@@ -2133,7 +2137,7 @@ msgstr "Fájl átnevezése."
msgid "Missing argument"
msgstr "Hiányzó argumentum"
-#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:195
+#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:190
#: ../gio/gio-tool-set.c:137
msgid "Too many arguments"
msgstr "Túl sok argumentum"
@@ -2173,21 +2177,21 @@ msgstr "A felülírt fájl etagja"
msgid "ETAG"
msgstr "ECÃMKE"
-#: ../gio/gio-tool-save.c:119
+#: ../gio/gio-tool-save.c:113
msgid "Error reading from standard input"
msgstr "Hiba a szabványos bemenetről olvasáskor"
#. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:145
+#: ../gio/gio-tool-save.c:139
#, c-format
msgid "Etag not available\n"
msgstr "Az etag nem érhető el\n"
-#: ../gio/gio-tool-save.c:168
+#: ../gio/gio-tool-save.c:163
msgid "Read from standard input and save to DEST."
msgstr "Szabványos bemenet olvasása és a CÉLBA mentése."
-#: ../gio/gio-tool-save.c:188
+#: ../gio/gio-tool-save.c:183
msgid "No destination given"
msgstr "Nincs megadva cél"
@@ -2374,19 +2378,16 @@ msgstr "az álnévnek legalább 2 karakternek kell lennie"
#: ../gio/glib-compile-schemas.c:106
#, c-format
-#| msgid "Invalid symlink value given"
msgid "Invalid numeric value"
msgstr "Érvénytelen számérték"
#: ../gio/glib-compile-schemas.c:114
#, c-format
-#| msgid "<%s id='%s'> already specified"
msgid "<value nick='%s'/> already specified"
msgstr "<value nick='%s'/> már meg van adva"
#: ../gio/glib-compile-schemas.c:122
#, c-format
-#| msgid "<key name='%s'> already specified"
msgid "value='%s' already specified"
msgstr "value='%s' már meg van adva"
@@ -2402,7 +2403,6 @@ msgstr "<%s> legalább egy <value> címkét kell tartalmazzon"
#: ../gio/glib-compile-schemas.c:315
#, c-format
-#| msgid "No connection endpoint specified"
msgid "<%s> is not contained in the specified range"
msgstr "<%s> nincs a megadott tartományon belül"
@@ -2422,7 +2422,6 @@ msgid "<%s> contains a string not in <choices>"
msgstr "<%s> nem a <choices> közti karakterláncot tartalmaz"
#: ../gio/glib-compile-schemas.c:373
-#| msgid "<key name='%s'> already specified"
msgid "<range/> already specified for this key"
msgstr "<range/> már meg van adva ehhez a kulcshoz"
@@ -2451,7 +2450,6 @@ msgstr "fordítási kontextus megadva egy lokalizáció nélküli értékhez"
#: ../gio/glib-compile-schemas.c:475
#, c-format
-#| msgid "Failed to create file “%sâ€: %s"
msgid "Failed to parse <default> value of type “%sâ€: "
msgstr "Nem sikerült feldolgozni a(z) „%s†típusú <default> értéket: "
@@ -2461,7 +2459,6 @@ msgid ""
msgstr "a <choices> nem adható meg felsorolás típusúként megjelölt kulcsokhoz"
#: ../gio/glib-compile-schemas.c:501
-#| msgid "<child name='%s'> already specified"
msgid "<choices> already specified for this key"
msgstr "<choices> már meg van adva ehhez a kulcshoz"
@@ -2472,7 +2469,6 @@ msgstr "<choices> nem engedélyezett ezen típusú kulcshoz: „%sâ€"
#: ../gio/glib-compile-schemas.c:529
#, c-format
-#| msgid "<child name='%s'> already specified"
msgid "<choice value='%s'/> already given"
msgstr "<choice value='%s'/> már meg van adva"
@@ -2482,7 +2478,6 @@ msgid "<choices> must contain at least one <choice>"
msgstr "<choices> legalább egy <choice> címkét kell tartalmazzon"
#: ../gio/glib-compile-schemas.c:558
-#| msgid "<child name='%s'> already specified"
msgid "<aliases> already specified for this key"
msgstr "<aliases> már meg van adva ehhez a kulcshoz"
@@ -2506,18 +2501,16 @@ msgstr ""
#, c-format
msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
msgstr ""
-"<alias value='%s'/> van megadva, miközben már meg van adva <choice value='%"
-"s'/>"
+"<alias value='%s'/> van megadva, miközben már meg van adva <choice "
+"value='%s'/>"
#: ../gio/glib-compile-schemas.c:595
#, c-format
-#| msgid "<%s id='%s'> already specified"
msgid "<alias value='%s'/> already specified"
msgstr "<alias value='%s'/> már meg van adva"
#: ../gio/glib-compile-schemas.c:605
#, c-format
-#| msgid "“%s†is not a signed number"
msgid "alias target “%s†is not in enumerated type"
msgstr "„%s†álnév célja nem felsorolás típusban van"
@@ -2532,21 +2525,16 @@ msgid "<aliases> must contain at least one <alias>"
msgstr "<aliases> legalább egy <alias> címkét kell tartalmazzon"
#: ../gio/glib-compile-schemas.c:786
-#| msgid "empty names are not permitted"
msgid "Empty names are not permitted"
msgstr "Az üres nevek nem engedélyezettek"
#: ../gio/glib-compile-schemas.c:796
#, c-format
-#| msgid "invalid name '%s': names must begin with a lowercase letter"
msgid "Invalid name “%sâ€: names must begin with a lowercase letter"
msgstr "Érvénytelen név („%sâ€): a neveknek kisbetűvel kell kezdÅ‘dniük"
#: ../gio/glib-compile-schemas.c:808
#, c-format
-#| msgid ""
-#| "invalid name '%s': invalid character '%c'; only lowercase letters, "
-#| "numbers and hyphen ('-') are permitted."
msgid ""
"Invalid name “%sâ€: invalid character “%câ€; only lowercase letters, numbers "
"and hyphen (“-â€) are permitted"
@@ -2556,20 +2544,17 @@ msgstr ""
#: ../gio/glib-compile-schemas.c:817
#, c-format
-#| msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
msgid "Invalid name “%sâ€: two successive hyphens (“--â€) are not permitted"
msgstr ""
"Érvénytelen név („%sâ€): két egymást követÅ‘ kötÅ‘jel („--â€) nem engedélyezett"
#: ../gio/glib-compile-schemas.c:826
#, c-format
-#| msgid "invalid name '%s': the last character may not be a hyphen ('-')."
msgid "Invalid name “%sâ€: the last character may not be a hyphen (“-â€)"
msgstr "Érvénytelen név („%sâ€): az utolsó karakter nem lehet kötÅ‘jel („-â€)"
#: ../gio/glib-compile-schemas.c:834
#, c-format
-#| msgid "invalid name '%s': maximum length is 1024"
msgid "Invalid name “%sâ€: maximum length is 1024"
msgstr "Érvénytelen név („%sâ€): a maximális hossz 1024 karakter"
@@ -2579,7 +2564,6 @@ msgid "<child name='%s'> already specified"
msgstr "<child name='%s'> már meg van adva"
#: ../gio/glib-compile-schemas.c:930
-#| msgid "cannot add keys to a 'list-of' schema"
msgid "Cannot add keys to a “list-of†schema"
msgstr "Nem adhatók kulcsok „list-of†sémához"
@@ -2599,9 +2583,6 @@ msgstr ""
#: ../gio/glib-compile-schemas.c:970
#, c-format
-#| msgid ""
-#| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
-#| "attribute to <key>"
msgid ""
"Exactly one of “typeâ€, “enum†or “flags†must be specified as an attribute "
"to <key>"
@@ -2615,18 +2596,15 @@ msgstr "<%s id='%s'> (még) nincs megadva."
#: ../gio/glib-compile-schemas.c:1004
#, c-format
-#| msgid "invalid GVariant type string '%s'"
msgid "Invalid GVariant type string “%sâ€"
msgstr "Érvénytelen GVariant típuskarakterlánc: „%sâ€"
#: ../gio/glib-compile-schemas.c:1034
-#| msgid "<override> given but schema isn't extending anything"
msgid "<override> given but schema isn’t extending anything"
msgstr "Az <override> megadva, de a séma nem terjeszt ki semmit"
#: ../gio/glib-compile-schemas.c:1047
#, c-format
-#| msgid "no <key name='%s'> to override"
msgid "No <key name='%s'> to override"
msgstr "Nincs felülírandó <key name='%s'>"
@@ -2642,25 +2620,21 @@ msgstr "<schema id='%s'> már megadva"
#: ../gio/glib-compile-schemas.c:1140
#, c-format
-#| msgid "<schema id='%s'> extends not yet existing schema '%s'"
msgid "<schema id='%s'> extends not yet existing schema “%sâ€"
msgstr "A <schema id='%s'> a még nem létező „%s†sémát terjeszti ki"
#: ../gio/glib-compile-schemas.c:1156
#, c-format
-#| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
msgid "<schema id='%s'> is list of not yet existing schema “%sâ€"
msgstr "A <schema id='%s'> a még nem létező „%s†séma listája"
#: ../gio/glib-compile-schemas.c:1164
#, c-format
-#| msgid "Can not be a list of a schema with a path"
msgid "Cannot be a list of a schema with a path"
msgstr "Nem lehet séma listája útvonallal"
#: ../gio/glib-compile-schemas.c:1174
#, c-format
-#| msgid "Can not extend a schema with a path"
msgid "Cannot extend a schema with a path"
msgstr "Nem terjeszthet ki sémát útvonallal"
@@ -2673,9 +2647,6 @@ msgstr ""
#: ../gio/glib-compile-schemas.c:1194
#, c-format
-#| msgid ""
-#| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
-#| "'%s' does not extend '%s'"
msgid ""
"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s†"
"does not extend “%sâ€"
@@ -2685,14 +2656,12 @@ msgstr ""
#: ../gio/glib-compile-schemas.c:1211
#, 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 ""
"Ha meg van adva útvonal, akkor osztásjellel kell kezdődnie és végződnie"
#: ../gio/glib-compile-schemas.c:1218
#, c-format
-#| msgid "the path of a list must end with ':/'"
msgid "The path of a list must end with “:/â€"
msgstr "A lista útvonalának „:/†karakterekkel kell végződnie"
@@ -2702,8 +2671,8 @@ msgid ""
"Warning: Schema “%s†has path “%sâ€. Paths starting with “/apps/â€, “/"
"desktop/†or “/system/†are deprecated."
msgstr ""
-"Figyelmeztetés: „%s†sémához „%s†útvonal tartozik. Az „/apps/â€, \"/desktop/†"
-"vagy „/system/†kezdetű útvonalak elavultak."
+"Figyelmeztetés: „%s†sémához „%s†útvonal tartozik. Az „/apps/â€, \"/"
+"desktop/†vagy „/system/†kezdetű útvonalak elavultak."
#: ../gio/glib-compile-schemas.c:1257
#, c-format
@@ -2726,7 +2695,6 @@ msgstr "A <default> elem kötelező a <key>-ben"
#: ../gio/glib-compile-schemas.c:1613
#, c-format
-#| msgid "text may not appear inside <%s>"
msgid "Text may not appear inside <%s>"
msgstr "Nem jelenhet meg szöveg ezen belül: <%s>"
@@ -2853,7 +2821,7 @@ msgstr "meglévő kimeneti fájl eltávolítva.\n"
msgid "Invalid filename %s"
msgstr "Érvénytelen fájlnév: %s"
-#: ../gio/glocalfile.c:1037
+#: ../gio/glocalfile.c:1105
#, c-format
msgid "Error getting filesystem info for %s: %s"
msgstr "Hiba a(z) %s fájlrendszer-információinak lekérésekor: %s"
@@ -2862,235 +2830,235 @@ msgstr "Hiba a(z) %s fájlrendszer-információinak lekérésekor: %s"
#. * the enclosing (user visible) mount of a file, but none
#. * exists.
#.
-#: ../gio/glocalfile.c:1176
+#: ../gio/glocalfile.c:1244
#, c-format
msgid "Containing mount for file %s not found"
msgstr "A(z) %s fájlt tartalmazó csatolás nem található"
-#: ../gio/glocalfile.c:1199
+#: ../gio/glocalfile.c:1267
msgid "Can’t rename root directory"
msgstr "Nem nevezhető át a gyökérkönyvtár"
-#: ../gio/glocalfile.c:1217 ../gio/glocalfile.c:1240
+#: ../gio/glocalfile.c:1285 ../gio/glocalfile.c:1308
#, c-format
msgid "Error renaming file %s: %s"
msgstr "Hiba a(z) %s fájl átnevezésekor: %s"
-#: ../gio/glocalfile.c:1224
+#: ../gio/glocalfile.c:1292
msgid "Can’t rename file, filename already exists"
msgstr "A fájl nem nevezhető át, a fájlnév már létezik"
-#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2253 ../gio/glocalfile.c:2281
-#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
+#: ../gio/glocalfile.c:1305 ../gio/glocalfile.c:2322 ../gio/glocalfile.c:2350
+#: ../gio/glocalfile.c:2507 ../gio/glocalfileoutputstream.c:551
msgid "Invalid filename"
msgstr "Érvénytelen fájlnév"
-#: ../gio/glocalfile.c:1404 ../gio/glocalfile.c:1419
+#: ../gio/glocalfile.c:1473 ../gio/glocalfile.c:1488
#, c-format
msgid "Error opening file %s: %s"
msgstr "Hiba a(z) %s fájl megnyitásakor: %s"
-#: ../gio/glocalfile.c:1544
+#: ../gio/glocalfile.c:1613
#, c-format
msgid "Error removing file %s: %s"
msgstr "Hiba a(z) %s fájl eltávolításakor: %s"
-#: ../gio/glocalfile.c:1928
+#: ../gio/glocalfile.c:1997
#, c-format
msgid "Error trashing file %s: %s"
msgstr "Hiba a(z) %s fájl Kukába dobásakor: %s"
-#: ../gio/glocalfile.c:1951
+#: ../gio/glocalfile.c:2020
#, c-format
msgid "Unable to create trash dir %s: %s"
msgstr "Nem sikerült létrehozni a(z) %s Kuka könyvtárat: %s"
-#: ../gio/glocalfile.c:1971
+#: ../gio/glocalfile.c:2040
#, c-format
msgid "Unable to find toplevel directory to trash %s"
msgstr "Nem található a felső szintű könyvtár a(z) %s kidobásához"
-#: ../gio/glocalfile.c:2050 ../gio/glocalfile.c:2070
+#: ../gio/glocalfile.c:2119 ../gio/glocalfile.c:2139
#, c-format
msgid "Unable to find or create trash directory for %s"
msgstr "Nem található vagy nem hozható létre a Kuka könyvtár ehhez: %s"
-#: ../gio/glocalfile.c:2105
+#: ../gio/glocalfile.c:2174
#, c-format
msgid "Unable to create trashing info file for %s: %s"
msgstr "Nem sikerült létrehozni a(z) %s kukainformációs fájlját: %s"
-#: ../gio/glocalfile.c:2164
+#: ../gio/glocalfile.c:2233
#, c-format
msgid "Unable to trash file %s across filesystem boundaries"
msgstr "Nem lehet fájlrendszer-határokon át Kukába dobni a(z) %s fájlt"
-#: ../gio/glocalfile.c:2168 ../gio/glocalfile.c:2224
+#: ../gio/glocalfile.c:2237 ../gio/glocalfile.c:2293
#, c-format
msgid "Unable to trash file %s: %s"
msgstr "Nem lehet a Kukába dobni a(z) %s fájlt: %s"
-#: ../gio/glocalfile.c:2230
+#: ../gio/glocalfile.c:2299
#, c-format
msgid "Unable to trash file %s"
msgstr "Nem lehet a Kukába dobni a(z) %s fájlt"
-#: ../gio/glocalfile.c:2256
+#: ../gio/glocalfile.c:2325
#, c-format
msgid "Error creating directory %s: %s"
msgstr "Hiba a(z) %s könyvtár létrehozásakor: %s"
-#: ../gio/glocalfile.c:2285
+#: ../gio/glocalfile.c:2354
#, c-format
msgid "Filesystem does not support symbolic links"
msgstr "A fájlrendszer nem támogatja a szimbolikus linkeket"
-#: ../gio/glocalfile.c:2288
+#: ../gio/glocalfile.c:2357
#, c-format
msgid "Error making symbolic link %s: %s"
msgstr "Hiba a(z) %s szimbolikus link létrehozásakor: %s"
-#: ../gio/glocalfile.c:2294 ../glib/gfileutils.c:2077
+#: ../gio/glocalfile.c:2363 ../glib/gfileutils.c:2127
msgid "Symbolic links not supported"
msgstr "A szimbolikus linkek használata nem támogatott"
-#: ../gio/glocalfile.c:2349 ../gio/glocalfile.c:2384 ../gio/glocalfile.c:2441
+#: ../gio/glocalfile.c:2418 ../gio/glocalfile.c:2453 ../gio/glocalfile.c:2510
#, c-format
msgid "Error moving file %s: %s"
msgstr "Hiba a(z) %s fájl áthelyezésekor: %s"
-#: ../gio/glocalfile.c:2372
+#: ../gio/glocalfile.c:2441
msgid "Can’t move directory over directory"
msgstr "A könyvtár nem helyezhető át könyvtárba"
-#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:933
-#: ../gio/glocalfileoutputstream.c:947 ../gio/glocalfileoutputstream.c:962
-#: ../gio/glocalfileoutputstream.c:979 ../gio/glocalfileoutputstream.c:993
+#: ../gio/glocalfile.c:2467 ../gio/glocalfileoutputstream.c:935
+#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
+#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
msgid "Backup file creation failed"
msgstr "A mentési fájl létrehozása meghiúsult"
-#: ../gio/glocalfile.c:2417
+#: ../gio/glocalfile.c:2486
#, c-format
msgid "Error removing target file: %s"
msgstr "Hiba a célfájl eltávolításakor: %s"
-#: ../gio/glocalfile.c:2431
+#: ../gio/glocalfile.c:2500
msgid "Move between mounts not supported"
msgstr "A csatolások közti áthelyezés nem támogatott"
-#: ../gio/glocalfile.c:2622
+#: ../gio/glocalfile.c:2691
#, c-format
msgid "Could not determine the disk usage of %s: %s"
msgstr "Nem lehet meghatározni %s lemezhasználatát: %s"
-#: ../gio/glocalfileinfo.c:731
+#: ../gio/glocalfileinfo.c:745
msgid "Attribute value must be non-NULL"
msgstr "Az attribútum értéke nem lehet NULL"
-#: ../gio/glocalfileinfo.c:738
+#: ../gio/glocalfileinfo.c:752
msgid "Invalid attribute type (string expected)"
msgstr "Érvénytelen attribútumtípus (a várt karakterlánc helyett)"
-#: ../gio/glocalfileinfo.c:745
+#: ../gio/glocalfileinfo.c:759
msgid "Invalid extended attribute name"
msgstr "Érvénytelen kiterjesztett attribútumnév"
-#: ../gio/glocalfileinfo.c:785
+#: ../gio/glocalfileinfo.c:799
#, c-format
msgid "Error setting extended attribute “%sâ€: %s"
msgstr "Hiba a(z) „%s†kiterjesztett attribútum beállításakor: %s"
-#: ../gio/glocalfileinfo.c:1586
+#: ../gio/glocalfileinfo.c:1607
msgid " (invalid encoding)"
msgstr " (érvénytelen kódolás)"
-#: ../gio/glocalfileinfo.c:1777 ../gio/glocalfileoutputstream.c:811
+#: ../gio/glocalfileinfo.c:1776 ../gio/glocalfileoutputstream.c:813
#, c-format
msgid "Error when getting information for file “%sâ€: %s"
msgstr "Hiba a(z) „%s†fájl információinak lekérésekor: %s"
-#: ../gio/glocalfileinfo.c:2028
+#: ../gio/glocalfileinfo.c:2038
#, c-format
msgid "Error when getting information for file descriptor: %s"
msgstr "Hiba a fájlleíró információinak lekérésekor: %s"
-#: ../gio/glocalfileinfo.c:2073
+#: ../gio/glocalfileinfo.c:2083
msgid "Invalid attribute type (uint32 expected)"
msgstr "Érvénytelen attribútumtípus (a várt uint32 helyett)"
-#: ../gio/glocalfileinfo.c:2091
+#: ../gio/glocalfileinfo.c:2101
msgid "Invalid attribute type (uint64 expected)"
msgstr "Érvénytelen attribútumtípus (a várt uint64 helyett)"
-#: ../gio/glocalfileinfo.c:2110 ../gio/glocalfileinfo.c:2129
+#: ../gio/glocalfileinfo.c:2120 ../gio/glocalfileinfo.c:2139
msgid "Invalid attribute type (byte string expected)"
msgstr "Érvénytelen attribútumtípus (a várt bájtkarakterlánc helyett)"
-#: ../gio/glocalfileinfo.c:2164
+#: ../gio/glocalfileinfo.c:2184
msgid "Cannot set permissions on symlinks"
msgstr "Nem állíthatók be a szimbolikus linkek jogosultságai"
-#: ../gio/glocalfileinfo.c:2180
+#: ../gio/glocalfileinfo.c:2200
#, c-format
msgid "Error setting permissions: %s"
msgstr "Hiba a jogosultságok beállításakor: %s"
-#: ../gio/glocalfileinfo.c:2231
+#: ../gio/glocalfileinfo.c:2251
#, c-format
msgid "Error setting owner: %s"
msgstr "Hiba a tulajdonos beállításakor: %s"
-#: ../gio/glocalfileinfo.c:2254
+#: ../gio/glocalfileinfo.c:2274
msgid "symlink must be non-NULL"
msgstr "a szimbolikus link nem lehet NULL"
-#: ../gio/glocalfileinfo.c:2264 ../gio/glocalfileinfo.c:2283
-#: ../gio/glocalfileinfo.c:2294
+#: ../gio/glocalfileinfo.c:2284 ../gio/glocalfileinfo.c:2303
+#: ../gio/glocalfileinfo.c:2314
#, c-format
msgid "Error setting symlink: %s"
msgstr "Hiba a szimbolikus link beállításakor: %s"
-#: ../gio/glocalfileinfo.c:2273
+#: ../gio/glocalfileinfo.c:2293
msgid "Error setting symlink: file is not a symlink"
msgstr "Hiba a szimbolikus link beállításakor: a fájl nem szimbolikus link"
-#: ../gio/glocalfileinfo.c:2399
+#: ../gio/glocalfileinfo.c:2419
#, c-format
msgid "Error setting modification or access time: %s"
msgstr "Hiba a módosítási vagy hozzáférési idő beállításakor: %s"
-#: ../gio/glocalfileinfo.c:2422
+#: ../gio/glocalfileinfo.c:2442
msgid "SELinux context must be non-NULL"
msgstr "A SELinux környezet nem lehet NULL"
-#: ../gio/glocalfileinfo.c:2437
+#: ../gio/glocalfileinfo.c:2457
#, c-format
msgid "Error setting SELinux context: %s"
msgstr "Hiba a SELinux környezet beállításakor: %s"
-#: ../gio/glocalfileinfo.c:2444
+#: ../gio/glocalfileinfo.c:2464
msgid "SELinux is not enabled on this system"
msgstr "A SELinux nem engedélyezett ezen rendszeren"
-#: ../gio/glocalfileinfo.c:2536
+#: ../gio/glocalfileinfo.c:2556
#, c-format
msgid "Setting attribute %s not supported"
msgstr "A(z) %s attribútum beállítása nem támogatott"
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694
+#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:696
#, c-format
msgid "Error reading from file: %s"
msgstr "Hiba a fájl olvasásakor: %s"
#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1011
+#: ../gio/glocalfileoutputstream.c:458 ../gio/glocalfileoutputstream.c:1013
#, c-format
msgid "Error seeking in file: %s"
msgstr "Hiba a fájlban kereséskor: %s"
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:246
-#: ../gio/glocalfileoutputstream.c:340
+#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:248
+#: ../gio/glocalfileoutputstream.c:342
#, c-format
msgid "Error closing file: %s"
msgstr "Hiba a fájl lezárásakor: %s"
@@ -3099,51 +3067,51 @@ msgstr "Hiba a fájl lezárásakor: %s"
msgid "Unable to find default local file monitor type"
msgstr "Nem található az alapértelmezett helyi fájlfigyelő típus"
-#: ../gio/glocalfileoutputstream.c:194 ../gio/glocalfileoutputstream.c:226
-#: ../gio/glocalfileoutputstream.c:715
+#: ../gio/glocalfileoutputstream.c:196 ../gio/glocalfileoutputstream.c:228
+#: ../gio/glocalfileoutputstream.c:717
#, c-format
msgid "Error writing to file: %s"
msgstr "Hiba a fájl írásakor: %s"
-#: ../gio/glocalfileoutputstream.c:273
+#: ../gio/glocalfileoutputstream.c:275
#, c-format
msgid "Error removing old backup link: %s"
msgstr "Hiba a régi mentési link eltávolításakor: %s"
-#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300
+#: ../gio/glocalfileoutputstream.c:289 ../gio/glocalfileoutputstream.c:302
#, c-format
msgid "Error creating backup copy: %s"
msgstr "Hiba a mentés létrehozásakor: %s"
-#: ../gio/glocalfileoutputstream.c:318
+#: ../gio/glocalfileoutputstream.c:320
#, c-format
msgid "Error renaming temporary file: %s"
msgstr "Hiba az ideiglenes fájl átnézésekor: %s"
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1062
+#: ../gio/glocalfileoutputstream.c:504 ../gio/glocalfileoutputstream.c:1064
#, c-format
msgid "Error truncating file: %s"
msgstr "Hiba a fájl csonkításakor: %s"
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:793
-#: ../gio/glocalfileoutputstream.c:1043 ../gio/gsubprocess.c:380
+#: ../gio/glocalfileoutputstream.c:557 ../gio/glocalfileoutputstream.c:795
+#: ../gio/glocalfileoutputstream.c:1045 ../gio/gsubprocess.c:380
#, c-format
msgid "Error opening file “%sâ€: %s"
msgstr "Hiba a(z) %s fájl megnyitásakor: %s"
-#: ../gio/glocalfileoutputstream.c:824
+#: ../gio/glocalfileoutputstream.c:826
msgid "Target file is a directory"
msgstr "A célfájl egy könyvtár"
-#: ../gio/glocalfileoutputstream.c:829
+#: ../gio/glocalfileoutputstream.c:831
msgid "Target file is not a regular file"
msgstr "A célfájl nem szabályos fájl"
-#: ../gio/glocalfileoutputstream.c:841
+#: ../gio/glocalfileoutputstream.c:843
msgid "The file was externally modified"
msgstr "A fájlt külső program módosította"
-#: ../gio/glocalfileoutputstream.c:1027
+#: ../gio/glocalfileoutputstream.c:1029
#, c-format
msgid "Error removing old file: %s"
msgstr "Hiba a régi fájl eltávolításakor: %s"
@@ -3187,21 +3155,21 @@ msgstr "Pozicionálási kérés az adatfolyam vége mögé"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement unmount.
-#: ../gio/gmount.c:393
+#: ../gio/gmount.c:396
msgid "mount doesn’t implement “unmountâ€"
msgstr "A csatolás nem valósítja meg az „unmount†függvényt"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement eject.
-#: ../gio/gmount.c:469
+#: ../gio/gmount.c:472
msgid "mount doesn’t implement “ejectâ€"
msgstr "A csatolás nem valósítja meg az „eject†függvényt"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:547
+#: ../gio/gmount.c:550
msgid "mount doesn’t implement “unmount†or “unmount_with_operationâ€"
msgstr ""
"A csatolás nem valósítja meg az „unmount†vagy az „unmount_with_operation†"
@@ -3210,7 +3178,7 @@ 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
+#: ../gio/gmount.c:635
msgid "mount doesn’t implement “eject†or “eject_with_operationâ€"
msgstr ""
"A csatolás nem valósítja meg az „eject†vagy az „eject_with_operation†"
@@ -3219,21 +3187,21 @@ msgstr ""
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement remount.
-#: ../gio/gmount.c:720
+#: ../gio/gmount.c:723
msgid "mount doesn’t implement “remountâ€"
msgstr "A csatolás nem valósítja meg a „remount†függvényt"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:802
+#: ../gio/gmount.c:805
msgid "mount doesn’t implement content type guessing"
msgstr "A csatolás nem valósítja meg a tartalomtípus meghatározását"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:889
+#: ../gio/gmount.c:892
msgid "mount doesn’t implement synchronous content type guessing"
msgstr "A csatolás nem valósítja meg a tartalomtípus szinkron meghatározását"
@@ -3283,25 +3251,25 @@ msgstr "A forrás adatfolyam már le van zárva"
msgid "Error resolving “%sâ€: %s"
msgstr "Hiba a(z) „%s†feloldásakor: %s"
-#: ../gio/gresource.c:606 ../gio/gresource.c:857 ../gio/gresource.c:874
-#: ../gio/gresource.c:998 ../gio/gresource.c:1070 ../gio/gresource.c:1143
-#: ../gio/gresource.c:1213 ../gio/gresourcefile.c:453
-#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713
+#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
+#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
+#: ../gio/gresource.c:1258 ../gio/gresourcefile.c:476
+#: ../gio/gresourcefile.c:599 ../gio/gresourcefile.c:736
#, c-format
msgid "The resource at “%s†does not exist"
msgstr "Az erÅ‘forrás nem létezik itt: „%sâ€"
-#: ../gio/gresource.c:771
+#: ../gio/gresource.c:786
#, c-format
msgid "The resource at “%s†failed to decompress"
msgstr "Az erÅ‘forrás kicsomagolása meghiúsult itt: „%sâ€"
-#: ../gio/gresourcefile.c:709
+#: ../gio/gresourcefile.c:732
#, c-format
msgid "The resource at “%s†is not a directory"
msgstr "Az erÅ‘forrás nem könyvtár itt: „%sâ€"
-#: ../gio/gresourcefile.c:917
+#: ../gio/gresourcefile.c:940
msgid "Input stream doesn’t implement seek"
msgstr "A bemeneti adatfolyam nem valósítja meg a pozicionálást"
@@ -3398,7 +3366,7 @@ msgstr ""
msgid " SECTION An (optional) elf section name\n"
msgstr " SZAKASZ Egy elhagyható elf szakasznév\n"
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:656
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:685
msgid " COMMAND The (optional) command to explain\n"
msgstr " PARANCS A megmagyarázandó (elhagyható) parancs\n"
@@ -3432,7 +3400,7 @@ msgid " PATH A resource path\n"
msgstr " ÚTVONAL Egy erőforrás-útvonal\n"
#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:853
+#: ../gio/gsettings-tool.c:890
#, c-format
msgid "No such schema “%sâ€\n"
msgstr "Nincs „%s†séma\n"
@@ -3467,38 +3435,38 @@ 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:491
+#: ../gio/gsettings-tool.c:520
#, c-format
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:498
+#: ../gio/gsettings-tool.c:527
#, c-format
msgid "The key is not writable\n"
msgstr "A kulcs nem írható\n"
-#: ../gio/gsettings-tool.c:534
+#: ../gio/gsettings-tool.c:563
msgid "List the installed (non-relocatable) schemas"
msgstr "A telepített (át nem helyezhető) sémák felsorolása"
-#: ../gio/gsettings-tool.c:540
+#: ../gio/gsettings-tool.c:569
msgid "List the installed relocatable schemas"
msgstr "A telepített áthelyezhető sémák felsorolása"
-#: ../gio/gsettings-tool.c:546
+#: ../gio/gsettings-tool.c:575
msgid "List the keys in SCHEMA"
msgstr "A SÉMA kulcsainak felsorolása"
-#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
-#: ../gio/gsettings-tool.c:596
+#: ../gio/gsettings-tool.c:576 ../gio/gsettings-tool.c:582
+#: ../gio/gsettings-tool.c:625
msgid "SCHEMA[:PATH]"
msgstr "SÉMA[:ÚTVONAL]"
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:581
msgid "List the children of SCHEMA"
msgstr "A SÉMA gyermekeinek felsorolása"
-#: ../gio/gsettings-tool.c:558
+#: ../gio/gsettings-tool.c:587
msgid ""
"List keys and values, recursively\n"
"If no SCHEMA is given, list all keys\n"
@@ -3506,49 +3474,49 @@ 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:560
+#: ../gio/gsettings-tool.c:589
msgid "[SCHEMA[:PATH]]"
msgstr "[SÉMA[:ÚTVONAL]]"
-#: ../gio/gsettings-tool.c:565
+#: ../gio/gsettings-tool.c:594
msgid "Get the value of KEY"
msgstr "A KULCS értékének lekérése"
-#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
-#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
-#: ../gio/gsettings-tool.c:602
+#: ../gio/gsettings-tool.c:595 ../gio/gsettings-tool.c:601
+#: ../gio/gsettings-tool.c:607 ../gio/gsettings-tool.c:619
+#: ../gio/gsettings-tool.c:631
msgid "SCHEMA[:PATH] KEY"
msgstr "SÉMA[:ÚTVONAL] KULCS"
-#: ../gio/gsettings-tool.c:571
+#: ../gio/gsettings-tool.c:600
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:577
+#: ../gio/gsettings-tool.c:606
msgid "Query the description for KEY"
msgstr "A KULCS leírásának lekérése"
-#: ../gio/gsettings-tool.c:583
+#: ../gio/gsettings-tool.c:612
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:584
+#: ../gio/gsettings-tool.c:613
msgid "SCHEMA[:PATH] KEY VALUE"
msgstr "SÉMA[:ÚTVONAL] KULCS ÉRTÉK"
-#: ../gio/gsettings-tool.c:589
+#: ../gio/gsettings-tool.c:618
msgid "Reset KEY to its default value"
msgstr "A KULCS visszaállítása az alapértékére"
-#: ../gio/gsettings-tool.c:595
+#: ../gio/gsettings-tool.c:624
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:601
+#: ../gio/gsettings-tool.c:630
msgid "Check if KEY is writable"
msgstr "A KULCS írhatóságának ellenőrzése"
-#: ../gio/gsettings-tool.c:607
+#: ../gio/gsettings-tool.c:636
msgid ""
"Monitor KEY for changes.\n"
"If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3558,11 +3526,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:610
+#: ../gio/gsettings-tool.c:639
msgid "SCHEMA[:PATH] [KEY]"
msgstr "SÉMA[:ÚTVONAL] [KULCS]"
-#: ../gio/gsettings-tool.c:622
+#: ../gio/gsettings-tool.c:651
msgid ""
"Usage:\n"
" gsettings --version\n"
@@ -3611,7 +3579,7 @@ msgstr ""
"Részletes segítségért adja ki a „gsettings help PARANCS†parancsot.\n"
"\n"
-#: ../gio/gsettings-tool.c:646
+#: ../gio/gsettings-tool.c:675
#, c-format
msgid ""
"Usage:\n"
@@ -3626,11 +3594,11 @@ msgstr ""
"%s\n"
"\n"
-#: ../gio/gsettings-tool.c:652
+#: ../gio/gsettings-tool.c:681
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:660
+#: ../gio/gsettings-tool.c:689
msgid ""
" SCHEMA The name of the schema\n"
" PATH The path, for relocatable schemas\n"
@@ -3638,178 +3606,211 @@ msgstr ""
" SÉMA A séma neve\n"
" ÚTVONAL Az áthelyezhető sémák útvonala\n"
-#: ../gio/gsettings-tool.c:665
+#: ../gio/gsettings-tool.c:694
msgid " KEY The (optional) key within the schema\n"
msgstr " KULCS A sémán belüli (elhagyható) kulcs\n"
-#: ../gio/gsettings-tool.c:669
+#: ../gio/gsettings-tool.c:698
msgid " KEY The key within the schema\n"
msgstr " KULCS A sémán belüli kulcs\n"
-#: ../gio/gsettings-tool.c:673
+#: ../gio/gsettings-tool.c:702
msgid " VALUE The value to set\n"
msgstr " ÉRTÉK A beállítandó érték\n"
-#: ../gio/gsettings-tool.c:728
+#: ../gio/gsettings-tool.c:757
#, 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:740
+#: ../gio/gsettings-tool.c:769
#, c-format
msgid "No schemas installed\n"
msgstr "Nincsenek telepítve sémák\n"
-#: ../gio/gsettings-tool.c:811
+#: ../gio/gsettings-tool.c:848
#, c-format
msgid "Empty schema name given\n"
msgstr "Üres sémanevet adott meg\n"
-#: ../gio/gsettings-tool.c:866
+#: ../gio/gsettings-tool.c:903
#, c-format
msgid "No such key “%sâ€\n"
msgstr "Nincs „%s†kulcs\n"
-#: ../gio/gsocket.c:379
+#: ../gio/gsocket.c:384
msgid "Invalid socket, not initialized"
msgstr "Érvénytelen foglalat, nincs előkészítve"
-#: ../gio/gsocket.c:386
+#: ../gio/gsocket.c:391
#, 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:394
+#: ../gio/gsocket.c:399
msgid "Socket is already closed"
msgstr "A foglalat már le van zárva"
-#: ../gio/gsocket.c:409 ../gio/gsocket.c:2765 ../gio/gsocket.c:3950
-#: ../gio/gsocket.c:4008
+#: ../gio/gsocket.c:414 ../gio/gsocket.c:3010 ../gio/gsocket.c:4220
+#: ../gio/gsocket.c:4278
msgid "Socket I/O timed out"
msgstr "A foglalat I/O túllépte az időkorlátot"
-#: ../gio/gsocket.c:541
+#: ../gio/gsocket.c:549
#, c-format
msgid "creating GSocket from fd: %s"
msgstr "GSocket létrehozása fájlleíróból: %s"
-#: ../gio/gsocket.c:570 ../gio/gsocket.c:624 ../gio/gsocket.c:631
+#: ../gio/gsocket.c:578 ../gio/gsocket.c:632 ../gio/gsocket.c:639
#, c-format
msgid "Unable to create socket: %s"
msgstr "Nem sikerült létrehozni foglalatot: %s"
-#: ../gio/gsocket.c:624
+#: ../gio/gsocket.c:632
msgid "Unknown family was specified"
msgstr "Ismeretlen családot adtak meg"
-#: ../gio/gsocket.c:631
+#: ../gio/gsocket.c:639
msgid "Unknown protocol was specified"
msgstr "Ismeretlen protokollt adtak meg"
-#: ../gio/gsocket.c:1122
+#: ../gio/gsocket.c:1130
#, 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:1139
+#: ../gio/gsocket.c:1147
#, 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:1943
+#: ../gio/gsocket.c:1954
#, c-format
msgid "could not get local address: %s"
msgstr "nem kérhető le a helyi cím: %s"
-#: ../gio/gsocket.c:1986
+#: ../gio/gsocket.c:2000
#, c-format
msgid "could not get remote address: %s"
msgstr "nem kérhető le a távoli cím: %s"
-#: ../gio/gsocket.c:2052
+#: ../gio/gsocket.c:2066
#, c-format
msgid "could not listen: %s"
msgstr "nem lehet figyelni: %s"
-#: ../gio/gsocket.c:2151
+#: ../gio/gsocket.c:2168
#, c-format
msgid "Error binding to address: %s"
msgstr "Hiba a címhez csatlakozáskor: %s"
-#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
+#: ../gio/gsocket.c:2226 ../gio/gsocket.c:2263 ../gio/gsocket.c:2373
+#: ../gio/gsocket.c:2391 ../gio/gsocket.c:2461 ../gio/gsocket.c:2519
+#: ../gio/gsocket.c:2537
#, c-format
msgid "Error joining multicast group: %s"
msgstr "Hiba a multicast csoporthoz csatlakozáskor: %s"
-#: ../gio/gsocket.c:2267 ../gio/gsocket.c:2304
+#: ../gio/gsocket.c:2227 ../gio/gsocket.c:2264 ../gio/gsocket.c:2374
+#: ../gio/gsocket.c:2392 ../gio/gsocket.c:2462 ../gio/gsocket.c:2520
+#: ../gio/gsocket.c:2538
#, c-format
msgid "Error leaving multicast group: %s"
msgstr "Hiba a multicast csoport elhagyásakor: %s"
-#: ../gio/gsocket.c:2268
+#: ../gio/gsocket.c:2228
msgid "No support for source-specific multicast"
msgstr "A forrásspecifikus multicast nem támogatott"
-#: ../gio/gsocket.c:2488
+#: ../gio/gsocket.c:2375
+#| msgid "Unsupported socket address"
+msgid "Unsupported socket family"
+msgstr "Nem támogatott foglalatcsalád"
+
+#: ../gio/gsocket.c:2393
+msgid "source-specific not an IPv4 address"
+msgstr "A forrásspecifikus nem egy IPv4-cím"
+
+#: ../gio/gsocket.c:2411 ../gio/gsocket.c:2440 ../gio/gsocket.c:2487
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Interfész nem található: %s"
+
+#: ../gio/gsocket.c:2427
+#, c-format
+msgid "Interface name too long"
+msgstr "Az interfésznév túl hosszú"
+
+#: ../gio/gsocket.c:2463
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv4 source-specific multicast"
+msgstr "Az IPv4 forrásspecifikus multicast nem támogatott"
+
+#: ../gio/gsocket.c:2521
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv6 source-specific multicast"
+msgstr "Az IPv6 forrásspecifikus multicast nem támogatott"
+
+#: ../gio/gsocket.c:2730
#, c-format
msgid "Error accepting connection: %s"
msgstr "Hiba a kapcsolat elfogadásakor: %s"
-#: ../gio/gsocket.c:2609
+#: ../gio/gsocket.c:2854
msgid "Connection in progress"
msgstr "Csatlakozás folyamatban"
-#: ../gio/gsocket.c:2658
+#: ../gio/gsocket.c:2903
msgid "Unable to get pending error: "
msgstr "Nem lehet lekérni a függőben lévő hibát:"
-#: ../gio/gsocket.c:2828
+#: ../gio/gsocket.c:3073
#, c-format
msgid "Error receiving data: %s"
msgstr "Hiba az adatok fogadásakor: %s"
-#: ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3268
#, c-format
msgid "Error sending data: %s"
msgstr "Hiba az adatok küldésekor: %s"
-#: ../gio/gsocket.c:3210
+#: ../gio/gsocket.c:3455
#, c-format
msgid "Unable to shutdown socket: %s"
msgstr "Nem sikerült leállítani a foglalatot: %s"
-#: ../gio/gsocket.c:3291
+#: ../gio/gsocket.c:3536
#, c-format
msgid "Error closing socket: %s"
msgstr "Hiba a foglalat lezárásakor: %s"
-#: ../gio/gsocket.c:3943
+#: ../gio/gsocket.c:4213
#, c-format
msgid "Waiting for socket condition: %s"
msgstr "Várakozás a foglalat állapotára: %s"
-#: ../gio/gsocket.c:4417 ../gio/gsocket.c:4497 ../gio/gsocket.c:4675
+#: ../gio/gsocket.c:4687 ../gio/gsocket.c:4767 ../gio/gsocket.c:4945
#, c-format
msgid "Error sending message: %s"
msgstr "Hiba az üzenet küldésekor: %s"
-#: ../gio/gsocket.c:4441
+#: ../gio/gsocket.c:4711
msgid "GSocketControlMessage not supported on Windows"
msgstr "A GSocketControlMessage nem támogatott Windowson"
-#: ../gio/gsocket.c:4894 ../gio/gsocket.c:4967 ../gio/gsocket.c:5193
+#: ../gio/gsocket.c:5164 ../gio/gsocket.c:5237 ../gio/gsocket.c:5463
#, c-format
msgid "Error receiving message: %s"
msgstr "Hiba az üzenet fájl eltávolítása fogadásakor: %s"
-#: ../gio/gsocket.c:5465
+#: ../gio/gsocket.c:5735
#, c-format
msgid "Unable to read socket credentials: %s"
msgstr "Nem sikerült olvasni a foglalat hitelesítési adatait: %s"
-#: ../gio/gsocket.c:5474
+#: ../gio/gsocket.c:5744
msgid "g_socket_get_credentials not implemented for this OS"
msgstr "a g_socket_get_credentials nincs megvalósítva erre az OS-re"
@@ -3949,18 +3950,18 @@ msgstr "Nem találhatók érvényes címek"
msgid "Error reverse-resolving “%sâ€: %s"
msgstr "Hiba a(z) „%s†fájl fordított feloldásakor: %s"
-#: ../gio/gthreadedresolver.c:550 ../gio/gthreadedresolver.c:630
-#: ../gio/gthreadedresolver.c:728 ../gio/gthreadedresolver.c:778
+#: ../gio/gthreadedresolver.c:549 ../gio/gthreadedresolver.c:628
+#: ../gio/gthreadedresolver.c:726 ../gio/gthreadedresolver.c:776
#, c-format
msgid "No DNS record of the requested type for “%sâ€"
msgstr "Nincs kért típusú DNS-rekord ehhez: „%sâ€"
-#: ../gio/gthreadedresolver.c:555 ../gio/gthreadedresolver.c:733
+#: ../gio/gthreadedresolver.c:554 ../gio/gthreadedresolver.c:731
#, c-format
msgid "Temporarily unable to resolve “%sâ€"
msgstr "Ideiglenesen nem oldható fel: „%sâ€"
-#: ../gio/gthreadedresolver.c:560 ../gio/gthreadedresolver.c:738
+#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
#, c-format
msgid "Error resolving “%sâ€"
msgstr "Hiba a(z) „%s†feloldásakor"
@@ -3996,9 +3997,6 @@ msgstr ""
#. Translators: This is not the 'This is the last chance' string. It is
#. * displayed when more than one attempt is allowed.
#: ../gio/gtlspassword.c:115
-#| msgid ""
-#| "Several password entered have been incorrect, and your access will be "
-#| "locked out after further failures."
msgid ""
"Several passwords entered have been incorrect, and your access will be "
"locked out after further failures."
@@ -4075,7 +4073,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:2430 ../gio/gunixmounts.c:2483
+#: ../gio/gunixmounts.c:2539 ../gio/gunixmounts.c:2592
msgid "Filesystem root"
msgstr "Fájlrendszer gyökere"
@@ -4181,93 +4179,103 @@ msgstr "Váratlan címke: „%s†a várt „%s†helyett"
msgid "Unexpected tag “%s†inside “%sâ€"
msgstr "Váratlan címke: „%s†a következÅ‘n belül: „%sâ€"
-#: ../glib/gbookmarkfile.c:1756
+#: ../glib/gbookmarkfile.c:1757
msgid "No valid bookmark file found in data dirs"
msgstr "Az adatkönyvtárakban nem található érvényes könyvjelzőfájl"
-#: ../glib/gbookmarkfile.c:1957
+#: ../glib/gbookmarkfile.c:1958
#, c-format
msgid "A bookmark for URI “%s†already exists"
msgstr "Már létezik könyvjelzÅ‘ a következÅ‘ URI címhez: „%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
+#: ../glib/gbookmarkfile.c:2004 ../glib/gbookmarkfile.c:2162
+#: ../glib/gbookmarkfile.c:2247 ../glib/gbookmarkfile.c:2327
+#: ../glib/gbookmarkfile.c:2412 ../glib/gbookmarkfile.c:2495
+#: ../glib/gbookmarkfile.c:2573 ../glib/gbookmarkfile.c:2652
+#: ../glib/gbookmarkfile.c:2694 ../glib/gbookmarkfile.c:2791
+#: ../glib/gbookmarkfile.c:2912 ../glib/gbookmarkfile.c:3102
+#: ../glib/gbookmarkfile.c:3178 ../glib/gbookmarkfile.c:3346
+#: ../glib/gbookmarkfile.c:3435 ../glib/gbookmarkfile.c:3524
+#: ../glib/gbookmarkfile.c:3640
#, c-format
msgid "No bookmark found for URI “%sâ€"
msgstr "Nem található könyvjelzÅ‘ a következÅ‘ URI címhez: „%sâ€"
-#: ../glib/gbookmarkfile.c:2335
+#: ../glib/gbookmarkfile.c:2336
#, c-format
msgid "No MIME type defined in the bookmark for URI “%sâ€"
msgstr "Nincs MIME típus meghatározva a következÅ‘ URI könyvjelzÅ‘jéhez: „%sâ€"
-#: ../glib/gbookmarkfile.c:2420
+#: ../glib/gbookmarkfile.c:2421
#, c-format
msgid "No private flag has been defined in bookmark for URI “%sâ€"
msgstr "Nincs magán jelzÅ‘ meghatározva a következÅ‘ URI könyvjelzÅ‘jéhez: „%sâ€"
-#: ../glib/gbookmarkfile.c:2799
+#: ../glib/gbookmarkfile.c:2800
#, c-format
msgid "No groups set in bookmark for URI “%sâ€"
msgstr "Nincsenek csoportok beállítva a következÅ‘ URI könyvjelzÅ‘jéhez: „%sâ€"
# FIXME: hol jön ez elő?
-#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
+#: ../glib/gbookmarkfile.c:3199 ../glib/gbookmarkfile.c:3356
#, c-format
msgid "No application with name “%s†registered a bookmark for “%sâ€"
msgstr ""
"Nincs „%s†nevű alkalmazás regisztrálva a következÅ‘ könyvjelzÅ‘jéhez: „%sâ€"
-#: ../glib/gbookmarkfile.c:3377
+#: ../glib/gbookmarkfile.c:3379
#, c-format
msgid "Failed to expand exec line “%s†with URI “%sâ€"
msgstr ""
"Nem sikerült kiterjeszteni a(z) „%s†végrehajtási sort a(z) „%s†URL címmel"
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
+#: ../glib/gconvert.c:476 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
msgid "Partial character sequence at end of input"
msgstr "Részleges karaktersorozat a bemenet végén"
-#: ../glib/gconvert.c:742
+#: ../glib/gconvert.c:741
#, c-format
msgid "Cannot convert fallback “%s†to codeset “%sâ€"
msgstr "Nem alakítható át a tartalék „%s†a(z) „%s†kódkészletre"
-#: ../glib/gconvert.c:1513
+#: ../glib/gconvert.c:912
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "Beágyazott NUL bájt az átalakítás bemenetében"
+
+#: ../glib/gconvert.c:933
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "Beágyazott NUL bájt az átalakítás kimenetében"
+
+#: ../glib/gconvert.c:1618
#, c-format
msgid "The URI “%s†is not an absolute URI using the “file†scheme"
msgstr "A(z) „%s†URI nem abszolút, a „file†sémát használó URI"
-#: ../glib/gconvert.c:1523
+#: ../glib/gconvert.c:1628
#, c-format
msgid "The local file URI “%s†may not include a “#â€"
msgstr "A(z) „%s†helyi fájl URI nem tartalmazhat „#†karaktert"
-#: ../glib/gconvert.c:1540
+#: ../glib/gconvert.c:1645
#, c-format
msgid "The URI “%s†is invalid"
msgstr "A(z) „%s†URI érvénytelen"
-#: ../glib/gconvert.c:1552
+#: ../glib/gconvert.c:1657
#, c-format
msgid "The hostname of the URI “%s†is invalid"
msgstr "A(z) „%s†gépneve érvénytelen"
-#: ../glib/gconvert.c:1568
+#: ../glib/gconvert.c:1673
#, c-format
msgid "The URI “%s†contains invalidly escaped characters"
msgstr ""
"A(z) „%s†URI érvénytelen, escape sorozatként megadott karaktereket tartalmaz"
-#: ../glib/gconvert.c:1640
+#: ../glib/gconvert.c:1745
#, c-format
msgid "The pathname “%s†is not an absolute path"
msgstr "A(z) „%s†elérési út neve nem abszolút útvonal"
@@ -4503,118 +4511,118 @@ msgstr "DU"
msgid "Error opening directory “%sâ€: %s"
msgstr "Hiba a(z) „%s†könyvtár megnyitásakor: %s"
-#: ../glib/gfileutils.c:706 ../glib/gfileutils.c:798
+#: ../glib/gfileutils.c:716 ../glib/gfileutils.c:808
#, 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] "Nem sikerült %lu bájtot lefoglalni a(z) „%s†fájl olvasásához"
msgstr[1] "Nem sikerült %lu bájtot lefoglalni a(z) „%s†fájl olvasásához"
-#: ../glib/gfileutils.c:723
+#: ../glib/gfileutils.c:733
#, c-format
msgid "Error reading file “%sâ€: %s"
msgstr "Hiba a(z) „%s†fájl olvasásakor: %s"
-#: ../glib/gfileutils.c:759
+#: ../glib/gfileutils.c:769
#, c-format
msgid "File “%s†is too large"
msgstr "A fájl („%sâ€) túl nagy"
-#: ../glib/gfileutils.c:823
+#: ../glib/gfileutils.c:833
#, c-format
msgid "Failed to read from file “%sâ€: %s"
msgstr "Nem sikerült olvasni a(z) „%s†fájlból: %s"
-#: ../glib/gfileutils.c:871 ../glib/gfileutils.c:943
+#: ../glib/gfileutils.c:881 ../glib/gfileutils.c:953
#, c-format
msgid "Failed to open file “%sâ€: %s"
msgstr "Nem sikerült megnyitni a(z) „%s†fájlt: %s"
-#: ../glib/gfileutils.c:883
+#: ../glib/gfileutils.c:893
#, c-format
msgid "Failed to get attributes of file “%sâ€: fstat() failed: %s"
msgstr ""
"Nem sikerült lekérni a(z) „%s†fájl attribútumait. Az fstat() sikertelen: %s"
-#: ../glib/gfileutils.c:913
+#: ../glib/gfileutils.c:923
#, c-format
msgid "Failed to open file “%sâ€: fdopen() failed: %s"
msgstr "Nem sikerült megnyitni a(z) „%s†fájlt. Az fdopen() sikertelen: %s"
-#: ../glib/gfileutils.c:1012
+#: ../glib/gfileutils.c:1022
#, c-format
msgid "Failed to rename file “%s†to “%sâ€: g_rename() failed: %s"
msgstr ""
"Nem sikerült átnevezni a(z) „%s†fájlt erre: „%sâ€. A g_rename() sikertelen: "
"%s"
-#: ../glib/gfileutils.c:1047 ../glib/gfileutils.c:1554
+#: ../glib/gfileutils.c:1057 ../glib/gfileutils.c:1564
#, c-format
msgid "Failed to create file “%sâ€: %s"
msgstr "Nem sikerült létrehozni a(z) „%s†fájlt: %s"
-#: ../glib/gfileutils.c:1074
+#: ../glib/gfileutils.c:1084
#, c-format
msgid "Failed to write file “%sâ€: write() failed: %s"
msgstr "Nem sikerült írni a(z) „%s†fájlt: a write() sikertelen: %s"
-#: ../glib/gfileutils.c:1117
+#: ../glib/gfileutils.c:1127
#, c-format
msgid "Failed to write file “%sâ€: fsync() failed: %s"
msgstr "Nem sikerült írni a(z) „%s†fájlt: az fsync() sikertelen: %s"
-#: ../glib/gfileutils.c:1241
+#: ../glib/gfileutils.c:1251
#, c-format
msgid "Existing file “%s†could not be removed: g_unlink() failed: %s"
msgstr "A létező „%s†fájl nem távolítható el: a g_unlink() sikertelen: %s"
-#: ../glib/gfileutils.c:1520
+#: ../glib/gfileutils.c:1530
#, c-format
msgid "Template “%s†invalid, should not contain a “%sâ€"
msgstr "A(z) „%s†sablon érvénytelen, „%s†nem lehet benne"
-#: ../glib/gfileutils.c:1533
+#: ../glib/gfileutils.c:1543
#, c-format
msgid "Template “%s†doesn’t contain XXXXXX"
msgstr "A(z) „%s†sablon nem tartalmaz XXXXXX karaktersorozatot"
-#: ../glib/gfileutils.c:2058
+#: ../glib/gfileutils.c:2105
#, c-format
msgid "Failed to read the symbolic link “%sâ€: %s"
msgstr "Nem sikerült kiolvasni a(z) „%s†szimbolikus linket: %s"
-#: ../glib/giochannel.c:1388
+#: ../glib/giochannel.c:1389
#, c-format
msgid "Could not open converter from “%s†to “%sâ€: %s"
msgstr "Az átalakító a(z) „%s†elemről „%s†elemre nem nyitható meg: %s"
-#: ../glib/giochannel.c:1733
+#: ../glib/giochannel.c:1734
msgid "Can’t do a raw read in g_io_channel_read_line_string"
msgstr ""
"Nem lehet nyers (raw) olvasást végezni a g_io_channel_read_line_string-ben"
-#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038
-#: ../glib/giochannel.c:2125
+#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039
+#: ../glib/giochannel.c:2126
msgid "Leftover unconverted data in read buffer"
msgstr "Ãt nem alakított adatok maradtak az olvasási pufferben"
-#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938
+#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
msgid "Channel terminates in a partial character"
msgstr "A csatorna töredék karakterrel ér véget"
-#: ../glib/giochannel.c:1924
+#: ../glib/giochannel.c:1925
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:736
+#: ../glib/gkeyfile.c:788
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:773
+#: ../glib/gkeyfile.c:825
msgid "Not a regular file"
msgstr "Nem szabályos fájl"
-#: ../glib/gkeyfile.c:1218
+#: ../glib/gkeyfile.c:1270
#, c-format
msgid ""
"Key file contains line “%s†which is not a key-value pair, group, or comment"
@@ -4622,52 +4630,52 @@ msgstr ""
"A kulcsfájl tartalmazza a(z) „%s†sort, amelyik nem egy kulcs-érték pár, "
"csoport, vagy megjegyzés"
-#: ../glib/gkeyfile.c:1275
+#: ../glib/gkeyfile.c:1327
#, c-format
msgid "Invalid group name: %s"
msgstr "Érvénytelen csoportnév: %s"
-#: ../glib/gkeyfile.c:1297
+#: ../glib/gkeyfile.c:1349
msgid "Key file does not start with a group"
msgstr "A kulcsfájl nem csoporttal kezdődik"
-#: ../glib/gkeyfile.c:1323
+#: ../glib/gkeyfile.c:1375
#, c-format
msgid "Invalid key name: %s"
msgstr "Érvénytelen kulcsnév: %s"
-#: ../glib/gkeyfile.c:1350
+#: ../glib/gkeyfile.c:1402
#, 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:1593 ../glib/gkeyfile.c:1766 ../glib/gkeyfile.c:3146
-#: ../glib/gkeyfile.c:3209 ../glib/gkeyfile.c:3339 ../glib/gkeyfile.c:3469
-#: ../glib/gkeyfile.c:3613 ../glib/gkeyfile.c:3842 ../glib/gkeyfile.c:3909
+#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3206
+#: ../glib/gkeyfile.c:3269 ../glib/gkeyfile.c:3399 ../glib/gkeyfile.c:3529
+#: ../glib/gkeyfile.c:3673 ../glib/gkeyfile.c:3902 ../glib/gkeyfile.c:3969
#, c-format
msgid "Key file does not have group “%sâ€"
msgstr "A kulcsfájlból hiányzik a(z) „%s†csoport"
-#: ../glib/gkeyfile.c:1721
+#: ../glib/gkeyfile.c:1773
#, 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:1883 ../glib/gkeyfile.c:1999
+#: ../glib/gkeyfile.c:1935 ../glib/gkeyfile.c:2051
#, 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:1903 ../glib/gkeyfile.c:2019 ../glib/gkeyfile.c:2388
+#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2448
#, 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:2606 ../glib/gkeyfile.c:2975
+#: ../glib/gkeyfile.c:2666 ../glib/gkeyfile.c:3035
#, c-format
msgid ""
"Key file contains key “%s†in group “%s†which has a value that cannot be "
@@ -4676,38 +4684,38 @@ msgstr ""
"A kulcsfájl tartalmazza a(z) „%s†kulcsot a(z) „%s†csoportban, amelynek "
"értéke nem értelmezhető."
-#: ../glib/gkeyfile.c:2684 ../glib/gkeyfile.c:2761
+#: ../glib/gkeyfile.c:2744 ../glib/gkeyfile.c:2821
#, 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:4149
+#: ../glib/gkeyfile.c:4209
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:4171
+#: ../glib/gkeyfile.c:4231
#, c-format
msgid "Key file contains invalid escape sequence “%sâ€"
msgstr "A kulcsfájl érvénytelen escape sorozatot tartalmaz („%sâ€)"
-#: ../glib/gkeyfile.c:4315
+#: ../glib/gkeyfile.c:4375
#, 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:4329
+#: ../glib/gkeyfile.c:4389
#, 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:4362
+#: ../glib/gkeyfile.c:4422
#, 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:4401
+#: ../glib/gkeyfile.c:4461
#, c-format
msgid "Value “%s†cannot be interpreted as a boolean."
msgstr "A(z) „%s†érték nem értelmezhető logikai értékként."
@@ -5397,79 +5405,79 @@ msgid "Text was empty (or contained only whitespace)"
msgstr ""
"A szöveg üres volt (vagy legfeljebb üres hely karaktereket tartalmazott)"
-#: ../glib/gspawn.c:250
+#: ../glib/gspawn.c:253
#, c-format
msgid "Failed to read data from child process (%s)"
msgstr "Nem sikerült adatokat olvasni a gyermekfolyamatból (%s)"
-#: ../glib/gspawn.c:394
+#: ../glib/gspawn.c:401
#, c-format
msgid "Unexpected error in select() reading data from a child process (%s)"
msgstr ""
"Váratlan hiba, miközben a select() adatokat próbált olvasni egy "
"gyermekfolyamatból (%s)"
-#: ../glib/gspawn.c:479
+#: ../glib/gspawn.c:486
#, c-format
msgid "Unexpected error in waitpid() (%s)"
msgstr "Váratlan hiba a waitpid()-ben (%s)"
-#: ../glib/gspawn.c:886 ../glib/gspawn-win32.c:1231
+#: ../glib/gspawn.c:897 ../glib/gspawn-win32.c:1231
#, c-format
msgid "Child process exited with code %ld"
msgstr "A gyermekfolyamat a következő kóddal lépett ki: %ld"
-#: ../glib/gspawn.c:894
+#: ../glib/gspawn.c:905
#, c-format
msgid "Child process killed by signal %ld"
msgstr "A gyermekfolyamat kilőve %ld szignállal"
-#: ../glib/gspawn.c:901
+#: ../glib/gspawn.c:912
#, c-format
msgid "Child process stopped by signal %ld"
msgstr "A gyermekfolyamat megállítva %ld szignállal"
-#: ../glib/gspawn.c:908
+#: ../glib/gspawn.c:919
#, c-format
msgid "Child process exited abnormally"
msgstr "A gyermekfolyamat abnormálisan lépett ki"
-#: ../glib/gspawn.c:1313 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
+#: ../glib/gspawn.c:1324 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
#, 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:1383
+#: ../glib/gspawn.c:1394
#, c-format
msgid "Failed to fork (%s)"
msgstr "Nem sikerült folyamatot indítani (%s)"
-#: ../glib/gspawn.c:1532 ../glib/gspawn-win32.c:368
+#: ../glib/gspawn.c:1543 ../glib/gspawn-win32.c:368
#, 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:1542
+#: ../glib/gspawn.c:1553
#, c-format
msgid "Failed to execute child process “%s†(%s)"
msgstr "Nem sikerült a gyermekfolyamat („%sâ€) végrehajtása (%s)"
-#: ../glib/gspawn.c:1552
+#: ../glib/gspawn.c:1563
#, 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)"
-#: ../glib/gspawn.c:1561
+#: ../glib/gspawn.c:1572
#, c-format
msgid "Failed to fork child process (%s)"
msgstr "Nem sikerült a gyermekfolyamat elindítása (%s)"
-#: ../glib/gspawn.c:1569
+#: ../glib/gspawn.c:1580
#, c-format
msgid "Unknown error executing child process “%sâ€"
msgstr "Ismeretlen hiba a gyermekfolyamat („%sâ€) végrehajtásakor"
-#: ../glib/gspawn.c:1593
+#: ../glib/gspawn.c:1604
#, 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)"
@@ -5559,89 +5567,179 @@ msgstr "Érvénytelen sorozat az átalakítási bemenetben"
msgid "Character out of range for UTF-16"
msgstr "A karakter az UTF-16 tartományon kívülre esik"
-#: ../glib/gutils.c:2149 ../glib/gutils.c:2176 ../glib/gutils.c:2282
+#: ../glib/gutils.c:2229
#, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u bájt"
-msgstr[1] "%u bájt"
+msgid "%.1f kB"
+msgstr "%.1f kB"
+
+#: ../glib/gutils.c:2230 ../glib/gutils.c:2436
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: ../glib/gutils.c:2231 ../glib/gutils.c:2441
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: ../glib/gutils.c:2232 ../glib/gutils.c:2446
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
-#: ../glib/gutils.c:2155
+#: ../glib/gutils.c:2233 ../glib/gutils.c:2451
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: ../glib/gutils.c:2234 ../glib/gutils.c:2456
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
+
+#: ../glib/gutils.c:2237
#, c-format
msgid "%.1f KiB"
msgstr "%.1f KiB"
-#: ../glib/gutils.c:2157
+#: ../glib/gutils.c:2238
#, c-format
msgid "%.1f MiB"
msgstr "%.1f MiB"
-#: ../glib/gutils.c:2160
+#: ../glib/gutils.c:2239
#, c-format
msgid "%.1f GiB"
msgstr "%.1f GiB"
-#: ../glib/gutils.c:2163
+#: ../glib/gutils.c:2240
#, c-format
msgid "%.1f TiB"
msgstr "%.1f TiB"
-#: ../glib/gutils.c:2166
+#: ../glib/gutils.c:2241
#, c-format
msgid "%.1f PiB"
msgstr "%.1f PiB"
-#: ../glib/gutils.c:2169
+#: ../glib/gutils.c:2242
#, c-format
msgid "%.1f EiB"
msgstr "%.1f EiB"
-#: ../glib/gutils.c:2182
+#: ../glib/gutils.c:2245
#, c-format
-msgid "%.1f kB"
-msgstr "%.1f kB"
+#| msgid "%.1f kB"
+msgid "%.1f kb"
+msgstr "%.1f kb"
-#: ../glib/gutils.c:2185 ../glib/gutils.c:2300
+#: ../glib/gutils.c:2246
#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
+#| msgid "%.1f MB"
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
-#: ../glib/gutils.c:2188 ../glib/gutils.c:2305
+#: ../glib/gutils.c:2247
#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
+#| msgid "%.1f GB"
+msgid "%.1f Gb"
+msgstr "%.1f Gb"
-#: ../glib/gutils.c:2190 ../glib/gutils.c:2310
+#: ../glib/gutils.c:2248
#, c-format
-msgid "%.1f TB"
-msgstr "%.1f TB"
+#| msgid "%.1f TB"
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
-#: ../glib/gutils.c:2193 ../glib/gutils.c:2315
+#: ../glib/gutils.c:2249
#, c-format
-msgid "%.1f PB"
-msgstr "%.1f PB"
+#| msgid "%.1f PB"
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
-#: ../glib/gutils.c:2196 ../glib/gutils.c:2320
+#: ../glib/gutils.c:2250
#, c-format
-msgid "%.1f EB"
-msgstr "%.1f EB"
+#| msgid "%.1f EB"
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
+
+#: ../glib/gutils.c:2253
+#, c-format
+#| msgid "%.1f KiB"
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
+
+#: ../glib/gutils.c:2254
+#, c-format
+#| msgid "%.1f MiB"
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
+
+#: ../glib/gutils.c:2255
+#, c-format
+#| msgid "%.1f GiB"
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
+
+#: ../glib/gutils.c:2256
+#, c-format
+#| msgid "%.1f TiB"
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
+
+#: ../glib/gutils.c:2257
+#, c-format
+#| msgid "%.1f PiB"
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
+
+#: ../glib/gutils.c:2258
+#, c-format
+#| msgid "%.1f EiB"
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
+
+#: ../glib/gutils.c:2292 ../glib/gutils.c:2418
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u bájt"
+msgstr[1] "%u bájt"
+
+#: ../glib/gutils.c:2296
+#, c-format
+#| msgid "%u byte"
+#| msgid_plural "%u bytes"
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u bit"
+msgstr[1] "%u bit"
#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2233
+#: ../glib/gutils.c:2363
#, c-format
msgid "%s byte"
msgid_plural "%s bytes"
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:2368
+#, c-format
+#| msgid "%s byte"
+#| msgid_plural "%s bytes"
+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.
#. * Please translate as literally as possible.
#.
-#: ../glib/gutils.c:2295
+#: ../glib/gutils.c:2431
#, c-format
msgid "%.1f KB"
msgstr "%.1f KB"
-
diff --git a/po/id.po b/po/id.po
index a9126947e..e3fd0fb31 100644
--- a/po/id.po
+++ b/po/id.po
@@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: glib master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2017-11-28 14:26+0000\n"
-"PO-Revision-Date: 2017-12-05 14:29+0700\n"
+"POT-Creation-Date: 2018-02-03 11:13+0000\n"
+"PO-Revision-Date: 2018-02-05 12:10+0700\n"
"Last-Translator: Kukuh Syafaat <syafaatkukuh@gmail.com>\n"
"Language-Team: Indonesian <gnome@i15n.org>\n"
"Language: id\n"
@@ -19,27 +19,27 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 2.0.6\n"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "GApplication options"
msgstr "Opsi GApplication"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "Show GApplication options"
msgstr "Tunjukkan opsi GApplication"
-#: ../gio/gapplication.c:535
+#: ../gio/gapplication.c:540
msgid "Enter GApplication service mode (use from D-Bus service files)"
msgstr "Masuk mode layanan GApplication (pakai dari berkas layanan D-Bus)"
-#: ../gio/gapplication.c:547
+#: ../gio/gapplication.c:552
msgid "Override the application’s ID"
msgstr "Timpa ID aplikasi"
#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:522
+#: ../gio/gsettings-tool.c:569
msgid "Print help"
msgstr "Cetak bantuan"
@@ -52,7 +52,7 @@ msgstr "[PERINTAH]"
msgid "Print version"
msgstr "Cetak versi"
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:575
msgid "Print version information and exit"
msgstr "Cetak informasi versi dan keluar"
@@ -142,7 +142,7 @@ msgid "Optional parameter to the action invocation, in GVariant format"
msgstr "Parameter opsional untuk pemanggilan aksi, dalam format GVariant"
#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:614
+#: ../gio/gsettings-tool.c:661
#, c-format
msgid ""
"Unknown command %s\n"
@@ -156,7 +156,7 @@ msgid "Usage:\n"
msgstr "Cara pakai:\n"
#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:649
+#: ../gio/gsettings-tool.c:696
msgid "Arguments:\n"
msgstr "Argumen:\n"
@@ -260,7 +260,7 @@ msgstr ""
#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:209
#, c-format
msgid "Too large count value passed to %s"
msgstr "Nilai cacah yang dilewatkan ke %s terlalu besar"
@@ -303,29 +303,29 @@ msgid "Not enough space in destination"
msgstr "Tak cukup ruang di tujuan"
#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:437 ../glib/gconvert.c:844
+#: ../gio/gdatainputstream.c:1261 ../glib/gconvert.c:452 ../glib/gconvert.c:877
#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
-#: ../glib/giochannel.c:2443 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
+#: ../glib/giochannel.c:2443 ../glib/gutf8.c:869 ../glib/gutf8.c:1322
msgid "Invalid byte sequence in conversion input"
msgstr "Rangkaian bita dalam input konversi tidak benar"
-#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:445 ../glib/gconvert.c:769
+#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:460 ../glib/gconvert.c:791
#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
#, c-format
msgid "Error during conversion: %s"
msgstr "Galat ketika konversi: %s"
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1101
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
msgid "Cancellable initialization not supported"
msgstr "Inisialisasi yang dapat dibatalkan tak didukung"
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:320
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:327
#: ../glib/giochannel.c:1385
#, c-format
msgid "Conversion from character set “%s†to “%s†is not supported"
msgstr "Konversi dari gugus karakter \"%s\" ke \"%s\" tak didukung"
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:324
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:331
#, c-format
msgid "Could not open converter from “%s†to “%sâ€"
msgstr "Tidak dapat membuka pengubah dari \"%s\" ke \"%s\""
@@ -364,13 +364,13 @@ msgstr "Pemalsuan kredensial tak diimplementasikan di OS ini"
msgid "Unexpected early end-of-stream"
msgstr "Akhir stream terlalu dini, tak diharapkan"
-#: ../gio/gdbusaddress.c:155 ../gio/gdbusaddress.c:243
-#: ../gio/gdbusaddress.c:324
+#: ../gio/gdbusaddress.c:158 ../gio/gdbusaddress.c:246
+#: ../gio/gdbusaddress.c:327
#, c-format
msgid "Unsupported key “%s†in address entry “%sâ€"
msgstr "Kunci \"%s\" tak didukung pada entri alamat \"%s\""
-#: ../gio/gdbusaddress.c:182
+#: ../gio/gdbusaddress.c:185
#, c-format
msgid ""
"Address “%s†is invalid (need exactly one of path, tmpdir or abstract keys)"
@@ -378,27 +378,27 @@ msgstr ""
"Alamat \"%s\" tak valid (perlu hanya salah satu dari path, tmpdir, atau "
"kunci abstrak)"
-#: ../gio/gdbusaddress.c:195
+#: ../gio/gdbusaddress.c:198
#, 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:258 ../gio/gdbusaddress.c:339
+#: ../gio/gdbusaddress.c:261 ../gio/gdbusaddress.c:342
#, c-format
msgid "Error in address “%s†— the port attribute is malformed"
msgstr "Galat dalam alamat \"%s\" — atribut port salah bentuk"
-#: ../gio/gdbusaddress.c:269 ../gio/gdbusaddress.c:350
+#: ../gio/gdbusaddress.c:272 ../gio/gdbusaddress.c:353
#, c-format
msgid "Error in address “%s†— the family attribute is malformed"
msgstr "Galat dalam alamat \"%s\" — atribut family salah bentuk"
-#: ../gio/gdbusaddress.c:460
+#: ../gio/gdbusaddress.c:463
#, c-format
msgid "Address element “%s†does not contain a colon (:)"
msgstr "Elemen alamat \"%s\" tak memuat titik dua (:)"
-#: ../gio/gdbusaddress.c:481
+#: ../gio/gdbusaddress.c:484
#, c-format
msgid ""
"Key/Value pair %d, “%sâ€, in address element “%s†does not contain an equal "
@@ -407,7 +407,7 @@ msgstr ""
"Pasangan kunci/nilai %d, \"%s\", dalam elemen alamat \"%s\" tak memuat tanda "
"sama dengan"
-#: ../gio/gdbusaddress.c:495
+#: ../gio/gdbusaddress.c:498
#, c-format
msgid ""
"Error unescaping key or value in Key/Value pair %d, “%sâ€, in address element "
@@ -416,7 +416,7 @@ msgstr ""
"Galat saat membongkar kunci atau nilai dalam pasangan Key/Value %d, \"%s\", "
"dalam elemen alamat \"%s\""
-#: ../gio/gdbusaddress.c:573
+#: ../gio/gdbusaddress.c:576
#, c-format
msgid ""
"Error in address “%s†— the unix transport requires exactly one of the keys "
@@ -425,90 +425,90 @@ msgstr ""
"Galat dalam alamat \"%s\" — transport unix memerlukan hanya satu dari kunci "
"\"path\" atau \"abstract\" untuk ditata"
-#: ../gio/gdbusaddress.c:609
+#: ../gio/gdbusaddress.c:612
#, 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:623
+#: ../gio/gdbusaddress.c:626
#, 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:637
+#: ../gio/gdbusaddress.c:640
#, 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:658
+#: ../gio/gdbusaddress.c:661
msgid "Error auto-launching: "
msgstr "Galat saat meluncurkan otomatis: "
-#: ../gio/gdbusaddress.c:666
+#: ../gio/gdbusaddress.c:669
#, 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:704
+#: ../gio/gdbusaddress.c:714
#, c-format
msgid "Error opening nonce file “%sâ€: %s"
msgstr "Galat saat membuka berkas nonce \"%s\": %s"
-#: ../gio/gdbusaddress.c:723
+#: ../gio/gdbusaddress.c:733
#, c-format
msgid "Error reading from nonce file “%sâ€: %s"
msgstr "Galat saat membaca berkas nonce \"%s\": %s"
-#: ../gio/gdbusaddress.c:732
+#: ../gio/gdbusaddress.c:742
#, c-format
msgid "Error reading from nonce file “%sâ€, expected 16 bytes, got %d"
msgstr "Galat saat membaca berkas nonce \"%s\", berharap 16 byte, mendapat %d"
-#: ../gio/gdbusaddress.c:750
+#: ../gio/gdbusaddress.c:760
#, 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:959
+#: ../gio/gdbusaddress.c:969
msgid "The given address is empty"
msgstr "Tidak ada alamat yang diberikan"
-#: ../gio/gdbusaddress.c:1072
+#: ../gio/gdbusaddress.c:1082
#, c-format
msgid "Cannot spawn a message bus when setuid"
msgstr "Tidak bisa spawn suatu bus pesan ketika setuid"
-#: ../gio/gdbusaddress.c:1079
+#: ../gio/gdbusaddress.c:1089
msgid "Cannot spawn a message bus without a machine-id: "
msgstr "Tidak bisa spawn suatu bus pesan tanpa id-mesin: "
-#: ../gio/gdbusaddress.c:1086
+#: ../gio/gdbusaddress.c:1096
#, c-format
msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
msgstr "Tidak bisa meluncurkan mandiri D-Bus tanpa $DISPLAY X11"
-#: ../gio/gdbusaddress.c:1128
+#: ../gio/gdbusaddress.c:1138
#, c-format
msgid "Error spawning command line “%sâ€: "
msgstr "Galat saat spawn baris perintah \"%s\": "
-#: ../gio/gdbusaddress.c:1345
+#: ../gio/gdbusaddress.c:1355
#, c-format
msgid "(Type any character to close this window)\n"
msgstr "(Ketikkan karakter apapun untuk menutup jendela ini)\n"
-#: ../gio/gdbusaddress.c:1499
+#: ../gio/gdbusaddress.c:1509
#, c-format
msgid "Session dbus not running, and autolaunch failed"
msgstr "dbus sesi tak sedang berjalan, dan peluncuran-otomatis gagal"
-#: ../gio/gdbusaddress.c:1510
+#: ../gio/gdbusaddress.c:1520
#, c-format
msgid "Cannot determine session bus address (not implemented for this OS)"
msgstr ""
"Tidak bisa menentukan alamat bus sesi (tidak diimplementasi bagi OS ini)"
-#: ../gio/gdbusaddress.c:1648
+#: ../gio/gdbusaddress.c:1658
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -517,7 +517,7 @@ msgstr ""
"Tak bisa menentukan alamat bus dari variabel lingkungan "
"DBUS_STARTER_BUS_TYPE — nilai tak dikenal \"%s\""
-#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7155
+#: ../gio/gdbusaddress.c:1667 ../gio/gdbusconnection.c:7158
msgid ""
"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
"variable is not set"
@@ -525,7 +525,7 @@ msgstr ""
"Tak bisa menentukan alamat bus karena variabel lingkungan "
"DBUS_STARTER_BUS_TYPE tak diisi"
-#: ../gio/gdbusaddress.c:1667
+#: ../gio/gdbusaddress.c:1677
#, c-format
msgid "Unknown bus type %d"
msgstr "Tipe bus %d tak dikenal"
@@ -672,12 +672,12 @@ msgstr ""
"Galat menata properti '%s': Tipe yang diharapkan '%s' tapi diperoleh '%s'"
#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
-#: ../gio/gdbusconnection.c:6586
+#: ../gio/gdbusconnection.c:6589
#, c-format
msgid "No such interface '%s'"
msgstr "Tak ada antar muka '%s'"
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7095
+#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7098
#, c-format
msgid "No such interface '%s' on object at path %s"
msgstr "Tak ada antar muka '%s' pada objek di lokasi %s"
@@ -712,17 +712,17 @@ msgstr "Tak bisa menata properti %s.%s"
msgid "Method '%s' returned type '%s', but expected '%s'"
msgstr "Metoda '%s' mengembalikan tipe '%s', tapi yang diharapkan '%s'"
-#: ../gio/gdbusconnection.c:6697
+#: ../gio/gdbusconnection.c:6700
#, c-format
msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
msgstr "Metoda '%s' pada antar muka '%s' dengan tanda tangan '%s' tak ada"
-#: ../gio/gdbusconnection.c:6818
+#: ../gio/gdbusconnection.c:6821
#, c-format
msgid "A subtree is already exported for %s"
msgstr "Subtree telah diekspor bagi %s"
-#: ../gio/gdbusconnection.c:7146
+#: ../gio/gdbusconnection.c:7149
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -879,11 +879,9 @@ msgstr ""
#: ../gio/gdbusmessage.c:2656
#, 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 ""
-"Pesan punya %d deskriptor berkas tapi ruas header mengindikasikan %d "
-"deskriptor berkas"
+"Jumlah deskriptor berkas dalam pesan (%d) berbeda dari field header (%d)"
#: ../gio/gdbusmessage.c:2664
msgid "Cannot serialize message: "
@@ -1251,7 +1249,7 @@ msgstr "Galat: Terlalu banyak argumen.\n"
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:2001 ../gio/gdesktopappinfo.c:4531
+#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4566
msgid "Unnamed"
msgstr "Tanpa nama"
@@ -1259,31 +1257,31 @@ msgstr "Tanpa nama"
msgid "Desktop file didn’t specify Exec field"
msgstr "Berkas desktop tak menyatakan ruas Exec"
-#: ../gio/gdesktopappinfo.c:2694
+#: ../gio/gdesktopappinfo.c:2701
msgid "Unable to find terminal required for application"
msgstr "Tak bisa temukan terminal yang diperlukan bagi aplikasi"
-#: ../gio/gdesktopappinfo.c:3127
+#: ../gio/gdesktopappinfo.c:3135
#, 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:3131
+#: ../gio/gdesktopappinfo.c:3139
#, 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:3371 ../gio/gdesktopappinfo.c:3395
+#: ../gio/gdesktopappinfo.c:3379 ../gio/gdesktopappinfo.c:3403
msgid "Application information lacks an identifier"
msgstr "Informasi aplikasi tak punya identifier"
-#: ../gio/gdesktopappinfo.c:3629
+#: ../gio/gdesktopappinfo.c:3637
#, c-format
msgid "Can’t create user desktop file %s"
msgstr "Tak bisa membuat berkas desktop pengguna %s"
-#: ../gio/gdesktopappinfo.c:3763
+#: ../gio/gdesktopappinfo.c:3771
#, c-format
msgid "Custom definition for %s"
msgstr "Definisi gubahan bagi %s"
@@ -1344,14 +1342,14 @@ msgstr "Cacah token (%d) salah bentuk di pengkodean GEmblemedIcon"
msgid "Expected a GEmblem for GEmblemedIcon"
msgstr "Berharap suatu GEmblem bagi GEmblemedIcon"
-#: ../gio/gfile.c:970 ../gio/gfile.c:1208 ../gio/gfile.c:1346
-#: ../gio/gfile.c:1584 ../gio/gfile.c:1639 ../gio/gfile.c:1697
-#: ../gio/gfile.c:1781 ../gio/gfile.c:1838 ../gio/gfile.c:1902
-#: ../gio/gfile.c:1957 ../gio/gfile.c:3603 ../gio/gfile.c:3658
-#: ../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:7853 ../gio/gfile.c:7943 ../gio/gfile.c:8027
+#: ../gio/gfile.c:1071 ../gio/gfile.c:1309 ../gio/gfile.c:1447
+#: ../gio/gfile.c:1685 ../gio/gfile.c:1740 ../gio/gfile.c:1798
+#: ../gio/gfile.c:1882 ../gio/gfile.c:1939 ../gio/gfile.c:2003
+#: ../gio/gfile.c:2058 ../gio/gfile.c:3704 ../gio/gfile.c:3759
+#: ../gio/gfile.c:3995 ../gio/gfile.c:4037 ../gio/gfile.c:4505
+#: ../gio/gfile.c:4916 ../gio/gfile.c:5001 ../gio/gfile.c:5091
+#: ../gio/gfile.c:5188 ../gio/gfile.c:5275 ../gio/gfile.c:5376
+#: ../gio/gfile.c:7954 ../gio/gfile.c:8044 ../gio/gfile.c:8128
#: ../gio/win32/gwinhttpfile.c:437
msgid "Operation not supported"
msgstr "Operasi tak didukung"
@@ -1360,69 +1358,69 @@ msgstr "Operasi tak didukung"
#. * trying to find the enclosing (user visible)
#. * mount of a file, but none exists.
#.
-#: ../gio/gfile.c:1469
+#: ../gio/gfile.c:1570
msgid "Containing mount does not exist"
msgstr "Kait yang memuat tak ada"
-#: ../gio/gfile.c:2516 ../gio/glocalfile.c:2380
+#: ../gio/gfile.c:2617 ../gio/glocalfile.c:2446
msgid "Can’t copy over directory"
msgstr "Tak bisa menyalin direktori atas direktori"
-#: ../gio/gfile.c:2576
+#: ../gio/gfile.c:2677
msgid "Can’t copy directory over directory"
msgstr "Tak bisa menyalin direktori atas direktori"
-#: ../gio/gfile.c:2584
+#: ../gio/gfile.c:2685
msgid "Target file exists"
msgstr "Berkas tujuan telah ada"
-#: ../gio/gfile.c:2603
+#: ../gio/gfile.c:2704
msgid "Can’t recursively copy directory"
msgstr "Tak bisa menyalin direktori secara rekursif"
-#: ../gio/gfile.c:2878
+#: ../gio/gfile.c:2979
msgid "Splice not supported"
msgstr "Splice tidak didukung"
-#: ../gio/gfile.c:2882
+#: ../gio/gfile.c:2983
#, c-format
msgid "Error splicing file: %s"
msgstr "Galat saat men-splice berkas: %s"
-#: ../gio/gfile.c:3014
+#: ../gio/gfile.c:3115
msgid "Copy (reflink/clone) between mounts is not supported"
msgstr "Menyalin (reflink/clone) antar kait tak didukung"
-#: ../gio/gfile.c:3018
+#: ../gio/gfile.c:3119
msgid "Copy (reflink/clone) is not supported or invalid"
msgstr "Menyalin (reflink/clone) tak didukung atau tak valid"
-#: ../gio/gfile.c:3023
+#: ../gio/gfile.c:3124
msgid "Copy (reflink/clone) is not supported or didn’t work"
msgstr "Menyalin (reflink/clone) tak didukung atau tak bekerja"
-#: ../gio/gfile.c:3086
+#: ../gio/gfile.c:3187
msgid "Can’t copy special file"
msgstr "Tak bisa menyalin berkas spesial"
-#: ../gio/gfile.c:3884
+#: ../gio/gfile.c:3985
msgid "Invalid symlink value given"
msgstr "Diberikan nilai link simbolik yang tak valid"
-#: ../gio/gfile.c:4045
+#: ../gio/gfile.c:4146
msgid "Trash not supported"
msgstr "Tong sampah tak didukung"
-#: ../gio/gfile.c:4157
+#: ../gio/gfile.c:4258
#, c-format
msgid "File names cannot contain “%câ€"
msgstr "Nama berkas tak boleh mengandung \"%c\""
-#: ../gio/gfile.c:6638 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6739 ../gio/gvolume.c:363
msgid "volume doesn’t implement mount"
msgstr "volume tak mengimplementasi pengaitan"
-#: ../gio/gfile.c:6747
+#: ../gio/gfile.c:6848
msgid "No application is registered as handling this file"
msgstr "Tak ada aplikasi terdaftar yang menangani berkas ini"
@@ -1468,7 +1466,7 @@ msgid "Truncate not supported on stream"
msgstr "Pemenggalan tak didukung pada stream"
#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1649
+#: ../glib/gconvert.c:1777
msgid "Invalid hostname"
msgstr "Nama host salah"
@@ -1550,7 +1548,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:106 ../gio/gunixsocketaddress.c:218
+#: ../gio/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:218
msgid "Not enough space for socket address"
msgstr "Tak cukup ruang bagi alamat soket"
@@ -2815,7 +2813,7 @@ msgstr "menghapus berkas keluaran yang telah ada.\n"
msgid "Invalid filename %s"
msgstr "Nama berkas tak valid: %s"
-#: ../gio/glocalfile.c:1039
+#: ../gio/glocalfile.c:1105
#, c-format
msgid "Error getting filesystem info for %s: %s"
msgstr "Galat saat mengambil info sistem berkas bagi %s: %s"
@@ -2824,125 +2822,125 @@ msgstr "Galat saat mengambil info sistem berkas bagi %s: %s"
#. * the enclosing (user visible) mount of a file, but none
#. * exists.
#.
-#: ../gio/glocalfile.c:1178
+#: ../gio/glocalfile.c:1244
#, c-format
msgid "Containing mount for file %s not found"
msgstr "Kait wadah bagi berkas %s tak ditemukan"
-#: ../gio/glocalfile.c:1201
+#: ../gio/glocalfile.c:1267
msgid "Can’t rename root directory"
msgstr "Tidak bisa mengubah nama direktori root"
-#: ../gio/glocalfile.c:1219 ../gio/glocalfile.c:1242
+#: ../gio/glocalfile.c:1285 ../gio/glocalfile.c:1308
#, c-format
msgid "Error renaming file %s: %s"
msgstr "Galat saat mengubah nama berkas %s: %s"
-#: ../gio/glocalfile.c:1226
+#: ../gio/glocalfile.c:1292
msgid "Can’t rename file, filename already exists"
msgstr "Tidak bisa mengubah nama berkas, nama telah dipakai"
-#: ../gio/glocalfile.c:1239 ../gio/glocalfile.c:2256 ../gio/glocalfile.c:2284
-#: ../gio/glocalfile.c:2441 ../gio/glocalfileoutputstream.c:551
+#: ../gio/glocalfile.c:1305 ../gio/glocalfile.c:2322 ../gio/glocalfile.c:2350
+#: ../gio/glocalfile.c:2507 ../gio/glocalfileoutputstream.c:551
msgid "Invalid filename"
msgstr "Nama berkas tak valid"
-#: ../gio/glocalfile.c:1407 ../gio/glocalfile.c:1422
+#: ../gio/glocalfile.c:1473 ../gio/glocalfile.c:1488
#, c-format
msgid "Error opening file %s: %s"
msgstr "Galat saat membuka berkas %s: %s"
-#: ../gio/glocalfile.c:1547
+#: ../gio/glocalfile.c:1613
#, c-format
msgid "Error removing file %s: %s"
msgstr "Galat saat menghapus berkas %s: %s"
-#: ../gio/glocalfile.c:1931
+#: ../gio/glocalfile.c:1997
#, c-format
msgid "Error trashing file %s: %s"
msgstr "Galat saat memindah berkas %s ke tong sampah: %s"
-#: ../gio/glocalfile.c:1954
+#: ../gio/glocalfile.c:2020
#, c-format
msgid "Unable to create trash dir %s: %s"
msgstr "Tak bisa membuat direktori tong sampah %s: %s"
-#: ../gio/glocalfile.c:1974
+#: ../gio/glocalfile.c:2040
#, c-format
msgid "Unable to find toplevel directory to trash %s"
msgstr ""
"Tidak bisa menemukan direktori puncak %s yang akan dibuang ke tong sampah"
-#: ../gio/glocalfile.c:2053 ../gio/glocalfile.c:2073
+#: ../gio/glocalfile.c:2119 ../gio/glocalfile.c:2139
#, c-format
msgid "Unable to find or create trash directory for %s"
msgstr "Tidak bisa menemukan atau membuat direktori tong sampah bagi %s"
-#: ../gio/glocalfile.c:2108
+#: ../gio/glocalfile.c:2174
#, c-format
msgid "Unable to create trashing info file for %s: %s"
msgstr "Tidak bisa membuat berkas info pembuangan ke tong sampah bagi %s: %s"
-#: ../gio/glocalfile.c:2167
+#: ../gio/glocalfile.c:2233
#, c-format
msgid "Unable to trash file %s across filesystem boundaries"
msgstr ""
"Tidak bisa membuang berkas %s ke tong sampah menyeberang batas sistem berkas"
-#: ../gio/glocalfile.c:2171 ../gio/glocalfile.c:2227
+#: ../gio/glocalfile.c:2237 ../gio/glocalfile.c:2293
#, c-format
msgid "Unable to trash file %s: %s"
msgstr "Tak bisa membuang berkas %s ke tong sampah: %s"
-#: ../gio/glocalfile.c:2233
+#: ../gio/glocalfile.c:2299
#, c-format
msgid "Unable to trash file %s"
msgstr "Tak bisa membuang berkas ke tong sampah %s"
-#: ../gio/glocalfile.c:2259
+#: ../gio/glocalfile.c:2325
#, c-format
msgid "Error creating directory %s: %s"
msgstr "Galat saat membuat direktori %s: %s"
-#: ../gio/glocalfile.c:2288
+#: ../gio/glocalfile.c:2354
#, c-format
msgid "Filesystem does not support symbolic links"
msgstr "Sistem berkas tak mendukung taut simbolik"
-#: ../gio/glocalfile.c:2291
+#: ../gio/glocalfile.c:2357
#, c-format
msgid "Error making symbolic link %s: %s"
msgstr "Galat saat membuat taut simbolis %s: %s"
-#: ../gio/glocalfile.c:2297 ../glib/gfileutils.c:2127
+#: ../gio/glocalfile.c:2363 ../glib/gfileutils.c:2127
msgid "Symbolic links not supported"
msgstr "Taut simbolik tidak didukung"
-#: ../gio/glocalfile.c:2352 ../gio/glocalfile.c:2387 ../gio/glocalfile.c:2444
+#: ../gio/glocalfile.c:2418 ../gio/glocalfile.c:2453 ../gio/glocalfile.c:2510
#, c-format
msgid "Error moving file %s: %s"
msgstr "Galat saat memindah berkas %s: %s"
-#: ../gio/glocalfile.c:2375
+#: ../gio/glocalfile.c:2441
msgid "Can’t move directory over directory"
msgstr "Tidak bisa memindah direktori atas direktori"
-#: ../gio/glocalfile.c:2401 ../gio/glocalfileoutputstream.c:935
+#: ../gio/glocalfile.c:2467 ../gio/glocalfileoutputstream.c:935
#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
msgid "Backup file creation failed"
msgstr "Pembuatan berkas cadangan gagal"
-#: ../gio/glocalfile.c:2420
+#: ../gio/glocalfile.c:2486
#, c-format
msgid "Error removing target file: %s"
msgstr "Galat saat menghapus berkas tujuan: %s"
-#: ../gio/glocalfile.c:2434
+#: ../gio/glocalfile.c:2500
msgid "Move between mounts not supported"
msgstr "Perpindahan antar kait tak didukung"
-#: ../gio/glocalfile.c:2625
+#: ../gio/glocalfile.c:2691
#, c-format
msgid "Could not determine the disk usage of %s: %s"
msgstr "Tak bisa menentukan penggunaan diska dari %s: %s"
@@ -2973,70 +2971,70 @@ msgstr " (pengkodean tak valid)"
msgid "Error when getting information for file “%sâ€: %s"
msgstr "Galat saat mengambil informasi bagi berkas \"%s\": %s"
-#: ../gio/glocalfileinfo.c:2034
+#: ../gio/glocalfileinfo.c:2038
#, c-format
msgid "Error when getting information for file descriptor: %s"
msgstr "Galat saat mengambil informasi bagi descriptor berkas: %s"
-#: ../gio/glocalfileinfo.c:2079
+#: ../gio/glocalfileinfo.c:2083
msgid "Invalid attribute type (uint32 expected)"
msgstr "Tipe atribut tak valid (diharapkan uint32)"
-#: ../gio/glocalfileinfo.c:2097
+#: ../gio/glocalfileinfo.c:2101
msgid "Invalid attribute type (uint64 expected)"
msgstr "Tipe atribut tak valid (diharapkan uint64)"
-#: ../gio/glocalfileinfo.c:2116 ../gio/glocalfileinfo.c:2135
+#: ../gio/glocalfileinfo.c:2120 ../gio/glocalfileinfo.c:2139
msgid "Invalid attribute type (byte string expected)"
msgstr "Jenis atribut tidak sah (diharapkan bita berjenis string)"
-#: ../gio/glocalfileinfo.c:2180
+#: ../gio/glocalfileinfo.c:2184
msgid "Cannot set permissions on symlinks"
msgstr "Tak bisa menata ijin pada taut simbolik"
-#: ../gio/glocalfileinfo.c:2196
+#: ../gio/glocalfileinfo.c:2200
#, c-format
msgid "Error setting permissions: %s"
msgstr "Galat saat menata ijin: %s"
-#: ../gio/glocalfileinfo.c:2247
+#: ../gio/glocalfileinfo.c:2251
#, c-format
msgid "Error setting owner: %s"
msgstr "Galat saat menata pemilik: %s"
-#: ../gio/glocalfileinfo.c:2270
+#: ../gio/glocalfileinfo.c:2274
msgid "symlink must be non-NULL"
msgstr "symlink tak boleh NULL"
-#: ../gio/glocalfileinfo.c:2280 ../gio/glocalfileinfo.c:2299
-#: ../gio/glocalfileinfo.c:2310
+#: ../gio/glocalfileinfo.c:2284 ../gio/glocalfileinfo.c:2303
+#: ../gio/glocalfileinfo.c:2314
#, c-format
msgid "Error setting symlink: %s"
msgstr "Galat saat menata taut simbolis: %s"
-#: ../gio/glocalfileinfo.c:2289
+#: ../gio/glocalfileinfo.c:2293
msgid "Error setting symlink: file is not a symlink"
msgstr "Galat saat menata symlink: berkas bukan suatu link simbolik"
-#: ../gio/glocalfileinfo.c:2415
+#: ../gio/glocalfileinfo.c:2419
#, c-format
msgid "Error setting modification or access time: %s"
msgstr "Galat saat menata waktu modifikasi atau akses: %s"
-#: ../gio/glocalfileinfo.c:2438
+#: ../gio/glocalfileinfo.c:2442
msgid "SELinux context must be non-NULL"
msgstr "Konteks SELinux tak boleh NULL"
-#: ../gio/glocalfileinfo.c:2453
+#: ../gio/glocalfileinfo.c:2457
#, c-format
msgid "Error setting SELinux context: %s"
msgstr "Galat saat menata konteks SELinux: %s"
-#: ../gio/glocalfileinfo.c:2460
+#: ../gio/glocalfileinfo.c:2464
msgid "SELinux is not enabled on this system"
msgstr "SELinux tak diaktifkan di sistem ini"
-#: ../gio/glocalfileinfo.c:2552
+#: ../gio/glocalfileinfo.c:2556
#, c-format
msgid "Setting attribute %s not supported"
msgstr "Penataan atribut %s tak didukung"
@@ -3243,6 +3241,10 @@ msgstr "Stream sumber telah ditutup"
msgid "Error resolving “%sâ€: %s"
msgstr "Galat saat mengurai \"%s\": %s"
+#: ../gio/gresolver.c:729 ../gio/gresolver.c:781
+msgid "Invalid domain"
+msgstr "Domain tidak valid"
+
#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
#: ../gio/gresource.c:1258 ../gio/gresourcefile.c:476
@@ -3355,7 +3357,7 @@ msgstr ""
msgid " SECTION An (optional) elf section name\n"
msgstr " SEKSI Nama seksi elf (opsional)\n"
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:656
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:703
msgid " COMMAND The (optional) command to explain\n"
msgstr " PERINTAH Perintah (opsional) untuk dijelaskan\n"
@@ -3388,7 +3390,7 @@ msgid " PATH A resource path\n"
msgstr " PATH Path sumber daya\n"
#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:853
+#: ../gio/gsettings-tool.c:908
#, c-format
msgid "No such schema “%sâ€\n"
msgstr "Tidak ada skema \"%s\"\n"
@@ -3424,38 +3426,38 @@ 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:491
+#: ../gio/gsettings-tool.c:538
#, c-format
msgid "The provided value is outside of the valid range\n"
msgstr "Nilai yang diberikan diluar rentang yang valid\n"
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:545
#, c-format
msgid "The key is not writable\n"
msgstr "Kunci tidak dapat ditulisi\n"
-#: ../gio/gsettings-tool.c:534
+#: ../gio/gsettings-tool.c:581
msgid "List the installed (non-relocatable) schemas"
msgstr "Daftar skema (yang tak bisa dipindah) yang terpasang"
-#: ../gio/gsettings-tool.c:540
+#: ../gio/gsettings-tool.c:587
msgid "List the installed relocatable schemas"
msgstr "Daftar skema yang dapat dipindah yang terpasang"
-#: ../gio/gsettings-tool.c:546
+#: ../gio/gsettings-tool.c:593
msgid "List the keys in SCHEMA"
msgstr "Daftar kunci di SKEMA"
-#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
-#: ../gio/gsettings-tool.c:596
+#: ../gio/gsettings-tool.c:594 ../gio/gsettings-tool.c:600
+#: ../gio/gsettings-tool.c:643
msgid "SCHEMA[:PATH]"
msgstr "SKEMA[:PATH]"
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:599
msgid "List the children of SCHEMA"
msgstr "Daftar anak dari SKEMA"
-#: ../gio/gsettings-tool.c:558
+#: ../gio/gsettings-tool.c:605
msgid ""
"List keys and values, recursively\n"
"If no SCHEMA is given, list all keys\n"
@@ -3463,49 +3465,49 @@ msgstr ""
"Daftar kunci dan nilai, secara rekursif\n"
"Bila tak ada SKEMA diberikan, daftar semua kunci\n"
-#: ../gio/gsettings-tool.c:560
+#: ../gio/gsettings-tool.c:607
msgid "[SCHEMA[:PATH]]"
msgstr "[SKEMA[:PATH]]"
-#: ../gio/gsettings-tool.c:565
+#: ../gio/gsettings-tool.c:612
msgid "Get the value of KEY"
msgstr "Ambil nilai dari KUNCI"
-#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
-#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
-#: ../gio/gsettings-tool.c:602
+#: ../gio/gsettings-tool.c:613 ../gio/gsettings-tool.c:619
+#: ../gio/gsettings-tool.c:625 ../gio/gsettings-tool.c:637
+#: ../gio/gsettings-tool.c:649
msgid "SCHEMA[:PATH] KEY"
msgstr "SKEMA[:PATH] KUNCI"
-#: ../gio/gsettings-tool.c:571
+#: ../gio/gsettings-tool.c:618
msgid "Query the range of valid values for KEY"
msgstr "Kueri rentang nilai yang valid bagi KUNCI"
-#: ../gio/gsettings-tool.c:577
+#: ../gio/gsettings-tool.c:624
msgid "Query the description for KEY"
msgstr "Kueri deskripsi bagi KUNCI"
-#: ../gio/gsettings-tool.c:583
+#: ../gio/gsettings-tool.c:630
msgid "Set the value of KEY to VALUE"
msgstr "Menata nilai KUNCI ke NILAI"
-#: ../gio/gsettings-tool.c:584
+#: ../gio/gsettings-tool.c:631
msgid "SCHEMA[:PATH] KEY VALUE"
msgstr "SKEMA[:PATH] KUNCI NILAI"
-#: ../gio/gsettings-tool.c:589
+#: ../gio/gsettings-tool.c:636
msgid "Reset KEY to its default value"
msgstr "Menata KUNCI ke nilai bawaannya"
-#: ../gio/gsettings-tool.c:595
+#: ../gio/gsettings-tool.c:642
msgid "Reset all keys in SCHEMA to their defaults"
msgstr "Tata ulang semua kunci dalam SKEMA ke nilai baku"
-#: ../gio/gsettings-tool.c:601
+#: ../gio/gsettings-tool.c:648
msgid "Check if KEY is writable"
msgstr "Periksa apakah KUNCI dapat ditulisi"
-#: ../gio/gsettings-tool.c:607
+#: ../gio/gsettings-tool.c:654
msgid ""
"Monitor KEY for changes.\n"
"If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3515,11 +3517,11 @@ msgstr ""
"Bila tak ada KUNCI yang dinyatakan, memantau semua kunci dalam SKEMA.\n"
"Gunakan ^C untuk berhenti memantau.\n"
-#: ../gio/gsettings-tool.c:610
+#: ../gio/gsettings-tool.c:657
msgid "SCHEMA[:PATH] [KEY]"
msgstr "SKEMA[:PATH] [KUNCI]"
-#: ../gio/gsettings-tool.c:622
+#: ../gio/gsettings-tool.c:669
msgid ""
"Usage:\n"
" gsettings --version\n"
@@ -3566,7 +3568,7 @@ msgstr ""
"Pakai 'gsettings help PERINTAH' untuk mendapat bantuan terrinci.\n"
"\n"
-#: ../gio/gsettings-tool.c:646
+#: ../gio/gsettings-tool.c:693
#, c-format
msgid ""
"Usage:\n"
@@ -3581,11 +3583,11 @@ msgstr ""
"%s\n"
"\n"
-#: ../gio/gsettings-tool.c:652
+#: ../gio/gsettings-tool.c:699
msgid " SCHEMADIR A directory to search for additional schemas\n"
msgstr " DIRSKEMA Adalah direktori tempat mencari skema tambahan\n"
-#: ../gio/gsettings-tool.c:660
+#: ../gio/gsettings-tool.c:707
msgid ""
" SCHEMA The name of the schema\n"
" PATH The path, for relocatable schemas\n"
@@ -3593,34 +3595,34 @@ msgstr ""
" SKEMA Nama skema\n"
" PATH Path, bagi skema yang dapat dipindah\n"
-#: ../gio/gsettings-tool.c:665
+#: ../gio/gsettings-tool.c:712
msgid " KEY The (optional) key within the schema\n"
msgstr " KUNCI Kunci (opsional) dalam skema\n"
-#: ../gio/gsettings-tool.c:669
+#: ../gio/gsettings-tool.c:716
msgid " KEY The key within the schema\n"
msgstr " KUNCI Kunci dalam skema\n"
-#: ../gio/gsettings-tool.c:673
+#: ../gio/gsettings-tool.c:720
msgid " VALUE The value to set\n"
msgstr " NILAI Tatanan nilai\n"
-#: ../gio/gsettings-tool.c:728
+#: ../gio/gsettings-tool.c:775
#, c-format
msgid "Could not load schemas from %s: %s\n"
msgstr "Tidak dapat memuat skema dari %s: %s\n"
-#: ../gio/gsettings-tool.c:740
+#: ../gio/gsettings-tool.c:787
#, c-format
msgid "No schemas installed\n"
msgstr "Tidak ada skema yang terpasang\n"
-#: ../gio/gsettings-tool.c:811
+#: ../gio/gsettings-tool.c:866
#, c-format
msgid "Empty schema name given\n"
msgstr "Nama skema yang diberikan kosong\n"
-#: ../gio/gsettings-tool.c:866
+#: ../gio/gsettings-tool.c:921
#, c-format
msgid "No such key “%sâ€\n"
msgstr "Tidak ada kunci seperti \"%s\"\n"
@@ -3638,163 +3640,163 @@ msgstr "Soket tak valid, inisialisasi gagal karena: %s"
msgid "Socket is already closed"
msgstr "Soket telah ditutup"
-#: ../gio/gsocket.c:414 ../gio/gsocket.c:2995 ../gio/gsocket.c:4205
-#: ../gio/gsocket.c:4263
+#: ../gio/gsocket.c:414 ../gio/gsocket.c:3010 ../gio/gsocket.c:4220
+#: ../gio/gsocket.c:4278
msgid "Socket I/O timed out"
msgstr "I/O soket kehabisan waktu"
-#: ../gio/gsocket.c:546
+#: ../gio/gsocket.c:549
#, c-format
msgid "creating GSocket from fd: %s"
msgstr "membuat GSocket dari fd: %s"
-#: ../gio/gsocket.c:575 ../gio/gsocket.c:629 ../gio/gsocket.c:636
+#: ../gio/gsocket.c:578 ../gio/gsocket.c:632 ../gio/gsocket.c:639
#, c-format
msgid "Unable to create socket: %s"
msgstr "Tak bisa membuat soket: %s"
-#: ../gio/gsocket.c:629
+#: ../gio/gsocket.c:632
msgid "Unknown family was specified"
msgstr "Famili tak dikenal dinyatakan"
-#: ../gio/gsocket.c:636
+#: ../gio/gsocket.c:639
msgid "Unknown protocol was specified"
msgstr "Protokol tak dikenal dinyatakan"
-#: ../gio/gsocket.c:1127
+#: ../gio/gsocket.c:1130
#, c-format
msgid "Cannot use datagram operations on a non-datagram socket."
msgstr "Tidak bisa memakai operasi datagram pada suatu soket bukan datagram."
-#: ../gio/gsocket.c:1144
+#: ../gio/gsocket.c:1147
#, c-format
msgid "Cannot use datagram operations on a socket with a timeout set."
msgstr ""
"Tidak bisa memakai operasi datagram pada suatu soket yang tenggang waktunya "
"ditata."
-#: ../gio/gsocket.c:1948
+#: ../gio/gsocket.c:1954
#, c-format
msgid "could not get local address: %s"
msgstr "tak bisa mendapat alamat lokal: %s"
-#: ../gio/gsocket.c:1991
+#: ../gio/gsocket.c:2000
#, c-format
msgid "could not get remote address: %s"
msgstr "tak bisa mendapat alamat jauh: %s"
-#: ../gio/gsocket.c:2057
+#: ../gio/gsocket.c:2066
#, c-format
msgid "could not listen: %s"
msgstr "tak bisa mendengarkan: %s"
-#: ../gio/gsocket.c:2156
+#: ../gio/gsocket.c:2168
#, c-format
msgid "Error binding to address: %s"
msgstr "Galat saat mengikat ke alamat: %s"
-#: ../gio/gsocket.c:2214 ../gio/gsocket.c:2251 ../gio/gsocket.c:2361
-#: ../gio/gsocket.c:2379 ../gio/gsocket.c:2449 ../gio/gsocket.c:2507
-#: ../gio/gsocket.c:2525
+#: ../gio/gsocket.c:2226 ../gio/gsocket.c:2263 ../gio/gsocket.c:2373
+#: ../gio/gsocket.c:2391 ../gio/gsocket.c:2461 ../gio/gsocket.c:2519
+#: ../gio/gsocket.c:2537
#, c-format
msgid "Error joining multicast group: %s"
msgstr "Galat saat bergabung dengan grup multicast: %s"
-#: ../gio/gsocket.c:2215 ../gio/gsocket.c:2252 ../gio/gsocket.c:2362
-#: ../gio/gsocket.c:2380 ../gio/gsocket.c:2450 ../gio/gsocket.c:2508
-#: ../gio/gsocket.c:2526
+#: ../gio/gsocket.c:2227 ../gio/gsocket.c:2264 ../gio/gsocket.c:2374
+#: ../gio/gsocket.c:2392 ../gio/gsocket.c:2462 ../gio/gsocket.c:2520
+#: ../gio/gsocket.c:2538
#, c-format
msgid "Error leaving multicast group: %s"
msgstr "Galat saat meninggalkan grup multicast: %s"
-#: ../gio/gsocket.c:2216
+#: ../gio/gsocket.c:2228
msgid "No support for source-specific multicast"
msgstr "Tak ada dukungan bagi multicast spesifik sumber"
-#: ../gio/gsocket.c:2363
+#: ../gio/gsocket.c:2375
msgid "Unsupported socket family"
msgstr "Keluarga soket tak didukung"
-#: ../gio/gsocket.c:2381
+#: ../gio/gsocket.c:2393
msgid "source-specific not an IPv4 address"
msgstr "spesifik sumber bukan alamat IPv4"
-#: ../gio/gsocket.c:2399 ../gio/gsocket.c:2428 ../gio/gsocket.c:2475
+#: ../gio/gsocket.c:2411 ../gio/gsocket.c:2440 ../gio/gsocket.c:2487
#, c-format
msgid "Interface not found: %s"
msgstr "Antarmuka tidak ditemukan: %s"
-#: ../gio/gsocket.c:2415
+#: ../gio/gsocket.c:2427
#, c-format
msgid "Interface name too long"
msgstr "Nama antarmuka terlalu panjang"
-#: ../gio/gsocket.c:2451
+#: ../gio/gsocket.c:2463
msgid "No support for IPv4 source-specific multicast"
msgstr "Tak ada dukungan bagi multicast spesifik sumber IPV4"
-#: ../gio/gsocket.c:2509
+#: ../gio/gsocket.c:2521
msgid "No support for IPv6 source-specific multicast"
msgstr "Tak ada dukungan bagi multicast spesifik sumber IPV6"
-#: ../gio/gsocket.c:2718
+#: ../gio/gsocket.c:2730
#, c-format
msgid "Error accepting connection: %s"
msgstr "Galat saat menerima sambungan: %s"
-#: ../gio/gsocket.c:2839
+#: ../gio/gsocket.c:2854
msgid "Connection in progress"
msgstr "Penyambungan tengah berlangsung"
-#: ../gio/gsocket.c:2888
+#: ../gio/gsocket.c:2903
msgid "Unable to get pending error: "
msgstr "Tak bisa mendapat kesalahan yang tertunda: "
-#: ../gio/gsocket.c:3058
+#: ../gio/gsocket.c:3073
#, c-format
msgid "Error receiving data: %s"
msgstr "Galat saat menerima data: %s"
-#: ../gio/gsocket.c:3253
+#: ../gio/gsocket.c:3268
#, c-format
msgid "Error sending data: %s"
msgstr "Galat saat mengirim data: %s"
-#: ../gio/gsocket.c:3440
+#: ../gio/gsocket.c:3455
#, c-format
msgid "Unable to shutdown socket: %s"
msgstr "Tak bisa mematikan soket: %s"
-#: ../gio/gsocket.c:3521
+#: ../gio/gsocket.c:3536
#, c-format
msgid "Error closing socket: %s"
msgstr "Galat saat menutup soket: %s"
-#: ../gio/gsocket.c:4198
+#: ../gio/gsocket.c:4213
#, c-format
msgid "Waiting for socket condition: %s"
msgstr "Menunggu kondisi soket: %s"
-#: ../gio/gsocket.c:4672 ../gio/gsocket.c:4752 ../gio/gsocket.c:4930
+#: ../gio/gsocket.c:4687 ../gio/gsocket.c:4767 ../gio/gsocket.c:4945
#, c-format
msgid "Error sending message: %s"
msgstr "Galat saat menerima pesan: %s"
-#: ../gio/gsocket.c:4696
+#: ../gio/gsocket.c:4711
msgid "GSocketControlMessage not supported on Windows"
msgstr "GSocketControlMessage tak didukung pada Windows"
-#: ../gio/gsocket.c:5149 ../gio/gsocket.c:5222 ../gio/gsocket.c:5448
+#: ../gio/gsocket.c:5164 ../gio/gsocket.c:5237 ../gio/gsocket.c:5463
#, c-format
msgid "Error receiving message: %s"
msgstr "Galat saat menerima pesan: %s"
-#: ../gio/gsocket.c:5720
+#: ../gio/gsocket.c:5735
#, c-format
msgid "Unable to read socket credentials: %s"
msgstr "Tak bisa membaca kredensial soket: %s"
-#: ../gio/gsocket.c:5729
+#: ../gio/gsocket.c:5744
msgid "g_socket_get_credentials not implemented for this OS"
msgstr "g_socket_get_credentials tidak diimplementasikan untuk OS ini"
@@ -3945,6 +3947,7 @@ msgid "Temporarily unable to resolve “%sâ€"
msgstr "Sementara tidak dapat mengurai \"%s\""
#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
+#: ../gio/gthreadedresolver.c:842
#, c-format
msgid "Error resolving “%sâ€"
msgstr "Galat saat mengurai \"%s\""
@@ -4053,7 +4056,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:2539 ../gio/gunixmounts.c:2592
+#: ../gio/gunixmounts.c:2556 ../gio/gunixmounts.c:2609
msgid "Filesystem root"
msgstr "Akar sistem berkas"
@@ -4157,92 +4160,104 @@ msgstr "Tag \"%s\" yang tak diharapkan, diharapkan tag \"%s\""
msgid "Unexpected tag “%s†inside “%sâ€"
msgstr "Tag \"%s\" yang tak diharapkan di dalam \"%s\""
-#: ../glib/gbookmarkfile.c:1756
+#: ../glib/gbookmarkfile.c:1757
msgid "No valid bookmark file found in data dirs"
msgstr "Tak ditemukan penanda buku yang valid di direktori data"
-#: ../glib/gbookmarkfile.c:1957
+#: ../glib/gbookmarkfile.c:1958
#, c-format
msgid "A bookmark for URI “%s†already exists"
msgstr "Penanda taut untuk URI \"%s\" telah ada"
-#: ../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
+#: ../glib/gbookmarkfile.c:2004 ../glib/gbookmarkfile.c:2162
+#: ../glib/gbookmarkfile.c:2247 ../glib/gbookmarkfile.c:2327
+#: ../glib/gbookmarkfile.c:2412 ../glib/gbookmarkfile.c:2495
+#: ../glib/gbookmarkfile.c:2573 ../glib/gbookmarkfile.c:2652
+#: ../glib/gbookmarkfile.c:2694 ../glib/gbookmarkfile.c:2791
+#: ../glib/gbookmarkfile.c:2912 ../glib/gbookmarkfile.c:3102
+#: ../glib/gbookmarkfile.c:3178 ../glib/gbookmarkfile.c:3346
+#: ../glib/gbookmarkfile.c:3435 ../glib/gbookmarkfile.c:3524
+#: ../glib/gbookmarkfile.c:3640
#, c-format
msgid "No bookmark found for URI “%sâ€"
msgstr "Tak ditemukan penanda taut untuk URI \"%s\""
-#: ../glib/gbookmarkfile.c:2335
+#: ../glib/gbookmarkfile.c:2336
#, c-format
msgid "No MIME type defined in the bookmark for URI “%sâ€"
msgstr ""
"Tidak ada jenis MIME yang didefinisikan pada penanda taut untuk URI \"%s\""
-#: ../glib/gbookmarkfile.c:2420
+#: ../glib/gbookmarkfile.c:2421
#, c-format
msgid "No private flag has been defined in bookmark for URI “%sâ€"
msgstr ""
"Tidak ada flag privat yang ditetapkan dalam penanda taut untuk URI \"%s\""
-#: ../glib/gbookmarkfile.c:2799
+#: ../glib/gbookmarkfile.c:2800
#, c-format
msgid "No groups set in bookmark for URI “%sâ€"
msgstr "Tidak ada grup yang ditetapkan dalam penanda taut untuk URI \"%s\""
-#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
+#: ../glib/gbookmarkfile.c:3199 ../glib/gbookmarkfile.c:3356
#, c-format
msgid "No application with name “%s†registered a bookmark for “%sâ€"
msgstr ""
"Tak ditemukan aplikasi terdaftar dengan nama \"%s\" bagi penanda taut \"%s\""
-#: ../glib/gbookmarkfile.c:3377
+#: ../glib/gbookmarkfile.c:3379
#, c-format
msgid "Failed to expand exec line “%s†with URI “%sâ€"
msgstr "Gagal mengembangkan baris eksekusi \"%s\" dengan URI \"%s\""
-#: ../glib/gconvert.c:476 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
-#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
+#: ../glib/gconvert.c:471
+msgid "Unrepresentable character in conversion input"
+msgstr "Karakter yang tidak dapat diterima dalam masukan konversi"
+
+#: ../glib/gconvert.c:498 ../glib/gutf8.c:865 ../glib/gutf8.c:1077
+#: ../glib/gutf8.c:1214 ../glib/gutf8.c:1318
msgid "Partial character sequence at end of input"
msgstr "Rangkaian karakter sebagian pada akhir input"
-#: ../glib/gconvert.c:741
+#: ../glib/gconvert.c:763
#, c-format
msgid "Cannot convert fallback “%s†to codeset “%sâ€"
msgstr "Tidak dapat mengonversi fallback \"%s\" menjadi codeset \"%s\""
-#: ../glib/gconvert.c:1512
+#: ../glib/gconvert.c:934
+msgid "Embedded NUL byte in conversion input"
+msgstr "NUL bita tertanam dalam masukan konversi"
+
+#: ../glib/gconvert.c:955
+msgid "Embedded NUL byte in conversion output"
+msgstr "NUL bita tertanam dalam keluaran konversi"
+
+#: ../glib/gconvert.c:1640
#, c-format
msgid "The URI “%s†is not an absolute URI using the “file†scheme"
msgstr "URI \"%s\" bukanlah URI absolut dengan menggunakan skema \"file\""
-#: ../glib/gconvert.c:1522
+#: ../glib/gconvert.c:1650
#, c-format
msgid "The local file URI “%s†may not include a “#â€"
msgstr "URI berkas lokal \"%s\" tak boleh mengandung \"#\""
-#: ../glib/gconvert.c:1539
+#: ../glib/gconvert.c:1667
#, c-format
msgid "The URI “%s†is invalid"
msgstr "URI \"%s\" tidak valid"
-#: ../glib/gconvert.c:1551
+#: ../glib/gconvert.c:1679
#, c-format
msgid "The hostname of the URI “%s†is invalid"
msgstr "Nama host dari URI \"%s\" tidak valid"
-#: ../glib/gconvert.c:1567
+#: ../glib/gconvert.c:1695
#, c-format
msgid "The URI “%s†contains invalidly escaped characters"
msgstr "URI \"%s\" mengandung karakter yang di-escape secara tidak valid"
-#: ../glib/gconvert.c:1639
+#: ../glib/gconvert.c:1767
#, c-format
msgid "The pathname “%s†is not an absolute path"
msgstr "Nama path \"%s\" bukan lokasi absolut"
@@ -4612,9 +4627,9 @@ msgstr "Nama kunci tak valid: %s"
msgid "Key file contains unsupported encoding “%sâ€"
msgstr "Berkas kunci mengandung enkoding \"%s\" yang tidak didukung"
-#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3198
-#: ../glib/gkeyfile.c:3261 ../glib/gkeyfile.c:3391 ../glib/gkeyfile.c:3521
-#: ../glib/gkeyfile.c:3665 ../glib/gkeyfile.c:3894 ../glib/gkeyfile.c:3961
+#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3206
+#: ../glib/gkeyfile.c:3269 ../glib/gkeyfile.c:3399 ../glib/gkeyfile.c:3529
+#: ../glib/gkeyfile.c:3673 ../glib/gkeyfile.c:3902 ../glib/gkeyfile.c:3969
#, c-format
msgid "Key file does not have group “%sâ€"
msgstr "Berkas kunci tidak memiliki grup \"%s\""
@@ -4630,14 +4645,14 @@ 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:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2440
+#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2448
#, 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:2658 ../glib/gkeyfile.c:3027
+#: ../glib/gkeyfile.c:2666 ../glib/gkeyfile.c:3035
#, c-format
msgid ""
"Key file contains key “%s†in group “%s†which has a value that cannot be "
@@ -4646,36 +4661,36 @@ msgstr ""
"Berkas kunci mengandung kunci \"%s\" dalam grup \"%s\" yang nilainya tidak "
"dapat diterjemahkan."
-#: ../glib/gkeyfile.c:2736 ../glib/gkeyfile.c:2813
+#: ../glib/gkeyfile.c:2744 ../glib/gkeyfile.c:2821
#, 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:4201
+#: ../glib/gkeyfile.c:4209
msgid "Key file contains escape character at end of line"
msgstr "Berkas kunci mengandung karakter escape pada akhir baris"
-#: ../glib/gkeyfile.c:4223
+#: ../glib/gkeyfile.c:4231
#, c-format
msgid "Key file contains invalid escape sequence “%sâ€"
msgstr "Berkas kunci memuat urutan escape \"%s\" yang tidak valid"
-#: ../glib/gkeyfile.c:4367
+#: ../glib/gkeyfile.c:4375
#, c-format
msgid "Value “%s†cannot be interpreted as a number."
msgstr "Nilai \"%s\" tidak bisa diterjemahkan sebagai sebuah bilangan."
-#: ../glib/gkeyfile.c:4381
+#: ../glib/gkeyfile.c:4389
#, c-format
msgid "Integer value “%s†out of range"
msgstr "Nilai bilangan bulat \"%s\" di luar jangkauan"
-#: ../glib/gkeyfile.c:4414
+#: ../glib/gkeyfile.c:4422
#, 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:4453
+#: ../glib/gkeyfile.c:4461
#, c-format
msgid "Value “%s†cannot be interpreted as a boolean."
msgstr "Nilai \"%s\" tidak dapat diterjemahkan sebagai sebuah boolean."
@@ -5503,20 +5518,20 @@ msgstr "Nomor \"%s\" berada di luar batas [%s, %s]"
msgid "“%s†is not an unsigned number"
msgstr "\"%s\" bukan bilangan tak bertanda"
-#: ../glib/gutf8.c:808
+#: ../glib/gutf8.c:811
msgid "Failed to allocate memory"
msgstr "Gagal mengalokasikan memori"
-#: ../glib/gutf8.c:941
+#: ../glib/gutf8.c:944
msgid "Character out of range for UTF-8"
msgstr "Karakter di luar jangkauan UTF-8"
-#: ../glib/gutf8.c:1042 ../glib/gutf8.c:1051 ../glib/gutf8.c:1181
-#: ../glib/gutf8.c:1190 ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
+#: ../glib/gutf8.c:1045 ../glib/gutf8.c:1054 ../glib/gutf8.c:1184
+#: ../glib/gutf8.c:1193 ../glib/gutf8.c:1332 ../glib/gutf8.c:1429
msgid "Invalid sequence in conversion input"
msgstr "Rangkaian input konversi salah"
-#: ../glib/gutf8.c:1340 ../glib/gutf8.c:1437
+#: ../glib/gutf8.c:1343 ../glib/gutf8.c:1440
msgid "Character out of range for UTF-16"
msgstr "Karakter di luar jangkauan UTF-16"
@@ -5676,6 +5691,13 @@ msgstr[0] "%s bita"
msgid "%.1f KB"
msgstr "%.1f KB"
+#~ msgid ""
+#~ "Message has %d file descriptors but the header field indicates %d file "
+#~ "descriptors"
+#~ msgstr ""
+#~ "Pesan punya %d deskriptor berkas tapi ruas header mengindikasikan %d "
+#~ "deskriptor berkas"
+
#~ msgid "Error: object path not specified.\n"
#~ msgstr "Galat: path objek tak dinyatakan\n"
diff --git a/po/pl.po b/po/pl.po
index 388563f5d..5d7f4f443 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,20 +1,20 @@
# Polish translation for glib.
-# Copyright © 2002-2017 the glib authors.
+# Copyright © 2002-2018 the glib authors.
# This file is distributed under the same license as the glib package.
# Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl>, 2002-2003.
# Artur Flinta <aflinta@at.kernel.pl>, 2003-2006.
# Tomasz KÅ‚oczko <kloczek@rudy.mif.pg.gda.pl>, 2005.
# Wadim Dziedzic <wdziedzic@aviary.pl>, 2007-2009.
# Tomasz Dominikowski <dominikowski@gmail.com>, 2008-2009.
-# Piotr DrÄ…g <piotrdrag@gmail.com>, 2009-2017.
-# Aviary.pl <community-poland@mozilla.org>, 2007-2017.
+# Piotr DrÄ…g <piotrdrag@gmail.com>, 2009-2018.
+# Aviary.pl <community-poland@mozilla.org>, 2007-2018.
#
msgid ""
msgstr ""
"Project-Id-Version: glib\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-24 01:02+0200\n"
-"PO-Revision-Date: 2017-08-24 01:03+0200\n"
+"POT-Creation-Date: 2018-02-05 00:09+0100\n"
+"PO-Revision-Date: 2018-02-05 00:10+0100\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@@ -24,25 +24,25 @@ 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/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "GApplication options"
msgstr "Opcje GApplication"
-#: ../gio/gapplication.c:490
+#: ../gio/gapplication.c:495
msgid "Show GApplication options"
msgstr "Wyświetla opcje GApplication"
-#: ../gio/gapplication.c:535
+#: ../gio/gapplication.c:540
msgid "Enter GApplication service mode (use from D-Bus service files)"
msgstr "Przechodzi do trybu usługi GApplication (używane z plików usług D-Bus)"
-#: ../gio/gapplication.c:547
+#: ../gio/gapplication.c:552
msgid "Override the application’s ID"
msgstr "Zastępuje identyfikator programu"
#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:522
+#: ../gio/gsettings-tool.c:569
msgid "Print help"
msgstr "Wyświetla pomoc"
@@ -55,7 +55,7 @@ msgstr "[POLECENIE]"
msgid "Print version"
msgstr "Wyświetla wersję"
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:575
msgid "Print version information and exit"
msgstr "Wyświetla informację o wersji i kończy działanie"
@@ -148,7 +148,7 @@ 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:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:614
+#: ../gio/gsettings-tool.c:661
#, c-format
msgid ""
"Unknown command %s\n"
@@ -162,7 +162,7 @@ msgid "Usage:\n"
msgstr "Użycie:\n"
#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:649
+#: ../gio/gsettings-tool.c:696
msgid "Arguments:\n"
msgstr "Parametry:\n"
@@ -266,7 +266,7 @@ msgstr ""
#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:209
#, c-format
msgid "Too large count value passed to %s"
msgstr "Za duża wartość licznika przekazana do %s"
@@ -290,8 +290,8 @@ msgid "Truncate not supported on base stream"
msgstr "Skracanie nie jest dozwolone na podstawowym potoku"
#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:870
-#: ../gio/gsimpleasyncresult.c:896
+#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
+#: ../gio/gsimpleasyncresult.c:897
#, c-format
msgid "Operation was cancelled"
msgstr "Działanie zostało anulowane"
@@ -309,29 +309,29 @@ msgid "Not enough space in destination"
msgstr "Brak wystarczającej ilości miejsca w miejscu docelowym"
#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:438 ../glib/gconvert.c:845
-#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
-#: ../glib/giochannel.c:2442 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
+#: ../gio/gdatainputstream.c:1261 ../glib/gconvert.c:452 ../glib/gconvert.c:877
+#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
+#: ../glib/giochannel.c:2443 ../glib/gutf8.c:869 ../glib/gutf8.c:1322
msgid "Invalid byte sequence in conversion input"
msgstr "Nieprawidłowa sekwencja bajtów na wejściu konwersji"
-#: ../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:460 ../glib/gconvert.c:791
+#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
#, c-format
msgid "Error during conversion: %s"
msgstr "BÅ‚Ä…d podczas konwersji: %s"
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1096
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
msgid "Cancellable initialization not supported"
msgstr "Zainicjowanie, które można anulować nie jest obsługiwane"
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:321
-#: ../glib/giochannel.c:1384
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:327
+#: ../glib/giochannel.c:1385
#, c-format
msgid "Conversion from character set “%s†to “%s†is not supported"
msgstr "Konwersja z zestawu znaków „%s†na zestaw „%s†nie jest obsługiwana"
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:325
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:331
#, c-format
msgid "Could not open converter from “%s†to “%sâ€"
msgstr "Nie można otworzyć konwertera z „%s†na „%sâ€"
@@ -373,13 +373,13 @@ msgstr ""
msgid "Unexpected early end-of-stream"
msgstr "Nieoczekiwany, przedwczesny koniec potoku"
-#: ../gio/gdbusaddress.c:155 ../gio/gdbusaddress.c:243
-#: ../gio/gdbusaddress.c:324
+#: ../gio/gdbusaddress.c:158 ../gio/gdbusaddress.c:246
+#: ../gio/gdbusaddress.c:327
#, c-format
msgid "Unsupported key “%s†in address entry “%sâ€"
msgstr "NieobsÅ‚ugiwany klucz „%s†we wpisie adresu „%sâ€"
-#: ../gio/gdbusaddress.c:182
+#: ../gio/gdbusaddress.c:185
#, c-format
msgid ""
"Address “%s†is invalid (need exactly one of path, tmpdir or abstract keys)"
@@ -387,27 +387,27 @@ msgstr ""
"Adres „%s†jest nieprawidłowy (wymaga dokładnie jednej ścieżki, katalogu "
"tymczasowego lub kluczy abstrakcyjnych)"
-#: ../gio/gdbusaddress.c:195
+#: ../gio/gdbusaddress.c:198
#, 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:258 ../gio/gdbusaddress.c:339
+#: ../gio/gdbusaddress.c:261 ../gio/gdbusaddress.c:342
#, c-format
msgid "Error in address “%s†— the port attribute is malformed"
msgstr "Błąd w adresie „%s†— atrybut portu jest błędnie sformatowany"
-#: ../gio/gdbusaddress.c:269 ../gio/gdbusaddress.c:350
+#: ../gio/gdbusaddress.c:272 ../gio/gdbusaddress.c:353
#, c-format
msgid "Error in address “%s†— the family attribute is malformed"
msgstr "Błąd w adresie „%s†— atrybut rodziny jest błędnie sformatowany"
-#: ../gio/gdbusaddress.c:460
+#: ../gio/gdbusaddress.c:463
#, c-format
msgid "Address element “%s†does not contain a colon (:)"
msgstr "Element adresu „%s†nie zawiera dwukropka (:)"
-#: ../gio/gdbusaddress.c:481
+#: ../gio/gdbusaddress.c:484
#, c-format
msgid ""
"Key/Value pair %d, “%sâ€, in address element “%s†does not contain an equal "
@@ -416,7 +416,7 @@ msgstr ""
"Para klucz/wartość %d, „%s†w elemencie adresu „%s†nie zawiera znaku "
"równości"
-#: ../gio/gdbusaddress.c:495
+#: ../gio/gdbusaddress.c:498
#, c-format
msgid ""
"Error unescaping key or value in Key/Value pair %d, “%sâ€, in address element "
@@ -425,7 +425,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:573
+#: ../gio/gdbusaddress.c:576
#, c-format
msgid ""
"Error in address “%s†— the unix transport requires exactly one of the keys "
@@ -434,101 +434,101 @@ msgstr ""
"Błąd w adresie „%s†— transport systemu UNIX wymaga ustawienia dokładnie "
"jednego z kluczy „path†lub „abstractâ€"
-#: ../gio/gdbusaddress.c:609
+#: ../gio/gdbusaddress.c:612
#, 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:623
+#: ../gio/gdbusaddress.c:626
#, 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:637
+#: ../gio/gdbusaddress.c:640
#, 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:658
+#: ../gio/gdbusaddress.c:661
msgid "Error auto-launching: "
msgstr "BÅ‚Ä…d podczas automatycznego uruchamiania: "
-#: ../gio/gdbusaddress.c:666
+#: ../gio/gdbusaddress.c:669
#, c-format
msgid "Unknown or unsupported transport “%s†for address “%sâ€"
msgstr "Nieznany lub nieobsÅ‚ugiwany transport „%s†dla adresu „%sâ€"
-#: ../gio/gdbusaddress.c:704
+#: ../gio/gdbusaddress.c:714
#, c-format
msgid "Error opening nonce file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas otwierania pliku nonce „%sâ€: %s"
-#: ../gio/gdbusaddress.c:723
+#: ../gio/gdbusaddress.c:733
#, c-format
msgid "Error reading from nonce file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas odczytywania pliku nonce „%sâ€: %s"
-#: ../gio/gdbusaddress.c:732
+#: ../gio/gdbusaddress.c:742
#, 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:750
+#: ../gio/gdbusaddress.c:760
#, 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:959
+#: ../gio/gdbusaddress.c:969
msgid "The given address is empty"
msgstr "Podany adres jest pusty"
-#: ../gio/gdbusaddress.c:1072
+#: ../gio/gdbusaddress.c:1082
#, c-format
msgid "Cannot spawn a message bus when setuid"
msgstr "Nie można wywołać magistrali komunikatów, kiedy używane jest setuid"
-#: ../gio/gdbusaddress.c:1079
+#: ../gio/gdbusaddress.c:1089
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:1086
+#: ../gio/gdbusaddress.c:1096
#, 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:1128
+#: ../gio/gdbusaddress.c:1138
#, c-format
msgid "Error spawning command line “%sâ€: "
msgstr "BÅ‚Ä…d podczas wywoÅ‚ywania wiersza poleceÅ„ „%sâ€: "
-#: ../gio/gdbusaddress.c:1345
+#: ../gio/gdbusaddress.c:1355
#, c-format
msgid "(Type any character to close this window)\n"
msgstr "(Wpisanie dowolnego znaku zamknie to okno)\n"
-#: ../gio/gdbusaddress.c:1499
+#: ../gio/gdbusaddress.c:1509
#, 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/gdbusaddress.c:1510
+#: ../gio/gdbusaddress.c:1520
#, 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:1648
+#: ../gio/gdbusaddress.c:1658
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -537,7 +537,7 @@ msgstr ""
"Nie można ustalić adresu magistrali ze zmiennej środowiskowej "
"DBUS_STARTER_BUS_TYPE — nieznana wartość „%sâ€"
-#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7155
+#: ../gio/gdbusaddress.c:1667 ../gio/gdbusconnection.c:7158
msgid ""
"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
"variable is not set"
@@ -545,7 +545,7 @@ msgstr ""
"Nie można ustalić adresu magistrali, ponieważ nie ustawiono zmiennej "
"środowiskowej DBUS_STARTER_BUS_TYPE"
-#: ../gio/gdbusaddress.c:1667
+#: ../gio/gdbusaddress.c:1677
#, c-format
msgid "Unknown bus type %d"
msgstr "Nieznany typ magistrali %d"
@@ -567,7 +567,7 @@ msgstr ""
"Wyczerpano wszystkie dostępne mechanizmy uwierzytelniania (próby: %s, "
"dostępne: %s)"
-#: ../gio/gdbusauth.c:1174
+#: ../gio/gdbusauth.c:1171
msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
msgstr "Anulowano przez GDBusAuthObserver::authorize-authenticated-peer"
@@ -594,13 +594,13 @@ msgstr "BÅ‚Ä…d podczas tworzenia katalogu „%sâ€: %s"
msgid "Error opening keyring “%s†for reading: "
msgstr "Błąd podczas otwierania bazy kluczy „%s†do odczytania: "
-#: ../gio/gdbusauthmechanismsha1.c:403 ../gio/gdbusauthmechanismsha1.c:721
+#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:720
#, 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:417 ../gio/gdbusauthmechanismsha1.c:735
+#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:734
#, c-format
msgid ""
"First token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -608,7 +608,7 @@ msgstr ""
"Pierwszy token %d. wiersza bazy kluczy w „%s†z zawartością „%s†jest "
"błędnie sformatowany"
-#: ../gio/gdbusauthmechanismsha1.c:432 ../gio/gdbusauthmechanismsha1.c:749
+#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:748
#, c-format
msgid ""
"Second token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -616,7 +616,7 @@ msgstr ""
"Drugi token %d. wiersza bazy kluczy w „%s†z zawartością „%s†jest błędnie "
"sformatowany"
-#: ../gio/gdbusauthmechanismsha1.c:456
+#: ../gio/gdbusauthmechanismsha1.c:454
#, 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â€"
@@ -626,27 +626,27 @@ msgstr "Nie odnaleziono ciasteczka z identyfikatorem %d w bazie kluczy w „%
msgid "Error deleting stale lock file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas usuwania starego pliku blokady „%sâ€: %s"
-#: ../gio/gdbusauthmechanismsha1.c:569
+#: ../gio/gdbusauthmechanismsha1.c:568
#, c-format
msgid "Error creating lock file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas tworzenia pliku blokady „%sâ€: %s"
-#: ../gio/gdbusauthmechanismsha1.c:600
+#: ../gio/gdbusauthmechanismsha1.c:599
#, c-format
msgid "Error closing (unlinked) lock file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas zamykania (niedowiÄ…zanego) pliku blokady „%sâ€: %s"
-#: ../gio/gdbusauthmechanismsha1.c:611
+#: ../gio/gdbusauthmechanismsha1.c:610
#, c-format
msgid "Error unlinking lock file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas odwiÄ…zywania pliku blokady „%sâ€: %s"
-#: ../gio/gdbusauthmechanismsha1.c:688
+#: ../gio/gdbusauthmechanismsha1.c:687
#, c-format
msgid "Error opening keyring “%s†for writing: "
msgstr "Błąd podczas otwierania bazy kluczy „%s†do zapisania: "
-#: ../gio/gdbusauthmechanismsha1.c:885
+#: ../gio/gdbusauthmechanismsha1.c:883
#, c-format
msgid "(Additionally, releasing the lock for “%s†also failed: %s) "
msgstr "(Dodatkowo, uwolnienie blokady „%s†także się nie powiodło: %s) "
@@ -695,12 +695,12 @@ msgstr ""
"„%sâ€"
#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
-#: ../gio/gdbusconnection.c:6586
+#: ../gio/gdbusconnection.c:6589
#, c-format
msgid "No such interface '%s'"
msgstr "Brak interfejsu „%sâ€"
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7095
+#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7098
#, c-format
msgid "No such interface '%s' on object at path %s"
msgstr "Brak interfejsu „%s†w obiekcie w ścieżce %s"
@@ -735,17 +735,17 @@ msgstr "Nie można ustawić właściwości %s.%s"
msgid "Method '%s' returned type '%s', but expected '%s'"
msgstr "Metoda „%s†zwróciÅ‚a typ „%sâ€, ale oczekiwano „%sâ€"
-#: ../gio/gdbusconnection.c:6697
+#: ../gio/gdbusconnection.c:6700
#, 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:6818
+#: ../gio/gdbusconnection.c:6821
#, c-format
msgid "A subtree is already exported for %s"
msgstr "Poddrzewo zostało już wyeksportowane dla %s"
-#: ../gio/gdbusconnection.c:7146
+#: ../gio/gdbusconnection.c:7149
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -813,18 +813,18 @@ 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:1589
+#: ../gio/gdbusmessage.c:1593
#, 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:1611
+#: ../gio/gdbusmessage.c:1615
#, 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:1658
+#: ../gio/gdbusmessage.c:1662
#, c-format
msgid ""
"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -840,7 +840,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:1678
+#: ../gio/gdbusmessage.c:1682
#, c-format
msgid ""
"Encountered array of type “a%câ€, expected to have a length a multiple of %u "
@@ -849,14 +849,14 @@ 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:1845
+#: ../gio/gdbusmessage.c:1849
#, 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:1869
+#: ../gio/gdbusmessage.c:1873
#, c-format
msgid ""
"Error deserializing GVariant with type string “%s†from the D-Bus wire format"
@@ -864,7 +864,7 @@ msgstr ""
"Błąd podczas deserializowania GVariant za pomocą ciągu typu „%s†z formatu "
"przewodu usługi D-Bus"
-#: ../gio/gdbusmessage.c:2053
+#: ../gio/gdbusmessage.c:2055
#, c-format
msgid ""
"Invalid endianness value. Expected 0x6c (“lâ€) or 0x42 (“Bâ€) but found value "
@@ -873,26 +873,26 @@ msgstr ""
"NieprawidÅ‚owa wartość kolejnoÅ›ci bajtów. Oczekiwano 0x6c („lâ€) lub 0x42 "
"(„Bâ€), ale odnaleziono wartość 0x%02x"
-#: ../gio/gdbusmessage.c:2066
+#: ../gio/gdbusmessage.c:2068
#, 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:2122
+#: ../gio/gdbusmessage.c:2124
#, 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:2136
+#: ../gio/gdbusmessage.c:2138
#, 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:2166
+#: ../gio/gdbusmessage.c:2168
#, 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"
@@ -903,11 +903,11 @@ msgstr[1] ""
msgstr[2] ""
"Brak nagłówka podpisu w komunikacie, ale treść komunikatu liczy %u bajtów"
-#: ../gio/gdbusmessage.c:2176
+#: ../gio/gdbusmessage.c:2178
msgid "Cannot deserialize message: "
msgstr "Nie można deserializować komunikatu: "
-#: ../gio/gdbusmessage.c:2517
+#: ../gio/gdbusmessage.c:2519
#, c-format
msgid ""
"Error serializing GVariant with type string “%s†to the D-Bus wire format"
@@ -915,42 +915,40 @@ msgstr ""
"Błąd podczas serializowania GVariant za pomocą ciągu typu „%s†z formatu "
"przewodu usługi D-Bus"
-#: ../gio/gdbusmessage.c:2654
+#: ../gio/gdbusmessage.c:2656
#, 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 ""
-"Komunikat ma %d deskryptorów plików, ale pole nagłówka wskazuje na %d "
-"deskryptorów plików"
+"Liczba deskryptorów plików w komunikacie (%d) różni się od pola nagłówka (%d)"
-#: ../gio/gdbusmessage.c:2662
+#: ../gio/gdbusmessage.c:2664
msgid "Cannot serialize message: "
msgstr "Nie można serializować komunikatu: "
-#: ../gio/gdbusmessage.c:2706
+#: ../gio/gdbusmessage.c:2708
#, 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:2716
+#: ../gio/gdbusmessage.c:2718
#, c-format
msgid ""
"Message body has type signature “%s†but signature in the header field is "
"“%sâ€"
msgstr "Treść komunikatu ma podpis „%sâ€, ale podpis w polu nagłówka to „%sâ€"
-#: ../gio/gdbusmessage.c:2732
+#: ../gio/gdbusmessage.c:2734
#, 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:3285
+#: ../gio/gdbusmessage.c:3287
#, c-format
msgid "Error return with body of type “%sâ€"
msgstr "BÅ‚Ä…d zwrotu z treÅ›ciÄ… typu „%sâ€"
-#: ../gio/gdbusmessage.c:3293
+#: ../gio/gdbusmessage.c:3295
msgid "Error return with empty body"
msgstr "Błąd zwrotu z pustą treścią"
@@ -1028,60 +1026,60 @@ msgstr ""
"\n"
"Polecenie „%s POLECENIE --help†wyświetla pomoc o każdym poleceniu.\n"
-#: ../gio/gdbus-tool.c:165 ../gio/gdbus-tool.c:227 ../gio/gdbus-tool.c:299
-#: ../gio/gdbus-tool.c:323 ../gio/gdbus-tool.c:725 ../gio/gdbus-tool.c:1068
-#: ../gio/gdbus-tool.c:1510
+#: ../gio/gdbus-tool.c:167 ../gio/gdbus-tool.c:234 ../gio/gdbus-tool.c:306
+#: ../gio/gdbus-tool.c:330 ../gio/gdbus-tool.c:811 ../gio/gdbus-tool.c:1150
+#: ../gio/gdbus-tool.c:1592
#, c-format
msgid "Error: %s\n"
msgstr "BÅ‚Ä…d: %s\n"
-#: ../gio/gdbus-tool.c:176 ../gio/gdbus-tool.c:240 ../gio/gdbus-tool.c:1526
+#: ../gio/gdbus-tool.c:178 ../gio/gdbus-tool.c:247 ../gio/gdbus-tool.c:1608
#, c-format
msgid "Error parsing introspection XML: %s\n"
msgstr "BÅ‚Ä…d podczas przetwarzania kodu XML introspekcji: %s\n"
-#: ../gio/gdbus-tool.c:209
+#: ../gio/gdbus-tool.c:216
#, 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:357
+#: ../gio/gdbus-tool.c:364
msgid "Connect to the system bus"
msgstr "ÅÄ…czy z magistralÄ… systemowÄ…"
-#: ../gio/gdbus-tool.c:358
+#: ../gio/gdbus-tool.c:365
msgid "Connect to the session bus"
msgstr "ÅÄ…czy z magistralÄ… sesji"
-#: ../gio/gdbus-tool.c:359
+#: ../gio/gdbus-tool.c:366
msgid "Connect to given D-Bus address"
msgstr "ÅÄ…czy z podanym adresem usÅ‚ugi D-Bus"
-#: ../gio/gdbus-tool.c:369
+#: ../gio/gdbus-tool.c:376
msgid "Connection Endpoint Options:"
msgstr "Opcje punktów końcowych połączenia:"
-#: ../gio/gdbus-tool.c:370
+#: ../gio/gdbus-tool.c:377
msgid "Options specifying the connection endpoint"
msgstr "Opcje określające punkt końcowy połączenia"
-#: ../gio/gdbus-tool.c:392
+#: ../gio/gdbus-tool.c:399
#, c-format
msgid "No connection endpoint specified"
msgstr "Nie określono żadnych punktów końcowych połączenia"
-#: ../gio/gdbus-tool.c:402
+#: ../gio/gdbus-tool.c:409
#, c-format
msgid "Multiple connection endpoints specified"
msgstr "Określono wiele punktów końcowych połączenia"
-#: ../gio/gdbus-tool.c:472
+#: ../gio/gdbus-tool.c:479
#, 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:481
+#: ../gio/gdbus-tool.c:488
#, c-format
msgid ""
"Warning: According to introspection data, method “%s†does not exist on "
@@ -1090,166 +1088,168 @@ msgstr ""
"Ostrzeżenie: według danych introspekcji, metoda „%s†nie istnieje "
"w interfejsie „%sâ€\n"
-#: ../gio/gdbus-tool.c:543
+#: ../gio/gdbus-tool.c:550
msgid "Optional destination for signal (unique name)"
msgstr "Opcjonalny cel sygnału (unikalna nazwa)"
-#: ../gio/gdbus-tool.c:544
+#: ../gio/gdbus-tool.c:551
msgid "Object path to emit signal on"
msgstr "Ścieżka do obiektu do wyemitowania sygnału"
-#: ../gio/gdbus-tool.c:545
+#: ../gio/gdbus-tool.c:552
msgid "Signal and interface name"
msgstr "Nazwa sygnału i interfejsu"
-#: ../gio/gdbus-tool.c:579
+#: ../gio/gdbus-tool.c:587
msgid "Emit a signal."
msgstr "Emituje sygnał."
-#: ../gio/gdbus-tool.c:613 ../gio/gdbus-tool.c:858 ../gio/gdbus-tool.c:1616
-#: ../gio/gdbus-tool.c:1851 ../gio/gdbus-tool.c:2067
+#: ../gio/gdbus-tool.c:642 ../gio/gdbus-tool.c:944 ../gio/gdbus-tool.c:1698
+#: ../gio/gdbus-tool.c:1931 ../gio/gdbus-tool.c:2152
#, c-format
msgid "Error connecting: %s\n"
msgstr "BÅ‚Ä…d podczas Å‚Ä…czenia: %s\n"
-#: ../gio/gdbus-tool.c:625
+#: ../gio/gdbus-tool.c:659 ../gio/gdbus-tool.c:961 ../gio/gdbus-tool.c:1715
+#: ../gio/gdbus-tool.c:1956
+#, c-format
+msgid "Error: Destination is not specified\n"
+msgstr "BÅ‚Ä…d: nie podano celu\n"
+
+#: ../gio/gdbus-tool.c:670
#, c-format
-msgid "Error: object path not specified.\n"
-msgstr "Błąd: nie podano ścieżki do obiektu.\n"
+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:630 ../gio/gdbus-tool.c:925 ../gio/gdbus-tool.c:1681
-#: ../gio/gdbus-tool.c:1917
+#: ../gio/gdbus-tool.c:685 ../gio/gdbus-tool.c:987 ../gio/gdbus-tool.c:1741
+#, c-format
+msgid "Error: Object path is not specified\n"
+msgstr "Błąd: nie podano ścieżki do obiektu\n"
+
+#: ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1007 ../gio/gdbus-tool.c:1761
+#: ../gio/gdbus-tool.c:2002
#, 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:636
+#: ../gio/gdbus-tool.c:720
#, c-format
-msgid "Error: signal not specified.\n"
-msgstr "Błąd: nie podano sygnału.\n"
+msgid "Error: Signal name is not specified\n"
+msgstr "Błąd: nie podano nazwy sygnału\n"
-#: ../gio/gdbus-tool.c:643
+#: ../gio/gdbus-tool.c:731
#, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr "Błąd: sygnał musi być w pełni kwalifikowaną nazwą.\n"
+msgid "Error: Signal name “%s†is invalid\n"
+msgstr "Błąd: nazwa sygnału „%s†jest nieprawidłowa\n"
-#: ../gio/gdbus-tool.c:651
+#: ../gio/gdbus-tool.c:743
#, 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:657
+#: ../gio/gdbus-tool.c:749
#, c-format
msgid "Error: %s is not a valid member name\n"
msgstr "Błąd: %s nie jest prawidłową nazwą elementu\n"
-#: ../gio/gdbus-tool.c:663
-#, 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"
-
#. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:700 ../gio/gdbus-tool.c:1037
+#: ../gio/gdbus-tool.c:786 ../gio/gdbus-tool.c:1119
#, c-format
msgid "Error parsing parameter %d: %s\n"
msgstr "BÅ‚Ä…d podczas przetwarzania parametru %d: %s\n"
-#: ../gio/gdbus-tool.c:732
+#: ../gio/gdbus-tool.c:818
#, c-format
msgid "Error flushing connection: %s\n"
msgstr "Błąd podczas czyszczenia połączenia: %s\n"
-#: ../gio/gdbus-tool.c:759
+#: ../gio/gdbus-tool.c:845
msgid "Destination name to invoke method on"
msgstr "Nazwa docelowa do wywołania na niej metody"
-#: ../gio/gdbus-tool.c:760
+#: ../gio/gdbus-tool.c:846
msgid "Object path to invoke method on"
msgstr "Ścieżka do obiektu do wywołania na niej metody"
-#: ../gio/gdbus-tool.c:761
+#: ../gio/gdbus-tool.c:847
msgid "Method and interface name"
msgstr "Nazwa metody i interfejsu"
-#: ../gio/gdbus-tool.c:762
+#: ../gio/gdbus-tool.c:848
msgid "Timeout in seconds"
msgstr "Czas oczekiwania w sekundach"
-#: ../gio/gdbus-tool.c:803
+#: ../gio/gdbus-tool.c:889
msgid "Invoke a method on a remote object."
msgstr "Wywołuje metodę na zdalnym obiekcie."
-#: ../gio/gdbus-tool.c:878 ../gio/gdbus-tool.c:1635 ../gio/gdbus-tool.c:1870
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr "BÅ‚Ä…d: nie podano celu\n"
-
-#: ../gio/gdbus-tool.c:890 ../gio/gdbus-tool.c:1652 ../gio/gdbus-tool.c:1882
+#: ../gio/gdbus-tool.c:972 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1967
#, 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:905 ../gio/gdbus-tool.c:1661
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "Błąd: nie podano ścieżki do obiektu\n"
-
-#: ../gio/gdbus-tool.c:940
+#: ../gio/gdbus-tool.c:1022
#, c-format
msgid "Error: Method name is not specified\n"
msgstr "BÅ‚Ä…d: nie podano nazwy metody\n"
-#: ../gio/gdbus-tool.c:951
+#: ../gio/gdbus-tool.c:1033
#, c-format
msgid "Error: Method name “%s†is invalid\n"
msgstr "Błąd: nazwa metody „%s†jest nieprawidłowa\n"
-#: ../gio/gdbus-tool.c:1029
+#: ../gio/gdbus-tool.c:1111
#, 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:1473
+#: ../gio/gdbus-tool.c:1555
msgid "Destination name to introspect"
msgstr "Nazwa docelowa do zbadania"
-#: ../gio/gdbus-tool.c:1474
+#: ../gio/gdbus-tool.c:1556
msgid "Object path to introspect"
msgstr "Ścieżka do obiektu do zbadania"
-#: ../gio/gdbus-tool.c:1475
+#: ../gio/gdbus-tool.c:1557
msgid "Print XML"
msgstr "Wyświetla kod XML"
-#: ../gio/gdbus-tool.c:1476
+#: ../gio/gdbus-tool.c:1558
msgid "Introspect children"
msgstr "Bada elementy potomne"
-#: ../gio/gdbus-tool.c:1477
+#: ../gio/gdbus-tool.c:1559
msgid "Only print properties"
msgstr "Wyświetla tylko właściwości"
-#: ../gio/gdbus-tool.c:1568
+#: ../gio/gdbus-tool.c:1650
msgid "Introspect a remote object."
msgstr "Bada zdalny obiekt."
-#: ../gio/gdbus-tool.c:1773
+#: ../gio/gdbus-tool.c:1853
msgid "Destination name to monitor"
msgstr "Nazwa docelowa do monitorowania"
-#: ../gio/gdbus-tool.c:1774
+#: ../gio/gdbus-tool.c:1854
msgid "Object path to monitor"
msgstr "Ścieżka do obiektu do monitorowania"
-#: ../gio/gdbus-tool.c:1803
+#: ../gio/gdbus-tool.c:1883
msgid "Monitor a remote object."
msgstr "Monitoruje zdalny obiekt."
-#: ../gio/gdbus-tool.c:1980
+#: ../gio/gdbus-tool.c:1941
+#, c-format
+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:2065
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:1983
+#: ../gio/gdbus-tool.c:2068
msgid ""
"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
"(default)"
@@ -1257,35 +1257,35 @@ msgstr ""
"Czas oczekiwania przed zakończeniem z błędem (w sekundach), 0 oznacza brak "
"ograniczenia (domyślne)"
-#: ../gio/gdbus-tool.c:2031
+#: ../gio/gdbus-tool.c:2116
msgid "[OPTION…] BUS-NAME"
msgstr "[OPCJA…] NAZWA-MAGISTRALI"
-#: ../gio/gdbus-tool.c:2033
+#: ../gio/gdbus-tool.c:2118
msgid "Wait for a bus name to appear."
msgstr "Oczekuje na pojawienie siÄ™ nazwy magistrali."
-#: ../gio/gdbus-tool.c:2109
+#: ../gio/gdbus-tool.c:2194
#, c-format
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:2114
+#: ../gio/gdbus-tool.c:2199
#, c-format
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:2119
+#: ../gio/gdbus-tool.c:2204
#, c-format
msgid "Error: Too many arguments.\n"
msgstr "Błąd: za dużo parametrów.\n"
-#: ../gio/gdbus-tool.c:2127 ../gio/gdbus-tool.c:2134
+#: ../gio/gdbus-tool.c:2212 ../gio/gdbus-tool.c:2219
#, 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:2001 ../gio/gdesktopappinfo.c:4533
+#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4566
msgid "Unnamed"
msgstr "Bez nazwy"
@@ -1293,31 +1293,31 @@ msgstr "Bez nazwy"
msgid "Desktop file didn’t specify Exec field"
msgstr "Plik .desktop nie określa pola Exec"
-#: ../gio/gdesktopappinfo.c:2696
+#: ../gio/gdesktopappinfo.c:2701
msgid "Unable to find terminal required for application"
msgstr "Nie można odnaleźć terminala wymaganego przez program"
-#: ../gio/gdesktopappinfo.c:3129
+#: ../gio/gdesktopappinfo.c:3135
#, 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:3133
+#: ../gio/gdesktopappinfo.c:3139
#, 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:3373 ../gio/gdesktopappinfo.c:3397
+#: ../gio/gdesktopappinfo.c:3379 ../gio/gdesktopappinfo.c:3403
msgid "Application information lacks an identifier"
msgstr "Brak identyfikatora w informacjach o programie"
-#: ../gio/gdesktopappinfo.c:3631
+#: ../gio/gdesktopappinfo.c:3637
#, c-format
msgid "Can’t create user desktop file %s"
msgstr "Nie można utworzyć pliku .desktop dla użytkownika %s"
-#: ../gio/gdesktopappinfo.c:3765
+#: ../gio/gdesktopappinfo.c:3771
#, c-format
msgid "Custom definition for %s"
msgstr "WÅ‚asna definicja dla %s"
@@ -1378,14 +1378,14 @@ msgstr "Błędna liczba elementów (%d) w kodowaniu GEmblemedIcon"
msgid "Expected a GEmblem for GEmblemedIcon"
msgstr "Oczekiwano obiektu GEmblem dla 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:3602 ../gio/gfile.c:3657
-#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4403
-#: ../gio/gfile.c:4814 ../gio/gfile.c:4899 ../gio/gfile.c:4989
-#: ../gio/gfile.c:5086 ../gio/gfile.c:5173 ../gio/gfile.c:5274
-#: ../gio/gfile.c:7815 ../gio/gfile.c:7905 ../gio/gfile.c:7989
+#: ../gio/gfile.c:1071 ../gio/gfile.c:1309 ../gio/gfile.c:1447
+#: ../gio/gfile.c:1685 ../gio/gfile.c:1740 ../gio/gfile.c:1798
+#: ../gio/gfile.c:1882 ../gio/gfile.c:1939 ../gio/gfile.c:2003
+#: ../gio/gfile.c:2058 ../gio/gfile.c:3704 ../gio/gfile.c:3759
+#: ../gio/gfile.c:3995 ../gio/gfile.c:4037 ../gio/gfile.c:4505
+#: ../gio/gfile.c:4916 ../gio/gfile.c:5001 ../gio/gfile.c:5091
+#: ../gio/gfile.c:5188 ../gio/gfile.c:5275 ../gio/gfile.c:5376
+#: ../gio/gfile.c:7954 ../gio/gfile.c:8044 ../gio/gfile.c:8128
#: ../gio/win32/gwinhttpfile.c:437
msgid "Operation not supported"
msgstr "Działanie nie jest obsługiwane"
@@ -1394,70 +1394,70 @@ msgstr "Działanie nie jest obsługiwane"
#. * trying to find the enclosing (user visible)
#. * mount of a file, but none exists.
#.
-#: ../gio/gfile.c:1468
+#: ../gio/gfile.c:1570
msgid "Containing mount does not exist"
msgstr "Nie istnieje zawierajÄ…cy punkt montowania"
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2377
+#: ../gio/gfile.c:2617 ../gio/glocalfile.c:2446
msgid "Can’t copy over directory"
msgstr "Nie można skopiować na katalog"
-#: ../gio/gfile.c:2575
+#: ../gio/gfile.c:2677
msgid "Can’t copy directory over directory"
msgstr "Nie można skopiować katalogu na katalog"
-#: ../gio/gfile.c:2583
+#: ../gio/gfile.c:2685
msgid "Target file exists"
msgstr "Plik docelowy istnieje"
-#: ../gio/gfile.c:2602
+#: ../gio/gfile.c:2704
msgid "Can’t recursively copy directory"
msgstr "Nie można skopiować katalogu rekurencyjnie"
-#: ../gio/gfile.c:2877
+#: ../gio/gfile.c:2979
msgid "Splice not supported"
msgstr "Wywołanie „splice†nie jest obsługiwane"
-#: ../gio/gfile.c:2881
+#: ../gio/gfile.c:2983
#, c-format
msgid "Error splicing file: %s"
msgstr "BÅ‚Ä…d podczas dzielenia pliku: %s"
-#: ../gio/gfile.c:3013
+#: ../gio/gfile.c:3115
msgid "Copy (reflink/clone) between mounts is not supported"
msgstr ""
"Kopiowanie (reflink/clone) między punktami montowania nie jest obsługiwane"
-#: ../gio/gfile.c:3017
+#: ../gio/gfile.c:3119
msgid "Copy (reflink/clone) is not supported or invalid"
msgstr "Kopiowanie (reflink/clone) nie jest obsługiwane lub jest nieprawidłowe"
-#: ../gio/gfile.c:3022
+#: ../gio/gfile.c:3124
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:3085
+#: ../gio/gfile.c:3187
msgid "Can’t copy special file"
msgstr "Nie można skopiować pliku specjalnego"
-#: ../gio/gfile.c:3883
+#: ../gio/gfile.c:3985
msgid "Invalid symlink value given"
msgstr "Wprowadzono nieprawidłową wartość dowiązania symbolicznego"
-#: ../gio/gfile.c:4044
+#: ../gio/gfile.c:4146
msgid "Trash not supported"
msgstr "Kosz nie jest obsługiwany"
-#: ../gio/gfile.c:4156
+#: ../gio/gfile.c:4258
#, c-format
msgid "File names cannot contain “%câ€"
msgstr "Nazwy plików nie mogÄ… zawierać „%câ€"
-#: ../gio/gfile.c:6602 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6739 ../gio/gvolume.c:363
msgid "volume doesn’t implement mount"
msgstr "wolumin nie obsługuje montowania"
-#: ../gio/gfile.c:6711
+#: ../gio/gfile.c:6848
msgid "No application is registered as handling this file"
msgstr "Żaden program nie jest zarejestrowany do obsługi tego pliku"
@@ -1503,7 +1503,7 @@ msgid "Truncate not supported on stream"
msgstr "Skracanie nie jest dozwolone na potoku"
#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1650
+#: ../glib/gconvert.c:1777
msgid "Invalid hostname"
msgstr "Nieprawidłowa nazwa komputera"
@@ -1585,7 +1585,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:106 ../gio/gunixsocketaddress.c:218
+#: ../gio/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:218
msgid "Not enough space for socket address"
msgstr "Brak wystarczającej ilości miejsca dla adresu gniazda"
@@ -1716,7 +1716,7 @@ msgstr "Błąd podczas zapisywania do standardowego wyjścia"
#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
-#: ../gio/gio-tool-open.c:45 ../gio/gio-tool-remove.c:48
+#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
msgid "LOCATION"
@@ -1738,7 +1738,7 @@ msgstr ""
#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
-#: ../gio/gio-tool-open.c:71 ../gio/gio-tool-remove.c:72
+#: ../gio/gio-tool-open.c:139 ../gio/gio-tool-remove.c:72
msgid "No locations given"
msgstr "Nie podano położeń"
@@ -2134,7 +2134,7 @@ msgstr ""
msgid "Target %s is not a directory"
msgstr "Plik docelowy %s nie jest katalogiem"
-#: ../gio/gio-tool-open.c:50
+#: ../gio/gio-tool-open.c:118
msgid ""
"Open files with the default application that\n"
"is registered to handle files of this type."
@@ -2847,7 +2847,7 @@ msgstr "usunięto istniejący plik wyjściowy.\n"
msgid "Invalid filename %s"
msgstr "Nieprawidłowa nazwa pliku %s"
-#: ../gio/glocalfile.c:1037
+#: ../gio/glocalfile.c:1105
#, c-format
msgid "Error getting filesystem info for %s: %s"
msgstr "Błąd podczas pobierania informacji o systemie plików dla %s: %s"
@@ -2856,237 +2856,237 @@ msgstr "Błąd podczas pobierania informacji o systemie plików dla %s: %s"
#. * the enclosing (user visible) mount of a file, but none
#. * exists.
#.
-#: ../gio/glocalfile.c:1176
+#: ../gio/glocalfile.c:1244
#, c-format
msgid "Containing mount for file %s not found"
msgstr "Nie odnaleziono punktu montowania zawierajÄ…cego plik %s"
-#: ../gio/glocalfile.c:1199
+#: ../gio/glocalfile.c:1267
msgid "Can’t rename root directory"
msgstr "Nie można zmienić nazwy katalogu głównego"
-#: ../gio/glocalfile.c:1217 ../gio/glocalfile.c:1240
+#: ../gio/glocalfile.c:1285 ../gio/glocalfile.c:1308
#, c-format
msgid "Error renaming file %s: %s"
msgstr "BÅ‚Ä…d podczas zmieniania nazwy pliku %s: %s"
-#: ../gio/glocalfile.c:1224
+#: ../gio/glocalfile.c:1292
msgid "Can’t rename file, filename already exists"
msgstr "Nie można zmienić nazwy pliku, plik o takiej nazwie już istnieje"
-#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2253 ../gio/glocalfile.c:2281
-#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
+#: ../gio/glocalfile.c:1305 ../gio/glocalfile.c:2322 ../gio/glocalfile.c:2350
+#: ../gio/glocalfile.c:2507 ../gio/glocalfileoutputstream.c:551
msgid "Invalid filename"
msgstr "Nieprawidłowa nazwa pliku"
-#: ../gio/glocalfile.c:1404 ../gio/glocalfile.c:1419
+#: ../gio/glocalfile.c:1473 ../gio/glocalfile.c:1488
#, c-format
msgid "Error opening file %s: %s"
msgstr "BÅ‚Ä…d podczas otwierania pliku %s: %s"
-#: ../gio/glocalfile.c:1544
+#: ../gio/glocalfile.c:1613
#, c-format
msgid "Error removing file %s: %s"
msgstr "BÅ‚Ä…d podczas usuwania pliku %s: %s"
-#: ../gio/glocalfile.c:1928
+#: ../gio/glocalfile.c:1997
#, c-format
msgid "Error trashing file %s: %s"
msgstr "BÅ‚Ä…d podczas przenoszenia pliku %s do kosza: %s"
-#: ../gio/glocalfile.c:1951
+#: ../gio/glocalfile.c:2020
#, c-format
msgid "Unable to create trash dir %s: %s"
msgstr "Nie można utworzyć katalogu kosza %s: %s"
-#: ../gio/glocalfile.c:1971
+#: ../gio/glocalfile.c:2040
#, c-format
msgid "Unable to find toplevel directory to trash %s"
msgstr "Nie można odnaleźć głównego katalogu dla kosza %s"
-#: ../gio/glocalfile.c:2050 ../gio/glocalfile.c:2070
+#: ../gio/glocalfile.c:2119 ../gio/glocalfile.c:2139
#, c-format
msgid "Unable to find or create trash directory for %s"
msgstr "Nie można odnaleźć lub utworzyć katalogu kosza dla %s"
-#: ../gio/glocalfile.c:2105
+#: ../gio/glocalfile.c:2174
#, c-format
msgid "Unable to create trashing info file for %s: %s"
msgstr "Nie można utworzyć pliku informacji o koszu dla %s: %s"
-#: ../gio/glocalfile.c:2164
+#: ../gio/glocalfile.c:2233
#, c-format
msgid "Unable to trash file %s across filesystem boundaries"
msgstr "Nie można przenieść pliku %s do kosza pomiędzy systemami plików"
-#: ../gio/glocalfile.c:2168 ../gio/glocalfile.c:2224
+#: ../gio/glocalfile.c:2237 ../gio/glocalfile.c:2293
#, c-format
msgid "Unable to trash file %s: %s"
msgstr "Nie można przenieść pliku %s do kosza: %s"
-#: ../gio/glocalfile.c:2230
+#: ../gio/glocalfile.c:2299
#, c-format
msgid "Unable to trash file %s"
msgstr "Nie można przenieść pliku %s do kosza"
-#: ../gio/glocalfile.c:2256
+#: ../gio/glocalfile.c:2325
#, c-format
msgid "Error creating directory %s: %s"
msgstr "BÅ‚Ä…d podczas tworzenia katalogu %s: %s"
-#: ../gio/glocalfile.c:2285
+#: ../gio/glocalfile.c:2354
#, c-format
msgid "Filesystem does not support symbolic links"
msgstr "System plików nie obsługuje dowiązań symbolicznych"
-#: ../gio/glocalfile.c:2288
+#: ../gio/glocalfile.c:2357
#, c-format
msgid "Error making symbolic link %s: %s"
msgstr "BÅ‚Ä…d podczas tworzenia dowiÄ…zania symbolicznego %s: %s"
-#: ../gio/glocalfile.c:2294 ../glib/gfileutils.c:2077
+#: ../gio/glocalfile.c:2363 ../glib/gfileutils.c:2127
msgid "Symbolic links not supported"
msgstr "Dowiązania symboliczne nie są obsługiwane"
-#: ../gio/glocalfile.c:2349 ../gio/glocalfile.c:2384 ../gio/glocalfile.c:2441
+#: ../gio/glocalfile.c:2418 ../gio/glocalfile.c:2453 ../gio/glocalfile.c:2510
#, c-format
msgid "Error moving file %s: %s"
msgstr "BÅ‚Ä…d podczas przenoszenia pliku %s: %s"
-#: ../gio/glocalfile.c:2372
+#: ../gio/glocalfile.c:2441
msgid "Can’t move directory over directory"
msgstr "Nie można przenieść katalogu na katalog"
-#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:933
-#: ../gio/glocalfileoutputstream.c:947 ../gio/glocalfileoutputstream.c:962
-#: ../gio/glocalfileoutputstream.c:979 ../gio/glocalfileoutputstream.c:993
+#: ../gio/glocalfile.c:2467 ../gio/glocalfileoutputstream.c:935
+#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
+#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
msgid "Backup file creation failed"
msgstr "Utworzenie pliku kopii zapasowej się nie powiodło"
-#: ../gio/glocalfile.c:2417
+#: ../gio/glocalfile.c:2486
#, c-format
msgid "Error removing target file: %s"
msgstr "BÅ‚Ä…d podczas usuwania pliku docelowego: %s"
-#: ../gio/glocalfile.c:2431
+#: ../gio/glocalfile.c:2500
msgid "Move between mounts not supported"
msgstr "Przenoszenie między punktami montowania nie jest obsługiwane"
-#: ../gio/glocalfile.c:2622
+#: ../gio/glocalfile.c:2691
#, c-format
msgid "Could not determine the disk usage of %s: %s"
msgstr "Nie można ustalić wykorzystania dysku %s: %s"
-#: ../gio/glocalfileinfo.c:731
+#: ../gio/glocalfileinfo.c:745
msgid "Attribute value must be non-NULL"
msgstr "Wartość atrybutu nie może być pusta"
-#: ../gio/glocalfileinfo.c:738
+#: ../gio/glocalfileinfo.c:752
msgid "Invalid attribute type (string expected)"
msgstr "NieprawidÅ‚owy typ atrybutu (oczekiwano „stringâ€)"
-#: ../gio/glocalfileinfo.c:745
+#: ../gio/glocalfileinfo.c:759
msgid "Invalid extended attribute name"
msgstr "Nieprawidłowa nazwa rozszerzonego atrybutu"
-#: ../gio/glocalfileinfo.c:785
+#: ../gio/glocalfileinfo.c:799
#, c-format
msgid "Error setting extended attribute “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas ustawiania rozszerzonego atrybutu „%sâ€: %s"
-#: ../gio/glocalfileinfo.c:1586
+#: ../gio/glocalfileinfo.c:1607
msgid " (invalid encoding)"
msgstr " (nieprawidłowe kodowanie)"
-#: ../gio/glocalfileinfo.c:1777 ../gio/glocalfileoutputstream.c:811
+#: ../gio/glocalfileinfo.c:1776 ../gio/glocalfileoutputstream.c:813
#, c-format
msgid "Error when getting information for file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas pobierania informacji o pliku „%sâ€: %s"
-#: ../gio/glocalfileinfo.c:2028
+#: ../gio/glocalfileinfo.c:2038
#, c-format
msgid "Error when getting information for file descriptor: %s"
msgstr "Błąd podczas pobierania informacji o deskryptorze pliku: %s"
-#: ../gio/glocalfileinfo.c:2073
+#: ../gio/glocalfileinfo.c:2083
msgid "Invalid attribute type (uint32 expected)"
msgstr "NieprawidÅ‚owy typ atrybutu (oczekiwano „uint32â€)"
-#: ../gio/glocalfileinfo.c:2091
+#: ../gio/glocalfileinfo.c:2101
msgid "Invalid attribute type (uint64 expected)"
msgstr "NieprawidÅ‚owy typ atrybutu (oczekiwano „uint64â€)"
-#: ../gio/glocalfileinfo.c:2110 ../gio/glocalfileinfo.c:2129
+#: ../gio/glocalfileinfo.c:2120 ../gio/glocalfileinfo.c:2139
msgid "Invalid attribute type (byte string expected)"
msgstr "NieprawidÅ‚owy typ atrybutu (oczekiwano „byte stringâ€)"
-#: ../gio/glocalfileinfo.c:2164
+#: ../gio/glocalfileinfo.c:2184
msgid "Cannot set permissions on symlinks"
msgstr "Nie można ustawić uprawnień na dowiązaniach symbolicznych"
-#: ../gio/glocalfileinfo.c:2180
+#: ../gio/glocalfileinfo.c:2200
#, c-format
msgid "Error setting permissions: %s"
msgstr "Błąd podczas ustawiania uprawnień: %s"
-#: ../gio/glocalfileinfo.c:2231
+#: ../gio/glocalfileinfo.c:2251
#, c-format
msgid "Error setting owner: %s"
msgstr "Błąd podczas ustawiania właściciela: %s"
-#: ../gio/glocalfileinfo.c:2254
+#: ../gio/glocalfileinfo.c:2274
msgid "symlink must be non-NULL"
msgstr "dowiązanie symboliczne nie może być puste"
-#: ../gio/glocalfileinfo.c:2264 ../gio/glocalfileinfo.c:2283
-#: ../gio/glocalfileinfo.c:2294
+#: ../gio/glocalfileinfo.c:2284 ../gio/glocalfileinfo.c:2303
+#: ../gio/glocalfileinfo.c:2314
#, c-format
msgid "Error setting symlink: %s"
msgstr "BÅ‚Ä…d podczas ustawiania dowiÄ…zania symbolicznego: %s"
-#: ../gio/glocalfileinfo.c:2273
+#: ../gio/glocalfileinfo.c:2293
msgid "Error setting symlink: file is not a symlink"
msgstr ""
"BÅ‚Ä…d podczas ustawiania dowiÄ…zania symbolicznego: plik nie jest dowiÄ…zaniem "
"symbolicznym"
-#: ../gio/glocalfileinfo.c:2399
+#: ../gio/glocalfileinfo.c:2419
#, c-format
msgid "Error setting modification or access time: %s"
msgstr "Błąd podczas ustawiania czasu modyfikacji lub dostępu: %s"
-#: ../gio/glocalfileinfo.c:2422
+#: ../gio/glocalfileinfo.c:2442
msgid "SELinux context must be non-NULL"
msgstr "Kontekst SELinux nie może być pusty"
-#: ../gio/glocalfileinfo.c:2437
+#: ../gio/glocalfileinfo.c:2457
#, c-format
msgid "Error setting SELinux context: %s"
msgstr "BÅ‚Ä…d podczas ustawiania kontekstu SELinux: %s"
-#: ../gio/glocalfileinfo.c:2444
+#: ../gio/glocalfileinfo.c:2464
msgid "SELinux is not enabled on this system"
msgstr "SELinux nie jest włączony w tym systemie"
-#: ../gio/glocalfileinfo.c:2536
+#: ../gio/glocalfileinfo.c:2556
#, c-format
msgid "Setting attribute %s not supported"
msgstr "Ustawianie atrybutu %s nie jest obsługiwane"
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694
+#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:696
#, c-format
msgid "Error reading from file: %s"
msgstr "Błąd podczas odczytywania z pliku: %s"
#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1011
+#: ../gio/glocalfileoutputstream.c:458 ../gio/glocalfileoutputstream.c:1013
#, c-format
msgid "Error seeking in file: %s"
msgstr "Błąd podczas wyszukiwania w pliku: %s"
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:246
-#: ../gio/glocalfileoutputstream.c:340
+#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:248
+#: ../gio/glocalfileoutputstream.c:342
#, c-format
msgid "Error closing file: %s"
msgstr "BÅ‚Ä…d podczas zamykania pliku: %s"
@@ -3095,51 +3095,51 @@ msgstr "BÅ‚Ä…d podczas zamykania pliku: %s"
msgid "Unable to find default local file monitor type"
msgstr "Nie można odnaleźć domyślnego typu monitora pliku lokalnego"
-#: ../gio/glocalfileoutputstream.c:194 ../gio/glocalfileoutputstream.c:226
-#: ../gio/glocalfileoutputstream.c:715
+#: ../gio/glocalfileoutputstream.c:196 ../gio/glocalfileoutputstream.c:228
+#: ../gio/glocalfileoutputstream.c:717
#, c-format
msgid "Error writing to file: %s"
msgstr "BÅ‚Ä…d podczas zapisywania do pliku: %s"
-#: ../gio/glocalfileoutputstream.c:273
+#: ../gio/glocalfileoutputstream.c:275
#, c-format
msgid "Error removing old backup link: %s"
msgstr "Błąd podczas usuwania odnośnika do starej kopii zapasowej: %s"
-#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300
+#: ../gio/glocalfileoutputstream.c:289 ../gio/glocalfileoutputstream.c:302
#, c-format
msgid "Error creating backup copy: %s"
msgstr "BÅ‚Ä…d podczas tworzenia kopii zapasowej: %s"
-#: ../gio/glocalfileoutputstream.c:318
+#: ../gio/glocalfileoutputstream.c:320
#, c-format
msgid "Error renaming temporary file: %s"
msgstr "BÅ‚Ä…d podczas zmieniania nazwy pliku tymczasowego: %s"
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1062
+#: ../gio/glocalfileoutputstream.c:504 ../gio/glocalfileoutputstream.c:1064
#, c-format
msgid "Error truncating file: %s"
msgstr "BÅ‚Ä…d podczas skracania pliku: %s"
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:793
-#: ../gio/glocalfileoutputstream.c:1043 ../gio/gsubprocess.c:380
+#: ../gio/glocalfileoutputstream.c:557 ../gio/glocalfileoutputstream.c:795
+#: ../gio/glocalfileoutputstream.c:1045 ../gio/gsubprocess.c:380
#, c-format
msgid "Error opening file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas otwierania pliku „%sâ€: %s"
-#: ../gio/glocalfileoutputstream.c:824
+#: ../gio/glocalfileoutputstream.c:826
msgid "Target file is a directory"
msgstr "Plik docelowy jest katalogiem"
-#: ../gio/glocalfileoutputstream.c:829
+#: ../gio/glocalfileoutputstream.c:831
msgid "Target file is not a regular file"
msgstr "Plik docelowy nie jest zwykłym plikiem"
-#: ../gio/glocalfileoutputstream.c:841
+#: ../gio/glocalfileoutputstream.c:843
msgid "The file was externally modified"
msgstr "Plik został zmieniony poza programem"
-#: ../gio/glocalfileoutputstream.c:1027
+#: ../gio/glocalfileoutputstream.c:1029
#, c-format
msgid "Error removing old file: %s"
msgstr "BÅ‚Ä…d podczas usuwania starego pliku: %s"
@@ -3183,21 +3183,21 @@ msgstr "Zażądano przejścia poza koniec potoku"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement unmount.
-#: ../gio/gmount.c:393
+#: ../gio/gmount.c:396
msgid "mount doesn’t implement “unmountâ€"
msgstr "punkt montowania nie obsługuje odmontowania"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement eject.
-#: ../gio/gmount.c:469
+#: ../gio/gmount.c:472
msgid "mount doesn’t implement “ejectâ€"
msgstr "punkt montowania nie obsługuje wysunięcia"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:547
+#: ../gio/gmount.c:550
msgid "mount doesn’t implement “unmount†or “unmount_with_operationâ€"
msgstr ""
"punkt montowania nie obsÅ‚uguje odmontowania lub „unmount_with_operationâ€"
@@ -3205,28 +3205,28 @@ 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
+#: ../gio/gmount.c:635
msgid "mount doesn’t implement “eject†or “eject_with_operationâ€"
msgstr "punkt montowania nie obsÅ‚uguje wysuniÄ™cia lub „eject_with_operationâ€"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement remount.
-#: ../gio/gmount.c:720
+#: ../gio/gmount.c:723
msgid "mount doesn’t implement “remountâ€"
msgstr "punkt montowania nie obsługuje ponownego montowania"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:802
+#: ../gio/gmount.c:805
msgid "mount doesn’t implement content type guessing"
msgstr "punkt montowania nie obsługuje rozpoznania typu zawartości"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:889
+#: ../gio/gmount.c:892
msgid "mount doesn’t implement synchronous content type guessing"
msgstr ""
"punkt montowania nie obsługuje synchronicznego rozpoznania typu zawartości"
@@ -3277,25 +3277,29 @@ msgstr "Potok źródłowy jest już zamknięty"
msgid "Error resolving “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas rozwiÄ…zywania „%sâ€: %s"
-#: ../gio/gresource.c:606 ../gio/gresource.c:857 ../gio/gresource.c:874
-#: ../gio/gresource.c:998 ../gio/gresource.c:1070 ../gio/gresource.c:1143
-#: ../gio/gresource.c:1213 ../gio/gresourcefile.c:453
-#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713
+#: ../gio/gresolver.c:729 ../gio/gresolver.c:781
+msgid "Invalid domain"
+msgstr "Nieprawidłowa domena"
+
+#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
+#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
+#: ../gio/gresource.c:1258 ../gio/gresourcefile.c:476
+#: ../gio/gresourcefile.c:599 ../gio/gresourcefile.c:736
#, c-format
msgid "The resource at “%s†does not exist"
msgstr "Zasób w „%s†nie istnieje"
-#: ../gio/gresource.c:771
+#: ../gio/gresource.c:786
#, c-format
msgid "The resource at “%s†failed to decompress"
msgstr "Dekompresowanie zasobu w „%s†się nie powiodło"
-#: ../gio/gresourcefile.c:709
+#: ../gio/gresourcefile.c:732
#, c-format
msgid "The resource at “%s†is not a directory"
msgstr "Zasób w „%s†nie jest katalogiem"
-#: ../gio/gresourcefile.c:917
+#: ../gio/gresourcefile.c:940
msgid "Input stream doesn’t implement seek"
msgstr "Potok wejściowy nie obsługuje szukania"
@@ -3389,7 +3393,7 @@ msgstr ""
msgid " SECTION An (optional) elf section name\n"
msgstr " SEKCJA (Opcjonalna) nazwa sekcji formatu ELF\n"
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:656
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:703
msgid " COMMAND The (optional) command to explain\n"
msgstr " POLECENIE (Opcjonalne) polecenie do wyjaśnienia\n"
@@ -3424,7 +3428,7 @@ msgid " PATH A resource path\n"
msgstr " ŚCIEŻKA Ścieżka do zasobu\n"
#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:853
+#: ../gio/gsettings-tool.c:908
#, c-format
msgid "No such schema “%sâ€\n"
msgstr "Brak schematu „%sâ€\n"
@@ -3459,39 +3463,39 @@ 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:491
+#: ../gio/gsettings-tool.c:538
#, c-format
msgid "The provided value is outside of the valid range\n"
msgstr "Podana wartość jest poza prawidłowym zakresem\n"
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:545
#, c-format
msgid "The key is not writable\n"
msgstr "Klucz nie jest zapisywalny\n"
-#: ../gio/gsettings-tool.c:534
+#: ../gio/gsettings-tool.c:581
msgid "List the installed (non-relocatable) schemas"
msgstr ""
"Wyświetla listę zainstalowanych schematów (których nie można przenosić)"
-#: ../gio/gsettings-tool.c:540
+#: ../gio/gsettings-tool.c:587
msgid "List the installed relocatable schemas"
msgstr "Wyświetla listę zainstalowanych schematów (które można przenosić)"
-#: ../gio/gsettings-tool.c:546
+#: ../gio/gsettings-tool.c:593
msgid "List the keys in SCHEMA"
msgstr "Wyświetla listę kluczy w SCHEMACIE"
-#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
-#: ../gio/gsettings-tool.c:596
+#: ../gio/gsettings-tool.c:594 ../gio/gsettings-tool.c:600
+#: ../gio/gsettings-tool.c:643
msgid "SCHEMA[:PATH]"
msgstr "SCHEMAT[:ŚCIEŻKA]"
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:599
msgid "List the children of SCHEMA"
msgstr "Wyświetla listę elementów potomnych SCHEMATU"
-#: ../gio/gsettings-tool.c:558
+#: ../gio/gsettings-tool.c:605
msgid ""
"List keys and values, recursively\n"
"If no SCHEMA is given, list all keys\n"
@@ -3499,49 +3503,49 @@ 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:560
+#: ../gio/gsettings-tool.c:607
msgid "[SCHEMA[:PATH]]"
msgstr "[SCHEMAT[:ŚCIEŻKA]]"
-#: ../gio/gsettings-tool.c:565
+#: ../gio/gsettings-tool.c:612
msgid "Get the value of KEY"
msgstr "Uzyskuje wartość KLUCZA"
-#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
-#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
-#: ../gio/gsettings-tool.c:602
+#: ../gio/gsettings-tool.c:613 ../gio/gsettings-tool.c:619
+#: ../gio/gsettings-tool.c:625 ../gio/gsettings-tool.c:637
+#: ../gio/gsettings-tool.c:649
msgid "SCHEMA[:PATH] KEY"
msgstr "SCHEMAT[:ŚCIEŻKA] KLUCZ"
-#: ../gio/gsettings-tool.c:571
+#: ../gio/gsettings-tool.c:618
msgid "Query the range of valid values for KEY"
msgstr "Odpytuje zakres prawidłowych wartości KLUCZA"
-#: ../gio/gsettings-tool.c:577
+#: ../gio/gsettings-tool.c:624
msgid "Query the description for KEY"
msgstr "Odpytuje opis KLUCZA"
-#: ../gio/gsettings-tool.c:583
+#: ../gio/gsettings-tool.c:630
msgid "Set the value of KEY to VALUE"
msgstr "Ustawia wartość KLUCZA na WARTOŚĆ"
-#: ../gio/gsettings-tool.c:584
+#: ../gio/gsettings-tool.c:631
msgid "SCHEMA[:PATH] KEY VALUE"
msgstr "SCHEMAT[:ŚCIEŻKA] KLUCZ WARTOŚĆ"
-#: ../gio/gsettings-tool.c:589
+#: ../gio/gsettings-tool.c:636
msgid "Reset KEY to its default value"
msgstr "Przywraca KLUCZ na jego domyślną wartość"
-#: ../gio/gsettings-tool.c:595
+#: ../gio/gsettings-tool.c:642
msgid "Reset all keys in SCHEMA to their defaults"
msgstr "Przywraca wszystkie klucze w SCHEMACIE do domyślnych wartości"
-#: ../gio/gsettings-tool.c:601
+#: ../gio/gsettings-tool.c:648
msgid "Check if KEY is writable"
msgstr "Sprawdza, czy KLUCZ jest zapisywalny"
-#: ../gio/gsettings-tool.c:607
+#: ../gio/gsettings-tool.c:654
msgid ""
"Monitor KEY for changes.\n"
"If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3551,11 +3555,11 @@ msgstr ""
"Jeśli nie podano KLUCZA, to monitoruje wszystkie klucze w SCHEMACIE.\n"
"Użycie ^C zatrzymuje monitorowanie.\n"
-#: ../gio/gsettings-tool.c:610
+#: ../gio/gsettings-tool.c:657
msgid "SCHEMA[:PATH] [KEY]"
msgstr "SCHEMAT[:ŚCIEŻKA] [KLUCZ]"
-#: ../gio/gsettings-tool.c:622
+#: ../gio/gsettings-tool.c:669
msgid ""
"Usage:\n"
" gsettings --version\n"
@@ -3605,7 +3609,7 @@ msgstr ""
"Polecenie „gsettings help POLECENIE†wyświetla szczegółową pomoc.\n"
"\n"
-#: ../gio/gsettings-tool.c:646
+#: ../gio/gsettings-tool.c:693
#, c-format
msgid ""
"Usage:\n"
@@ -3620,11 +3624,11 @@ msgstr ""
"%s\n"
"\n"
-#: ../gio/gsettings-tool.c:652
+#: ../gio/gsettings-tool.c:699
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:660
+#: ../gio/gsettings-tool.c:707
msgid ""
" SCHEMA The name of the schema\n"
" PATH The path, for relocatable schemas\n"
@@ -3632,178 +3636,208 @@ msgstr ""
" SCHEMAT Identyfikator schematu\n"
" ŚCIEŻKA Ścieżka (dla schematów, które można przenosić)\n"
-#: ../gio/gsettings-tool.c:665
+#: ../gio/gsettings-tool.c:712
msgid " KEY The (optional) key within the schema\n"
msgstr " KLUCZ (Opcjonalny) klucz w schemacie\n"
-#: ../gio/gsettings-tool.c:669
+#: ../gio/gsettings-tool.c:716
msgid " KEY The key within the schema\n"
msgstr " KLUCZ Klucz w schemacie\n"
-#: ../gio/gsettings-tool.c:673
+#: ../gio/gsettings-tool.c:720
msgid " VALUE The value to set\n"
msgstr " WARTOŚĆ Wartość do ustawienia\n"
-#: ../gio/gsettings-tool.c:728
+#: ../gio/gsettings-tool.c:775
#, 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:740
+#: ../gio/gsettings-tool.c:787
#, c-format
msgid "No schemas installed\n"
msgstr "Nie zainstalowano schematów\n"
-#: ../gio/gsettings-tool.c:811
+#: ../gio/gsettings-tool.c:866
#, c-format
msgid "Empty schema name given\n"
msgstr "Podano pustÄ… nazwÄ™ schematu\n"
-#: ../gio/gsettings-tool.c:866
+#: ../gio/gsettings-tool.c:921
#, c-format
msgid "No such key “%sâ€\n"
msgstr "Brak klucza „%sâ€\n"
-#: ../gio/gsocket.c:379
+#: ../gio/gsocket.c:384
msgid "Invalid socket, not initialized"
msgstr "Nieprawidłowe gniazdo, nie zainicjowano"
-#: ../gio/gsocket.c:386
+#: ../gio/gsocket.c:391
#, 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:394
+#: ../gio/gsocket.c:399
msgid "Socket is already closed"
msgstr "Gniazdo jest już zamknięte"
-#: ../gio/gsocket.c:409 ../gio/gsocket.c:2765 ../gio/gsocket.c:3950
-#: ../gio/gsocket.c:4008
+#: ../gio/gsocket.c:414 ../gio/gsocket.c:3010 ../gio/gsocket.c:4220
+#: ../gio/gsocket.c:4278
msgid "Socket I/O timed out"
msgstr "Przekroczono czas oczekiwania wejścia/wyjścia gniazda"
-#: ../gio/gsocket.c:541
+#: ../gio/gsocket.c:549
#, c-format
msgid "creating GSocket from fd: %s"
msgstr "tworzenie GSocket z fd: %s"
-#: ../gio/gsocket.c:570 ../gio/gsocket.c:624 ../gio/gsocket.c:631
+#: ../gio/gsocket.c:578 ../gio/gsocket.c:632 ../gio/gsocket.c:639
#, c-format
msgid "Unable to create socket: %s"
msgstr "Nie można utworzyć gniazda: %s"
-#: ../gio/gsocket.c:624
+#: ../gio/gsocket.c:632
msgid "Unknown family was specified"
msgstr "Podano nieznanÄ… rodzinÄ™"
-#: ../gio/gsocket.c:631
+#: ../gio/gsocket.c:639
msgid "Unknown protocol was specified"
msgstr "Podano nieznany protokół"
-#: ../gio/gsocket.c:1122
+#: ../gio/gsocket.c:1130
#, 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:1139
+#: ../gio/gsocket.c:1147
#, 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:1943
+#: ../gio/gsocket.c:1954
#, c-format
msgid "could not get local address: %s"
msgstr "nie można uzyskać lokalnego adresu: %s"
-#: ../gio/gsocket.c:1986
+#: ../gio/gsocket.c:2000
#, c-format
msgid "could not get remote address: %s"
msgstr "nie można uzyskać zdalnego adresu: %s"
-#: ../gio/gsocket.c:2052
+#: ../gio/gsocket.c:2066
#, c-format
msgid "could not listen: %s"
msgstr "nie można nasłuchiwać: %s"
-#: ../gio/gsocket.c:2151
+#: ../gio/gsocket.c:2168
#, c-format
msgid "Error binding to address: %s"
msgstr "BÅ‚Ä…d podczas dowiÄ…zywania do adresu: %s"
-#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
+#: ../gio/gsocket.c:2226 ../gio/gsocket.c:2263 ../gio/gsocket.c:2373
+#: ../gio/gsocket.c:2391 ../gio/gsocket.c:2461 ../gio/gsocket.c:2519
+#: ../gio/gsocket.c:2537
#, c-format
msgid "Error joining multicast group: %s"
msgstr "Błąd podczas dołączania do grupy multicast: %s"
-#: ../gio/gsocket.c:2267 ../gio/gsocket.c:2304
+#: ../gio/gsocket.c:2227 ../gio/gsocket.c:2264 ../gio/gsocket.c:2374
+#: ../gio/gsocket.c:2392 ../gio/gsocket.c:2462 ../gio/gsocket.c:2520
+#: ../gio/gsocket.c:2538
#, c-format
msgid "Error leaving multicast group: %s"
msgstr "BÅ‚Ä…d podczas opuszczania grupy multicast: %s"
-#: ../gio/gsocket.c:2268
+#: ../gio/gsocket.c:2228
msgid "No support for source-specific multicast"
msgstr "Brak obsługi multicastu dla konkretnych źródeł"
-#: ../gio/gsocket.c:2488
+#: ../gio/gsocket.c:2375
+msgid "Unsupported socket family"
+msgstr "Nieobsługiwana rodzina gniazda"
+
+#: ../gio/gsocket.c:2393
+msgid "source-specific not an IPv4 address"
+msgstr "konkretne źródła nie są adresem IPv4"
+
+#: ../gio/gsocket.c:2411 ../gio/gsocket.c:2440 ../gio/gsocket.c:2487
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Nie odnaleziono interfejsu: %s"
+
+#: ../gio/gsocket.c:2427
+#, c-format
+msgid "Interface name too long"
+msgstr "Nazwa interfejsu jest za długa"
+
+#: ../gio/gsocket.c:2463
+msgid "No support for IPv4 source-specific multicast"
+msgstr "Brak obsługi multicastu IPv4 dla konkretnych źródeł"
+
+#: ../gio/gsocket.c:2521
+msgid "No support for IPv6 source-specific multicast"
+msgstr "Brak obsługi multicastu IPv6 dla konkretnych źródeł"
+
+#: ../gio/gsocket.c:2730
#, c-format
msgid "Error accepting connection: %s"
msgstr "Błąd podczas akceptowania połączenia: %s"
-#: ../gio/gsocket.c:2609
+#: ../gio/gsocket.c:2854
msgid "Connection in progress"
msgstr "Trwa połączenie"
-#: ../gio/gsocket.c:2658
+#: ../gio/gsocket.c:2903
msgid "Unable to get pending error: "
msgstr "Nie można uzyskać oczekującego błędu: "
-#: ../gio/gsocket.c:2828
+#: ../gio/gsocket.c:3073
#, c-format
msgid "Error receiving data: %s"
msgstr "BÅ‚Ä…d podczas pobierania danych: %s"
-#: ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3268
#, c-format
msgid "Error sending data: %s"
msgstr "Błąd podczas wysyłania danych: %s"
-#: ../gio/gsocket.c:3210
+#: ../gio/gsocket.c:3455
#, c-format
msgid "Unable to shutdown socket: %s"
msgstr "Nie można zamknąć gniazda: %s"
-#: ../gio/gsocket.c:3291
+#: ../gio/gsocket.c:3536
#, c-format
msgid "Error closing socket: %s"
msgstr "BÅ‚Ä…d podczas zamykania gniazda: %s"
-#: ../gio/gsocket.c:3943
+#: ../gio/gsocket.c:4213
#, c-format
msgid "Waiting for socket condition: %s"
msgstr "Oczekiwanie na warunek gniazda: %s"
-#: ../gio/gsocket.c:4417 ../gio/gsocket.c:4497 ../gio/gsocket.c:4675
+#: ../gio/gsocket.c:4687 ../gio/gsocket.c:4767 ../gio/gsocket.c:4945
#, c-format
msgid "Error sending message: %s"
msgstr "Błąd podczas wysyłania komunikatu: %s"
-#: ../gio/gsocket.c:4441
+#: ../gio/gsocket.c:4711
msgid "GSocketControlMessage not supported on Windows"
msgstr "GSocketControlMessage nie jest obsługiwane w systemie Windows"
-#: ../gio/gsocket.c:4894 ../gio/gsocket.c:4967 ../gio/gsocket.c:5193
+#: ../gio/gsocket.c:5164 ../gio/gsocket.c:5237 ../gio/gsocket.c:5463
#, c-format
msgid "Error receiving message: %s"
msgstr "BÅ‚Ä…d podczas pobierania komunikatu: %s"
-#: ../gio/gsocket.c:5465
+#: ../gio/gsocket.c:5735
#, c-format
msgid "Unable to read socket credentials: %s"
msgstr "Nie można odczytać danych uwierzytelniających gniazda: %s"
-#: ../gio/gsocket.c:5474
+#: ../gio/gsocket.c:5744
msgid "g_socket_get_credentials not implemented for this OS"
msgstr ""
"g_socket_get_credentials nie jest zaimplementowane dla tego systemu "
@@ -3947,18 +3981,19 @@ 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:550 ../gio/gthreadedresolver.c:630
-#: ../gio/gthreadedresolver.c:728 ../gio/gthreadedresolver.c:778
+#: ../gio/gthreadedresolver.c:549 ../gio/gthreadedresolver.c:628
+#: ../gio/gthreadedresolver.c:726 ../gio/gthreadedresolver.c:776
#, c-format
msgid "No DNS record of the requested type for “%sâ€"
msgstr "Brak wpisu DNS żądanego typu dla „%sâ€"
-#: ../gio/gthreadedresolver.c:555 ../gio/gthreadedresolver.c:733
+#: ../gio/gthreadedresolver.c:554 ../gio/gthreadedresolver.c:731
#, c-format
msgid "Temporarily unable to resolve “%sâ€"
msgstr "Nie można tymczasowo rozwiÄ…zać „%sâ€"
-#: ../gio/gthreadedresolver.c:560 ../gio/gthreadedresolver.c:738
+#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
+#: ../gio/gthreadedresolver.c:842
#, c-format
msgid "Error resolving “%sâ€"
msgstr "BÅ‚Ä…d podczas rozwiÄ…zywania „%sâ€"
@@ -4073,7 +4108,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:2430 ../gio/gunixmounts.c:2483
+#: ../gio/gunixmounts.c:2556 ../gio/gunixmounts.c:2609
msgid "Filesystem root"
msgstr "Katalog główny systemu plików"
@@ -4179,90 +4214,102 @@ msgstr "Nieoczekiwany znacznik „%sâ€, oczekiwano znacznika „%sâ€"
msgid "Unexpected tag “%s†inside “%sâ€"
msgstr "Nieoczekiwany znacznik „%s†wewnÄ…trz „%sâ€"
-#: ../glib/gbookmarkfile.c:1756
+#: ../glib/gbookmarkfile.c:1757
msgid "No valid bookmark file found in data dirs"
msgstr "Nie można odnaleźć prawidłowego pliku zakładek w katalogach danych"
-#: ../glib/gbookmarkfile.c:1957
+#: ../glib/gbookmarkfile.c:1958
#, c-format
msgid "A bookmark for URI “%s†already exists"
msgstr "Zakładka dla adresu URI „%s†już istnieje"
-#: ../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
+#: ../glib/gbookmarkfile.c:2004 ../glib/gbookmarkfile.c:2162
+#: ../glib/gbookmarkfile.c:2247 ../glib/gbookmarkfile.c:2327
+#: ../glib/gbookmarkfile.c:2412 ../glib/gbookmarkfile.c:2495
+#: ../glib/gbookmarkfile.c:2573 ../glib/gbookmarkfile.c:2652
+#: ../glib/gbookmarkfile.c:2694 ../glib/gbookmarkfile.c:2791
+#: ../glib/gbookmarkfile.c:2912 ../glib/gbookmarkfile.c:3102
+#: ../glib/gbookmarkfile.c:3178 ../glib/gbookmarkfile.c:3346
+#: ../glib/gbookmarkfile.c:3435 ../glib/gbookmarkfile.c:3524
+#: ../glib/gbookmarkfile.c:3640
#, c-format
msgid "No bookmark found for URI “%sâ€"
msgstr "Nie odnaleziono zakÅ‚adki dla adresu URI „%sâ€"
-#: ../glib/gbookmarkfile.c:2335
+#: ../glib/gbookmarkfile.c:2336
#, c-format
msgid "No MIME type defined in the bookmark for URI “%sâ€"
msgstr "Nie zdefiniowano typu MIME w zakÅ‚adce dla adresu URI „%sâ€"
-#: ../glib/gbookmarkfile.c:2420
+#: ../glib/gbookmarkfile.c:2421
#, c-format
msgid "No private flag has been defined in bookmark for URI “%sâ€"
msgstr "Nie zdefiniowano prywatnej flagi w zakÅ‚adce dla adresu URI „%sâ€"
-#: ../glib/gbookmarkfile.c:2799
+#: ../glib/gbookmarkfile.c:2800
#, c-format
msgid "No groups set in bookmark for URI “%sâ€"
msgstr "Nie ustawiono grup w zakÅ‚adce dla adresu URI „%sâ€"
-#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
+#: ../glib/gbookmarkfile.c:3199 ../glib/gbookmarkfile.c:3356
#, c-format
msgid "No application with name “%s†registered a bookmark for “%sâ€"
msgstr "Å»aden program o nazwie „%s†nie zarejestrowaÅ‚ zakÅ‚adki dla „%sâ€"
-#: ../glib/gbookmarkfile.c:3377
+#: ../glib/gbookmarkfile.c:3379
#, c-format
msgid "Failed to expand exec line “%s†with URI “%sâ€"
msgstr "Rozwinięcie wiersza exec „%s†z adresem URI „%s†się nie powiodło"
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
-#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
+#: ../glib/gconvert.c:471
+msgid "Unrepresentable character in conversion input"
+msgstr "Nieprzedstawialny znak na wejściu konwersji"
+
+#: ../glib/gconvert.c:498 ../glib/gutf8.c:865 ../glib/gutf8.c:1077
+#: ../glib/gutf8.c:1214 ../glib/gutf8.c:1318
msgid "Partial character sequence at end of input"
msgstr "Na końcu wejścia występuje sekwencja odpowiadająca części znaku"
-#: ../glib/gconvert.c:742
+#: ../glib/gconvert.c:763
#, c-format
msgid "Cannot convert fallback “%s†to codeset “%sâ€"
msgstr "Nie można skonwertować napisu zastÄ™pczego „%s†na zestaw znaków „%sâ€"
-#: ../glib/gconvert.c:1513
+#: ../glib/gconvert.c:934
+msgid "Embedded NUL byte in conversion input"
+msgstr "Osadzony bajt NUL na wejściu konwersji"
+
+#: ../glib/gconvert.c:955
+msgid "Embedded NUL byte in conversion output"
+msgstr "Osadzony bajt NUL na wyjściu konwersji"
+
+#: ../glib/gconvert.c:1640
#, c-format
msgid "The URI “%s†is not an absolute URI using the “file†scheme"
msgstr ""
"Adres URI „%s†nie jest bezwzglÄ™dnym adresem URI, używajÄ…cym schematu „fileâ€"
-#: ../glib/gconvert.c:1523
+#: ../glib/gconvert.c:1650
#, c-format
msgid "The local file URI “%s†may not include a “#â€"
msgstr "Adres URI lokalnego pliku „%s†nie może zawierać znaku „#â€"
-#: ../glib/gconvert.c:1540
+#: ../glib/gconvert.c:1667
#, c-format
msgid "The URI “%s†is invalid"
msgstr "Adres URI „%s†jest nieprawidłowy"
-#: ../glib/gconvert.c:1552
+#: ../glib/gconvert.c:1679
#, c-format
msgid "The hostname of the URI “%s†is invalid"
msgstr "Nazwa komputera w adresie URI „%s†jest nieprawidłowa"
-#: ../glib/gconvert.c:1568
+#: ../glib/gconvert.c:1695
#, c-format
msgid "The URI “%s†contains invalidly escaped characters"
msgstr "Adres URI „%s†zawiera nieprawidłowe znaki sterujące"
-#: ../glib/gconvert.c:1640
+#: ../glib/gconvert.c:1767
#, c-format
msgid "The pathname “%s†is not an absolute path"
msgstr "Ścieżka „%s†nie jest ścieżką bezwzględną"
@@ -4498,7 +4545,7 @@ msgstr "PM"
msgid "Error opening directory “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas otwierania katalogu „%sâ€: %s"
-#: ../glib/gfileutils.c:706 ../glib/gfileutils.c:798
+#: ../glib/gfileutils.c:716 ../glib/gfileutils.c:808
#, c-format
msgid "Could not allocate %lu byte to read file “%sâ€"
msgid_plural "Could not allocate %lu bytes to read file “%sâ€"
@@ -4506,118 +4553,118 @@ msgstr[0] "Nie można przydzielić %lu bajtu do odczytu pliku „%sâ€"
msgstr[1] "Nie można przydzielić %lu bajtów do odczytu pliku „%sâ€"
msgstr[2] "Nie można przydzielić %lu bajtów do odczytu pliku „%sâ€"
-#: ../glib/gfileutils.c:723
+#: ../glib/gfileutils.c:733
#, c-format
msgid "Error reading file “%sâ€: %s"
msgstr "BÅ‚Ä…d podczas odczytywania pliku „%sâ€: %s"
-#: ../glib/gfileutils.c:759
+#: ../glib/gfileutils.c:769
#, c-format
msgid "File “%s†is too large"
msgstr "Plik „%s†jest za duży"
-#: ../glib/gfileutils.c:823
+#: ../glib/gfileutils.c:833
#, c-format
msgid "Failed to read from file “%sâ€: %s"
msgstr "Odczytanie z pliku „%s†się nie powiodło: %s"
-#: ../glib/gfileutils.c:871 ../glib/gfileutils.c:943
+#: ../glib/gfileutils.c:881 ../glib/gfileutils.c:953
#, c-format
msgid "Failed to open file “%sâ€: %s"
msgstr "Otwarcie pliku „%s†się nie powiodło: %s"
-#: ../glib/gfileutils.c:883
+#: ../glib/gfileutils.c:893
#, c-format
msgid "Failed to get attributes of file “%sâ€: fstat() failed: %s"
msgstr ""
"Uzyskanie atrybutów pliku „%s†się nie powiodło: funkcja fstat() zwróciła "
"błąd: %s"
-#: ../glib/gfileutils.c:913
+#: ../glib/gfileutils.c:923
#, c-format
msgid "Failed to open file “%sâ€: fdopen() failed: %s"
msgstr ""
"Otwarcie pliku „%s†się nie powiodło: funkcja fdopen() zwróciła błąd: %s"
-#: ../glib/gfileutils.c:1012
+#: ../glib/gfileutils.c:1022
#, c-format
msgid "Failed to rename file “%s†to “%sâ€: g_rename() failed: %s"
msgstr ""
"Zmiana nazwy pliku „%s†na „%s†się nie powiodła: funkcja g_rename() "
"zwróciła błąd: %s"
-#: ../glib/gfileutils.c:1047 ../glib/gfileutils.c:1554
+#: ../glib/gfileutils.c:1057 ../glib/gfileutils.c:1564
#, c-format
msgid "Failed to create file “%sâ€: %s"
msgstr "Utworzenie pliku „%s†się nie powiodło: %s"
-#: ../glib/gfileutils.c:1074
+#: ../glib/gfileutils.c:1084
#, c-format
msgid "Failed to write file “%sâ€: write() failed: %s"
msgstr ""
"Zapisanie pliku „%s†się nie powiodło: funkcja write() zwróciła błąd: %s"
-#: ../glib/gfileutils.c:1117
+#: ../glib/gfileutils.c:1127
#, c-format
msgid "Failed to write file “%sâ€: fsync() failed: %s"
msgstr ""
"Zapisanie pliku „%s†się nie powiodło: funkcja fsync() zwróciła błąd: %s"
-#: ../glib/gfileutils.c:1241
+#: ../glib/gfileutils.c:1251
#, c-format
msgid "Existing file “%s†could not be removed: g_unlink() failed: %s"
msgstr ""
"Nie można usunąć istniejÄ…cego pliku „%sâ€: funkcja g_unlink() zwróciÅ‚a bÅ‚Ä…d: "
"%s"
-#: ../glib/gfileutils.c:1520
+#: ../glib/gfileutils.c:1530
#, c-format
msgid "Template “%s†invalid, should not contain a “%sâ€"
msgstr "Szablon „%s†jest nieprawidÅ‚owy, nie powinien on zawierać „%sâ€"
-#: ../glib/gfileutils.c:1533
+#: ../glib/gfileutils.c:1543
#, c-format
msgid "Template “%s†doesn’t contain XXXXXX"
msgstr "Szablon „%s†nie zawiera XXXXXX"
-#: ../glib/gfileutils.c:2058
+#: ../glib/gfileutils.c:2105
#, c-format
msgid "Failed to read the symbolic link “%sâ€: %s"
msgstr "Odczytanie dowiązania symbolicznego „%s†się nie powiodło: %s"
-#: ../glib/giochannel.c:1388
+#: ../glib/giochannel.c:1389
#, c-format
msgid "Could not open converter from “%s†to “%sâ€: %s"
msgstr "Nie można otworzyć konwertera z „%s†na „%sâ€: %s"
-#: ../glib/giochannel.c:1733
+#: ../glib/giochannel.c:1734
msgid "Can’t do a raw read in g_io_channel_read_line_string"
msgstr ""
"Nie można wykonać surowego odczytu w zmiennej g_io_channel_read_line_string"
-#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038
-#: ../glib/giochannel.c:2125
+#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039
+#: ../glib/giochannel.c:2126
msgid "Leftover unconverted data in read buffer"
msgstr "W buforze odczytu pozostały nieskonwertowane dane"
-#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938
+#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
msgid "Channel terminates in a partial character"
msgstr "Na końcu kanału występuje sekwencja odpowiadająca części znaku"
-#: ../glib/giochannel.c:1924
+#: ../glib/giochannel.c:1925
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:736
+#: ../glib/gkeyfile.c:788
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:773
+#: ../glib/gkeyfile.c:825
msgid "Not a regular file"
msgstr "To nie jest zwykły plik"
-#: ../glib/gkeyfile.c:1218
+#: ../glib/gkeyfile.c:1270
#, c-format
msgid ""
"Key file contains line “%s†which is not a key-value pair, group, or comment"
@@ -4625,45 +4672,45 @@ msgstr ""
"Plik klucza zawiera wiersz „%sâ€, który nie jest parÄ… klucz-wartość, grupÄ… "
"lub komentarzem"
-#: ../glib/gkeyfile.c:1275
+#: ../glib/gkeyfile.c:1327
#, c-format
msgid "Invalid group name: %s"
msgstr "Nieprawidłowa nazwa grupy: %s"
-#: ../glib/gkeyfile.c:1297
+#: ../glib/gkeyfile.c:1349
msgid "Key file does not start with a group"
msgstr "Plik klucza nie rozpoczyna siÄ™ od grupy"
-#: ../glib/gkeyfile.c:1323
+#: ../glib/gkeyfile.c:1375
#, c-format
msgid "Invalid key name: %s"
msgstr "Nieprawidłowa nazwa klucza: %s"
-#: ../glib/gkeyfile.c:1350
+#: ../glib/gkeyfile.c:1402
#, c-format
msgid "Key file contains unsupported encoding “%sâ€"
msgstr "Plik klucza zawiera nieobsÅ‚ugiwane kodowanie „%sâ€"
-#: ../glib/gkeyfile.c:1593 ../glib/gkeyfile.c:1766 ../glib/gkeyfile.c:3146
-#: ../glib/gkeyfile.c:3209 ../glib/gkeyfile.c:3339 ../glib/gkeyfile.c:3469
-#: ../glib/gkeyfile.c:3613 ../glib/gkeyfile.c:3842 ../glib/gkeyfile.c:3909
+#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3206
+#: ../glib/gkeyfile.c:3269 ../glib/gkeyfile.c:3399 ../glib/gkeyfile.c:3529
+#: ../glib/gkeyfile.c:3673 ../glib/gkeyfile.c:3902 ../glib/gkeyfile.c:3969
#, c-format
msgid "Key file does not have group “%sâ€"
msgstr "Plik klucza nie zawiera grupy „%sâ€"
-#: ../glib/gkeyfile.c:1721
+#: ../glib/gkeyfile.c:1773
#, 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:1883 ../glib/gkeyfile.c:1999
+#: ../glib/gkeyfile.c:1935 ../glib/gkeyfile.c:2051
#, 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:1903 ../glib/gkeyfile.c:2019 ../glib/gkeyfile.c:2388
+#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2448
#, c-format
msgid ""
"Key file contains key “%s†which has a value that cannot be interpreted."
@@ -4671,7 +4718,7 @@ msgstr ""
"Plik klucza zawiera klucz „%sâ€, który ma wartość niemożliwÄ… do "
"zinterpretowania."
-#: ../glib/gkeyfile.c:2606 ../glib/gkeyfile.c:2975
+#: ../glib/gkeyfile.c:2666 ../glib/gkeyfile.c:3035
#, c-format
msgid ""
"Key file contains key “%s†in group “%s†which has a value that cannot be "
@@ -4680,36 +4727,36 @@ msgstr ""
"Plik klucza zawiera klucz „%s†w grupie „%sâ€, która ma wartość niemożliwÄ… do "
"zinterpretowania."
-#: ../glib/gkeyfile.c:2684 ../glib/gkeyfile.c:2761
+#: ../glib/gkeyfile.c:2744 ../glib/gkeyfile.c:2821
#, 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:4149
+#: ../glib/gkeyfile.c:4209
msgid "Key file contains escape character at end of line"
msgstr "Plik klucza zawiera znak sterujący na końcu linii"
-#: ../glib/gkeyfile.c:4171
+#: ../glib/gkeyfile.c:4231
#, c-format
msgid "Key file contains invalid escape sequence “%sâ€"
msgstr "Plik klucza zawiera nieprawidÅ‚owÄ… sekwencjÄ™ sterujÄ…cÄ… „%sâ€"
-#: ../glib/gkeyfile.c:4315
+#: ../glib/gkeyfile.c:4375
#, c-format
msgid "Value “%s†cannot be interpreted as a number."
msgstr "Nie można zinterpretować „%s†jako liczby."
-#: ../glib/gkeyfile.c:4329
+#: ../glib/gkeyfile.c:4389
#, c-format
msgid "Integer value “%s†out of range"
msgstr "Wartość całkowita „%s†jest spoza dopuszczalnego zakresu"
-#: ../glib/gkeyfile.c:4362
+#: ../glib/gkeyfile.c:4422
#, c-format
msgid "Value “%s†cannot be interpreted as a float number."
msgstr "Nie można zinterpretować „%s†jako liczby zmiennoprzecinkowej."
-#: ../glib/gkeyfile.c:4401
+#: ../glib/gkeyfile.c:4461
#, c-format
msgid "Value “%s†cannot be interpreted as a boolean."
msgstr "Nie można zinterpretować „%s†jako wartości logicznej."
@@ -5405,82 +5452,82 @@ msgstr ""
msgid "Text was empty (or contained only whitespace)"
msgstr "Tekst jest pusty (lub zawiera tylko spacje)"
-#: ../glib/gspawn.c:250
+#: ../glib/gspawn.c:253
#, c-format
msgid "Failed to read data from child process (%s)"
msgstr "Odczytanie danych z procesu potomnego (%s) się nie powiodło"
-#: ../glib/gspawn.c:394
+#: ../glib/gspawn.c:401
#, c-format
msgid "Unexpected error in select() reading data from a child process (%s)"
msgstr ""
"Nieoczekiwany błąd w funkcji select() podczas odczytywania danych z procesu "
"potomnego (%s)"
-#: ../glib/gspawn.c:479
+#: ../glib/gspawn.c:486
#, c-format
msgid "Unexpected error in waitpid() (%s)"
msgstr "Nieoczekiwany błąd w waitpid() (%s)"
-#: ../glib/gspawn.c:886 ../glib/gspawn-win32.c:1231
+#: ../glib/gspawn.c:897 ../glib/gspawn-win32.c:1231
#, c-format
msgid "Child process exited with code %ld"
msgstr "Proces potomny został zakończony z kodem %ld"
-#: ../glib/gspawn.c:894
+#: ../glib/gspawn.c:905
#, c-format
msgid "Child process killed by signal %ld"
msgstr "Proces potomny został zakończony sygnałem %ld"
-#: ../glib/gspawn.c:901
+#: ../glib/gspawn.c:912
#, c-format
msgid "Child process stopped by signal %ld"
msgstr "Proces potomny został zatrzymany sygnałem %ld"
-#: ../glib/gspawn.c:908
+#: ../glib/gspawn.c:919
#, c-format
msgid "Child process exited abnormally"
msgstr "Proces potomny został nieprawidłowo zakończony"
-#: ../glib/gspawn.c:1313 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
+#: ../glib/gspawn.c:1324 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
#, 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:1383
+#: ../glib/gspawn.c:1394
#, c-format
msgid "Failed to fork (%s)"
msgstr "Rozdzielenie procesu (%s) się nie powiodło"
-#: ../glib/gspawn.c:1532 ../glib/gspawn-win32.c:368
+#: ../glib/gspawn.c:1543 ../glib/gspawn-win32.c:368
#, c-format
msgid "Failed to change to directory “%s†(%s)"
msgstr "Zmiana katalogu na „%s†(%s) się nie powiodła"
-#: ../glib/gspawn.c:1542
+#: ../glib/gspawn.c:1553
#, c-format
msgid "Failed to execute child process “%s†(%s)"
msgstr "Wykonanie procesu potomnego „%s†(%s) się nie powiodło"
-#: ../glib/gspawn.c:1552
+#: ../glib/gspawn.c:1563
#, c-format
msgid "Failed to redirect output or input of child process (%s)"
msgstr ""
"Przekierowanie wejścia lub wyjścia procesu potomnego (%s) się nie powiodło"
-#: ../glib/gspawn.c:1561
+#: ../glib/gspawn.c:1572
#, c-format
msgid "Failed to fork child process (%s)"
msgstr "Rozdzielenie procesu potomnego (%s) się nie powiodło"
-#: ../glib/gspawn.c:1569
+#: ../glib/gspawn.c:1580
#, c-format
msgid "Unknown error executing child process “%sâ€"
msgstr "Podczas wykonywania procesu potomnego „%s†wystąpił nieznany błąd"
-#: ../glib/gspawn.c:1593
+#: ../glib/gspawn.c:1604
#, c-format
msgid "Failed to read enough data from child pid pipe (%s)"
msgstr ""
@@ -5554,93 +5601,161 @@ msgstr "Liczba „%s†jest poza zakresem [%s, %s]"
msgid "“%s†is not an unsigned number"
msgstr "„%s†nie jest liczbą bez znaku"
-#: ../glib/gutf8.c:808
+#: ../glib/gutf8.c:811
msgid "Failed to allocate memory"
msgstr "Przydzielenie pamięci się nie powiodło"
-#: ../glib/gutf8.c:941
+#: ../glib/gutf8.c:944
msgid "Character out of range for UTF-8"
msgstr "Znak jest poza zakresem dla UTF-8"
-#: ../glib/gutf8.c:1042 ../glib/gutf8.c:1051 ../glib/gutf8.c:1181
-#: ../glib/gutf8.c:1190 ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
+#: ../glib/gutf8.c:1045 ../glib/gutf8.c:1054 ../glib/gutf8.c:1184
+#: ../glib/gutf8.c:1193 ../glib/gutf8.c:1332 ../glib/gutf8.c:1429
msgid "Invalid sequence in conversion input"
msgstr "Nieprawidłowa sekwencja na wejściu konwersji"
-#: ../glib/gutf8.c:1340 ../glib/gutf8.c:1437
+#: ../glib/gutf8.c:1343 ../glib/gutf8.c:1440
msgid "Character out of range for UTF-16"
msgstr "Znak jest poza zakresem dla UTF-16"
-#: ../glib/gutils.c:2209 ../glib/gutils.c:2236 ../glib/gutils.c:2342
+#: ../glib/gutils.c:2229
#, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u bajt"
-msgstr[1] "%u bajty"
-msgstr[2] "%u bajtów"
+msgid "%.1f kB"
+msgstr "%.1f kB"
-#: ../glib/gutils.c:2215
+#: ../glib/gutils.c:2230 ../glib/gutils.c:2436
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: ../glib/gutils.c:2231 ../glib/gutils.c:2441
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: ../glib/gutils.c:2232 ../glib/gutils.c:2446
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#: ../glib/gutils.c:2233 ../glib/gutils.c:2451
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: ../glib/gutils.c:2234 ../glib/gutils.c:2456
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
+
+#: ../glib/gutils.c:2237
#, c-format
msgid "%.1f KiB"
msgstr "%.1f KiB"
-#: ../glib/gutils.c:2217
+#: ../glib/gutils.c:2238
#, c-format
msgid "%.1f MiB"
msgstr "%.1f MiB"
-#: ../glib/gutils.c:2220
+#: ../glib/gutils.c:2239
#, c-format
msgid "%.1f GiB"
msgstr "%.1f GiB"
-#: ../glib/gutils.c:2223
+#: ../glib/gutils.c:2240
#, c-format
msgid "%.1f TiB"
msgstr "%.1f TiB"
-#: ../glib/gutils.c:2226
+#: ../glib/gutils.c:2241
#, c-format
msgid "%.1f PiB"
msgstr "%.1f PiB"
-#: ../glib/gutils.c:2229
+#: ../glib/gutils.c:2242
#, c-format
msgid "%.1f EiB"
msgstr "%.1f EiB"
-#: ../glib/gutils.c:2242
+#: ../glib/gutils.c:2245
#, c-format
-msgid "%.1f kB"
-msgstr "%.1f kB"
+msgid "%.1f kb"
+msgstr "%.1f kb"
-#: ../glib/gutils.c:2245 ../glib/gutils.c:2360
+#: ../glib/gutils.c:2246
#, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
-#: ../glib/gutils.c:2248 ../glib/gutils.c:2365
+#: ../glib/gutils.c:2247
#, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
+msgid "%.1f Gb"
+msgstr "%.1f Gb"
-#: ../glib/gutils.c:2250 ../glib/gutils.c:2370
+#: ../glib/gutils.c:2248
#, c-format
-msgid "%.1f TB"
-msgstr "%.1f TB"
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
-#: ../glib/gutils.c:2253 ../glib/gutils.c:2375
+#: ../glib/gutils.c:2249
#, c-format
-msgid "%.1f PB"
-msgstr "%.1f PB"
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
-#: ../glib/gutils.c:2256 ../glib/gutils.c:2380
+#: ../glib/gutils.c:2250
#, c-format
-msgid "%.1f EB"
-msgstr "%.1f EB"
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
+
+#: ../glib/gutils.c:2253
+#, c-format
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
+
+#: ../glib/gutils.c:2254
+#, c-format
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
+
+#: ../glib/gutils.c:2255
+#, c-format
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
+
+#: ../glib/gutils.c:2256
+#, c-format
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
+
+#: ../glib/gutils.c:2257
+#, c-format
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
+
+#: ../glib/gutils.c:2258
+#, c-format
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
+
+#: ../glib/gutils.c:2292 ../glib/gutils.c:2418
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u bajt"
+msgstr[1] "%u bajty"
+msgstr[2] "%u bajtów"
+
+#: ../glib/gutils.c:2296
+#, c-format
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u bit"
+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:2293
+#: ../glib/gutils.c:2363
#, c-format
msgid "%s byte"
msgid_plural "%s bytes"
@@ -5648,12 +5763,21 @@ msgstr[0] "%s bajt"
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:2368
+#, c-format
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s bit"
+msgstr[1] "%s bity"
+msgstr[2] "%s bitów"
+
#. 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:2355
+#: ../glib/gutils.c:2431
#, c-format
msgid "%.1f KB"
msgstr "%.1f KB"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 5695f61af..cde6cc608 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -9,38 +9,38 @@
msgid ""
msgstr ""
"Project-Id-Version: glib 2.31.21\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
"product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2016-11-20 18:36+0000\n"
-"PO-Revision-Date: 2017-02-21 12:51+0800\n"
-"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
+"POT-Creation-Date: 2018-02-02 09:07+0000\n"
+"PO-Revision-Date: 2018-02-10 15:28+0800\n"
+"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese (traditional)\n"
"Language: zh_TW\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 1.8.12\n"
+"X-Generator: Poedit 2.0.3\n"
-#: ../gio/gapplication.c:493
+#: ../gio/gapplication.c:495
msgid "GApplication options"
msgstr "GApplication é¸é …"
-#: ../gio/gapplication.c:493
+#: ../gio/gapplication.c:495
msgid "Show GApplication options"
msgstr "顯示 GApplication é¸é …"
-#: ../gio/gapplication.c:538
+#: ../gio/gapplication.c:540
msgid "Enter GApplication service mode (use from D-Bus service files)"
msgstr "進入 GApplication æœå‹™æ¨¡å¼ (用於來自 D-Bus æœå‹™æª”案)"
-#: ../gio/gapplication.c:550
+#: ../gio/gapplication.c:552
msgid "Override the application’s ID"
msgstr "è¦†è“‹æ­¤æ‡‰ç”¨ç¨‹å¼ ID"
#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gio-tool.c:209 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:520
+#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
+#: ../gio/gsettings-tool.c:551
msgid "Print help"
msgstr "顯示求助"
@@ -49,11 +49,11 @@ msgstr "顯示求助"
msgid "[COMMAND]"
msgstr "[指令]"
-#: ../gio/gapplication-tool.c:49 ../gio/gio-tool.c:210
+#: ../gio/gapplication-tool.c:49 ../gio/gio-tool.c:228
msgid "Print version"
msgstr "顯示版本"
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:526
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:557
msgid "Print version information and exit"
msgstr "輸出版本資訊並離開"
@@ -102,7 +102,7 @@ msgid "APPID"
msgstr "APPID"
#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90 ../gio/gio-tool.c:206
+#: ../gio/gdbus-tool.c:90 ../gio/gio-tool.c:224
msgid "COMMAND"
msgstr "指令"
@@ -141,7 +141,7 @@ msgid "Optional parameter to the action invocation, in GVariant format"
msgstr "動作呼å«æ™‚é¸æ“‡æ€§çš„åƒæ•¸ï¼Œä»¥ GVariant æ ¼å¼"
#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:612
+#: ../gio/gsettings-tool.c:643
#, c-format
msgid ""
"Unknown command %s\n"
@@ -155,7 +155,7 @@ msgid "Usage:\n"
msgstr "用法:\n"
#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:647
+#: ../gio/gsettings-tool.c:678
msgid "Arguments:\n"
msgstr "引數:\n"
@@ -259,7 +259,7 @@ msgstr ""
#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:209
#, c-format
msgid "Too large count value passed to %s"
msgstr "傳給 %s 的計數值太大"
@@ -283,8 +283,8 @@ msgid "Truncate not supported on base stream"
msgstr "在基礎串æµä¸­ä¸æ”¯æ´æˆªçŸ­(truncate)"
#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1377 ../gio/gsimpleasyncresult.c:870
-#: ../gio/gsimpleasyncresult.c:896
+#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
+#: ../gio/gsimpleasyncresult.c:897
#, c-format
msgid "Operation was cancelled"
msgstr "æ“作已被å–消"
@@ -302,43 +302,43 @@ msgid "Not enough space in destination"
msgstr "在目的端中沒有足夠的空間"
#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:438 ../glib/gconvert.c:845
-#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
-#: ../glib/giochannel.c:2442 ../glib/gutf8.c:855 ../glib/gutf8.c:1308
+#: ../gio/gdatainputstream.c:1261 ../glib/gconvert.c:452 ../glib/gconvert.c:877
+#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
+#: ../glib/giochannel.c:2443 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
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:460 ../glib/gconvert.c:791
+#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
#, c-format
msgid "Error during conversion: %s"
msgstr "轉æ›æ™‚發生錯誤:%s"
-#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
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:327
+#: ../glib/giochannel.c:1385
#, c-format
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:331
#, c-format
msgid "Could not open converter from “%s†to “%sâ€"
msgstr "無法開啟「%sã€è‡³ã€Œ%sã€çš„轉æ›"
-#: ../gio/gcontenttype.c:335
+#: ../gio/gcontenttype.c:358
#, c-format
msgid "%s type"
msgstr "%s é¡žåž‹"
-#: ../gio/gcontenttype-win32.c:160
+#: ../gio/gcontenttype-win32.c:177
msgid "Unknown type"
msgstr "ä¸æ˜Žçš„é¡žåž‹"
-#: ../gio/gcontenttype-win32.c:162
+#: ../gio/gcontenttype-win32.c:179
#, c-format
msgid "%s filetype"
msgstr "%s 檔案類型"
@@ -363,53 +363,53 @@ msgstr "在這個 OS 無法åšåˆ°æ†‘è­‰å½è£"
msgid "Unexpected early end-of-stream"
msgstr "未é æœŸçš„串æµéŽæ—©çµæŸ"
-#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241
-#: ../gio/gdbusaddress.c:322
+#: ../gio/gdbusaddress.c:158 ../gio/gdbusaddress.c:246
+#: ../gio/gdbusaddress.c:327
#, c-format
msgid "Unsupported key “%s†in address entry “%sâ€"
msgstr "ä½å€é …目「%2$sã€æœ‰ä¸æ”¯æ´çš„設定éµã€Œ%1$sã€"
-#: ../gio/gdbusaddress.c:180
+#: ../gio/gdbusaddress.c:185
#, c-format
msgid ""
"Address “%s†is invalid (need exactly one of path, tmpdir or abstract keys)"
msgstr "ä½å€ã€Œ%sã€æ˜¯ç„¡æ•ˆçš„ (需è¦æœ‰æ˜Žç¢ºçš„ pathã€tmpdir 或 abstract 設定éµä¹‹ä¸€)"
-#: ../gio/gdbusaddress.c:193
+#: ../gio/gdbusaddress.c:198
#, c-format
msgid "Meaningless key/value pair combination in address entry “%sâ€"
msgstr "在ä½å€é …「%sã€æœ‰ç„¡æ„義的設定éµ/數值組åˆé…å°"
-#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337
+#: ../gio/gdbusaddress.c:261 ../gio/gdbusaddress.c:342
#, c-format
msgid "Error in address “%s†— the port attribute is malformed"
msgstr "ä½å€ã€Œ%sã€æœ‰éŒ¯èª¤ — port 屬性的格å¼ä¸è‰¯"
-#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348
+#: ../gio/gdbusaddress.c:272 ../gio/gdbusaddress.c:353
#, c-format
msgid "Error in address “%s†— the family attribute is malformed"
msgstr "ä½å€ã€Œ%sã€æœ‰éŒ¯èª¤ — family 屬性的格å¼ä¸è‰¯"
-#: ../gio/gdbusaddress.c:457
+#: ../gio/gdbusaddress.c:463
#, c-format
msgid "Address element “%s†does not contain a colon (:)"
msgstr "ä½å€å…ƒç´ ã€Œ%sã€ï¼Œä¸¦æœªåŒ…å«åˆ†è™Ÿ (:)"
-#: ../gio/gdbusaddress.c:478
+#: ../gio/gdbusaddress.c:484
#, 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:492
+#: ../gio/gdbusaddress.c:498
#, 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:570
+#: ../gio/gdbusaddress.c:576
#, c-format
msgid ""
"Error in address “%s†— the unix transport requires exactly one of the keys "
@@ -417,102 +417,102 @@ msgid ""
msgstr ""
"ä½å€ã€Œ%sã€æœ‰éŒ¯èª¤ — unix 傳輸需è¦æ˜Žç¢ºçš„設定一個「pathã€æˆ–「abstractã€è¨­å®šéµ"
-#: ../gio/gdbusaddress.c:606
+#: ../gio/gdbusaddress.c:612
#, c-format
msgid "Error in address “%s†— the host attribute is missing or malformed"
msgstr "ä½å€ã€Œ%sã€æœ‰éŒ¯èª¤ — host 屬性éºå¤±æˆ–æ ¼å¼ä¸è‰¯"
-#: ../gio/gdbusaddress.c:620
+#: ../gio/gdbusaddress.c:626
#, c-format
msgid "Error in address “%s†— the port attribute is missing or malformed"
msgstr "ä½å€ã€Œ%sã€æœ‰éŒ¯èª¤ — port 屬性éºå¤±æˆ–æ ¼å¼ä¸è‰¯"
-#: ../gio/gdbusaddress.c:634
+#: ../gio/gdbusaddress.c:640
#, c-format
msgid "Error in address “%s†— the noncefile attribute is missing or malformed"
msgstr "ä½å€ã€Œ%sã€æœ‰éŒ¯èª¤ — noncefile 屬性éºå¤±æˆ–æ ¼å¼ä¸è‰¯"
-#: ../gio/gdbusaddress.c:655
+#: ../gio/gdbusaddress.c:661
msgid "Error auto-launching: "
msgstr "自動執行失敗:"
-#: ../gio/gdbusaddress.c:663
+#: ../gio/gdbusaddress.c:669
#, c-format
msgid "Unknown or unsupported transport “%s†for address “%sâ€"
msgstr "ä½å€ã€Œ%2$sã€æœ‰ä¸æ˜Žæˆ–ä¸æ”¯æ´çš„傳輸「%1$sã€"
-#: ../gio/gdbusaddress.c:699
+#: ../gio/gdbusaddress.c:714
#, c-format
msgid "Error opening nonce file “%sâ€: %s"
msgstr "開啟臨時檔案「%sã€æ™‚發生錯誤:%s"
-#: ../gio/gdbusaddress.c:717
+#: ../gio/gdbusaddress.c:733
#, c-format
msgid "Error reading from nonce file “%sâ€: %s"
msgstr "讀å–臨時檔案「%sã€æ™‚發生錯誤:%s"
-#: ../gio/gdbusaddress.c:726
+#: ../gio/gdbusaddress.c:742
#, c-format
msgid "Error reading from nonce file “%sâ€, expected 16 bytes, got %d"
msgstr "讀å–臨時檔案「%sã€æ™‚發生錯誤,é æœŸç‚º 16 ä½å…ƒçµ„,å»å¾—到 %d"
-#: ../gio/gdbusaddress.c:744
+#: ../gio/gdbusaddress.c:760
#, c-format
msgid "Error writing contents of nonce file “%s†to stream:"
msgstr "寫入臨時檔案「%sã€çš„內容到串æµæ™‚發生錯誤:"
-#: ../gio/gdbusaddress.c:951
+#: ../gio/gdbusaddress.c:969
msgid "The given address is empty"
msgstr "指定的ä½å€æ˜¯ç©ºç™½çš„"
-#: ../gio/gdbusaddress.c:1064
+#: ../gio/gdbusaddress.c:1082
#, c-format
msgid "Cannot spawn a message bus when setuid"
msgstr "在 setuid 時ä¸èƒ½ç”¢ç”Ÿè¨Šæ¯åŒ¯æµæŽ’"
-#: ../gio/gdbusaddress.c:1071
+#: ../gio/gdbusaddress.c:1089
msgid "Cannot spawn a message bus without a machine-id: "
msgstr "沒有 machine-id ä¸èƒ½ç”¢ç”Ÿè¨Šæ¯åŒ¯æµæŽ’:"
-#: ../gio/gdbusaddress.c:1078
+#: ../gio/gdbusaddress.c:1096
#, c-format
msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
msgstr "沒有 X11 $DISPLAY ä¸èƒ½è‡ªå‹•åŸ·è¡Œ D-Bus "
-#: ../gio/gdbusaddress.c:1120
+#: ../gio/gdbusaddress.c:1138
#, c-format
msgid "Error spawning command line “%sâ€: "
msgstr "產生命令列「%sã€æ™‚出ç¾éŒ¯èª¤ï¼š"
-#: ../gio/gdbusaddress.c:1337
+#: ../gio/gdbusaddress.c:1355
#, c-format
msgid "(Type any character to close this window)\n"
msgstr "(輸入任何字元以關閉這個視窗)\n"
-#: ../gio/gdbusaddress.c:1489
+#: ../gio/gdbusaddress.c:1509
#, c-format
msgid "Session dbus not running, and autolaunch failed"
msgstr "作業階段 dbus 尚未執行,且自動執行失敗"
-#: ../gio/gdbusaddress.c:1500
+#: ../gio/gdbusaddress.c:1520
#, c-format
msgid "Cannot determine session bus address (not implemented for this OS)"
msgstr "ä¸èƒ½åˆ¤æ–·ä½œæ¥­éšŽæ®µåŒ¯æµæŽ’ä½å€ï¼ˆæ²’有在這個 OS 實作)"
-#: ../gio/gdbusaddress.c:1635
+#: ../gio/gdbusaddress.c:1658
#, 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:1644 ../gio/gdbusconnection.c:7142
+#: ../gio/gdbusaddress.c:1667 ../gio/gdbusconnection.c:7158
msgid ""
"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
"variable is not set"
msgstr "ä¸èƒ½åˆ¤æ–·åŒ¯æµæŽ’ä½å€ï¼Œå› ç‚ºå°šæœªè¨­å®š DBUS_STARTER_BUS_TYPE 環境變數"
-#: ../gio/gdbusaddress.c:1654
+#: ../gio/gdbusaddress.c:1677
#, c-format
msgid "Unknown bus type %d"
msgstr "ä¸æ˜Žçš„匯æµæŽ’é¡žåž‹ %d"
@@ -531,43 +531,43 @@ msgid ""
"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
msgstr "竭盡所有å¯ç”¨çš„æ ¸å°æ©Ÿåˆ¶ (已嘗試:%s) (å¯ç”¨ï¼š%s)"
-#: ../gio/gdbusauth.c:1173
+#: ../gio/gdbusauth.c:1171
msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
msgstr "å·²é€éŽ GDBusAuthObserver::authorize-authenticated-peer å–消"
-#: ../gio/gdbusauthmechanismsha1.c:261
+#: ../gio/gdbusauthmechanismsha1.c:262
#, c-format
msgid "Error when getting information for directory “%sâ€: %s"
msgstr "從目錄「%sã€å–得資訊時發生錯誤:%s"
-#: ../gio/gdbusauthmechanismsha1.c:273
+#: ../gio/gdbusauthmechanismsha1.c:274
#, c-format
msgid ""
"Permissions on directory “%s†are malformed. Expected mode 0700, got 0%o"
msgstr "目錄「%sã€çš„權é™æ ¼å¼ä¸‹è‰¯ã€‚é æœŸçš„模å¼ç‚º 0700,å»å¾—到 0%o"
-#: ../gio/gdbusauthmechanismsha1.c:294
+#: ../gio/gdbusauthmechanismsha1.c:296
#, c-format
msgid "Error creating directory “%sâ€: %s"
msgstr "建立目錄「%sã€æ™‚發生錯誤:%s"
-#: ../gio/gdbusauthmechanismsha1.c:377
+#: ../gio/gdbusauthmechanismsha1.c:379
#, c-format
msgid "Error opening keyring “%s†for reading: "
msgstr "開啟鑰匙圈「%sã€è®€å–時發生錯誤:"
-#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714
+#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:720
#, c-format
msgid "Line %d of the keyring at “%s†with content “%s†is malformed"
msgstr "ä½æ–¼ã€Œ%2$sã€å…§å®¹ã€Œ%3$sã€çš„鑰匙圈第 %1$d 列格å¼ä¸è‰¯"
-#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728
+#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:734
#, c-format
msgid ""
"First token of line %d of the keyring at “%s†with content “%s†is malformed"
msgstr "ä½æ–¼ã€Œ%2$sã€å…§å®¹ã€Œ%3$sã€çš„鑰匙圈第 %1$d 列第一記號格å¼ä¸è‰¯"
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742
+#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:748
#, c-format
msgid ""
"Second token of line %d of the keyring at “%s†with content “%s†is malformed"
@@ -578,37 +578,37 @@ msgstr "ä½æ–¼ã€Œ%2$sã€å…§å®¹ã€Œ%3$sã€çš„鑰匙圈第 %1$d 列第二記號格å
msgid "Didn’t find cookie with id %d in the keyring at “%sâ€"
msgstr "在「%2$sã€é‘°åŒ™åœˆæ‰¾ä¸åˆ° id %1$d çš„ cookie"
-#: ../gio/gdbusauthmechanismsha1.c:532
+#: ../gio/gdbusauthmechanismsha1.c:536
#, c-format
msgid "Error deleting stale lock file “%sâ€: %s"
msgstr "刪除舊的鎖定檔案「%sã€æ™‚發生錯誤:%s"
-#: ../gio/gdbusauthmechanismsha1.c:564
+#: ../gio/gdbusauthmechanismsha1.c:568
#, c-format
msgid "Error creating lock file “%sâ€: %s"
msgstr "建立鎖定檔案「%sã€æ™‚發生錯誤:%s"
-#: ../gio/gdbusauthmechanismsha1.c:594
+#: ../gio/gdbusauthmechanismsha1.c:599
#, c-format
msgid "Error closing (unlinked) lock file “%sâ€: %s"
msgstr "關閉 (å–消連çµ) 鎖定檔案時發生錯誤「%sã€ï¼š%s"
-#: ../gio/gdbusauthmechanismsha1.c:604
+#: ../gio/gdbusauthmechanismsha1.c:610
#, c-format
msgid "Error unlinking lock file “%sâ€: %s"
msgstr "å–消連çµéŽ–定檔案時發生錯誤「%sã€ï¼š%s"
-#: ../gio/gdbusauthmechanismsha1.c:681
+#: ../gio/gdbusauthmechanismsha1.c:687
#, c-format
msgid "Error opening keyring “%s†for writing: "
msgstr "開啟鑰匙圈「%sã€å¯«å…¥æ™‚發生錯誤:"
-#: ../gio/gdbusauthmechanismsha1.c:878
+#: ../gio/gdbusauthmechanismsha1.c:883
#, c-format
msgid "(Additionally, releasing the lock for “%s†also failed: %s) "
msgstr "(å¦å¤–,釋放「%sã€çš„鎖定失敗:%s)"
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2377
+#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2378
msgid "The connection is closed"
msgstr "這個連線已關閉"
@@ -616,143 +616,140 @@ msgstr "這個連線已關閉"
msgid "Timeout was reached"
msgstr "å·²é”逾時時間"
-#: ../gio/gdbusconnection.c:2499
+#: ../gio/gdbusconnection.c:2500
msgid ""
"Unsupported flags encountered when constructing a client-side connection"
msgstr "當建立客戶端連線時é‡åˆ°ä¸æ”¯æ´çš„旗標"
-#: ../gio/gdbusconnection.c:4109 ../gio/gdbusconnection.c:4456
+#: ../gio/gdbusconnection.c:4124 ../gio/gdbusconnection.c:4471
#, c-format
msgid ""
"No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
msgstr "在路徑 %s 的物件沒有「org.freedesktop.DBus.Propertiesã€é€™å€‹ä»‹é¢"
-#: ../gio/gdbusconnection.c:4251
+#: ../gio/gdbusconnection.c:4266
#, c-format
msgid "No such property '%s'"
msgstr "沒有這個屬性「%sã€"
-#: ../gio/gdbusconnection.c:4263
+#: ../gio/gdbusconnection.c:4278
#, c-format
msgid "Property '%s' is not readable"
msgstr "屬性「%sã€ç„¡æ³•è®€å–"
-#: ../gio/gdbusconnection.c:4274
+#: ../gio/gdbusconnection.c:4289
#, c-format
msgid "Property '%s' is not writable"
msgstr "屬性「%sã€ç„¡æ³•å¯«å…¥"
-#: ../gio/gdbusconnection.c:4294
+#: ../gio/gdbusconnection.c:4309
#, c-format
msgid "Error setting property '%s': Expected type '%s' but got '%s'"
msgstr "設定屬性「%sã€éŒ¯èª¤ï¼šé æœŸçš„類型為「%sã€ä½†å¾—到「%sã€"
-#: ../gio/gdbusconnection.c:4399 ../gio/gdbusconnection.c:6573
+#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
+#: ../gio/gdbusconnection.c:6589
#, c-format
msgid "No such interface '%s'"
msgstr "沒有這個介é¢ã€Œ%sã€"
-#: ../gio/gdbusconnection.c:4607
-msgid "No such interface"
-msgstr "沒有這個介é¢"
-
-#: ../gio/gdbusconnection.c:4825 ../gio/gdbusconnection.c:7082
+#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7098
#, c-format
msgid "No such interface '%s' on object at path %s"
msgstr "在路徑 %2$s 的物件沒有「%1$sã€é€™å€‹ä»‹é¢"
-#: ../gio/gdbusconnection.c:4923
+#: ../gio/gdbusconnection.c:4938
#, c-format
msgid "No such method '%s'"
msgstr "沒有這個方法「%sã€"
-#: ../gio/gdbusconnection.c:4954
+#: ../gio/gdbusconnection.c:4969
#, c-format
msgid "Type of message, '%s', does not match expected type '%s'"
msgstr "訊æ¯çš„類型,「%sã€ï¼Œä¸ç¬¦åˆé æœŸçš„類型「%sã€"
-#: ../gio/gdbusconnection.c:5152
+#: ../gio/gdbusconnection.c:5167
#, c-format
msgid "An object is already exported for the interface %s at %s"
msgstr "æœ‰ç‰©ä»¶å·²ç‚ºä»‹é¢ %s 匯出於 %s"
-#: ../gio/gdbusconnection.c:5378
+#: ../gio/gdbusconnection.c:5393
#, c-format
msgid "Unable to retrieve property %s.%s"
msgstr "無法å–回屬性 %s.%s"
-#: ../gio/gdbusconnection.c:5434
+#: ../gio/gdbusconnection.c:5449
#, c-format
msgid "Unable to set property %s.%s"
msgstr "無法設定屬性%s.%s"
-#: ../gio/gdbusconnection.c:5610
+#: ../gio/gdbusconnection.c:5625
#, c-format
msgid "Method '%s' returned type '%s', but expected '%s'"
msgstr "方法「%sã€å‚³å›žé¡žåž‹ã€Œ%sã€ï¼Œä½†é æœŸç‚ºã€Œ%sã€"
-#: ../gio/gdbusconnection.c:6684
+#: ../gio/gdbusconnection.c:6700
#, c-format
msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
msgstr "介é¢ã€Œ%2$sã€ç°½ç« ã€Œ%3$sã€çš„方法「%1$sã€ä¸å­˜åœ¨"
-#: ../gio/gdbusconnection.c:6805
+#: ../gio/gdbusconnection.c:6821
#, c-format
msgid "A subtree is already exported for %s"
msgstr "å­æ¨¹ç‹€ç›®éŒ„已為 %s 匯出"
-#: ../gio/gdbusconnection.c:7133
+#: ../gio/gdbusconnection.c:7149
#, c-format
msgid ""
"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
"- unknown value '%s'"
msgstr "ä¸èƒ½å¾ž DBUS_STARTER_BUS_TYPE 環境變數判斷匯æµæŽ’ä½å€ - ä¸æ˜Žçš„數值「%sã€"
-#: ../gio/gdbusmessage.c:1244
+#: ../gio/gdbusmessage.c:1246
msgid "type is INVALID"
msgstr "類型為無效"
-#: ../gio/gdbusmessage.c:1255
+#: ../gio/gdbusmessage.c:1257
msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
msgstr "METHOD_CALL 訊æ¯ï¼šç¼ºå°‘ PATH 或 MEMBER 標頭欄ä½"
-#: ../gio/gdbusmessage.c:1266
+#: ../gio/gdbusmessage.c:1268
msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
msgstr "METHOD_RETURN 訊æ¯ï¼šç¼ºå°‘ REPLY_SERIAL 標頭欄ä½"
-#: ../gio/gdbusmessage.c:1278
+#: ../gio/gdbusmessage.c:1280
msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
msgstr "ERROR 訊æ¯ï¼šç¼ºå°‘ REPLY_SERIAL 或 ERROR_NAME 標頭欄ä½"
-#: ../gio/gdbusmessage.c:1291
+#: ../gio/gdbusmessage.c:1293
msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
msgstr "SIGNAL 訊æ¯ï¼šç¼ºå°‘ PATHã€INTERFACE 或 MEMBER 標頭欄ä½"
-#: ../gio/gdbusmessage.c:1299
+#: ../gio/gdbusmessage.c:1301
msgid ""
"SIGNAL message: The PATH header field is using the reserved value /org/"
"freedesktop/DBus/Local"
msgstr "SIGNAL 訊æ¯ï¼šPATH 標頭欄ä½ä½¿ç”¨äº†ä¿ç•™çš„數值 /org/freedesktop/DBus/Local"
-#: ../gio/gdbusmessage.c:1307
+#: ../gio/gdbusmessage.c:1309
msgid ""
"SIGNAL message: The INTERFACE header field is using the reserved value org."
"freedesktop.DBus.Local"
msgstr ""
"SIGNAL 訊æ¯ï¼šINTERFACE 標頭欄ä½ä½¿ç”¨äº†ä¿ç•™çš„數值 org.freedesktop.DBus.Local"
-#: ../gio/gdbusmessage.c:1355 ../gio/gdbusmessage.c:1415
+#: ../gio/gdbusmessage.c:1357 ../gio/gdbusmessage.c:1417
#, c-format
msgid "Wanted to read %lu byte but only got %lu"
msgid_plural "Wanted to read %lu bytes but only got %lu"
msgstr[0] "å˜—è©¦è®€å– %lu ä½å…ƒçµ„å»åªå¾—到 %lu"
-#: ../gio/gdbusmessage.c:1369
+#: ../gio/gdbusmessage.c:1371
#, c-format
msgid "Expected NUL byte after the string “%s†but found byte %d"
msgstr "é æœŸåœ¨å­—串「%sã€ä¹‹å¾Œç‚º NUL ä½å…ƒçµ„,但是發ç¾ä½å…ƒçµ„ %d"
-#: ../gio/gdbusmessage.c:1388
+#: ../gio/gdbusmessage.c:1390
#, c-format
msgid ""
"Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -761,17 +758,17 @@ msgstr ""
"é æœŸç‚ºæœ‰æ•ˆçš„ UTF-8 字串但是在ä½å…ƒçµ„ %d 處發ç¾ç„¡æ•ˆçš„ä½å…ƒçµ„ (字串的長度為 %d)。"
"到那一點之å‰çš„有效 UTF-8 字串為「%sã€"
-#: ../gio/gdbusmessage.c:1587
+#: ../gio/gdbusmessage.c:1593
#, c-format
msgid "Parsed value “%s†is not a valid D-Bus object path"
msgstr "已解æžæ•¸å€¼ã€Œ%sã€ä¸æ˜¯æœ‰æ•ˆçš„ D-Bus 物件路徑"
-#: ../gio/gdbusmessage.c:1609
+#: ../gio/gdbusmessage.c:1615
#, c-format
msgid "Parsed value “%s†is not a valid D-Bus signature"
msgstr "已解æžæ•¸å€¼ã€Œ%sã€ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„ D-Bus 簽章"
-#: ../gio/gdbusmessage.c:1656
+#: ../gio/gdbusmessage.c:1662
#, c-format
msgid ""
"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -779,7 +776,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:1676
+#: ../gio/gdbusmessage.c:1682
#, c-format
msgid ""
"Encountered array of type “a%câ€, expected to have a length a multiple of %u "
@@ -787,18 +784,18 @@ msgid ""
msgstr ""
"é‡åˆ°é¡žåž‹ã€Œa%cã€çš„陣列,é æœŸé•·åº¦æ‡‰ç‚º %u ä½å…ƒçµ„çš„å€æ•¸ï¼Œä½†ç™¼ç¾é•·åº¦ç‚º %u ä½å…ƒçµ„"
-#: ../gio/gdbusmessage.c:1843
+#: ../gio/gdbusmessage.c:1849
#, c-format
msgid "Parsed value “%s†for variant is not a valid D-Bus signature"
msgstr "已分æžæ•¸å€¼ã€Œ%sã€ä¸æ˜¯æœ‰æ•ˆçš„ D-Bus 簽章"
-#: ../gio/gdbusmessage.c:1867
+#: ../gio/gdbusmessage.c:1873
#, c-format
msgid ""
"Error deserializing GVariant with type string “%s†from the D-Bus wire format"
msgstr "從 D-Bus 線性格å¼ä»¥é¡žåž‹å­—串「%sã€ååºåˆ—化 GVariant 時發生錯誤"
-#: ../gio/gdbusmessage.c:2051
+#: ../gio/gdbusmessage.c:2055
#, c-format
msgid ""
"Invalid endianness value. Expected 0x6c (“lâ€) or 0x42 (“Bâ€) but found value "
@@ -806,80 +803,79 @@ msgid ""
msgstr ""
"無效的字節順åºæ•¸å€¼ã€‚é æœŸç‚º 0x6c (「Iã€)或 0x42 (「Bã€)å»å¾—到數值 0x%02x"
-#: ../gio/gdbusmessage.c:2064
+#: ../gio/gdbusmessage.c:2068
#, c-format
msgid "Invalid major protocol version. Expected 1 but found %d"
msgstr "無效的主通訊å”定版本。é æœŸç‚º 1 但找到 %d"
-#: ../gio/gdbusmessage.c:2120
+#: ../gio/gdbusmessage.c:2124
#, c-format
msgid "Signature header with signature “%s†found but message body is empty"
msgstr "發ç¾ç°½ç« ã€Œ%sã€çš„簽章標頭但訊æ¯ä¸»é«”是空的"
-#: ../gio/gdbusmessage.c:2134
+#: ../gio/gdbusmessage.c:2138
#, c-format
msgid "Parsed value “%s†is not a valid D-Bus signature (for body)"
msgstr "已解æžæ•¸å€¼ã€Œ%sã€ä¸æ˜¯æœ‰æ•ˆçš„ D-Bus 簽章 (於主體)"
-#: ../gio/gdbusmessage.c:2164
+#: ../gio/gdbusmessage.c:2168
#, 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:2174
+#: ../gio/gdbusmessage.c:2178
msgid "Cannot deserialize message: "
msgstr "ä¸èƒ½ååºåˆ—化訊æ¯ï¼š"
-#: ../gio/gdbusmessage.c:2515
+#: ../gio/gdbusmessage.c:2519
#, c-format
msgid ""
"Error serializing GVariant with type string “%s†to the D-Bus wire format"
msgstr "從 D-Bus 線性格å¼ä»¥é¡žåž‹å­—串「%sã€åºåˆ—化 GVariant 時發生錯誤"
-#: ../gio/gdbusmessage.c:2652
+#: ../gio/gdbusmessage.c:2656
#, c-format
msgid ""
-"Message has %d file descriptors but the header field indicates %d file "
-"descriptors"
-msgstr "訊æ¯æœ‰ %d 檔案æ述符但標頭欄ä½è¡¨ç¤ºæœ‰ %d 檔案æ述符"
+"Number of file descriptors in message (%d) differs from header field (%d)"
+msgstr ""
-#: ../gio/gdbusmessage.c:2660
+#: ../gio/gdbusmessage.c:2664
msgid "Cannot serialize message: "
msgstr "ä¸èƒ½åºåˆ—化訊æ¯ï¼š"
-#: ../gio/gdbusmessage.c:2704
+#: ../gio/gdbusmessage.c:2708
#, c-format
msgid "Message body has signature “%s†but there is no signature header"
msgstr "訊æ¯ä¸»é«”有簽章「%sã€ä½†æ˜¯æ²’有簽章標頭"
-#: ../gio/gdbusmessage.c:2714
+#: ../gio/gdbusmessage.c:2718
#, c-format
msgid ""
"Message body has type signature “%s†but signature in the header field is "
"“%sâ€"
msgstr "訊æ¯ä¸»é«”有類型簽章「%sã€ä½†æ˜¯æ¨™é ­æ¬„ä½ä¸­çš„簽章為「%sã€"
-#: ../gio/gdbusmessage.c:2730
+#: ../gio/gdbusmessage.c:2734
#, c-format
msgid "Message body is empty but signature in the header field is “(%s)â€"
msgstr "訊æ¯ä¸»é«”是空的但是標頭欄ä½ä¸­çš„簽章為「%sã€"
-#: ../gio/gdbusmessage.c:3283
+#: ../gio/gdbusmessage.c:3287
#, c-format
msgid "Error return with body of type “%sâ€"
msgstr "傳回類型「%sã€ä¸»é«”時發生錯誤"
-#: ../gio/gdbusmessage.c:3291
+#: ../gio/gdbusmessage.c:3295
msgid "Error return with empty body"
msgstr "傳回空白主體錯誤"
-#: ../gio/gdbusprivate.c:2038
+#: ../gio/gdbusprivate.c:2066
#, c-format
msgid "Unable to get Hardware profile: %s"
msgstr "無法å–得硬體設定檔:%s"
-#: ../gio/gdbusprivate.c:2083
+#: ../gio/gdbusprivate.c:2111
msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
msgstr "無法載入 /var/lib/dbus/machine-id 或 /etc/machine-id:"
@@ -893,7 +889,7 @@ msgstr "å‘¼å« %s StartServiceByName 時發生錯誤:"
msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
msgstr "來自 StartServiceByName(\"%2$s\") 方法的未é æœŸå›žæ‡‰ %1$d"
-#: ../gio/gdbusproxy.c:2713 ../gio/gdbusproxy.c:2847
+#: ../gio/gdbusproxy.c:2719 ../gio/gdbusproxy.c:2853
msgid ""
"Cannot invoke method; proxy is for a well-known name without an owner and "
"proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
@@ -909,23 +905,32 @@ msgstr "ä¸æ”¯æ´æŠ½è±¡å‘½å空間"
msgid "Cannot specify nonce file when creating a server"
msgstr "當建立伺æœå™¨æ™‚ä¸èƒ½æŒ‡å®šè‡¨æ™‚檔案"
-#: ../gio/gdbusserver.c:873
+#: ../gio/gdbusserver.c:876
#, c-format
msgid "Error writing nonce file at “%sâ€: %s"
msgstr "在「%sã€å¯«å…¥è‡¨æ™‚檔案時發生錯誤:%s"
-#: ../gio/gdbusserver.c:1044
+#: ../gio/gdbusserver.c:1047
#, c-format
msgid "The string “%s†is not a valid D-Bus GUID"
msgstr "字串「%sã€ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„ D-Bus GUID"
-#: ../gio/gdbusserver.c:1084
+#: ../gio/gdbusserver.c:1087
#, c-format
msgid "Cannot listen on unsupported transport “%sâ€"
msgstr "ä¸èƒ½è½å–ä¸æ”¯æ´çš„傳輸「%sã€"
#: ../gio/gdbus-tool.c:95
-#, c-format
+#, fuzzy, c-format
+#| msgid ""
+#| "Commands:\n"
+#| " help Shows this information\n"
+#| " introspect Introspect a remote object\n"
+#| " monitor Monitor a remote object\n"
+#| " call Invoke a method on a remote object\n"
+#| " emit Emit a signal\n"
+#| "\n"
+#| "Use “%s COMMAND --help†to get help on each command.\n"
msgid ""
"Commands:\n"
" help Shows this information\n"
@@ -933,6 +938,7 @@ 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"
msgstr ""
@@ -945,253 +951,300 @@ msgstr ""
"\n"
"使用「%s COMMAND --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:724 ../gio/gdbus-tool.c:1067
-#: ../gio/gdbus-tool.c:1509 ../gio/gio-tool-rename.c:84
+#: ../gio/gdbus-tool.c:167 ../gio/gdbus-tool.c:234 ../gio/gdbus-tool.c:306
+#: ../gio/gdbus-tool.c:330 ../gio/gdbus-tool.c:811 ../gio/gdbus-tool.c:1150
+#: ../gio/gdbus-tool.c:1592
#, c-format
msgid "Error: %s\n"
msgstr "錯誤:%s\n"
-#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1525
+#: ../gio/gdbus-tool.c:178 ../gio/gdbus-tool.c:247 ../gio/gdbus-tool.c:1608
#, c-format
msgid "Error parsing introspection XML: %s\n"
msgstr "解æžæª¢è¨Ž XML 時出ç¾éŒ¯èª¤ï¼š%s\n"
-#: ../gio/gdbus-tool.c:208
+#: ../gio/gdbus-tool.c:216
#, c-format
msgid "Error: %s is not a valid name\n"
msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„å稱\n"
-#: ../gio/gdbus-tool.c:356
+#: ../gio/gdbus-tool.c:364
msgid "Connect to the system bus"
msgstr "連線到系統匯æµæŽ’"
-#: ../gio/gdbus-tool.c:357
+#: ../gio/gdbus-tool.c:365
msgid "Connect to the session bus"
msgstr "連線到作業階段匯æµæŽ’"
-#: ../gio/gdbus-tool.c:358
+#: ../gio/gdbus-tool.c:366
msgid "Connect to given D-Bus address"
msgstr "連線到指定的 D-Bus ä½å€"
-#: ../gio/gdbus-tool.c:368
+#: ../gio/gdbus-tool.c:376
msgid "Connection Endpoint Options:"
msgstr "連線端點é¸é …:"
-#: ../gio/gdbus-tool.c:369
+#: ../gio/gdbus-tool.c:377
msgid "Options specifying the connection endpoint"
msgstr "指定連線端點的é¸é …"
-#: ../gio/gdbus-tool.c:391
+#: ../gio/gdbus-tool.c:399
#, c-format
msgid "No connection endpoint specified"
msgstr "沒有指定連線端點"
-#: ../gio/gdbus-tool.c:401
+#: ../gio/gdbus-tool.c:409
#, c-format
msgid "Multiple connection endpoints specified"
msgstr "指定了多é‡é€£ç·šç«¯é»ž"
-#: ../gio/gdbus-tool.c:471
+#: ../gio/gdbus-tool.c:479
#, c-format
msgid ""
"Warning: According to introspection data, interface “%s†does not exist\n"
msgstr "警告:根據檢討資料,介é¢ã€Œ%sã€ä¸å­˜åœ¨\n"
-#: ../gio/gdbus-tool.c:480
+#: ../gio/gdbus-tool.c:488
#, c-format
msgid ""
"Warning: According to introspection data, method “%s†does not exist on "
"interface “%sâ€\n"
msgstr "警告:根據檢討資料,介é¢ã€Œ%2$sã€çš„方法「%1$sã€ä¸å­˜åœ¨\n"
-#: ../gio/gdbus-tool.c:542
+#: ../gio/gdbus-tool.c:550
msgid "Optional destination for signal (unique name)"
msgstr "信號的é¸æ“‡æ€§ç›®çš„端 (ç¨ç‰¹å稱)"
-#: ../gio/gdbus-tool.c:543
+#: ../gio/gdbus-tool.c:551
msgid "Object path to emit signal on"
msgstr "è¦ç™¼å‡ºä¿¡è™Ÿçš„物件路徑"
-#: ../gio/gdbus-tool.c:544
+#: ../gio/gdbus-tool.c:552
msgid "Signal and interface name"
msgstr "信號和介é¢å稱"
-#: ../gio/gdbus-tool.c:578
+#: ../gio/gdbus-tool.c:587
msgid "Emit a signal."
msgstr "發出信號。"
-#: ../gio/gdbus-tool.c:612 ../gio/gdbus-tool.c:857 ../gio/gdbus-tool.c:1615
-#: ../gio/gdbus-tool.c:1850
+#: ../gio/gdbus-tool.c:642 ../gio/gdbus-tool.c:944 ../gio/gdbus-tool.c:1698
+#: ../gio/gdbus-tool.c:1931 ../gio/gdbus-tool.c:2152
#, c-format
msgid "Error connecting: %s\n"
msgstr "連線錯誤:%s\n"
-#: ../gio/gdbus-tool.c:624
+#: ../gio/gdbus-tool.c:659 ../gio/gdbus-tool.c:961 ../gio/gdbus-tool.c:1715
+#: ../gio/gdbus-tool.c:1956
#, c-format
-msgid "Error: object path not specified.\n"
-msgstr "錯誤:沒有指定物件路徑。\n"
+msgid "Error: Destination is not specified\n"
+msgstr "錯誤:尚未指定目的端\n"
-#: ../gio/gdbus-tool.c:629 ../gio/gdbus-tool.c:924 ../gio/gdbus-tool.c:1680
-#: ../gio/gdbus-tool.c:1916
+#: ../gio/gdbus-tool.c:670
#, c-format
-msgid "Error: %s is not a valid object path\n"
-msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„物件路徑\n"
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„ç¨ç‰¹åŒ¯æµæŽ’å稱。\n"
-#: ../gio/gdbus-tool.c:635
+#: ../gio/gdbus-tool.c:685 ../gio/gdbus-tool.c:987 ../gio/gdbus-tool.c:1741
#, c-format
-msgid "Error: signal not specified.\n"
-msgstr "錯誤:尚未指定信號。\n"
+msgid "Error: Object path is not specified\n"
+msgstr "錯誤:沒有指定物件路徑\n"
-#: ../gio/gdbus-tool.c:642
+#: ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1007 ../gio/gdbus-tool.c:1761
+#: ../gio/gdbus-tool.c:2002
#, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr "錯誤:信號必須為完全åˆè¦å®šçš„å稱。\n"
+msgid "Error: %s is not a valid object path\n"
+msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„物件路徑\n"
-#: ../gio/gdbus-tool.c:650
+#: ../gio/gdbus-tool.c:720
+#, fuzzy, c-format
+#| msgid "Error: Method name is not specified\n"
+msgid "Error: Signal name is not specified\n"
+msgstr "錯誤:沒有指定方法å稱\n"
+
+#: ../gio/gdbus-tool.c:731
+#, 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:743
#, c-format
msgid "Error: %s is not a valid interface name\n"
msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„介é¢å稱\n"
-#: ../gio/gdbus-tool.c:656
+#: ../gio/gdbus-tool.c:749
#, c-format
msgid "Error: %s is not a valid member name\n"
msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„æˆå“¡å稱\n"
-#: ../gio/gdbus-tool.c:662
-#, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„ç¨ç‰¹åŒ¯æµæŽ’å稱。\n"
-
#. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:699 ../gio/gdbus-tool.c:1036
+#: ../gio/gdbus-tool.c:786 ../gio/gdbus-tool.c:1119
#, c-format
msgid "Error parsing parameter %d: %s\n"
msgstr "解æžåƒæ•¸ %d 時發生錯誤:%s\n"
-#: ../gio/gdbus-tool.c:731
+#: ../gio/gdbus-tool.c:818
#, c-format
msgid "Error flushing connection: %s\n"
msgstr "清除連線時發生錯誤:%s\n"
-#: ../gio/gdbus-tool.c:758
+#: ../gio/gdbus-tool.c:845
msgid "Destination name to invoke method on"
msgstr "è¦å‘¼å«æ–¹æ³•çš„目的端å稱"
-#: ../gio/gdbus-tool.c:759
+#: ../gio/gdbus-tool.c:846
msgid "Object path to invoke method on"
msgstr "è¦å‘¼å«æ–¹æ³•çš„物件路徑"
-#: ../gio/gdbus-tool.c:760
+#: ../gio/gdbus-tool.c:847
msgid "Method and interface name"
msgstr "方法和介é¢å稱"
-#: ../gio/gdbus-tool.c:761
+#: ../gio/gdbus-tool.c:848
msgid "Timeout in seconds"
msgstr "逾時時間(秒)"
-#: ../gio/gdbus-tool.c:802
+#: ../gio/gdbus-tool.c:889
msgid "Invoke a method on a remote object."
msgstr "呼å«é ç«¯ç‰©ä»¶çš„方法。"
-#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1634 ../gio/gdbus-tool.c:1869
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr "錯誤:尚未指定目的端\n"
-
-#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1651 ../gio/gdbus-tool.c:1881
+#: ../gio/gdbus-tool.c:972 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1967
#, c-format
msgid "Error: %s is not a valid bus name\n"
msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„匯æµæŽ’å稱\n"
-#: ../gio/gdbus-tool.c:904 ../gio/gdbus-tool.c:1660
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "錯誤:沒有指定物件路徑\n"
-
-#: ../gio/gdbus-tool.c:939
+#: ../gio/gdbus-tool.c:1022
#, c-format
msgid "Error: Method name is not specified\n"
msgstr "錯誤:沒有指定方法å稱\n"
-#: ../gio/gdbus-tool.c:950
+#: ../gio/gdbus-tool.c:1033
#, c-format
msgid "Error: Method name “%s†is invalid\n"
msgstr "錯誤:方法å稱「%sã€æ˜¯ç„¡æ•ˆçš„\n"
-#: ../gio/gdbus-tool.c:1028
+#: ../gio/gdbus-tool.c:1111
#, c-format
msgid "Error parsing parameter %d of type “%sâ€: %s\n"
msgstr "解æžé¡žåž‹ã€Œ%2$sã€çš„åƒæ•¸ %1$d 時發生錯誤:%3$s\n"
-#: ../gio/gdbus-tool.c:1472
+#: ../gio/gdbus-tool.c:1555
msgid "Destination name to introspect"
msgstr "è¦æª¢è¨Žçš„目的端å稱"
-#: ../gio/gdbus-tool.c:1473
+#: ../gio/gdbus-tool.c:1556
msgid "Object path to introspect"
msgstr "è¦æª¢è¨Žçš„物件路徑"
-#: ../gio/gdbus-tool.c:1474
+#: ../gio/gdbus-tool.c:1557
msgid "Print XML"
msgstr "顯示 XML"
-#: ../gio/gdbus-tool.c:1475
+#: ../gio/gdbus-tool.c:1558
msgid "Introspect children"
msgstr "Introspect å­é …ç›®"
-#: ../gio/gdbus-tool.c:1476
+#: ../gio/gdbus-tool.c:1559
msgid "Only print properties"
msgstr "åªæœ‰åˆ—å°å±¬æ€§"
-#: ../gio/gdbus-tool.c:1567
+#: ../gio/gdbus-tool.c:1650
msgid "Introspect a remote object."
msgstr "檢查é ç«¯ç‰©ä»¶ã€‚"
-#: ../gio/gdbus-tool.c:1772
+#: ../gio/gdbus-tool.c:1853
msgid "Destination name to monitor"
msgstr "è¦ç›£æŽ§çš„目的端å稱"
-#: ../gio/gdbus-tool.c:1773
+#: ../gio/gdbus-tool.c:1854
msgid "Object path to monitor"
msgstr "è¦ç›£æŽ§çš„物件路徑"
-#: ../gio/gdbus-tool.c:1802
+#: ../gio/gdbus-tool.c:1883
msgid "Monitor a remote object."
msgstr "監控é ç«¯ç‰©ä»¶ã€‚"
-#: ../gio/gdesktopappinfo.c:1994 ../gio/gdesktopappinfo.c:4501
+#: ../gio/gdbus-tool.c:1941
+#, c-format
+msgid "Error: can’t monitor a non-message-bus connection\n"
+msgstr ""
+
+#: ../gio/gdbus-tool.c:2065
+msgid "Service to activate before waiting for the other one (well-known name)"
+msgstr ""
+
+#: ../gio/gdbus-tool.c:2068
+msgid ""
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
+"(default)"
+msgstr ""
+
+#: ../gio/gdbus-tool.c:2116
+#, fuzzy
+#| msgid "[OPTION…]"
+msgid "[OPTION…] BUS-NAME"
+msgstr "[é¸é ……]"
+
+#: ../gio/gdbus-tool.c:2118
+msgid "Wait for a bus name to appear."
+msgstr ""
+
+#: ../gio/gdbus-tool.c:2194
+#, fuzzy, c-format
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to activate for must be specified.\n"
+msgstr "錯誤:沒有指定物件路徑。\n"
+
+#: ../gio/gdbus-tool.c:2199
+#, fuzzy, c-format
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to wait for must be specified.\n"
+msgstr "錯誤:沒有指定物件路徑。\n"
+
+#: ../gio/gdbus-tool.c:2204
+#, fuzzy, c-format
+#| msgid "Too many arguments"
+msgid "Error: Too many arguments.\n"
+msgstr "引數太多"
+
+#: ../gio/gdbus-tool.c:2212 ../gio/gdbus-tool.c:2219
+#, fuzzy, c-format
+#| msgid "Error: %s is not a valid bus name\n"
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "錯誤:%s ä¸æ˜¯æœ‰æ•ˆçš„匯æµæŽ’å稱\n"
+
+#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4566
msgid "Unnamed"
msgstr "未命åçš„"
-#: ../gio/gdesktopappinfo.c:2404
+#: ../gio/gdesktopappinfo.c:2411
msgid "Desktop file didn’t specify Exec field"
msgstr "æ¡Œé¢(Desktop)檔案未指定 Exec 欄ä½"
-#: ../gio/gdesktopappinfo.c:2689
+#: ../gio/gdesktopappinfo.c:2701
msgid "Unable to find terminal required for application"
msgstr "無法找到應用程å¼è¦æ±‚的終端機"
-#: ../gio/gdesktopappinfo.c:3097
+#: ../gio/gdesktopappinfo.c:3135
#, c-format
msgid "Can’t create user application configuration folder %s: %s"
msgstr "ä¸èƒ½å»ºç«‹ä½¿ç”¨è€…應用程å¼è¨­å®šè³‡æ–™å¤¾ %s:%s"
-#: ../gio/gdesktopappinfo.c:3101
+#: ../gio/gdesktopappinfo.c:3139
#, c-format
msgid "Can’t create user MIME configuration folder %s: %s"
msgstr "ä¸èƒ½å»ºç«‹ä½¿ç”¨è€… MIME 設定資料夾 %s:%s"
-#: ../gio/gdesktopappinfo.c:3341 ../gio/gdesktopappinfo.c:3365
+#: ../gio/gdesktopappinfo.c:3379 ../gio/gdesktopappinfo.c:3403
msgid "Application information lacks an identifier"
msgstr "應用程å¼è³‡è¨Šç¼ºå°‘識別碼"
-#: ../gio/gdesktopappinfo.c:3599
+#: ../gio/gdesktopappinfo.c:3637
#, c-format
msgid "Can’t create user desktop file %s"
msgstr "ä¸èƒ½å»ºç«‹ä½¿ç”¨è€…æ¡Œé¢æª”案 %s"
-#: ../gio/gdesktopappinfo.c:3733
+#: ../gio/gdesktopappinfo.c:3771
#, c-format
msgid "Custom definition for %s"
msgstr "自訂 %s 的定義"
@@ -1252,14 +1305,14 @@ msgstr "GEmblemedIcon 編碼中記號 (%d) 的數é‡æ ¼å¼ä¸æ­£ç¢º"
msgid "Expected a GEmblem for GEmblemedIcon"
msgstr "é æœŸç‚º GEmblemedIcon çš„ GEmblem"
-#: ../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:3895 ../gio/gfile.c:3937 ../gio/gfile.c:4405
-#: ../gio/gfile.c:4816 ../gio/gfile.c:4901 ../gio/gfile.c:4991
-#: ../gio/gfile.c:5088 ../gio/gfile.c:5175 ../gio/gfile.c:5276
-#: ../gio/gfile.c:7817 ../gio/gfile.c:7907 ../gio/gfile.c:7991
+#: ../gio/gfile.c:1071 ../gio/gfile.c:1309 ../gio/gfile.c:1447
+#: ../gio/gfile.c:1685 ../gio/gfile.c:1740 ../gio/gfile.c:1798
+#: ../gio/gfile.c:1882 ../gio/gfile.c:1939 ../gio/gfile.c:2003
+#: ../gio/gfile.c:2058 ../gio/gfile.c:3704 ../gio/gfile.c:3759
+#: ../gio/gfile.c:3995 ../gio/gfile.c:4037 ../gio/gfile.c:4505
+#: ../gio/gfile.c:4916 ../gio/gfile.c:5001 ../gio/gfile.c:5091
+#: ../gio/gfile.c:5188 ../gio/gfile.c:5275 ../gio/gfile.c:5376
+#: ../gio/gfile.c:7954 ../gio/gfile.c:8044 ../gio/gfile.c:8128
#: ../gio/win32/gwinhttpfile.c:437
msgid "Operation not supported"
msgstr "ä¸æ”¯æ´çš„æ“作"
@@ -1268,69 +1321,69 @@ msgstr "ä¸æ”¯æ´çš„æ“作"
#. * trying to find the enclosing (user visible)
#. * mount of a file, but none exists.
#.
-#: ../gio/gfile.c:1468
+#: ../gio/gfile.c:1570
msgid "Containing mount does not exist"
msgstr "包å«äº†ä¸å­˜åœ¨çš„掛載點"
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2375
+#: ../gio/gfile.c:2617 ../gio/glocalfile.c:2446
msgid "Can’t copy over directory"
msgstr "ä¸èƒ½è¤‡è£½æ•´å€‹ç›®éŒ„"
-#: ../gio/gfile.c:2575
+#: ../gio/gfile.c:2677
msgid "Can’t copy directory over directory"
msgstr "ä¸èƒ½å°‡ç›®éŒ„複製到目錄上"
-#: ../gio/gfile.c:2583
+#: ../gio/gfile.c:2685
msgid "Target file exists"
msgstr "目標檔案已存在"
-#: ../gio/gfile.c:2602
+#: ../gio/gfile.c:2704
msgid "Can’t recursively copy directory"
msgstr "ä¸èƒ½éžå»»è¤‡è£½ç›®éŒ„"
-#: ../gio/gfile.c:2884
+#: ../gio/gfile.c:2979
msgid "Splice not supported"
msgstr "ä¸æ”¯æ´æ‹¼æŽ¥"
-#: ../gio/gfile.c:2888
+#: ../gio/gfile.c:2983
#, c-format
msgid "Error splicing file: %s"
msgstr "拼接檔案時發生錯誤:%s"
-#: ../gio/gfile.c:3019
+#: ../gio/gfile.c:3115
msgid "Copy (reflink/clone) between mounts is not supported"
msgstr "ä¸æ”¯æ´åœ¨æŽ›è¼‰é»žä¹‹é–“複製 (åƒç…§é€£çµ/é‡è£½)"
-#: ../gio/gfile.c:3023
+#: ../gio/gfile.c:3119
msgid "Copy (reflink/clone) is not supported or invalid"
msgstr "複製 (åƒç…§é€£çµ/é‡è£½) ä¸æ”¯æ´æˆ–無效"
-#: ../gio/gfile.c:3028
+#: ../gio/gfile.c:3124
msgid "Copy (reflink/clone) is not supported or didn’t work"
msgstr "複製 (åƒç…§é€£çµ/é‡è£½) ä¸æ”¯æ´æˆ–無法é‹ä½œ"
-#: ../gio/gfile.c:3091
+#: ../gio/gfile.c:3187
msgid "Can’t copy special file"
msgstr "ä¸èƒ½è¤‡è£½ç‰¹æ®Šçš„檔案"
-#: ../gio/gfile.c:3885
+#: ../gio/gfile.c:3985
msgid "Invalid symlink value given"
msgstr "æ供了無效的符號連çµå€¼"
-#: ../gio/gfile.c:4046
+#: ../gio/gfile.c:4146
msgid "Trash not supported"
msgstr "ä¸æ”¯æ´å›žæ”¶ç­’"
-#: ../gio/gfile.c:4158
+#: ../gio/gfile.c:4258
#, c-format
msgid "File names cannot contain “%câ€"
msgstr "檔案å稱ä¸èƒ½åŒ…å«ã€Œ%cã€"
-#: ../gio/gfile.c:6604 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6739 ../gio/gvolume.c:363
msgid "volume doesn’t implement mount"
msgstr "儲存å€å°šæœªå¯¦ä½œæŽ›è¼‰åŠŸèƒ½"
-#: ../gio/gfile.c:6713
+#: ../gio/gfile.c:6848
msgid "No application is registered as handling this file"
msgstr "沒有應用程å¼è¨»å†Šç‚ºç”¨ä»¥è™•ç†é€™å€‹æª”案"
@@ -1375,28 +1428,33 @@ msgstr "在輸入串æµä¸­ä¸å…許截短(truncate)"
msgid "Truncate not supported on stream"
msgstr "在串æµä¸­ä¸æ”¯æ´æˆªçŸ­(truncate)"
-#: ../gio/ghttpproxy.c:136
+#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
+#: ../glib/gconvert.c:1777
+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:269
msgid "HTTP proxy server closed connection unexpectedly."
msgstr "HTTP 代ç†ä¼ºæœå™¨æœªé æœŸé—œé–‰é€£ç·šã€‚"
@@ -1453,7 +1511,7 @@ 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/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:218
msgid "Not enough space for socket address"
msgstr "socket ä½å€æ²’有足夠的空間"
@@ -1476,120 +1534,126 @@ msgstr "輸入串æµå°šæœªå¯¦ä½œè®€å–"
msgid "Stream has outstanding operation"
msgstr "串æµæœ‰ç•°å¸¸æ“作"
-#: ../gio/gio-tool.c:142
+#: ../gio/gio-tool.c:160
msgid "Copy with file"
msgstr "複製檔案"
-#: ../gio/gio-tool.c:146
+#: ../gio/gio-tool.c:164
msgid "Keep with file when moved"
msgstr "移動時ä¿æŒæª”案"
-#: ../gio/gio-tool.c:187
+#: ../gio/gio-tool.c:205
msgid "“version†takes no arguments"
msgstr "「versionã€ä¸éœ€è¦å¼•æ•¸"
-#: ../gio/gio-tool.c:189 ../gio/gio-tool.c:205 ../glib/goption.c:857
+#: ../gio/gio-tool.c:207 ../gio/gio-tool.c:223 ../glib/goption.c:857
msgid "Usage:"
msgstr "用法:"
-#: ../gio/gio-tool.c:192
+#: ../gio/gio-tool.c:210
msgid "Print version information and exit."
msgstr "輸出版本資訊並離開。"
-#: ../gio/gio-tool.c:206
+#: ../gio/gio-tool.c:224
msgid "[ARGS...]"
msgstr "[ARGS...]"
-#: ../gio/gio-tool.c:208
+#: ../gio/gio-tool.c:226
msgid "Commands:"
msgstr "指令:"
-#: ../gio/gio-tool.c:211
+#: ../gio/gio-tool.c:229
msgid "Concatenate files to standard output"
msgstr "將檔案連接並顯示至標準輸出"
-#: ../gio/gio-tool.c:212
+#: ../gio/gio-tool.c:230
msgid "Copy one or more files"
msgstr "複製一或多個檔案"
-#: ../gio/gio-tool.c:213
+#: ../gio/gio-tool.c:231
msgid "Show information about locations"
msgstr "顯示ä½ç½®çš„相關資訊"
-#: ../gio/gio-tool.c:214
+#: ../gio/gio-tool.c:232
msgid "List the contents of locations"
msgstr "列出ä½ç½®çš„內容"
-#: ../gio/gio-tool.c:215
+#: ../gio/gio-tool.c:233
msgid "Get or set the handler for a mimetype"
msgstr "å–得或設定 MIME 類型的處ç†ç¨‹å¼"
-#: ../gio/gio-tool.c:216
+#: ../gio/gio-tool.c:234
msgid "Create directories"
msgstr "建立目錄"
-#: ../gio/gio-tool.c:217
+#: ../gio/gio-tool.c:235
msgid "Monitor files and directories for changes"
msgstr "監控檔案與目錄的變更"
-#: ../gio/gio-tool.c:218
+#: ../gio/gio-tool.c:236
msgid "Mount or unmount the locations"
msgstr "掛載或å¸è¼‰ä½ç½®"
-#: ../gio/gio-tool.c:219
+#: ../gio/gio-tool.c:237
msgid "Move one or more files"
msgstr "移動一個或多個檔案"
-#: ../gio/gio-tool.c:220
+#: ../gio/gio-tool.c:238
msgid "Open files with the default application"
msgstr "以é è¨­çš„應用程å¼é–‹å•Ÿæª”案"
-#: ../gio/gio-tool.c:221
+#: ../gio/gio-tool.c:239
msgid "Rename a file"
msgstr "é‡æ–°å‘½å檔案"
-#: ../gio/gio-tool.c:222
+#: ../gio/gio-tool.c:240
msgid "Delete one or more files"
msgstr "刪除一個或多個檔案"
-#: ../gio/gio-tool.c:223
+#: ../gio/gio-tool.c:241
msgid "Read from standard input and save"
msgstr "從標準輸入讀å–並儲存"
-#: ../gio/gio-tool.c:224
+#: ../gio/gio-tool.c:242
msgid "Set a file attribute"
msgstr "設定檔案屬性"
-#: ../gio/gio-tool.c:225
+#: ../gio/gio-tool.c:243
msgid "Move files or directories to the trash"
msgstr "將檔案或目錄移至回收筒"
-#: ../gio/gio-tool.c:226
+#: ../gio/gio-tool.c:244
msgid "Lists the contents of locations in a tree"
msgstr "以樹狀圖列出ä½ç½®çš„內容"
-#: ../gio/gio-tool.c:228
+#: ../gio/gio-tool.c:246
#, c-format
msgid "Use %s to get detailed help.\n"
msgstr "使用 %s 以å–得詳細的求助。\n"
+#: ../gio/gio-tool-cat.c:87
+#, fuzzy
+#| msgid "Error writing to file: %s"
+msgid "Error writing to stdout"
+msgstr "寫入至檔案時發生錯誤:%s"
+
#. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:124 ../gio/gio-tool-info.c:278
+#: ../gio/gio-tool-cat.c:133 ../gio/gio-tool-info.c:282
#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
-#: ../gio/gio-tool-monitor.c:202 ../gio/gio-tool-mount.c:1132
-#: ../gio/gio-tool-open.c:45 ../gio/gio-tool-remove.c:48
+#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
+#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
msgid "LOCATION"
msgstr "LOCATION"
-#: ../gio/gio-tool-cat.c:129
+#: ../gio/gio-tool-cat.c:138
msgid "Concatenate files and print to standard output."
msgstr "將檔案連接並顯示至標準輸出。"
-#: ../gio/gio-tool-cat.c:131
+#: ../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"
@@ -1599,9 +1663,11 @@ msgstr ""
"ä½ç½®ä¾†å–代本地端檔案:例如您å¯ä»¥ä½¿ç”¨é¡žä¼¼\n"
" smb://server/resource/file.txt åšç‚ºä½ç½®ã€‚"
-#: ../gio/gio-tool-cat.c:151
-msgid "No files given"
-msgstr "尚未指定檔案"
+#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
+#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
+#: ../gio/gio-tool-open.c:139 ../gio/gio-tool-remove.c:72
+msgid "No locations given"
+msgstr "未æä¾›ä½ç½®"
#: ../gio/gio-tool-copy.c:42 ../gio/gio-tool-move.c:38
msgid "No target directory"
@@ -1640,7 +1706,7 @@ msgstr "SOURCE"
#. Translators: commandline placeholder
#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
-#: ../gio/gio-tool-save.c:165
+#: ../gio/gio-tool-save.c:160
msgid "DESTINATION"
msgstr "DESTINATION"
@@ -1658,12 +1724,12 @@ msgstr ""
"ä½ç½®ä¾†å–代本地端檔案:例如您å¯ä»¥ä½¿ç”¨é¡žä¼¼\n"
" smb://server/resource/file.txt åšç‚ºä½ç½®ã€‚"
-#: ../gio/gio-tool-copy.c:143
+#: ../gio/gio-tool-copy.c:147
#, c-format
msgid "Destination %s is not a directory"
msgstr "目的端 %s ä¸æ˜¯ä¸€å€‹ç›®éŒ„"
-#: ../gio/gio-tool-copy.c:187 ../gio/gio-tool-move.c:181
+#: ../gio/gio-tool-copy.c:192 ../gio/gio-tool-move.c:185
#, c-format
msgid "%s: overwrite “%s� "
msgstr "%s:覆寫「%sã€ï¼Ÿ"
@@ -1730,26 +1796,21 @@ msgstr "éš±è—\n"
msgid "uri: %s\n"
msgstr "uri: %s\n"
-#: ../gio/gio-tool-info.c:221
-#, c-format
-msgid "Error getting writable attributes: %s\n"
-msgstr "å–å¾—å¯å¯«å…¥å±¬æ€§æ™‚發生錯誤:%s\n"
-
-#: ../gio/gio-tool-info.c:226
+#: ../gio/gio-tool-info.c:228
#, c-format
msgid "Settable attributes:\n"
msgstr "å¯è¨­å®šå±¬æ€§ï¼š\n"
-#: ../gio/gio-tool-info.c:249
+#: ../gio/gio-tool-info.c:252
#, c-format
msgid "Writable attribute namespaces:\n"
msgstr "å¯å¯«å…¥å±¬æ€§å‘½å空間:\n"
-#: ../gio/gio-tool-info.c:283
+#: ../gio/gio-tool-info.c:287
msgid "Show information about locations."
msgstr "顯示ä½ç½®çš„相關資訊。"
-#: ../gio/gio-tool-info.c:285
+#: ../gio/gio-tool-info.c:289
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"
@@ -1763,10 +1824,6 @@ msgstr ""
"屬性å¯ä»¥ä½¿ç”¨å®ƒå€‘çš„ GIO å稱來指定,如 standard::icon\n"
"或åªä½¿ç”¨å‘½åç©ºé–“ï¼Œåƒ unix,或「*ã€æ¯”å°æ‰€æœ‰çš„屬性"
-#: ../gio/gio-tool-info.c:307 ../gio/gio-tool-mkdir.c:74
-msgid "No locations given"
-msgstr "未æä¾›ä½ç½®"
-
#: ../gio/gio-tool-list.c:36 ../gio/gio-tool-tree.c:32
msgid "Show hidden files"
msgstr "顯示隱è—檔案"
@@ -1818,46 +1875,47 @@ msgstr ""
"如果有指定處ç†ç¨‹å¼ï¼Œæœƒå°‡å®ƒè¨­å®šç‚ºæ­¤ MIME é¡žåž‹çš„é è¨­\n"
"處ç†ç¨‹å¼ã€‚"
-#: ../gio/gio-tool-mime.c:98
+#: ../gio/gio-tool-mime.c:100
msgid "Must specify a single mimetype, and maybe a handler"
msgstr "必須指定一個 MIME 類型,å¯èƒ½æ˜¯ä¸€ç¨®è™•ç†ç¨‹å¼"
-#: ../gio/gio-tool-mime.c:113
+#: ../gio/gio-tool-mime.c:116
#, c-format
msgid "No default applications for “%sâ€\n"
msgstr "「%sã€æ²’有é è¨­çš„應用程å¼\n"
-#: ../gio/gio-tool-mime.c:119
+#: ../gio/gio-tool-mime.c:122
#, c-format
msgid "Default application for “%sâ€: %s\n"
msgstr "「%sã€çš„é è¨­æ‡‰ç”¨ç¨‹å¼ï¼š%s\n"
-#: ../gio/gio-tool-mime.c:124
+#: ../gio/gio-tool-mime.c:127
#, c-format
msgid "Registered applications:\n"
msgstr "已註冊的應用程å¼ï¼š\n"
-#: ../gio/gio-tool-mime.c:126
+#: ../gio/gio-tool-mime.c:129
#, c-format
msgid "No registered applications\n"
msgstr "沒有註冊的應用程å¼\n"
-#: ../gio/gio-tool-mime.c:137
+#: ../gio/gio-tool-mime.c:140
#, c-format
msgid "Recommended applications:\n"
msgstr "建議的應用程å¼ï¼š\n"
-#: ../gio/gio-tool-mime.c:139
+#: ../gio/gio-tool-mime.c:142
#, c-format
msgid "No recommended applications\n"
msgstr "沒有建議的應用程å¼\n"
-#: ../gio/gio-tool-mime.c:159
-#, c-format
-msgid "Failed to load info for handler “%sâ€\n"
+#: ../gio/gio-tool-mime.c:162
+#, fuzzy, c-format
+#| msgid "Failed to load info for handler “%sâ€\n"
+msgid "Failed to load info for handler “%sâ€"
msgstr "無法載入處ç†ç¨‹å¼ã€Œ%sã€çš„資訊\n"
-#: ../gio/gio-tool-mime.c:165
+#: ../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"
@@ -1904,7 +1962,7 @@ msgstr "回報移動與é‡æ–°å‘½å為簡單的刪除/建立事件"
msgid "Watch for mount events"
msgstr "監看掛載事件"
-#: ../gio/gio-tool-monitor.c:207
+#: ../gio/gio-tool-monitor.c:208
msgid "Monitor files or directories for changes."
msgstr "監控檔案或目錄的變更。"
@@ -1958,46 +2016,23 @@ msgid "Show extra information"
msgstr "顯示é¡å¤–的資訊"
#: ../gio/gio-tool-mount.c:246 ../gio/gio-tool-mount.c:276
-#, c-format
-msgid "Error mounting location: Anonymous access denied\n"
+#, fuzzy
+#| msgid "Error mounting location: Anonymous access denied\n"
+msgid "Anonymous access denied"
msgstr "掛載ä½ç½®æ™‚發生錯誤:匿åå­˜å–已被拒絕\n"
-#: ../gio/gio-tool-mount.c:248 ../gio/gio-tool-mount.c:278
-#, c-format
-msgid "Error mounting location: %s\n"
-msgstr "掛載ä½ç½®æ™‚發生錯誤: %s\n"
-
-#: ../gio/gio-tool-mount.c:341
-#, c-format
-msgid "Error unmounting mount: %s\n"
-msgstr "å¸è¼‰æ™‚發生錯誤: %s\n"
-
-#: ../gio/gio-tool-mount.c:366 ../gio/gio-tool-mount.c:419
-#, c-format
-msgid "Error finding enclosing mount: %s\n"
-msgstr "尋找å°è£æŽ›è¼‰ç™¼ç”ŸéŒ¯èª¤ï¼š%s\n"
-
-#: ../gio/gio-tool-mount.c:394
-#, c-format
-msgid "Error ejecting mount: %s\n"
-msgstr "退出掛載時發生錯誤:%s\n"
-
-#: ../gio/gio-tool-mount.c:875
-#, c-format
-msgid "Error mounting %s: %s\n"
-msgstr "掛載 %s 時發生錯誤:%s\n"
-
-#: ../gio/gio-tool-mount.c:891
+#: ../gio/gio-tool-mount.c:897
#, c-format
msgid "Mounted %s at %s\n"
msgstr "%s 已掛載於 %s\n"
-#: ../gio/gio-tool-mount.c:941
-#, c-format
-msgid "No volume for device file %s\n"
+#: ../gio/gio-tool-mount.c:950
+#, fuzzy
+#| msgid "No volume for device file %s\n"
+msgid "No volume for device file"
msgstr "è£ç½®æª”案 %s 中沒有儲存å€\n"
-#: ../gio/gio-tool-mount.c:1136
+#: ../gio/gio-tool-mount.c:1145
msgid "Mount or unmount the locations."
msgstr "掛載或å¸è¼‰ä½ç½®ã€‚"
@@ -2019,12 +2054,12 @@ msgstr ""
"ä½ç½®ä¾†å–代本地端檔案:例如您å¯ä»¥ä½¿ç”¨é¡žä¼¼\n"
" smb://server/resource/file.txt åšç‚ºä½ç½®ã€‚"
-#: ../gio/gio-tool-move.c:139
+#: ../gio/gio-tool-move.c:142
#, c-format
msgid "Target %s is not a directory"
msgstr "目標 %s ä¸æ˜¯ç›®éŒ„"
-#: ../gio/gio-tool-open.c:50
+#: ../gio/gio-tool-open.c:118
msgid ""
"Open files with the default application that\n"
"is registered to handle files of this type."
@@ -2032,10 +2067,6 @@ msgstr ""
"使用註冊為處ç†è©²æª”案類型的\n"
"é è¨­æ‡‰ç”¨ç¨‹å¼ä¾†é–‹å•Ÿæª”案。"
-#: ../gio/gio-tool-open.c:69
-msgid "No files to open"
-msgstr "沒有檔案å¯é–‹å•Ÿ"
-
#: ../gio/gio-tool-remove.c:31 ../gio/gio-tool-trash.c:31
msgid "Ignore nonexistent files, never prompt"
msgstr "忽略ä¸å­˜åœ¨çš„檔案,永ä¸æ示"
@@ -2044,10 +2075,6 @@ msgstr "忽略ä¸å­˜åœ¨çš„檔案,永ä¸æ示"
msgid "Delete the given files."
msgstr "刪除指定的檔案。"
-#: ../gio/gio-tool-remove.c:70
-msgid "No files to delete"
-msgstr "沒有è¦åˆªé™¤çš„檔案"
-
#: ../gio/gio-tool-rename.c:45
msgid "NAME"
msgstr "NAME"
@@ -2056,16 +2083,16 @@ msgstr "NAME"
msgid "Rename a file."
msgstr "é‡æ–°å‘½å檔案。"
-#: ../gio/gio-tool-rename.c:68
+#: ../gio/gio-tool-rename.c:70
msgid "Missing argument"
msgstr "缺少引數"
-#: ../gio/gio-tool-rename.c:73 ../gio/gio-tool-save.c:192
-#: ../gio/gio-tool-set.c:134
+#: ../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:91
+#: ../gio/gio-tool-rename.c:95
#, c-format
msgid "Rename successful. New uri: %s\n"
msgstr "é‡æ–°å‘½åæˆåŠŸã€‚æ–°çš„ URI:%s\n"
@@ -2100,17 +2127,23 @@ msgstr "å³å°‡è¤‡è“‹çš„檔案 etag"
msgid "ETAG"
msgstr "ETAG"
+#: ../gio/gio-tool-save.c:113
+#, fuzzy
+#| msgid "Error reading from handle: %s"
+msgid "Error reading from standard input"
+msgstr "從處ç†å™¨è®€å–時發生錯誤:%s"
+
#. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:145
+#: ../gio/gio-tool-save.c:139
#, c-format
msgid "Etag not available\n"
msgstr "Etag 無法使用\n"
-#: ../gio/gio-tool-save.c:168
+#: ../gio/gio-tool-save.c:163
msgid "Read from standard input and save to DEST."
msgstr "從標準輸入讀å–並儲存到 DEST。"
-#: ../gio/gio-tool-save.c:186
+#: ../gio/gio-tool-save.c:183
msgid "No destination given"
msgstr "沒有指定目的端"
@@ -2134,28 +2167,24 @@ msgstr "VALUE"
msgid "Set a file attribute of LOCATION."
msgstr "設定 LOCATION 的檔案屬性。"
-#: ../gio/gio-tool-set.c:111
+#: ../gio/gio-tool-set.c:113
msgid "Location not specified"
msgstr "尚未指定ä½ç½®"
-#: ../gio/gio-tool-set.c:119
+#: ../gio/gio-tool-set.c:120
msgid "Attribute not specified"
msgstr "尚未指定屬性"
-#: ../gio/gio-tool-set.c:128
+#: ../gio/gio-tool-set.c:130
msgid "Value not specified"
msgstr "尚未指定數值"
-#: ../gio/gio-tool-set.c:176
-#, c-format
-msgid "Invalid attribute type %s\n"
+#: ../gio/gio-tool-set.c:180
+#, fuzzy, c-format
+#| msgid "Invalid attribute type %s\n"
+msgid "Invalid attribute type “%sâ€"
msgstr "無效的屬性類型 %s\n"
-#: ../gio/gio-tool-set.c:189
-#, c-format
-msgid "Error setting attribute: %s\n"
-msgstr "設定屬性時發生錯誤:%s\n"
-
#: ../gio/gio-tool-trash.c:32
msgid "Empty the trash"
msgstr "清ç†å›žæ”¶ç­’"
@@ -2172,7 +2201,7 @@ msgstr "追蹤符號連çµã€æŽ›è¼‰å’Œæ·å¾‘"
msgid "List contents of directories in a tree-like format."
msgstr "以樹狀格å¼åˆ—出目錄的內容。"
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491
+#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1501
#, c-format
msgid "Element <%s> not allowed inside <%s>"
msgstr "元素 <%s> ä¸å¯å‡ºç¾åœ¨ <%s> å…§"
@@ -2217,12 +2246,12 @@ msgstr "讀å–檔案 %s 時發生錯誤:%s"
msgid "Error compressing file %s"
msgstr "壓縮檔案 %s 時發生錯誤"
-#: ../gio/glib-compile-resources.c:469 ../gio/glib-compile-schemas.c:1603
+#: ../gio/glib-compile-resources.c:469
#, c-format
msgid "text may not appear inside <%s>"
msgstr "在 <%s> å…§ä¸èƒ½å‡ºç¾æ–‡å­—"
-#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2037
+#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2067
msgid "Show program version and exit"
msgstr "顯示程å¼çš„版本並離開"
@@ -2236,8 +2265,8 @@ msgid ""
"directory)"
msgstr "用來讀å–檔案的目錄 (é è¨­ç‚ºç›®å‰çš„目錄)"
-#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2038
-#: ../gio/glib-compile-schemas.c:2067
+#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2068
+#: ../gio/glib-compile-schemas.c:2096
msgid "DIRECTORY"
msgstr "目錄"
@@ -2293,53 +2322,226 @@ msgstr ""
msgid "You should give exactly one file name\n"
msgstr "您應該明確指定一個檔案å稱\n"
-#: ../gio/glib-compile-schemas.c:784
-msgid "empty names are not permitted"
-msgstr "ä¸å…許空åå稱"
+#: ../gio/glib-compile-schemas.c:95
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:106
+#, fuzzy, c-format
+#| msgid "Invalid symlink value given"
+msgid "Invalid numeric value"
+msgstr "æ供了無效的符號連çµå€¼"
+
+#: ../gio/glib-compile-schemas.c:114
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<value nick='%s'/> already specified"
+msgstr "<%s id='%s'> 已經指定了"
+
+#: ../gio/glib-compile-schemas.c:122
+#, fuzzy, c-format
+#| msgid "<key name='%s'> already specified"
+msgid "value='%s' already specified"
+msgstr "<key name='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:794
+#: ../gio/glib-compile-schemas.c:136
#, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr "無效的å稱「%sã€ï¼šå稱必須以å°å¯«å­—æ¯é–‹é ­"
+msgid "flags values must have at most 1 bit set"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:161
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:315
+#, fuzzy, c-format
+#| msgid "No connection endpoint specified"
+msgid "<%s> is not contained in the specified range"
+msgstr "沒有指定連線端點"
+
+#: ../gio/glib-compile-schemas.c:327
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:333
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
+msgstr ""
-#: ../gio/glib-compile-schemas.c:806
+#: ../gio/glib-compile-schemas.c:339
#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:373
+#, fuzzy
+#| msgid "<key name='%s'> already specified"
+msgid "<range/> already specified for this key"
+msgstr "<key name='%s'> 已經指定了"
+
+#: ../gio/glib-compile-schemas.c:391
+#, c-format
+msgid "<range> not allowed for keys of type “%sâ€"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:408
+#, c-format
+msgid "<range> specified minimum is greater than maximum"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:433
+#, c-format
+msgid "unsupported l10n category: %s"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:441
+msgid "l10n requested, but no gettext domain given"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:453
+msgid "translation context given for value without l10n enabled"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:475
+#, fuzzy, c-format
+#| msgid "Failed to create file “%sâ€: %s"
+msgid "Failed to parse <default> value of type “%sâ€: "
+msgstr "建立檔案「%sã€å¤±æ•—:%s"
+
+#: ../gio/glib-compile-schemas.c:492
msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and hyphen ('-') are permitted."
+"<choices> cannot be specified for keys tagged as having an enumerated type"
msgstr ""
-"無效的å稱「%sã€ï¼šç„¡æ•ˆçš„字元「%cã€ï¼›åªå…許å°å¯«å­—æ¯ã€æ•¸å­—和破折號 ('-')。"
-#: ../gio/glib-compile-schemas.c:815
+#: ../gio/glib-compile-schemas.c:501
+#, fuzzy
+#| msgid "<child name='%s'> already specified"
+msgid "<choices> already specified for this key"
+msgstr "<child name='%s'> 已經指定了"
+
+#: ../gio/glib-compile-schemas.c:513
#, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
-msgstr "無效的å稱「%sã€ï¼šä¸å…許兩個破折號 ('--')。"
+msgid "<choices> not allowed for keys of type “%sâ€"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:529
+#, fuzzy, c-format
+#| msgid "<child name='%s'> already specified"
+msgid "<choice value='%s'/> already given"
+msgstr "<child name='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:824
+#: ../gio/glib-compile-schemas.c:544
#, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
-msgstr "無效的å稱「%sã€ï¼šæœ€å¾Œä¸€å€‹å­—å…ƒä¸èƒ½æ˜¯ç ´æŠ˜è™Ÿ ('-')。"
+msgid "<choices> must contain at least one <choice>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:558
+#, fuzzy
+#| msgid "<child name='%s'> already specified"
+msgid "<aliases> already specified for this key"
+msgstr "<child name='%s'> 已經指定了"
+
+#: ../gio/glib-compile-schemas.c:562
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:581
+#, c-format
+msgid ""
+"<alias value='%s'/> given when “%s†is already a member of the enumerated "
+"type"
+msgstr ""
-#: ../gio/glib-compile-schemas.c:832
+#: ../gio/glib-compile-schemas.c:587
#, c-format
-msgid "invalid name '%s': maximum length is 1024"
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:595
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<alias value='%s'/> already specified"
+msgstr "<%s id='%s'> 已經指定了"
+
+#: ../gio/glib-compile-schemas.c:605
+#, fuzzy, c-format
+#| msgid "The pathname “%s†is not an absolute path"
+msgid "alias target “%s†is not in enumerated type"
+msgstr "路徑å稱「%sã€ä¸æ˜¯çµ•å°è·¯å¾‘"
+
+#: ../gio/glib-compile-schemas.c:606
+#, c-format
+msgid "alias target “%s†is not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:621
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:786
+#, fuzzy
+#| msgid "empty names are not permitted"
+msgid "Empty names are not permitted"
+msgstr "ä¸å…許空åå稱"
+
+#: ../gio/glib-compile-schemas.c:796
+#, fuzzy, c-format
+#| msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "Invalid name “%sâ€: names must begin with a lowercase letter"
+msgstr "無效的å稱「%sã€ï¼šå稱必須以å°å¯«å­—æ¯é–‹é ­"
+
+#: ../gio/glib-compile-schemas.c:808
+#, fuzzy, c-format
+#| msgid ""
+#| "invalid name '%s': invalid character '%c'; only lowercase letters, "
+#| "numbers and hyphen ('-') are permitted."
+msgid ""
+"Invalid name “%sâ€: invalid character “%câ€; only lowercase letters, numbers "
+"and hyphen (“-â€) are permitted"
+msgstr ""
+"無效的å稱「%sã€ï¼šç„¡æ•ˆçš„字元「%cã€ï¼›åªå…許å°å¯«å­—æ¯ã€æ•¸å­—和破折號 ('-')。"
+
+#: ../gio/glib-compile-schemas.c:817
+#, fuzzy, c-format
+#| msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+msgid "Invalid name “%sâ€: two successive hyphens (“--â€) are not permitted"
+msgstr "無效的å稱「%sã€ï¼šä¸å…許兩個破折號 ('--')。"
+
+#: ../gio/glib-compile-schemas.c:826
+#, fuzzy, c-format
+#| msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+msgid "Invalid name “%sâ€: the last character may not be a hyphen (“-â€)"
+msgstr "無效的å稱「%sã€ï¼šæœ€å¾Œä¸€å€‹å­—å…ƒä¸èƒ½æ˜¯ç ´æŠ˜è™Ÿ ('-')。"
+
+#: ../gio/glib-compile-schemas.c:834
+#, fuzzy, c-format
+#| msgid "invalid name '%s': maximum length is 1024"
+msgid "Invalid name “%sâ€: maximum length is 1024"
msgstr "無效的å稱「%sã€ï¼šæœ€å¤§é•·åº¦ç‚º 1024"
-#: ../gio/glib-compile-schemas.c:901
+#: ../gio/glib-compile-schemas.c:904
#, c-format
msgid "<child name='%s'> already specified"
msgstr "<child name='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:927
-msgid "cannot add keys to a 'list-of' schema"
+#: ../gio/glib-compile-schemas.c:930
+#, fuzzy
+#| msgid "cannot add keys to a 'list-of' schema"
+msgid "Cannot add keys to a “list-of†schema"
msgstr "ä¸èƒ½å°‡è¨­å®šéµåŠ å…¥ 'list-of' schema"
-#: ../gio/glib-compile-schemas.c:938
+#: ../gio/glib-compile-schemas.c:941
#, c-format
msgid "<key name='%s'> already specified"
msgstr "<key name='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:956
+#: ../gio/glib-compile-schemas.c:959
#, c-format
msgid ""
"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -2348,149 +2550,187 @@ msgstr ""
"<key name='%s'> é®è”½ <key name='%s'> æ–¼ <schema id='%s'>;使用 <override> 來"
"修改數值"
-#: ../gio/glib-compile-schemas.c:967
-#, c-format
+#: ../gio/glib-compile-schemas.c:970
+#, fuzzy, c-format
+#| msgid ""
+#| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
+#| "attribute to <key>"
msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"Exactly one of “typeâ€, “enum†or “flags†must be specified as an attribute "
"to <key>"
msgstr "必須明確指定「typeã€ã€ã€Œenumã€æˆ–「flagsã€ä¹‹ä¸€åšç‚º <key> 的屬性"
-#: ../gio/glib-compile-schemas.c:986
+#: ../gio/glib-compile-schemas.c:989
#, c-format
msgid "<%s id='%s'> not (yet) defined."
msgstr "<%s id='%s'> 尚未定義。"
-#: ../gio/glib-compile-schemas.c:1001
-#, c-format
-msgid "invalid GVariant type string '%s'"
+#: ../gio/glib-compile-schemas.c:1004
+#, fuzzy, c-format
+#| msgid "invalid GVariant type string '%s'"
+msgid "Invalid GVariant type string “%sâ€"
msgstr "無效的 GVariant 類型字串「%sã€"
-#: ../gio/glib-compile-schemas.c:1031
-msgid "<override> given but schema isn't extending anything"
+#: ../gio/glib-compile-schemas.c:1034
+#, fuzzy
+#| msgid "<override> given but schema isn't extending anything"
+msgid "<override> given but schema isn’t extending anything"
msgstr "指定了 <override> 但 schema 並未延伸任何æ±è¥¿"
-#: ../gio/glib-compile-schemas.c:1044
-#, c-format
-msgid "no <key name='%s'> to override"
+#: ../gio/glib-compile-schemas.c:1047
+#, fuzzy, c-format
+#| msgid "no <key name='%s'> to override"
+msgid "No <key name='%s'> to override"
msgstr "沒有 <key name='%s'> è¦è¦†è“‹"
-#: ../gio/glib-compile-schemas.c:1052
+#: ../gio/glib-compile-schemas.c:1055
#, c-format
msgid "<override name='%s'> already specified"
msgstr "<override name='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:1125
+#: ../gio/glib-compile-schemas.c:1128
#, c-format
msgid "<schema id='%s'> already specified"
msgstr "<schema id='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:1137
-#, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
+#: ../gio/glib-compile-schemas.c:1140
+#, fuzzy, c-format
+#| msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "<schema id='%s'> extends not yet existing schema “%sâ€"
msgstr "<schema id='%s'> 延伸了尚ä¸å­˜åœ¨çš„ schema「%sã€"
-#: ../gio/glib-compile-schemas.c:1153
-#, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+#: ../gio/glib-compile-schemas.c:1156
+#, fuzzy, c-format
+#| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgid "<schema id='%s'> is list of not yet existing schema “%sâ€"
msgstr "<schema id='%s'> 是尚ä¸å­˜åœ¨çš„ schema「%sã€çš„清單"
-#: ../gio/glib-compile-schemas.c:1161
-#, c-format
-msgid "Can not be a list of a schema with a path"
+#: ../gio/glib-compile-schemas.c:1164
+#, fuzzy, c-format
+#| msgid "Can not be a list of a schema with a path"
+msgid "Cannot be a list of a schema with a path"
msgstr "ä¸èƒ½æˆç‚ºæœ‰è·¯å¾‘ schema 的清單"
-#: ../gio/glib-compile-schemas.c:1171
-#, c-format
-msgid "Can not extend a schema with a path"
+#: ../gio/glib-compile-schemas.c:1174
+#, fuzzy, c-format
+#| msgid "Can not extend a schema with a path"
+msgid "Cannot extend a schema with a path"
msgstr "ä¸èƒ½å»¶ä¼¸æœ‰è·¯å¾‘çš„ schema"
-#: ../gio/glib-compile-schemas.c:1181
+#: ../gio/glib-compile-schemas.c:1184
#, c-format
msgid ""
"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
msgstr "<schema id='%s'> 是清單,å»å»¶ä¼¸äº†ä¸æ˜¯æ¸…單的 <schema id='%s'>"
-#: ../gio/glib-compile-schemas.c:1191
-#, c-format
+#: ../gio/glib-compile-schemas.c:1194
+#, fuzzy, c-format
+#| msgid ""
+#| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
+#| "'%s' does not extend '%s'"
msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
+"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s†"
+"does not extend “%sâ€"
msgstr ""
"<schema id='%s' list-of='%s'> 延伸了 <schema id='%s' list-of='%s'> 但是 '%s' "
"並未延伸 '%s'"
-#: ../gio/glib-compile-schemas.c:1208
-#, c-format
-msgid "a path, if given, must begin and end with a slash"
+#: ../gio/glib-compile-schemas.c:1211
+#, fuzzy, c-format
+#| msgid "a path, if given, must begin and end with a slash"
+msgid "A path, if given, must begin and end with a slash"
msgstr "如果指定了路徑,開頭與çµå°¾éƒ½è¦åŠ ä¸Šæ–œç·š"
-#: ../gio/glib-compile-schemas.c:1215
-#, c-format
-msgid "the path of a list must end with ':/'"
+#: ../gio/glib-compile-schemas.c:1218
+#, fuzzy, c-format
+#| msgid "the path of a list must end with ':/'"
+msgid "The path of a list must end with “:/â€"
msgstr "清單的路徑ä¸èƒ½ä»¥â€˜:/’為çµå°¾"
-#: ../gio/glib-compile-schemas.c:1247
+#: ../gio/glib-compile-schemas.c:1227
+#, c-format
+msgid ""
+"Warning: Schema “%s†has path “%sâ€. Paths starting with “/apps/â€, “/"
+"desktop/†or “/system/†are deprecated."
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1257
#, c-format
msgid "<%s id='%s'> already specified"
msgstr "<%s id='%s'> 已經指定了"
-#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413
+#: ../gio/glib-compile-schemas.c:1407 ../gio/glib-compile-schemas.c:1423
#, c-format
msgid "Only one <%s> element allowed inside <%s>"
msgstr "åªæœ‰ä¸€å€‹ <%s> 元素å¯åœ¨å…¶å…§ <%s>"
-#: ../gio/glib-compile-schemas.c:1495
+#: ../gio/glib-compile-schemas.c:1505
#, c-format
msgid "Element <%s> not allowed at the top level"
msgstr "元素 <%s> ä¸å…許在頂端層級"
+#: ../gio/glib-compile-schemas.c:1523
+msgid "Element <default> is required in <key>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1613
+#, fuzzy, c-format
+#| msgid "text may not appear inside <%s>"
+msgid "Text may not appear inside <%s>"
+msgstr "在 <%s> å…§ä¸èƒ½å‡ºç¾æ–‡å­—"
+
+#: ../gio/glib-compile-schemas.c:1681
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr ""
+
#. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865
-#: ../gio/glib-compile-schemas.c:1941
+#: ../gio/glib-compile-schemas.c:1820 ../gio/glib-compile-schemas.c:1894
+#: ../gio/glib-compile-schemas.c:1970
#, c-format
msgid "--strict was specified; exiting.\n"
msgstr "並且指定了 --strict;正在çµæŸã€‚\n"
-#: ../gio/glib-compile-schemas.c:1802
+#: ../gio/glib-compile-schemas.c:1830
#, c-format
msgid "This entire file has been ignored.\n"
msgstr "這整個檔案都被忽略了。\n"
-#: ../gio/glib-compile-schemas.c:1861
+#: ../gio/glib-compile-schemas.c:1890
#, c-format
msgid "Ignoring this file.\n"
msgstr "忽略這個檔案。\n"
-#: ../gio/glib-compile-schemas.c:1901
+#: ../gio/glib-compile-schemas.c:1930
#, c-format
msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
msgstr "在覆蓋檔案「%3$sã€çš„ schema「%2$sã€ä¸­æ²’有指定這個設定éµã€Œ%1$sã€"
-#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965
-#: ../gio/glib-compile-schemas.c:1993
+#: ../gio/glib-compile-schemas.c:1936 ../gio/glib-compile-schemas.c:1994
+#: ../gio/glib-compile-schemas.c:2022
#, c-format
msgid "; ignoring override for this key.\n"
msgstr ";忽略這個設定éµçš„覆蓋。\n"
-#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969
-#: ../gio/glib-compile-schemas.c:1997
+#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1998
+#: ../gio/glib-compile-schemas.c:2026
#, c-format
msgid " and --strict was specified; exiting.\n"
msgstr "並且指定了 --strict;正在çµæŸã€‚\n"
-#: ../gio/glib-compile-schemas.c:1927
+#: ../gio/glib-compile-schemas.c:1956
#, c-format
msgid ""
"error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
msgstr ""
"在覆蓋檔案「%3$sã€æŒ‡å®šçš„ schema「%2$sã€åˆ†æžè¨­å®šéµã€Œ%1$sã€æ™‚發生錯誤:%4$s。"
-#: ../gio/glib-compile-schemas.c:1937
+#: ../gio/glib-compile-schemas.c:1966
#, c-format
msgid "Ignoring override for this key.\n"
msgstr "忽略這個設定éµçš„覆蓋。\n"
-#: ../gio/glib-compile-schemas.c:1955
+#: ../gio/glib-compile-schemas.c:1984
#, c-format
msgid ""
"override for key '%s' in schema '%s' in override file '%s' is outside the "
@@ -2499,7 +2739,7 @@ msgstr ""
"在覆蓋檔案「%3$sã€ä¸­è¦†è“‹ schema「%2$sã€çš„設定éµã€Œ%1$sã€è¶…出了 schema 指定的範"
"åœ"
-#: ../gio/glib-compile-schemas.c:1983
+#: ../gio/glib-compile-schemas.c:2012
#, c-format
msgid ""
"override for key '%s' in schema '%s' in override file '%s' is not in the "
@@ -2507,23 +2747,23 @@ msgid ""
msgstr ""
"在覆蓋檔案「%3$sã€ä¸­è¦†è“‹ schema「%2$sã€çš„設定éµã€Œ%1$sã€ä¸åœ¨æœ‰æ•ˆçš„é¸æ“‡æ¸…單中"
-#: ../gio/glib-compile-schemas.c:2038
+#: ../gio/glib-compile-schemas.c:2068
msgid "where to store the gschemas.compiled file"
msgstr "è¦å°‡ gschemas.compiled 檔案儲存到哪裡"
-#: ../gio/glib-compile-schemas.c:2039
+#: ../gio/glib-compile-schemas.c:2069
msgid "Abort on any errors in schemas"
msgstr "在 schema 中有任何錯誤å³ä¸­æ­¢"
-#: ../gio/glib-compile-schemas.c:2040
+#: ../gio/glib-compile-schemas.c:2070
msgid "Do not write the gschema.compiled file"
msgstr "ä¸è¦å¯«å…¥ gschemas.compiled 檔案"
-#: ../gio/glib-compile-schemas.c:2041
+#: ../gio/glib-compile-schemas.c:2071
msgid "Do not enforce key name restrictions"
msgstr "ä¸è¦å¼·åˆ¶è¨­å®šéµå稱é™åˆ¶"
-#: ../gio/glib-compile-schemas.c:2070
+#: ../gio/glib-compile-schemas.c:2099
msgid ""
"Compile all GSettings schema files into a schema cache.\n"
"Schema files are required to have the extension .gschema.xml,\n"
@@ -2533,22 +2773,22 @@ msgstr ""
"Schema 檔案的延伸檔å必須為 .gschema.xml,\n"
"而快å–檔案å«åš gschemas.compiled。"
-#: ../gio/glib-compile-schemas.c:2092
+#: ../gio/glib-compile-schemas.c:2120
#, c-format
msgid "You should give exactly one directory name\n"
msgstr "您應該明確指定一個目錄å稱\n"
-#: ../gio/glib-compile-schemas.c:2131
+#: ../gio/glib-compile-schemas.c:2162
#, c-format
msgid "No schema files found: "
msgstr "找ä¸åˆ° schema 檔案:"
-#: ../gio/glib-compile-schemas.c:2134
+#: ../gio/glib-compile-schemas.c:2165
#, c-format
msgid "doing nothing.\n"
msgstr "ä¸åšä»»ä½•äº‹ã€‚\n"
-#: ../gio/glib-compile-schemas.c:2137
+#: ../gio/glib-compile-schemas.c:2168
#, c-format
msgid "removed existing output file.\n"
msgstr "移除ç¾æœ‰çš„輸出檔案。\n"
@@ -2558,240 +2798,244 @@ msgstr "移除ç¾æœ‰çš„輸出檔案。\n"
msgid "Invalid filename %s"
msgstr "無效的檔案å稱 %s"
-#: ../gio/glocalfile.c:1037
+#: ../gio/glocalfile.c:1105
#, c-format
msgid "Error getting filesystem info for %s: %s"
msgstr "å–å¾— %s 的檔案系統資訊時發生錯誤:%s"
-#: ../gio/glocalfile.c:1176
+#. Translators: This is an error message when trying to find
+#. * the enclosing (user visible) mount of a file, but none
+#. * exists.
+#.
+#: ../gio/glocalfile.c:1244
#, c-format
msgid "Containing mount for file %s not found"
msgstr "包å«äº†æ‰¾ä¸åˆ°çš„掛載點檔案 %s"
-#: ../gio/glocalfile.c:1199
+#: ../gio/glocalfile.c:1267
msgid "Can’t rename root directory"
msgstr "ä¸èƒ½é‡æ–°å‘½å根目錄"
-#: ../gio/glocalfile.c:1217 ../gio/glocalfile.c:1240
+#: ../gio/glocalfile.c:1285 ../gio/glocalfile.c:1308
#, c-format
msgid "Error renaming file %s: %s"
msgstr "讀å–檔案 %s 時發生錯誤:%s"
-#: ../gio/glocalfile.c:1224
+#: ../gio/glocalfile.c:1292
msgid "Can’t rename file, filename already exists"
msgstr "ä¸èƒ½é‡æ–°å‘½å檔案,該檔案å稱已存在"
-#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2251 ../gio/glocalfile.c:2279
-#: ../gio/glocalfile.c:2436 ../gio/glocalfileoutputstream.c:549
+#: ../gio/glocalfile.c:1305 ../gio/glocalfile.c:2322 ../gio/glocalfile.c:2350
+#: ../gio/glocalfile.c:2507 ../gio/glocalfileoutputstream.c:551
msgid "Invalid filename"
msgstr "無效的檔案å稱"
-#: ../gio/glocalfile.c:1404 ../gio/glocalfile.c:1419
+#: ../gio/glocalfile.c:1473 ../gio/glocalfile.c:1488
#, c-format
msgid "Error opening file %s: %s"
msgstr "開啟檔案 %s 時發生錯誤:%s"
-#: ../gio/glocalfile.c:1544
+#: ../gio/glocalfile.c:1613
#, c-format
msgid "Error removing file %s: %s"
msgstr "移除檔案 %s 時發生錯誤:%s"
-#: ../gio/glocalfile.c:1927
+#: ../gio/glocalfile.c:1997
#, c-format
msgid "Error trashing file %s: %s"
msgstr "移動檔案 %s 至回收筒時發生錯誤:%s"
-#: ../gio/glocalfile.c:1950
+#: ../gio/glocalfile.c:2020
#, c-format
msgid "Unable to create trash dir %s: %s"
msgstr "無法建立回收筒目錄 %s:%s"
-#: ../gio/glocalfile.c:1970
+#: ../gio/glocalfile.c:2040
#, c-format
msgid "Unable to find toplevel directory to trash %s"
msgstr "無法找到回收筒 %s 的頂端層級目錄"
-#: ../gio/glocalfile.c:2049 ../gio/glocalfile.c:2069
+#: ../gio/glocalfile.c:2119 ../gio/glocalfile.c:2139
#, c-format
msgid "Unable to find or create trash directory for %s"
msgstr "無法找到或建立 %s 的回收筒目錄"
-#: ../gio/glocalfile.c:2103
+#: ../gio/glocalfile.c:2174
#, c-format
msgid "Unable to create trashing info file for %s: %s"
msgstr "無法建立 %s 回收筒資訊檔案:%s"
-#: ../gio/glocalfile.c:2162
+#: ../gio/glocalfile.c:2233
#, c-format
msgid "Unable to trash file %s across filesystem boundaries"
msgstr "無法將檔案 %s 跨檔案系統邊界移至回收筒"
-#: ../gio/glocalfile.c:2166 ../gio/glocalfile.c:2222
+#: ../gio/glocalfile.c:2237 ../gio/glocalfile.c:2293
#, c-format
msgid "Unable to trash file %s: %s"
msgstr "無法將檔案 %s 移至回收筒:%s"
-#: ../gio/glocalfile.c:2228
+#: ../gio/glocalfile.c:2299
#, c-format
msgid "Unable to trash file %s"
msgstr "無法將檔案 %s 移至回收筒"
-#: ../gio/glocalfile.c:2254
+#: ../gio/glocalfile.c:2325
#, c-format
msgid "Error creating directory %s: %s"
msgstr "建立目錄 %s 時發生錯誤:%s"
-#: ../gio/glocalfile.c:2283
+#: ../gio/glocalfile.c:2354
#, c-format
msgid "Filesystem does not support symbolic links"
msgstr "檔案系統ä¸æ”¯æ´ç¬¦è™Ÿé€£çµ"
-#: ../gio/glocalfile.c:2286
+#: ../gio/glocalfile.c:2357
#, c-format
msgid "Error making symbolic link %s: %s"
msgstr "å»ºç«‹ç¬¦è™Ÿé€£çµ %s 時發生錯誤:%s"
-#: ../gio/glocalfile.c:2292 ../glib/gfileutils.c:2064
+#: ../gio/glocalfile.c:2363 ../glib/gfileutils.c:2127
msgid "Symbolic links not supported"
msgstr "ä¸æ”¯æ´ç¬¦è™Ÿé€£çµ"
-#: ../gio/glocalfile.c:2347 ../gio/glocalfile.c:2382 ../gio/glocalfile.c:2439
+#: ../gio/glocalfile.c:2418 ../gio/glocalfile.c:2453 ../gio/glocalfile.c:2510
#, c-format
msgid "Error moving file %s: %s"
msgstr "移動檔案 %s 時發生錯誤:%s"
-#: ../gio/glocalfile.c:2370
+#: ../gio/glocalfile.c:2441
msgid "Can’t move directory over directory"
msgstr "ä¸èƒ½å°‡ç›®éŒ„移動至目錄上"
-#: ../gio/glocalfile.c:2396 ../gio/glocalfileoutputstream.c:925
-#: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954
-#: ../gio/glocalfileoutputstream.c:971 ../gio/glocalfileoutputstream.c:985
+#: ../gio/glocalfile.c:2467 ../gio/glocalfileoutputstream.c:935
+#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
+#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
msgid "Backup file creation failed"
msgstr "建立備份檔案失敗"
-#: ../gio/glocalfile.c:2415
+#: ../gio/glocalfile.c:2486
#, c-format
msgid "Error removing target file: %s"
msgstr "移除目標檔案時發生錯誤:%s"
-#: ../gio/glocalfile.c:2429
+#: ../gio/glocalfile.c:2500
msgid "Move between mounts not supported"
msgstr "ä¸æ”¯æ´åœ¨æŽ›è¼‰é»žä¹‹é–“移動"
-#: ../gio/glocalfile.c:2620
+#: ../gio/glocalfile.c:2691
#, c-format
msgid "Could not determine the disk usage of %s: %s"
msgstr "無法決定 %s çš„ç£ç¢Ÿä½¿ç”¨é‡ï¼š%s"
-#: ../gio/glocalfileinfo.c:721
+#: ../gio/glocalfileinfo.c:745
msgid "Attribute value must be non-NULL"
msgstr "屬性數值必須為éž-NULL"
-#: ../gio/glocalfileinfo.c:728
+#: ../gio/glocalfileinfo.c:752
msgid "Invalid attribute type (string expected)"
msgstr "無效的屬性類型(應為字串值)"
-#: ../gio/glocalfileinfo.c:735
+#: ../gio/glocalfileinfo.c:759
msgid "Invalid extended attribute name"
msgstr "無效的延伸屬性å稱"
-#: ../gio/glocalfileinfo.c:775
+#: ../gio/glocalfileinfo.c:799
#, c-format
msgid "Error setting extended attribute “%sâ€: %s"
msgstr "設定延伸屬性「%sã€æ™‚發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:1575
+#: ../gio/glocalfileinfo.c:1607
msgid " (invalid encoding)"
msgstr "(無效的編碼)"
-#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803
+#: ../gio/glocalfileinfo.c:1776 ../gio/glocalfileoutputstream.c:813
#, c-format
msgid "Error when getting information for file “%sâ€: %s"
msgstr "å–得檔案「%sã€è³‡è¨Šæ™‚發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2017
+#: ../gio/glocalfileinfo.c:2038
#, c-format
msgid "Error when getting information for file descriptor: %s"
msgstr "å–得檔案æ述狀態資訊時發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2062
+#: ../gio/glocalfileinfo.c:2083
msgid "Invalid attribute type (uint32 expected)"
msgstr "無效的屬性類型(應為 uint32 值)"
-#: ../gio/glocalfileinfo.c:2080
+#: ../gio/glocalfileinfo.c:2101
msgid "Invalid attribute type (uint64 expected)"
msgstr "無效的屬性類型(應為 uint64 值)"
-#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118
+#: ../gio/glocalfileinfo.c:2120 ../gio/glocalfileinfo.c:2139
msgid "Invalid attribute type (byte string expected)"
msgstr "無效的屬性類型(應為 byte string 值)"
-#: ../gio/glocalfileinfo.c:2153
+#: ../gio/glocalfileinfo.c:2184
msgid "Cannot set permissions on symlinks"
msgstr "ä¸èƒ½è¨­å®šç¬¦è™Ÿé€£çµçš„權é™"
-#: ../gio/glocalfileinfo.c:2169
+#: ../gio/glocalfileinfo.c:2200
#, c-format
msgid "Error setting permissions: %s"
msgstr "設定權é™æ™‚發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2220
+#: ../gio/glocalfileinfo.c:2251
#, c-format
msgid "Error setting owner: %s"
msgstr "設定æ“有者時發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2243
+#: ../gio/glocalfileinfo.c:2274
msgid "symlink must be non-NULL"
msgstr "符號連çµå¿…須為éž-NULL"
-#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272
-#: ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2284 ../gio/glocalfileinfo.c:2303
+#: ../gio/glocalfileinfo.c:2314
#, c-format
msgid "Error setting symlink: %s"
msgstr "設定符號連çµæ™‚發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2262
+#: ../gio/glocalfileinfo.c:2293
msgid "Error setting symlink: file is not a symlink"
msgstr "設定符號連çµæ™‚發生錯誤:檔案ä¸æ˜¯ç¬¦è™Ÿé€£çµ"
-#: ../gio/glocalfileinfo.c:2388
+#: ../gio/glocalfileinfo.c:2419
#, c-format
msgid "Error setting modification or access time: %s"
msgstr "設定修改或存å–時刻時發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2411
+#: ../gio/glocalfileinfo.c:2442
msgid "SELinux context must be non-NULL"
msgstr "SELinux é—œè¯å¿…須為éž-NULL"
-#: ../gio/glocalfileinfo.c:2426
+#: ../gio/glocalfileinfo.c:2457
#, c-format
msgid "Error setting SELinux context: %s"
msgstr "設定 SELinux é—œè¯æ™‚發生錯誤:%s"
-#: ../gio/glocalfileinfo.c:2433
+#: ../gio/glocalfileinfo.c:2464
msgid "SELinux is not enabled on this system"
msgstr "SELinux 在這個系統上並未啟用"
-#: ../gio/glocalfileinfo.c:2525
+#: ../gio/glocalfileinfo.c:2556
#, c-format
msgid "Setting attribute %s not supported"
msgstr "ä¸æ”¯æ´è¨­å®šå±¬æ€§ %s"
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694
+#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:696
#, 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:1003
+#: ../gio/glocalfileoutputstream.c:458 ../gio/glocalfileoutputstream.c:1013
#, 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:255 ../gio/glocalfileoutputstream.c:248
+#: ../gio/glocalfileoutputstream.c:342
#, c-format
msgid "Error closing file: %s"
msgstr "關閉檔案時發生錯誤:%s"
@@ -2800,51 +3044,51 @@ msgstr "關閉檔案時發生錯誤:%s"
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:196 ../gio/glocalfileoutputstream.c:228
+#: ../gio/glocalfileoutputstream.c:717
#, c-format
msgid "Error writing to file: %s"
msgstr "寫入至檔案時發生錯誤:%s"
-#: ../gio/glocalfileoutputstream.c:273
+#: ../gio/glocalfileoutputstream.c:275
#, c-format
msgid "Error removing old backup link: %s"
msgstr "移除舊備份連çµæ™‚發生錯誤:%s"
-#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300
+#: ../gio/glocalfileoutputstream.c:289 ../gio/glocalfileoutputstream.c:302
#, c-format
msgid "Error creating backup copy: %s"
msgstr "建立備份複本時發生錯誤:%s"
-#: ../gio/glocalfileoutputstream.c:318
+#: ../gio/glocalfileoutputstream.c:320
#, c-format
msgid "Error renaming temporary file: %s"
msgstr "é‡æ–°å‘½å暫存檔案時發生錯誤:%s"
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1054
+#: ../gio/glocalfileoutputstream.c:504 ../gio/glocalfileoutputstream.c:1064
#, c-format
msgid "Error truncating file: %s"
msgstr "截短檔案時發生錯誤:%s"
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:785
-#: ../gio/glocalfileoutputstream.c:1035 ../gio/gsubprocess.c:360
+#: ../gio/glocalfileoutputstream.c:557 ../gio/glocalfileoutputstream.c:795
+#: ../gio/glocalfileoutputstream.c:1045 ../gio/gsubprocess.c:380
#, c-format
msgid "Error opening file “%sâ€: %s"
msgstr "開啟檔案「%sã€æ™‚發生錯誤:%s"
-#: ../gio/glocalfileoutputstream.c:816
+#: ../gio/glocalfileoutputstream.c:826
msgid "Target file is a directory"
msgstr "目標檔案是一個目錄"
-#: ../gio/glocalfileoutputstream.c:821
+#: ../gio/glocalfileoutputstream.c:831
msgid "Target file is not a regular file"
msgstr "目標檔案ä¸æ˜¯æ­£è¦çš„檔案"
-#: ../gio/glocalfileoutputstream.c:833
+#: ../gio/glocalfileoutputstream.c:843
msgid "The file was externally modified"
msgstr "該檔案已被外部程å¼ä¿®æ”¹éŽ"
-#: ../gio/glocalfileoutputstream.c:1019
+#: ../gio/glocalfileoutputstream.c:1029
#, c-format
msgid "Error removing old file: %s"
msgstr "移除舊檔案時發生錯誤:%s"
@@ -2886,49 +3130,49 @@ msgstr "在串æµçš„開頭之後è¦æ±‚çš„æœç´¢"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement unmount.
-#: ../gio/gmount.c:393
+#: ../gio/gmount.c:396
msgid "mount doesn’t implement “unmountâ€"
msgstr "掛載點尚未實作「umountã€"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement eject.
-#: ../gio/gmount.c:469
+#: ../gio/gmount.c:472
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:547
+#: ../gio/gmount.c:550
msgid "mount doesn’t implement “unmount†or “unmount_with_operationâ€"
msgstr "掛載點尚未實作「umountã€æˆ–「umount_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:632
+#: ../gio/gmount.c:635
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:720
+#: ../gio/gmount.c:723
msgid "mount doesn’t implement “remountâ€"
msgstr "掛載點尚未實作「remountã€"
#. Translators: This is an error
#. * message for mount objects that
#. * don't implement content type guessing.
-#: ../gio/gmount.c:802
+#: ../gio/gmount.c:805
msgid "mount doesn’t 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
+#: ../gio/gmount.c:892
msgid "mount doesn’t implement synchronous content type guessing"
msgstr "掛載點尚未實作åŒæ­¥å…§å®¹é¡žåž‹é æ¸¬"
@@ -2959,7 +3203,7 @@ msgstr "無法建立網路監控:"
msgid "Could not get network status: "
msgstr "無法å–得網路狀態:"
-#: ../gio/gnetworkmonitornm.c:326
+#: ../gio/gnetworkmonitornm.c:329
#, c-format
msgid "NetworkManager version too old"
msgstr "NetworkManager 版本太舊"
@@ -2972,31 +3216,37 @@ msgstr "輸出串æµå°šæœªå¯¦ä½œå¯«å…¥"
msgid "Source stream is already closed"
msgstr "來æºä¸²æµå·²ç¶“關閉"
-#: ../gio/gresolver.c:341 ../gio/gthreadedresolver.c:116
+#: ../gio/gresolver.c:342 ../gio/gthreadedresolver.c:116
#: ../gio/gthreadedresolver.c:126
#, c-format
msgid "Error resolving “%sâ€: %s"
msgstr "解æžã€Œ%sã€æ™‚發生錯誤:%s"
-#: ../gio/gresource.c:595 ../gio/gresource.c:846 ../gio/gresource.c:863
-#: ../gio/gresource.c:987 ../gio/gresource.c:1059 ../gio/gresource.c:1132
-#: ../gio/gresource.c:1202 ../gio/gresourcefile.c:453
-#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713
+#: ../gio/gresolver.c:729 ../gio/gresolver.c:781
+#, fuzzy
+#| msgid "Invalid filename"
+msgid "Invalid domain"
+msgstr "無效的檔案å稱"
+
+#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
+#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
+#: ../gio/gresource.c:1258 ../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:760
+#: ../gio/gresource.c:786
#, c-format
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ã€çš„資æºä¸æ˜¯ç›®éŒ„"
-#: ../gio/gresourcefile.c:917
+#: ../gio/gresourcefile.c:940
msgid "Input stream doesn’t implement seek"
msgstr "輸入串æµå°šæœªå¯¦ä½œå°‹æ‰¾"
@@ -3090,7 +3340,7 @@ msgstr ""
msgid " SECTION An (optional) elf section name\n"
msgstr " SECTION 一個 (é¸æ“‡æ€§çš„) elf 節å€å稱\n"
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:654
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:685
msgid " COMMAND The (optional) command to explain\n"
msgstr " COMMAND è¦è§£é‡‹çš„(é¸æ“‡æ€§ï¼‰æŒ‡ä»¤\n"
@@ -3123,7 +3373,7 @@ msgid " PATH A resource path\n"
msgstr " PATH 資æºè·¯å¾‘\n"
#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:851
+#: ../gio/gsettings-tool.c:890
#, c-format
msgid "No such schema “%sâ€\n"
msgstr "沒有這個基模「%sã€\n"
@@ -3158,38 +3408,38 @@ msgstr "路徑ä¸èƒ½ä»¥æ–œç·š (/) çµå°¾\n"
msgid "Path must not contain two adjacent slashes (//)\n"
msgstr "路徑ä¸èƒ½åŒ…å«å…©å€‹ç›¸é„°çš„斜線 (//)\n"
-#: ../gio/gsettings-tool.c:489
+#: ../gio/gsettings-tool.c:520
#, c-format
msgid "The provided value is outside of the valid range\n"
msgstr "æ供的數值超出了有效的範åœ\n"
-#: ../gio/gsettings-tool.c:496
+#: ../gio/gsettings-tool.c:527
#, c-format
msgid "The key is not writable\n"
msgstr "這個設定éµç„¡æ³•å¯«å…¥\n"
-#: ../gio/gsettings-tool.c:532
+#: ../gio/gsettings-tool.c:563
msgid "List the installed (non-relocatable) schemas"
msgstr "列出已安è£çš„(éž-å¯é‡æ–°é…置)schema"
-#: ../gio/gsettings-tool.c:538
+#: ../gio/gsettings-tool.c:569
msgid "List the installed relocatable schemas"
msgstr "列出已安è£çš„å¯é‡æ–°é…ç½® schema"
-#: ../gio/gsettings-tool.c:544
+#: ../gio/gsettings-tool.c:575
msgid "List the keys in SCHEMA"
msgstr "列出 SCHEMA 中的設定éµ"
-#: ../gio/gsettings-tool.c:545 ../gio/gsettings-tool.c:551
-#: ../gio/gsettings-tool.c:594
+#: ../gio/gsettings-tool.c:576 ../gio/gsettings-tool.c:582
+#: ../gio/gsettings-tool.c:625
msgid "SCHEMA[:PATH]"
msgstr "SCHEMA[:PATH]"
-#: ../gio/gsettings-tool.c:550
+#: ../gio/gsettings-tool.c:581
msgid "List the children of SCHEMA"
msgstr "列出 SCHEMA çš„å­é …"
-#: ../gio/gsettings-tool.c:556
+#: ../gio/gsettings-tool.c:587
msgid ""
"List keys and values, recursively\n"
"If no SCHEMA is given, list all keys\n"
@@ -3197,49 +3447,49 @@ msgstr ""
"éžè¿´çš„列出設定éµèˆ‡éµå€¼\n"
"如果沒有指定 SCHEMA,列出所有設定éµ\n"
-#: ../gio/gsettings-tool.c:558
+#: ../gio/gsettings-tool.c:589
msgid "[SCHEMA[:PATH]]"
msgstr "[SCHEMA[:PATH]]"
-#: ../gio/gsettings-tool.c:563
+#: ../gio/gsettings-tool.c:594
msgid "Get the value of KEY"
msgstr "å–å¾— KEY 的數值"
-#: ../gio/gsettings-tool.c:564 ../gio/gsettings-tool.c:570
-#: ../gio/gsettings-tool.c:576 ../gio/gsettings-tool.c:588
-#: ../gio/gsettings-tool.c:600
+#: ../gio/gsettings-tool.c:595 ../gio/gsettings-tool.c:601
+#: ../gio/gsettings-tool.c:607 ../gio/gsettings-tool.c:619
+#: ../gio/gsettings-tool.c:631
msgid "SCHEMA[:PATH] KEY"
msgstr "SCHEMA[:PATH] KEY"
-#: ../gio/gsettings-tool.c:569
+#: ../gio/gsettings-tool.c:600
msgid "Query the range of valid values for KEY"
msgstr "查詢 KEY 有效數值的範åœ"
-#: ../gio/gsettings-tool.c:575
+#: ../gio/gsettings-tool.c:606
msgid "Query the description for KEY"
msgstr "查詢 KEY 有效數值的範åœ"
-#: ../gio/gsettings-tool.c:581
+#: ../gio/gsettings-tool.c:612
msgid "Set the value of KEY to VALUE"
msgstr "將 KEY 的數值設定為 VALUE"
-#: ../gio/gsettings-tool.c:582
+#: ../gio/gsettings-tool.c:613
msgid "SCHEMA[:PATH] KEY VALUE"
msgstr "SCHEMA[:PATH] KEY VALUE"
-#: ../gio/gsettings-tool.c:587
+#: ../gio/gsettings-tool.c:618
msgid "Reset KEY to its default value"
msgstr "å°‡ KEY 設定為é è¨­å€¼"
-#: ../gio/gsettings-tool.c:593
+#: ../gio/gsettings-tool.c:624
msgid "Reset all keys in SCHEMA to their defaults"
msgstr "å°‡ SCHEMA 的所有設定éµé‡è¨­ç‚ºé è¨­å€¼"
-#: ../gio/gsettings-tool.c:599
+#: ../gio/gsettings-tool.c:630
msgid "Check if KEY is writable"
msgstr "檢查 KEY 是å¦å¯å¯«å…¥"
-#: ../gio/gsettings-tool.c:605
+#: ../gio/gsettings-tool.c:636
msgid ""
"Monitor KEY for changes.\n"
"If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3249,11 +3499,11 @@ msgstr ""
"如果沒有指定 KEY,會監控 SCHEMA 的所有設定éµã€‚\n"
"使用 ^C å¯åœæ­¢ç›£æŽ§ã€‚\n"
-#: ../gio/gsettings-tool.c:608
+#: ../gio/gsettings-tool.c:639
msgid "SCHEMA[:PATH] [KEY]"
msgstr "SCHEMA[:PATH] [KEY]"
-#: ../gio/gsettings-tool.c:620
+#: ../gio/gsettings-tool.c:651
msgid ""
"Usage:\n"
" gsettings --version\n"
@@ -3300,7 +3550,7 @@ msgstr ""
"使用「gsettings help COMMANDã€å–得詳細的說明。\n"
"\n"
-#: ../gio/gsettings-tool.c:644
+#: ../gio/gsettings-tool.c:675
#, c-format
msgid ""
"Usage:\n"
@@ -3315,11 +3565,11 @@ msgstr ""
"%s\n"
"\n"
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:681
msgid " SCHEMADIR A directory to search for additional schemas\n"
msgstr " SCHEMADIR æœå°‹é¡å¤– schema 的目錄\n"
-#: ../gio/gsettings-tool.c:658
+#: ../gio/gsettings-tool.c:689
msgid ""
" SCHEMA The name of the schema\n"
" PATH The path, for relocatable schemas\n"
@@ -3327,176 +3577,212 @@ msgstr ""
" SCHEMA 這個 schema çš„å稱\n"
" PATH 路徑,用於å¯é‡æ–°é…置的 schema\n"
-#: ../gio/gsettings-tool.c:663
+#: ../gio/gsettings-tool.c:694
msgid " KEY The (optional) key within the schema\n"
msgstr " KEY schema 中的(é¸æ“‡æ€§çš„)設定éµ\n"
-#: ../gio/gsettings-tool.c:667
+#: ../gio/gsettings-tool.c:698
msgid " KEY The key within the schema\n"
msgstr " KEY schema 中的設定éµ\n"
-#: ../gio/gsettings-tool.c:671
+#: ../gio/gsettings-tool.c:702
msgid " VALUE The value to set\n"
msgstr " VALUE è¦è¨­å®šçš„數值\n"
-#: ../gio/gsettings-tool.c:726
+#: ../gio/gsettings-tool.c:757
#, c-format
msgid "Could not load schemas from %s: %s\n"
msgstr "無法載入 %s 的 schema:%s\n"
-#: ../gio/gsettings-tool.c:738
+#: ../gio/gsettings-tool.c:769
#, c-format
msgid "No schemas installed\n"
msgstr "尚未安è£åŸºæ¨¡\n"
-#: ../gio/gsettings-tool.c:809
+#: ../gio/gsettings-tool.c:848
#, c-format
msgid "Empty schema name given\n"
msgstr "指定了空的 schema å稱\n"
-#: ../gio/gsettings-tool.c:864
+#: ../gio/gsettings-tool.c:903
#, c-format
msgid "No such key “%sâ€\n"
msgstr "沒有設定éµã€Œ%sã€\n"
-#: ../gio/gsocket.c:364
+#: ../gio/gsocket.c:384
msgid "Invalid socket, not initialized"
msgstr "無效的 socket,尚未åˆå§‹åŒ–"
-#: ../gio/gsocket.c:371
+#: ../gio/gsocket.c:391
#, c-format
msgid "Invalid socket, initialization failed due to: %s"
msgstr "無效的 socket,åˆå§‹åŒ–失敗原因為:%s"
-#: ../gio/gsocket.c:379
+#: ../gio/gsocket.c:399
msgid "Socket is already closed"
msgstr "Socket 已經關閉"
-#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3897
-#: ../gio/gsocket.c:3952
+#: ../gio/gsocket.c:414 ../gio/gsocket.c:3010 ../gio/gsocket.c:4220
+#: ../gio/gsocket.c:4278
msgid "Socket I/O timed out"
msgstr "Socket I/O 逾時"
-#: ../gio/gsocket.c:526
+#: ../gio/gsocket.c:549
#, c-format
msgid "creating GSocket from fd: %s"
msgstr "正在從 fd 建立 GSocket:%s"
-#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615
+#: ../gio/gsocket.c:578 ../gio/gsocket.c:632 ../gio/gsocket.c:639
#, c-format
msgid "Unable to create socket: %s"
msgstr "無法建立 socket:%s"
-#: ../gio/gsocket.c:608
+#: ../gio/gsocket.c:632
msgid "Unknown family was specified"
msgstr "指定了ä¸æ˜Žçš„å­—æ—"
-#: ../gio/gsocket.c:615
+#: ../gio/gsocket.c:639
msgid "Unknown protocol was specified"
msgstr "指定了ä¸æ˜Žçš„通訊å”定"
-#: ../gio/gsocket.c:1104
+#: ../gio/gsocket.c:1130
#, c-format
msgid "Cannot use datagram operations on a non-datagram socket."
msgstr "ä¸èƒ½åœ¨éžè³‡æ–™é›»å ± socket 上使用資料電報æ“作。"
-#: ../gio/gsocket.c:1121
+#: ../gio/gsocket.c:1147
#, c-format
msgid "Cannot use datagram operations on a socket with a timeout set."
msgstr "ä¸èƒ½åœ¨æœ‰é€¾æ™‚設定 socket 上使用資料電報æ“作。"
-#: ../gio/gsocket.c:1925
+#: ../gio/gsocket.c:1954
#, c-format
msgid "could not get local address: %s"
msgstr "無法å–得本地端ä½å€ï¼š%s"
-#: ../gio/gsocket.c:1968
+#: ../gio/gsocket.c:2000
#, c-format
msgid "could not get remote address: %s"
msgstr "無法å–å¾—é ç«¯ä½å€ï¼š%s"
-#: ../gio/gsocket.c:2034
+#: ../gio/gsocket.c:2066
#, c-format
msgid "could not listen: %s"
msgstr "無法è½å–:%s"
-#: ../gio/gsocket.c:2133
+#: ../gio/gsocket.c:2168
#, c-format
msgid "Error binding to address: %s"
msgstr "ç¶å®šè‡³ä½å€æ™‚發生錯誤:%s"
-#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285
+#: ../gio/gsocket.c:2226 ../gio/gsocket.c:2263 ../gio/gsocket.c:2373
+#: ../gio/gsocket.c:2391 ../gio/gsocket.c:2461 ../gio/gsocket.c:2519
+#: ../gio/gsocket.c:2537
#, c-format
msgid "Error joining multicast group: %s"
msgstr "加入多點廣播群組時發生錯誤:%s"
-#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286
+#: ../gio/gsocket.c:2227 ../gio/gsocket.c:2264 ../gio/gsocket.c:2374
+#: ../gio/gsocket.c:2392 ../gio/gsocket.c:2462 ../gio/gsocket.c:2520
+#: ../gio/gsocket.c:2538
#, c-format
msgid "Error leaving multicast group: %s"
msgstr "離開多點廣播群組時發生錯誤:%s"
-#: ../gio/gsocket.c:2250
+#: ../gio/gsocket.c:2228
msgid "No support for source-specific multicast"
msgstr "ä¸æ”¯æ´æŒ‡å®šä¾†æºçš„多點廣播"
-#: ../gio/gsocket.c:2470
+#: ../gio/gsocket.c:2375
+#, fuzzy
+#| msgid "Unsupported socket address"
+msgid "Unsupported socket family"
+msgstr "ä¸æ”¯æ´çš„ socket ä½å€"
+
+#: ../gio/gsocket.c:2393
+msgid "source-specific not an IPv4 address"
+msgstr ""
+
+#: ../gio/gsocket.c:2411 ../gio/gsocket.c:2440 ../gio/gsocket.c:2487
+#, c-format
+msgid "Interface not found: %s"
+msgstr ""
+
+#: ../gio/gsocket.c:2427
+#, c-format
+msgid "Interface name too long"
+msgstr ""
+
+#: ../gio/gsocket.c:2463
+#, fuzzy
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv4 source-specific multicast"
+msgstr "ä¸æ”¯æ´æŒ‡å®šä¾†æºçš„多點廣播"
+
+#: ../gio/gsocket.c:2521
+#, fuzzy
+#| msgid "No support for source-specific multicast"
+msgid "No support for IPv6 source-specific multicast"
+msgstr "ä¸æ”¯æ´æŒ‡å®šä¾†æºçš„多點廣播"
+
+#: ../gio/gsocket.c:2730
#, c-format
msgid "Error accepting connection: %s"
msgstr "接å—連線時發生錯誤:%s"
-#: ../gio/gsocket.c:2593
+#: ../gio/gsocket.c:2854
msgid "Connection in progress"
msgstr "連線進行中"
-#: ../gio/gsocket.c:2644
+#: ../gio/gsocket.c:2903
msgid "Unable to get pending error: "
msgstr "無法å–得未處ç†çš„錯誤:"
-#: ../gio/gsocket.c:2816
+#: ../gio/gsocket.c:3073
#, c-format
msgid "Error receiving data: %s"
msgstr "接收資料時發生錯誤:%s"
-#: ../gio/gsocket.c:3013
+#: ../gio/gsocket.c:3268
#, c-format
msgid "Error sending data: %s"
msgstr "傳é€è³‡æ–™æ™‚發生錯誤:%s"
-#: ../gio/gsocket.c:3200
+#: ../gio/gsocket.c:3455
#, c-format
msgid "Unable to shutdown socket: %s"
msgstr "無法關閉 socket:%s"
-#: ../gio/gsocket.c:3281
+#: ../gio/gsocket.c:3536
#, c-format
msgid "Error closing socket: %s"
msgstr "關閉 socket 時發生錯誤:%s"
-#: ../gio/gsocket.c:3890
+#: ../gio/gsocket.c:4213
#, c-format
msgid "Waiting for socket condition: %s"
msgstr "等候 socket 情æ³ï¼š%s"
-#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619
+#: ../gio/gsocket.c:4687 ../gio/gsocket.c:4767 ../gio/gsocket.c:4945
#, c-format
msgid "Error sending message: %s"
msgstr "傳é€è¨Šæ¯æ™‚發生錯誤:%s"
-#: ../gio/gsocket.c:4385
+#: ../gio/gsocket.c:4711
msgid "GSocketControlMessage not supported on Windows"
msgstr "視窗ä¸æ”¯æ´ GSocketControlMessage"
-#: ../gio/gsocket.c:4838 ../gio/gsocket.c:4911 ../gio/gsocket.c:5138
+#: ../gio/gsocket.c:5164 ../gio/gsocket.c:5237 ../gio/gsocket.c:5463
#, c-format
msgid "Error receiving message: %s"
msgstr "å–回郵件發生錯誤:%s"
-#: ../gio/gsocket.c:5410
+#: ../gio/gsocket.c:5735
#, c-format
msgid "Unable to read socket credentials: %s"
msgstr "ç„¡æ³•è®€å– socket 機密:%s"
-#: ../gio/gsocket.c:5419
+#: ../gio/gsocket.c:5744
msgid "g_socket_get_credentials not implemented for this OS"
msgstr "g_socket_get_credentials 沒有在這個 OS 上實作"
@@ -3635,18 +3921,18 @@ msgstr "找ä¸åˆ°æœ‰æ•ˆçš„ä½å€"
msgid "Error reverse-resolving “%sâ€: %s"
msgstr "åå‘解æžã€Œ%sã€æ™‚發生錯誤:%s"
-#: ../gio/gthreadedresolver.c:550 ../gio/gthreadedresolver.c:630
-#: ../gio/gthreadedresolver.c:728 ../gio/gthreadedresolver.c:778
+#: ../gio/gthreadedresolver.c:549 ../gio/gthreadedresolver.c:628
+#: ../gio/gthreadedresolver.c:726 ../gio/gthreadedresolver.c:776
#, c-format
msgid "No DNS record of the requested type for “%sâ€"
msgstr "「%sã€çš„è¦æ±‚類型沒有 DNS 紀錄"
-#: ../gio/gthreadedresolver.c:555 ../gio/gthreadedresolver.c:733
+#: ../gio/gthreadedresolver.c:554 ../gio/gthreadedresolver.c:731
#, c-format
msgid "Temporarily unable to resolve “%sâ€"
msgstr "暫時無法解æžã€Œ%sã€"
-#: ../gio/gthreadedresolver.c:560 ../gio/gthreadedresolver.c:738
+#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
#, c-format
msgid "Error resolving “%sâ€"
msgstr "解æžã€Œ%sã€æ™‚發生錯誤"
@@ -3677,24 +3963,30 @@ msgid ""
"is locked out."
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
+#, fuzzy
+#| msgid ""
+#| "Several password entered have been incorrect, and your access will be "
+#| "locked out after further failures."
msgid ""
-"Several password entered have been incorrect, and your access will be locked "
-"out after further failures."
+"Several passwords entered have been incorrect, and your access will be "
+"locked out after further failures."
msgstr ""
"您已經輸入多入ä¸æ­£ç¢ºçš„密碼,如果接下來還是輸入錯誤將會鎖定您的存å–權é™ã€‚"
-#: ../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:166 ../gio/gunixconnection.c:563
#, 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:573
+#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:575
msgid "Unexpected type of ancillary data"
msgstr "輔助資料的未é æœŸé¡žåž‹"
@@ -3712,52 +4004,52 @@ msgstr "收到無效的 fd"
msgid "Error sending credentials: "
msgstr "傳é€æ†‘證時發生錯誤:"
-#: ../gio/gunixconnection.c:503
+#: ../gio/gunixconnection.c:504
#, c-format
msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
msgstr "檢查 SO_PASSCRED 在 socket 是å¦å•Ÿç”¨æ™‚發生錯誤:%s"
-#: ../gio/gunixconnection.c:518
+#: ../gio/gunixconnection.c:520
#, c-format
msgid "Error enabling SO_PASSCRED: %s"
msgstr "啟用 SO_PASSCRED 時發生錯誤:%s"
-#: ../gio/gunixconnection.c:547
+#: ../gio/gunixconnection.c:549
msgid ""
"Expecting to read a single byte for receiving credentials but read zero bytes"
msgstr "é æœŸæŽ¥æ”¶æ†‘è­‰è¦è®€å–單一ä½å…ƒçµ„,但讀å–到零ä½å…ƒçµ„"
-#: ../gio/gunixconnection.c:587
+#: ../gio/gunixconnection.c:589
#, c-format
msgid "Not expecting control message, but got %d"
msgstr "ä¸æ˜¯é æœŸçš„控制訊æ¯ï¼Œå»æ”¶åˆ° %d"
-#: ../gio/gunixconnection.c:611
+#: ../gio/gunixconnection.c:614
#, c-format
msgid "Error while disabling SO_PASSCRED: %s"
msgstr "åœç”¨ SO_PASSCRED 時發生錯誤:%s"
-#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390
+#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
#, c-format
msgid "Error reading from file descriptor: %s"
msgstr "讀å–檔案æ述狀態時發生錯誤:%s"
-#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409
+#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:411
#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204
#, c-format
msgid "Error closing file descriptor: %s"
msgstr "關閉檔案æ述狀態時發生錯誤:%s"
-#: ../gio/gunixmounts.c:2364 ../gio/gunixmounts.c:2417
+#: ../gio/gunixmounts.c:2556 ../gio/gunixmounts.c:2609
msgid "Filesystem root"
msgstr "根檔案系統"
-#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376
+#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:378
#, c-format
msgid "Error writing to file descriptor: %s"
msgstr "寫入檔案æ述狀態時發生錯誤:%s"
-#: ../gio/gunixsocketaddress.c:239
+#: ../gio/gunixsocketaddress.c:241
msgid "Abstract UNIX domain socket addresses not supported on this system"
msgstr "這個系統ä¸æ”¯æŽˆæŠ½è±¡ UNIX 網域 socket ä½å€"
@@ -3829,25 +4121,25 @@ msgstr "執行 dbus æœå‹™"
msgid "Wrong args\n"
msgstr "錯誤引數\n"
-#: ../glib/gbookmarkfile.c:755
+#: ../glib/gbookmarkfile.c:754
#, c-format
msgid "Unexpected attribute “%s†for element “%sâ€"
msgstr "元件「%2$sã€ä¸­æœ‰æœªé æœŸçš„屬性「%1$sã€"
-#: ../glib/gbookmarkfile.c:766 ../glib/gbookmarkfile.c:837
-#: ../glib/gbookmarkfile.c:847 ../glib/gbookmarkfile.c:954
+#: ../glib/gbookmarkfile.c:765 ../glib/gbookmarkfile.c:836
+#: ../glib/gbookmarkfile.c:846 ../glib/gbookmarkfile.c:953
#, c-format
msgid "Attribute “%s†of element “%s†not found"
msgstr "找ä¸åˆ°å…ƒä»¶ã€Œ%2$sã€ä¸­çš„屬性「%1$sã€"
-#: ../glib/gbookmarkfile.c:1124 ../glib/gbookmarkfile.c:1189
-#: ../glib/gbookmarkfile.c:1253 ../glib/gbookmarkfile.c:1263
+#: ../glib/gbookmarkfile.c:1123 ../glib/gbookmarkfile.c:1188
+#: ../glib/gbookmarkfile.c:1252 ../glib/gbookmarkfile.c:1262
#, c-format
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:1148 ../glib/gbookmarkfile.c:1162
+#: ../glib/gbookmarkfile.c:1230
#, c-format
msgid "Unexpected tag “%s†inside “%sâ€"
msgstr "「%2$sã€ä¸­æœ‰æœªé æœŸçš„標籤「%1$sã€"
@@ -3866,10 +4158,10 @@ msgstr "URI「%sã€çš„書籤已經存在"
#: ../glib/gbookmarkfile.c:2412 ../glib/gbookmarkfile.c:2495
#: ../glib/gbookmarkfile.c:2573 ../glib/gbookmarkfile.c:2652
#: ../glib/gbookmarkfile.c:2694 ../glib/gbookmarkfile.c:2791
-#: ../glib/gbookmarkfile.c:2911 ../glib/gbookmarkfile.c:3101
-#: ../glib/gbookmarkfile.c:3177 ../glib/gbookmarkfile.c:3345
-#: ../glib/gbookmarkfile.c:3434 ../glib/gbookmarkfile.c:3523
-#: ../glib/gbookmarkfile.c:3639
+#: ../glib/gbookmarkfile.c:2912 ../glib/gbookmarkfile.c:3102
+#: ../glib/gbookmarkfile.c:3178 ../glib/gbookmarkfile.c:3346
+#: ../glib/gbookmarkfile.c:3435 ../glib/gbookmarkfile.c:3524
+#: ../glib/gbookmarkfile.c:3640
#, c-format
msgid "No bookmark found for URI “%sâ€"
msgstr "找ä¸åˆ° URI「%sã€çš„書籤"
@@ -3889,483 +4181,497 @@ msgstr "URI「%sã€æ›¸ç±¤ä¸­æ²’有ç§æœ‰æ——幟"
msgid "No groups set in bookmark for URI “%sâ€"
msgstr "URI「%sã€æ›¸ç±¤ä¸­æ²’有設定群組"
-#: ../glib/gbookmarkfile.c:3198 ../glib/gbookmarkfile.c:3355
+#: ../glib/gbookmarkfile.c:3199 ../glib/gbookmarkfile.c:3356
#, c-format
msgid "No application with name “%s†registered a bookmark for “%sâ€"
msgstr "沒有å為「%sã€çš„應用程å¼è¨»å†Šæ›¸ç±¤ã€Œ%sã€"
-#: ../glib/gbookmarkfile.c:3378
+#: ../glib/gbookmarkfile.c:3379
#, c-format
msgid "Failed to expand exec line “%s†with URI “%sâ€"
msgstr "以 URI「%2$sã€å±•é–‹ exec 列「%1$sã€å¤±æ•—"
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:851 ../glib/gutf8.c:1063
-#: ../glib/gutf8.c:1200 ../glib/gutf8.c:1304
+#: ../glib/gconvert.c:471
+#, fuzzy
+#| msgid "Invalid sequence in conversion input"
+msgid "Unrepresentable character in conversion input"
+msgstr "轉æ›è¼¸å…¥è³‡æ–™æ™‚出ç¾ç„¡æ•ˆçš„字元次åº"
+
+#: ../glib/gconvert.c:498 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
+#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
msgid "Partial character sequence at end of input"
msgstr "輸入資料çµæŸæ™‚å­—å…ƒä»æœªå®Œæ•´"
-#: ../glib/gconvert.c:742
+#: ../glib/gconvert.c:763
#, c-format
msgid "Cannot convert fallback “%s†to codeset “%sâ€"
msgstr "無法將後備字串「%sã€çš„字元集轉æ›æˆã€Œ%sã€"
-#: ../glib/gconvert.c:1567
+#: ../glib/gconvert.c:934
+#, fuzzy
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "轉æ›è¼¸å…¥è³‡æ–™æ™‚é‡åˆ°ä¸æ­£ç¢ºçš„ä½å…ƒçµ„組åˆ"
+
+#: ../glib/gconvert.c:955
+#, fuzzy
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "轉æ›è¼¸å…¥è³‡æ–™æ™‚é‡åˆ°ä¸æ­£ç¢ºçš„ä½å…ƒçµ„組åˆ"
+
+#: ../glib/gconvert.c:1640
#, c-format
msgid "The URI “%s†is not an absolute URI using the “file†scheme"
msgstr "URI「%sã€ä¸æ˜¯ä½¿ç”¨ã€Œfileã€æ ¼å¼çš„çµ•å° URI"
-#: ../glib/gconvert.c:1577
+#: ../glib/gconvert.c:1650
#, c-format
msgid "The local file URI “%s†may not include a “#â€"
msgstr "本機檔案的 URI「%sã€ä¸æ‡‰å«æœ‰ã€Œ#ã€"
-#: ../glib/gconvert.c:1594
+#: ../glib/gconvert.c:1667
#, c-format
msgid "The URI “%s†is invalid"
msgstr "URI「%sã€ç„¡æ•ˆ"
-#: ../glib/gconvert.c:1606
+#: ../glib/gconvert.c:1679
#, c-format
msgid "The hostname of the URI “%s†is invalid"
msgstr "URI「%sã€ä¸­çš„主機å稱無效"
-#: ../glib/gconvert.c:1622
+#: ../glib/gconvert.c:1695
#, c-format
msgid "The URI “%s†contains invalidly escaped characters"
msgstr "URI「%sã€å«æœ‰ã€Œä¸æ­£ç¢ºè·³å‡ºã€çš„å­—å…ƒ"
-#: ../glib/gconvert.c:1717
+#: ../glib/gconvert.c:1767
#, c-format
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:202
msgctxt "GDateTime"
msgid "%a %b %e %H:%M:%S %Y"
-msgstr "西元%Y年%m月%d日 (%A) %H時%M分%S秒"
+msgstr "%Y年%m月%d日 (%A) %H時%M分%S秒"
#. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:209
+#: ../glib/gdatetime.c:205
msgctxt "GDateTime"
msgid "%m/%d/%y"
msgstr "%y/%m/%d"
#. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:212
+#: ../glib/gdatetime.c:208
msgctxt "GDateTime"
msgid "%H:%M:%S"
msgstr "%H:%M:%S"
#. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:215
+#: ../glib/gdatetime.c:211
msgctxt "GDateTime"
msgid "%I:%M:%S %p"
msgstr "%p %I時%M分%S秒"
-#: ../glib/gdatetime.c:228
+#: ../glib/gdatetime.c:224
msgctxt "full month name"
msgid "January"
msgstr "一月"
-#: ../glib/gdatetime.c:230
+#: ../glib/gdatetime.c:226
msgctxt "full month name"
msgid "February"
msgstr "二月"
-#: ../glib/gdatetime.c:232
+#: ../glib/gdatetime.c:228
msgctxt "full month name"
msgid "March"
msgstr "三月"
-#: ../glib/gdatetime.c:234
+#: ../glib/gdatetime.c:230
msgctxt "full month name"
msgid "April"
msgstr "四月"
-#: ../glib/gdatetime.c:236
+#: ../glib/gdatetime.c:232
msgctxt "full month name"
msgid "May"
msgstr "五月"
-#: ../glib/gdatetime.c:238
+#: ../glib/gdatetime.c:234
msgctxt "full month name"
msgid "June"
msgstr "六月"
-#: ../glib/gdatetime.c:240
+#: ../glib/gdatetime.c:236
msgctxt "full month name"
msgid "July"
msgstr "七月"
-#: ../glib/gdatetime.c:242
+#: ../glib/gdatetime.c:238
msgctxt "full month name"
msgid "August"
msgstr "八月"
-#: ../glib/gdatetime.c:244
+#: ../glib/gdatetime.c:240
msgctxt "full month name"
msgid "September"
msgstr "ä¹æœˆ"
-#: ../glib/gdatetime.c:246
+#: ../glib/gdatetime.c:242
msgctxt "full month name"
msgid "October"
msgstr "å月"
-#: ../glib/gdatetime.c:248
+#: ../glib/gdatetime.c:244
msgctxt "full month name"
msgid "November"
msgstr "å一月"
-#: ../glib/gdatetime.c:250
+#: ../glib/gdatetime.c:246
msgctxt "full month name"
msgid "December"
msgstr "å二月"
-#: ../glib/gdatetime.c:265
+#: ../glib/gdatetime.c:261
msgctxt "abbreviated month name"
msgid "Jan"
msgstr "一月"
-#: ../glib/gdatetime.c:267
+#: ../glib/gdatetime.c:263
msgctxt "abbreviated month name"
msgid "Feb"
msgstr "二月"
-#: ../glib/gdatetime.c:269
+#: ../glib/gdatetime.c:265
msgctxt "abbreviated month name"
msgid "Mar"
msgstr "三月"
-#: ../glib/gdatetime.c:271
+#: ../glib/gdatetime.c:267
msgctxt "abbreviated month name"
msgid "Apr"
msgstr "四月"
-#: ../glib/gdatetime.c:273
+#: ../glib/gdatetime.c:269
msgctxt "abbreviated month name"
msgid "May"
msgstr "五月"
-#: ../glib/gdatetime.c:275
+#: ../glib/gdatetime.c:271
msgctxt "abbreviated month name"
msgid "Jun"
msgstr "六月"
-#: ../glib/gdatetime.c:277
+#: ../glib/gdatetime.c:273
msgctxt "abbreviated month name"
msgid "Jul"
msgstr "七月"
-#: ../glib/gdatetime.c:279
+#: ../glib/gdatetime.c:275
msgctxt "abbreviated month name"
msgid "Aug"
msgstr "八月"
-#: ../glib/gdatetime.c:281
+#: ../glib/gdatetime.c:277
msgctxt "abbreviated month name"
msgid "Sep"
msgstr "ä¹æœˆ"
-#: ../glib/gdatetime.c:283
+#: ../glib/gdatetime.c:279
msgctxt "abbreviated month name"
msgid "Oct"
msgstr "å月"
-#: ../glib/gdatetime.c:285
+#: ../glib/gdatetime.c:281
msgctxt "abbreviated month name"
msgid "Nov"
msgstr "å一月"
-#: ../glib/gdatetime.c:287
+#: ../glib/gdatetime.c:283
msgctxt "abbreviated month name"
msgid "Dec"
msgstr "å二月"
-#: ../glib/gdatetime.c:302
+#: ../glib/gdatetime.c:298
msgctxt "full weekday name"
msgid "Monday"
msgstr "星期一"
-#: ../glib/gdatetime.c:304
+#: ../glib/gdatetime.c:300
msgctxt "full weekday name"
msgid "Tuesday"
msgstr "星期二"
-#: ../glib/gdatetime.c:306
+#: ../glib/gdatetime.c:302
msgctxt "full weekday name"
msgid "Wednesday"
msgstr "星期三"
-#: ../glib/gdatetime.c:308
+#: ../glib/gdatetime.c:304
msgctxt "full weekday name"
msgid "Thursday"
msgstr "星期四"
-#: ../glib/gdatetime.c:310
+#: ../glib/gdatetime.c:306
msgctxt "full weekday name"
msgid "Friday"
msgstr "星期五"
-#: ../glib/gdatetime.c:312
+#: ../glib/gdatetime.c:308
msgctxt "full weekday name"
msgid "Saturday"
msgstr "星期六"
-#: ../glib/gdatetime.c:314
+#: ../glib/gdatetime.c:310
msgctxt "full weekday name"
msgid "Sunday"
msgstr "星期日"
-#: ../glib/gdatetime.c:329
+#: ../glib/gdatetime.c:325
msgctxt "abbreviated weekday name"
msgid "Mon"
msgstr "週一"
-#: ../glib/gdatetime.c:331
+#: ../glib/gdatetime.c:327
msgctxt "abbreviated weekday name"
msgid "Tue"
msgstr "週二"
-#: ../glib/gdatetime.c:333
+#: ../glib/gdatetime.c:329
msgctxt "abbreviated weekday name"
msgid "Wed"
msgstr "週三"
-#: ../glib/gdatetime.c:335
+#: ../glib/gdatetime.c:331
msgctxt "abbreviated weekday name"
msgid "Thu"
msgstr "週四"
-#: ../glib/gdatetime.c:337
+#: ../glib/gdatetime.c:333
msgctxt "abbreviated weekday name"
msgid "Fri"
msgstr "週五"
-#: ../glib/gdatetime.c:339
+#: ../glib/gdatetime.c:335
msgctxt "abbreviated weekday name"
msgid "Sat"
msgstr "週六"
-#: ../glib/gdatetime.c:341
+#: ../glib/gdatetime.c:337
msgctxt "abbreviated weekday name"
msgid "Sun"
msgstr "週日"
+#. Translators: 'before midday' indicator
+#: ../glib/gdatetime.c:354
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "上åˆ"
+
+#. Translators: 'after midday' indicator
+#: ../glib/gdatetime.c:357
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "下åˆ"
+
#: ../glib/gdir.c:155
#, c-format
msgid "Error opening directory “%sâ€: %s"
msgstr "開啟目錄「%sã€æ™‚發生錯誤:%s"
-#: ../glib/gfileutils.c:701 ../glib/gfileutils.c:793
+#: ../glib/gfileutils.c:716 ../glib/gfileutils.c:808
#, 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:718
+#: ../glib/gfileutils.c:733
#, c-format
msgid "Error reading file “%sâ€: %s"
msgstr "讀å–檔案「%sã€æ™‚發生錯誤:%s"
-#: ../glib/gfileutils.c:754
+#: ../glib/gfileutils.c:769
#, c-format
msgid "File “%s†is too large"
msgstr "檔案「%sã€å¤ªéŽå·¨å¤§"
-#: ../glib/gfileutils.c:818
+#: ../glib/gfileutils.c:833
#, c-format
msgid "Failed to read from file “%sâ€: %s"
msgstr "讀å–檔案「%sã€å¤±æ•—:%s"
-#: ../glib/gfileutils.c:866 ../glib/gfileutils.c:938
+#: ../glib/gfileutils.c:881 ../glib/gfileutils.c:953
#, c-format
msgid "Failed to open file “%sâ€: %s"
msgstr "開啟檔案「%sã€å¤±æ•—:%s"
-#: ../glib/gfileutils.c:878
+#: ../glib/gfileutils.c:893
#, c-format
msgid "Failed to get attributes of file “%sâ€: fstat() failed: %s"
msgstr "ç²å–檔案「%sã€çš„屬性失敗:fstat() 失敗:%s"
-#: ../glib/gfileutils.c:908
+#: ../glib/gfileutils.c:923
#, c-format
msgid "Failed to open file “%sâ€: fdopen() failed: %s"
msgstr "開啟檔案「%sã€å¤±æ•—:fdopen() 失敗:%s"
-#: ../glib/gfileutils.c:1007
+#: ../glib/gfileutils.c:1022
#, c-format
msgid "Failed to rename file “%s†to “%sâ€: g_rename() failed: %s"
msgstr "檔案å稱由「%sã€æ”¹ç‚ºã€Œ%sã€å¤±æ•—:g_rename() 失敗:%s"
-#: ../glib/gfileutils.c:1042 ../glib/gfileutils.c:1541
+#: ../glib/gfileutils.c:1057 ../glib/gfileutils.c:1564
#, c-format
msgid "Failed to create file “%sâ€: %s"
msgstr "建立檔案「%sã€å¤±æ•—:%s"
-#: ../glib/gfileutils.c:1069
+#: ../glib/gfileutils.c:1084
#, c-format
msgid "Failed to write file “%sâ€: write() failed: %s"
msgstr "無法寫入檔案「%sã€ï¼šwrite() 失敗:%s"
-#: ../glib/gfileutils.c:1112
+#: ../glib/gfileutils.c:1127
#, c-format
msgid "Failed to write file “%sâ€: fsync() failed: %s"
msgstr "無法寫入檔案「%sã€ï¼šfsync() 失敗:%s"
-#: ../glib/gfileutils.c:1236
+#: ../glib/gfileutils.c:1251
#, c-format
msgid "Existing file “%s†could not be removed: g_unlink() failed: %s"
msgstr "ç¾å­˜æª”案「%sã€ç„¡æ³•ç§»é™¤ï¼šg_unlink() 失敗:%s"
-#: ../glib/gfileutils.c:1507
+#: ../glib/gfileutils.c:1530
#, c-format
msgid "Template “%s†invalid, should not contain a “%sâ€"
msgstr "範本「%sã€ç„¡æ•ˆï¼Œä¸æ‡‰å«æœ‰ã€Œ%sã€"
# (Abel) this is file template for mktemp/mkstemp
-#: ../glib/gfileutils.c:1520
+#: ../glib/gfileutils.c:1543
#, c-format
msgid "Template “%s†doesn’t contain XXXXXX"
msgstr "範本「%sã€æ²’æœ‰åŒ…å« XXXXXX"
-#: ../glib/gfileutils.c:2045
+#: ../glib/gfileutils.c:2105
#, c-format
msgid "Failed to read the symbolic link “%sâ€: %s"
msgstr "讀å–符號連çµã€Œ%sã€å¤±æ•—:%s"
-#: ../glib/giochannel.c:1388
+#: ../glib/giochannel.c:1389
#, c-format
msgid "Could not open converter from “%s†to “%sâ€: %s"
msgstr "無法開啟將「%sã€è½‰æ›è‡³ã€Œ%sã€çš„轉æ›å™¨ï¼š%s"
-#: ../glib/giochannel.c:1733
+#: ../glib/giochannel.c:1734
msgid "Can’t 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:1781 ../glib/giochannel.c:2039
+#: ../glib/giochannel.c:2126
msgid "Leftover unconverted data in read buffer"
msgstr "用來讀å–資料的緩è¡å€ä¸­ä»æœ‰æœªè½‰æ›çš„資料"
-#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938
+#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
msgid "Channel terminates in a partial character"
msgstr "在字元未完整之å‰ï¼Œè¼¸å…¥ç®¡é“已經çµæŸ"
-#: ../glib/giochannel.c:1924
+#: ../glib/giochannel.c:1925
msgid "Can’t 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:788
msgid "Valid key file could not be found in search dirs"
msgstr "在資料目錄中找ä¸åˆ°æœ‰æ•ˆçš„設定éµæª”案"
-#: ../glib/gkeyfile.c:773
+#: ../glib/gkeyfile.c:825
msgid "Not a regular file"
msgstr "ä¸æ˜¯æ­£è¦çš„檔案"
-#: ../glib/gkeyfile.c:1204
+#: ../glib/gkeyfile.c:1270
#, c-format
msgid ""
"Key file contains line “%s†which is not a key-value pair, group, or comment"
msgstr "設定éµæª”案中「%sã€è¡Œä¸¦éžè¨­å®šéµå€¼é…å°ã€ç¾¤çµ„或註解"
-#: ../glib/gkeyfile.c:1261
+#: ../glib/gkeyfile.c:1327
#, c-format
msgid "Invalid group name: %s"
msgstr "無效的群組å稱:%s"
-#: ../glib/gkeyfile.c:1283
+#: ../glib/gkeyfile.c:1349
msgid "Key file does not start with a group"
msgstr "設定éµæª”案並éžä»¥ç¾¤çµ„é–‹é ­"
-#: ../glib/gkeyfile.c:1309
+#: ../glib/gkeyfile.c:1375
#, c-format
msgid "Invalid key name: %s"
msgstr "無效的設定éµå稱:%s"
-#: ../glib/gkeyfile.c:1336
+#: ../glib/gkeyfile.c:1402
#, c-format
msgid "Key file contains unsupported encoding “%sâ€"
msgstr "設定éµæª”案包å«ä¸æ”¯æ´çš„編碼「%sã€"
-#: ../glib/gkeyfile.c:1579 ../glib/gkeyfile.c:1752 ../glib/gkeyfile.c:3130
-#: ../glib/gkeyfile.c:3193 ../glib/gkeyfile.c:3323 ../glib/gkeyfile.c:3453
-#: ../glib/gkeyfile.c:3597 ../glib/gkeyfile.c:3826 ../glib/gkeyfile.c:3893
+#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3206
+#: ../glib/gkeyfile.c:3269 ../glib/gkeyfile.c:3399 ../glib/gkeyfile.c:3529
+#: ../glib/gkeyfile.c:3673 ../glib/gkeyfile.c:3902 ../glib/gkeyfile.c:3969
#, c-format
msgid "Key file does not have group “%sâ€"
msgstr "設定éµæª”案沒有群組「%sã€"
-#: ../glib/gkeyfile.c:1707
+#: ../glib/gkeyfile.c:1773
#, c-format
msgid "Key file does not have key “%s†in group “%sâ€"
msgstr "設定éµæª”案的群組「%2$sã€ä¸­æ²’有設定éµã€Œ%1$sã€"
-#: ../glib/gkeyfile.c:1869 ../glib/gkeyfile.c:1985
+#: ../glib/gkeyfile.c:1935 ../glib/gkeyfile.c:2051
#, c-format
msgid "Key file contains key “%s†with value “%s†which is not UTF-8"
msgstr "設定éµæª”案包å«çš„設定éµã€Œ%sã€(數值為「%sã€) ä¸¦éž UTF-8"
-#: ../glib/gkeyfile.c:1889 ../glib/gkeyfile.c:2005 ../glib/gkeyfile.c:2374
+#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2448
#, c-format
msgid ""
"Key file contains key “%s†which has a value that cannot be interpreted."
msgstr "設定éµæª”案包å«çš„設定éµã€Œ%sã€çš„數值無法解譯。"
-#: ../glib/gkeyfile.c:2591 ../glib/gkeyfile.c:2959
+#: ../glib/gkeyfile.c:2666 ../glib/gkeyfile.c:3035
#, 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:2669 ../glib/gkeyfile.c:2746
+#: ../glib/gkeyfile.c:2744 ../glib/gkeyfile.c:2821
#, 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:4133
+#: ../glib/gkeyfile.c:4209
msgid "Key file contains escape character at end of line"
msgstr "設定éµæª”案在行尾包å«è·³å‡ºå­—å…ƒ"
-#: ../glib/gkeyfile.c:4155
+#: ../glib/gkeyfile.c:4231
#, c-format
msgid "Key file contains invalid escape sequence “%sâ€"
msgstr "設定éµæª”案å«æœ‰ä¸æ­£ç¢ºçš„「跳出字元ã€ã€Œ%sã€"
-#: ../glib/gkeyfile.c:4297
+#: ../glib/gkeyfile.c:4375
#, c-format
msgid "Value “%s†cannot be interpreted as a number."
msgstr "數值「%sã€ä¸èƒ½è¢«è§£è­¯ç‚ºæ•¸å­—。"
-#: ../glib/gkeyfile.c:4311
+#: ../glib/gkeyfile.c:4389
#, c-format
msgid "Integer value “%s†out of range"
msgstr "整數值「%sã€è¶…出範åœ"
-#: ../glib/gkeyfile.c:4344
+#: ../glib/gkeyfile.c:4422
#, c-format
msgid "Value “%s†cannot be interpreted as a float number."
msgstr "數值「%sã€ä¸èƒ½è¢«è§£è­¯ç‚ºæµ®é»žæ•¸ã€‚"
-#: ../glib/gkeyfile.c:4383
+#: ../glib/gkeyfile.c:4461
#, c-format
msgid "Value “%s†cannot be interpreted as a boolean."
msgstr "數值「%sã€ä¸èƒ½è¢«è§£è­¯ç‚ºå¸ƒæž—值。"
@@ -4385,39 +4691,39 @@ msgstr "å°æ‡‰æª”案 %s%s%s%s 失敗:mmap() 失敗:%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:397 ../glib/gmarkup.c:439
#, c-format
msgid "Error on line %d char %d: "
msgstr "第 %d 列第 %d 個字發生錯誤:"
-#: ../glib/gmarkup.c:462 ../glib/gmarkup.c:545
+#: ../glib/gmarkup.c:461 ../glib/gmarkup.c:544
#, c-format
msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
msgstr "å稱中無效的 UTF-8 編碼文字 - ä¸æ˜¯åˆæ³•çš„「%sã€"
-#: ../glib/gmarkup.c:473
+#: ../glib/gmarkup.c:472
#, c-format
msgid "'%s' is not a valid name"
msgstr "「%sã€ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„å稱"
-#: ../glib/gmarkup.c:489
+#: ../glib/gmarkup.c:488
#, c-format
msgid "'%s' is not a valid name: '%c'"
msgstr "「%sã€ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„å稱「%cã€"
-#: ../glib/gmarkup.c:599
+#: ../glib/gmarkup.c:598
#, c-format
msgid "Error on line %d: %s"
msgstr "第 %d 列發生錯誤:%s"
-#: ../glib/gmarkup.c:676
+#: ../glib/gmarkup.c:675
#, c-format
msgid ""
"Failed to parse '%-.*s', which should have been a digit inside a character "
"reference (&#234; for example) - perhaps the digit is too large"
msgstr "無法解æžâ€˜%-.*s’,字元åƒå¼•å…§æ‡‰è©²å«æœ‰æ•¸å­—(例如 &#234;)─ å¯èƒ½æ˜¯æ•¸å­—太大"
-#: ../glib/gmarkup.c:688
+#: ../glib/gmarkup.c:687
msgid ""
"Character reference did not end with a semicolon; most likely you used an "
"ampersand character without intending to start an entity - escape ampersand "
@@ -4426,22 +4732,22 @@ msgstr ""
"å­—å…ƒåƒå¼•çš„çµæŸéƒ¨åˆ†ä¸æ˜¯åˆ†è™Ÿï¼›å¾ˆå¯èƒ½æ‚¨æƒ³ä½¿ç”¨ & 字元但未將它變為實體 ─ è«‹å°‡ & 轉"
"æ›ç‚º &amp;"
-#: ../glib/gmarkup.c:714
+#: ../glib/gmarkup.c:713
#, c-format
msgid "Character reference '%-.*s' does not encode a permitted character"
msgstr "å­—å…ƒåƒå¼•â€˜%-.*s’無法表示任何能接å—çš„å­—å…ƒ"
-#: ../glib/gmarkup.c:752
+#: ../glib/gmarkup.c:751
msgid ""
"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
msgstr "出ç¾ç©ºç™½çš„實體‘&;’;å¯ç”¨çš„實體為:&amp; &quot; &lt; &gt; &apos;"
-#: ../glib/gmarkup.c:760
+#: ../glib/gmarkup.c:759
#, c-format
msgid "Entity name '%-.*s' is not known"
msgstr "實體å稱 '%-.*s' æ„義ä¸æ˜Ž"
-#: ../glib/gmarkup.c:765
+#: ../glib/gmarkup.c:764
msgid ""
"Entity did not end with a semicolon; most likely you used an ampersand "
"character without intending to start an entity - escape ampersand as &amp;"
@@ -4449,31 +4755,31 @@ msgstr ""
"實體的çµæŸéƒ¨åˆ†ä¸æ˜¯åˆ†è™Ÿï¼›å¾ˆå¯èƒ½æ‚¨æƒ³ä½¿ç”¨ & 字元但未將它變為實體 ─ è«‹å°‡ & 轉æ›"
"為 &amp;"
-#: ../glib/gmarkup.c:1171
+#: ../glib/gmarkup.c:1170
msgid "Document must begin with an element (e.g. <book>)"
msgstr "文件開始必須為一元素(例如 <book>)"
-#: ../glib/gmarkup.c:1211
+#: ../glib/gmarkup.c:1210
#, c-format
msgid ""
"'%s' is not a valid character following a '<' character; it may not begin an "
"element name"
msgstr "‘<’字元後的「%sã€ä¸æ˜¯æœ‰æ•ˆçš„字元;這樣ä¸å¯èƒ½æ˜¯å…ƒç´ å稱的開始部份"
-#: ../glib/gmarkup.c:1253
+#: ../glib/gmarkup.c:1252
#, c-format
msgid ""
"Odd character '%s', expected a '>' character to end the empty-element tag "
"'%s'"
msgstr "字元「%sã€åªæœ‰ä¸€åŠï¼Œç©ºå…ƒç´ æ¨™ç±¤ã€Œ%sã€çš„çµå°¾æ‡‰è©²ä»¥â€˜>’字元çµæŸ"
-#: ../glib/gmarkup.c:1334
+#: ../glib/gmarkup.c:1333
#, c-format
msgid ""
"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
msgstr "ä¸å°‹å¸¸çš„字元「%sã€ï¼Œå±¬æ€§å稱「%sã€ï¼ˆå±¬æ–¼å…ƒç´ ã€Œ%sã€ï¼‰å¾Œæ‡‰è©²æ˜¯â€˜=’字元"
-#: ../glib/gmarkup.c:1375
+#: ../glib/gmarkup.c:1374
#, c-format
msgid ""
"Odd character '%s', expected a '>' or '/' character to end the start tag of "
@@ -4483,7 +4789,7 @@ msgstr ""
"ä¸å°‹å¸¸çš„字元「%sã€ï¼Œå…ƒç´ ã€Œ%sã€çš„開始標籤應該以‘>’或‘/’字元終çµï¼Œä¹Ÿå¯ä»¥æ˜¯å±¬"
"性;或許您在屬性å稱中使用了無效的字元"
-#: ../glib/gmarkup.c:1419
+#: ../glib/gmarkup.c:1418
#, c-format
msgid ""
"Odd character '%s', expected an open quote mark after the equals sign when "
@@ -4492,80 +4798,80 @@ msgstr ""
"ä¸å°‹å¸¸çš„字元「%sã€ï¼Œç•¶æŒ‡å®šå±¬æ€§ã€Œ%sã€çš„值(屬於元素「%sã€ï¼‰æ™‚,等號後應該出ç¾"
"開引號"
-#: ../glib/gmarkup.c:1552
+#: ../glib/gmarkup.c:1551
#, c-format
msgid ""
"'%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:1587
#, c-format
msgid ""
"'%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:1598
#, c-format
msgid "Element '%s' was closed, no element is currently open"
msgstr "元素「%sã€å·²é—œé–‰ï¼Œæ²’有開啟中的元素"
-#: ../glib/gmarkup.c:1608
+#: ../glib/gmarkup.c:1607
#, c-format
msgid "Element '%s' was closed, but the currently open element is '%s'"
msgstr "元素「%sã€å·²é—œé–‰ï¼Œä½†é–‹å•Ÿä¸­çš„元素是「%sã€"
-#: ../glib/gmarkup.c:1761
+#: ../glib/gmarkup.c:1760
msgid "Document was empty or contained only whitespace"
msgstr "文件完全空白或åªå«æœ‰ç©ºç™½å­—å…ƒ"
-#: ../glib/gmarkup.c:1775
+#: ../glib/gmarkup.c:1774
msgid "Document ended unexpectedly just after an open angle bracket '<'"
msgstr "文件在尖角括號‘<’後çªç„¶çµ‚æ­¢"
-#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828
+#: ../glib/gmarkup.c:1782 ../glib/gmarkup.c:1827
#, c-format
msgid ""
"Document ended unexpectedly with elements still open - '%s' was the last "
"element opened"
msgstr "在ä»ç„¶æœ‰é–‹å•Ÿä¸­çš„元素時,文件çªç„¶çµæŸ ─「%sã€æ˜¯æœ€å¾Œä¸€å€‹é–‹å•Ÿçš„元素"
-#: ../glib/gmarkup.c:1791
+#: ../glib/gmarkup.c:1790
#, c-format
msgid ""
"Document ended unexpectedly, expected to see a close angle bracket ending "
"the tag <%s/>"
msgstr "文件çªç„¶çµæŸï¼Œæœ¬ä¾†æ‡‰è©²å‡ºç¾ç”¨ä¾†é—œé–‰æ¨™ç±¤ <%s/> 的尖角括號"
-#: ../glib/gmarkup.c:1797
+#: ../glib/gmarkup.c:1796
msgid "Document ended unexpectedly inside an element name"
msgstr "在元素的å稱內,文件çªç„¶çµæŸ"
-#: ../glib/gmarkup.c:1803
+#: ../glib/gmarkup.c:1802
msgid "Document ended unexpectedly inside an attribute name"
msgstr "在屬性å稱內,文件çªç„¶çµæŸ"
-#: ../glib/gmarkup.c:1808
+#: ../glib/gmarkup.c:1807
msgid "Document ended unexpectedly inside an element-opening tag."
msgstr "在元素的開啟標籤內,文件çªç„¶çµæŸ"
-#: ../glib/gmarkup.c:1814
+#: ../glib/gmarkup.c:1813
msgid ""
"Document ended unexpectedly after the equals sign following an attribute "
"name; no attribute value"
msgstr "在屬性å稱的等號後,文件çªç„¶çµæŸï¼›æ²’有屬性值"
-#: ../glib/gmarkup.c:1821
+#: ../glib/gmarkup.c:1820
msgid "Document ended unexpectedly while inside an attribute value"
msgstr "在屬性值內,文件çªç„¶çµæŸ"
-#: ../glib/gmarkup.c:1837
+#: ../glib/gmarkup.c:1836
#, c-format
msgid "Document ended unexpectedly inside the close tag for element '%s'"
msgstr "在元素「%sã€çš„關閉標籤內,文件çªç„¶çµæŸ"
-#: ../glib/gmarkup.c:1843
+#: ../glib/gmarkup.c:1842
msgid "Document ended unexpectedly inside a comment or processing instruction"
msgstr "在註解或處ç†æŒ‡ç¤ºå…§ï¼Œæ–‡ä»¶çªç„¶çµæŸ"
@@ -4628,326 +4934,326 @@ msgstr "缺少 %s çš„åƒæ•¸"
msgid "Unknown option %s"
msgstr "ä¸æ˜Žçš„é¸é … %s"
-#: ../glib/gregex.c:258
+#: ../glib/gregex.c:257
msgid "corrupted object"
msgstr "æ毀的物件"
-#: ../glib/gregex.c:260
+#: ../glib/gregex.c:259
msgid "internal error or corrupted object"
msgstr "內部錯誤或æ毀的物件"
-#: ../glib/gregex.c:262
+#: ../glib/gregex.c:261
msgid "out of memory"
msgstr "記憶體耗盡"
-#: ../glib/gregex.c:267
+#: ../glib/gregex.c:266
msgid "backtracking limit reached"
msgstr "å·²é”回溯上é™"
-#: ../glib/gregex.c:279 ../glib/gregex.c:287
+#: ../glib/gregex.c:278 ../glib/gregex.c:286
msgid "the pattern contains items not supported for partial matching"
msgstr "此模å¼åŒ…å«äº†ä¸æ”¯æ´éƒ¨åˆ†æ¯”å°çš„é …ç›®"
-#: ../glib/gregex.c:281
+#: ../glib/gregex.c:280
msgid "internal error"
msgstr "內部的錯誤"
-#: ../glib/gregex.c:289
+#: ../glib/gregex.c:288
msgid "back references as conditions are not supported for partial matching"
msgstr "部分比å°ä¸æ”¯æ´ä»¥åå‘åƒç…§ç‚ºæ¢ä»¶"
-#: ../glib/gregex.c:298
+#: ../glib/gregex.c:297
msgid "recursion limit reached"
msgstr "å·²é”éžå»»ä¸Šé™"
-#: ../glib/gregex.c:300
+#: ../glib/gregex.c:299
msgid "invalid combination of newline flags"
msgstr "無效的æ›åˆ—旗標組åˆ"
-#: ../glib/gregex.c:302
+#: ../glib/gregex.c:301
msgid "bad offset"
msgstr "錯誤的å移"
-#: ../glib/gregex.c:304
+#: ../glib/gregex.c:303
msgid "short utf8"
msgstr "çŸ­å¼ utf8"
-#: ../glib/gregex.c:306
+#: ../glib/gregex.c:305
msgid "recursion loop"
msgstr "循環廻圈"
-#: ../glib/gregex.c:310
+#: ../glib/gregex.c:309
msgid "unknown error"
msgstr "ä¸æ˜Žçš„錯誤"
-#: ../glib/gregex.c:330
+#: ../glib/gregex.c:329
msgid "\\ at end of pattern"
msgstr "\\ 於模å¼çµå°¾"
-#: ../glib/gregex.c:333
+#: ../glib/gregex.c:332
msgid "\\c at end of pattern"
msgstr "\\c 於模å¼çµå°¾"
-#: ../glib/gregex.c:336
+#: ../glib/gregex.c:335
msgid "unrecognized character following \\"
msgstr "無法辨識的字元接著 \\"
-#: ../glib/gregex.c:339
+#: ../glib/gregex.c:338
msgid "numbers out of order in {} quantifier"
msgstr "{} 裡的數字次åºé¡›å€’了"
-#: ../glib/gregex.c:342
+#: ../glib/gregex.c:341
msgid "number too big in {} quantifier"
msgstr "{} 裡的數字太大了"
-#: ../glib/gregex.c:345
+#: ../glib/gregex.c:344
msgid "missing terminating ] for character class"
msgstr "字元類別缺少çµæŸçš„ ]"
-#: ../glib/gregex.c:348
+#: ../glib/gregex.c:347
msgid "invalid escape sequence in character class"
msgstr "字元類別中無效的跳脫åºåˆ—"
-#: ../glib/gregex.c:351
+#: ../glib/gregex.c:350
msgid "range out of order in character class"
msgstr "字元類別的範åœæ¬¡åºé¡›å€’"
-#: ../glib/gregex.c:354
+#: ../glib/gregex.c:353
msgid "nothing to repeat"
msgstr "沒有æ±è¥¿å¯é‡è¤‡"
-#: ../glib/gregex.c:358
+#: ../glib/gregex.c:357
msgid "unexpected repeat"
msgstr "未é æœŸçš„é‡è¤‡"
-#: ../glib/gregex.c:361
+#: ../glib/gregex.c:360
msgid "unrecognized character after (? or (?-"
msgstr "在 (? 或 (?- 後無法辨識的字元"
-#: ../glib/gregex.c:364
+#: ../glib/gregex.c:363
msgid "POSIX named classes are supported only within a class"
msgstr "POSIX 命å類別åªåœ¨å–®ä¸€é¡žåˆ¥ä¸­æ”¯æ´"
-#: ../glib/gregex.c:367
+#: ../glib/gregex.c:366
msgid "missing terminating )"
msgstr "缺少çµæŸçš„ )"
-#: ../glib/gregex.c:370
+#: ../glib/gregex.c:369
msgid "reference to non-existent subpattern"
msgstr "åƒç…§ä¸å­˜åœ¨çš„å­æ¨¡å¼"
-#: ../glib/gregex.c:373
+#: ../glib/gregex.c:372
msgid "missing ) after comment"
msgstr "註解後缺少 )"
-#: ../glib/gregex.c:376
+#: ../glib/gregex.c:375
msgid "regular expression is too large"
msgstr "æ­£è¦è¡¨ç¤ºå¼å¤ªå¤§"
-#: ../glib/gregex.c:379
+#: ../glib/gregex.c:378
msgid "failed to get memory"
msgstr "å–得記憶體失敗"
-#: ../glib/gregex.c:383
+#: ../glib/gregex.c:382
msgid ") without opening ("
msgstr ") 沒有開頭的 ("
-#: ../glib/gregex.c:387
+#: ../glib/gregex.c:386
msgid "code overflow"
msgstr "程å¼ç¢¼æº¢æµ"
-#: ../glib/gregex.c:391
+#: ../glib/gregex.c:390
msgid "unrecognized character after (?<"
msgstr "在 (?< 後有無法辨識的字元"
-#: ../glib/gregex.c:394
+#: ../glib/gregex.c:393
msgid "lookbehind assertion is not fixed length"
msgstr "lookbehind 判斷æ示(assertion) ä¸æ˜¯å›ºå®šçš„長度"
-#: ../glib/gregex.c:397
+#: ../glib/gregex.c:396
msgid "malformed number or name after (?("
msgstr "(?( 之後有格å¼ä¸æ­£ç¢ºçš„數字或å稱"
-#: ../glib/gregex.c:400
+#: ../glib/gregex.c:399
msgid "conditional group contains more than two branches"
msgstr "æ¢ä»¶å¼ç¾¤çµ„包å«äº†å…©å€‹ä»¥ä¸Šçš„分支"
-#: ../glib/gregex.c:403
+#: ../glib/gregex.c:402
msgid "assertion expected after (?("
msgstr "(?( 後應該有判斷æ示(assertion)"
#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
#. * sequences here, '(?-54' would be an example for the second group.
#.
-#: ../glib/gregex.c:410
+#: ../glib/gregex.c:409
msgid "(?R or (?[+-]digits must be followed by )"
msgstr "(?R 或 (?[+-]數字必須接著 )"
-#: ../glib/gregex.c:413
+#: ../glib/gregex.c:412
msgid "unknown POSIX class name"
msgstr "ä¸æ˜Žçš„ POSIX 類別å稱"
-#: ../glib/gregex.c:416
+#: ../glib/gregex.c:415
msgid "POSIX collating elements are not supported"
msgstr "ä¸æ”¯æ´ POSIX æ•´ç†å…ƒä»¶"
-#: ../glib/gregex.c:419
+#: ../glib/gregex.c:418
msgid "character value in \\x{...} sequence is too large"
msgstr "\\x{…} åºåˆ—中的字元值太大"
-#: ../glib/gregex.c:422
+#: ../glib/gregex.c:421
msgid "invalid condition (?(0)"
msgstr "無效的æ¢ä»¶ (?(0)"
-#: ../glib/gregex.c:425
+#: ../glib/gregex.c:424
msgid "\\C not allowed in lookbehind assertion"
msgstr "在 lookbehind 判斷æ示(assertion) 中ä¸æ”¯æ´\\C"
-#: ../glib/gregex.c:432
+#: ../glib/gregex.c:431
msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
msgstr "escapes \\L, \\l, \\N{name}, \\U, å’Œ \\u ä¸æ”¯æ´"
-#: ../glib/gregex.c:435
+#: ../glib/gregex.c:434
msgid "recursive call could loop indefinitely"
msgstr "éžå»»å‘¼å«å¯èƒ½è®Šæˆç„¡é™å»»åœˆ"
-#: ../glib/gregex.c:439
+#: ../glib/gregex.c:438
msgid "unrecognized character after (?P"
msgstr "在 (?P 後有無法辨識的字元"
-#: ../glib/gregex.c:442
+#: ../glib/gregex.c:441
msgid "missing terminator in subpattern name"
msgstr "å­æ¨¡å¼å稱中缺少çµæŸå­—å…ƒ"
-#: ../glib/gregex.c:445
+#: ../glib/gregex.c:444
msgid "two named subpatterns have the same name"
msgstr "兩個命åçš„å­æ¨¡å¼å…·æœ‰ç›¸åŒçš„å稱"
-#: ../glib/gregex.c:448
+#: ../glib/gregex.c:447
msgid "malformed \\P or \\p sequence"
msgstr "æ ¼å¼ä¸æ­£ç¢ºçš„ \\P 或 \\p åºåˆ—"
-#: ../glib/gregex.c:451
+#: ../glib/gregex.c:450
msgid "unknown property name after \\P or \\p"
msgstr "在 \\P 或 \\p 後有ä¸æ˜Žçš„屬性å稱"
-#: ../glib/gregex.c:454
+#: ../glib/gregex.c:453
msgid "subpattern name is too long (maximum 32 characters)"
msgstr "å­æ¨¡å¼å稱太長(最多 32 字元)"
-#: ../glib/gregex.c:457
+#: ../glib/gregex.c:456
msgid "too many named subpatterns (maximum 10,000)"
msgstr "太多命åçš„å­æ¨¡å¼ï¼ˆæœ€å¤§å€¼ 10,000)"
-#: ../glib/gregex.c:460
+#: ../glib/gregex.c:459
msgid "octal value is greater than \\377"
msgstr "8 進ä½å€¼å¤§æ–¼ \\377"
-#: ../glib/gregex.c:464
+#: ../glib/gregex.c:463
msgid "overran compiling workspace"
msgstr "編譯工作å€è¶…出範åœ"
-#: ../glib/gregex.c:468
+#: ../glib/gregex.c:467
msgid "previously-checked referenced subpattern not found"
msgstr "找ä¸åˆ°é å…ˆå‹¾é¸çš„åƒç…§å­å­—串"
-#: ../glib/gregex.c:471
+#: ../glib/gregex.c:470
msgid "DEFINE group contains more than one branch"
msgstr "DEFINE 群組包å«ä¸€å€‹ä»¥ä¸Šçš„分支"
-#: ../glib/gregex.c:474
+#: ../glib/gregex.c:473
msgid "inconsistent NEWLINE options"
msgstr "ä¸ä¸€è‡´çš„ NEWLINE é¸é …"
-#: ../glib/gregex.c:477
+#: ../glib/gregex.c:476
msgid ""
"\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
"or by a plain number"
msgstr "\\g 並未隨著具有大括弧ã€è§’括弧或引號的å稱或數字或純文字數字"
-#: ../glib/gregex.c:481
+#: ../glib/gregex.c:480
msgid "a numbered reference must not be zero"
msgstr "編號å¼åƒç…§å¿…é ˆä¸ç‚ºé›¶"
-#: ../glib/gregex.c:484
+#: ../glib/gregex.c:483
msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
msgstr "引數ä¸å…許用於 (*ACCEPT)ã€(*FAIL) 或 (*COMMIT)"
-#: ../glib/gregex.c:487
+#: ../glib/gregex.c:486
msgid "(*VERB) not recognized"
msgstr "(*VERB) 無法辨識"
-#: ../glib/gregex.c:490
+#: ../glib/gregex.c:489
msgid "number is too big"
msgstr "數字太大"
-#: ../glib/gregex.c:493
+#: ../glib/gregex.c:492
msgid "missing subpattern name after (?&"
msgstr "(?& 後缺少å­æ¨£å¼"
-#: ../glib/gregex.c:496
+#: ../glib/gregex.c:495
msgid "digit expected after (?+"
msgstr "(?+ 後應該有數字"
-#: ../glib/gregex.c:499
+#: ../glib/gregex.c:498
msgid "] is an invalid data character in JavaScript compatibility mode"
msgstr "] 在 JavaScript 相容性模å¼ä¸­æ˜¯ç„¡æ•ˆçš„資料字元"
-#: ../glib/gregex.c:502
+#: ../glib/gregex.c:501
msgid "different names for subpatterns of the same number are not allowed"
msgstr "ä¸å…許åŒæ¨£ç·¨è™Ÿçš„å­æ¨£å¼æœ‰ä¸åŒçš„å稱"
-#: ../glib/gregex.c:505
+#: ../glib/gregex.c:504
msgid "(*MARK) must have an argument"
msgstr "(*MARK) 需è¦ä¸€å€‹å¼•æ•¸"
-#: ../glib/gregex.c:508
+#: ../glib/gregex.c:507
msgid "\\c must be followed by an ASCII character"
msgstr "\\c 必須接著 ASCII 字元"
-#: ../glib/gregex.c:511
+#: ../glib/gregex.c:510
msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
msgstr "\\k 並未隨著具有大括弧ã€è§’括弧或引號的å稱"
-#: ../glib/gregex.c:514
+#: ../glib/gregex.c:513
msgid "\\N is not supported in a class"
msgstr "\\N 在類別中ä¸æ”¯æ´"
-#: ../glib/gregex.c:517
+#: ../glib/gregex.c:516
msgid "too many forward references"
msgstr "有太多的å‘å‰åƒç…§"
-#: ../glib/gregex.c:520
+#: ../glib/gregex.c:519
msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
msgstr "å稱在 (*MARK)ã€(*PRUNE)ã€(*SKIP) 或 (*THEN)"
-#: ../glib/gregex.c:523
+#: ../glib/gregex.c:522
msgid "character value in \\u.... sequence is too large"
msgstr "\\u.... åºåˆ—中的字元值太大"
-#: ../glib/gregex.c:746 ../glib/gregex.c:1977
+#: ../glib/gregex.c:745 ../glib/gregex.c:1977
#, c-format
msgid "Error while matching regular expression %s: %s"
msgstr "比å°æ­£è¦è¡¨ç¤ºå¼ %s 發生錯誤:%s"
-#: ../glib/gregex.c:1317
+#: ../glib/gregex.c:1316
msgid "PCRE library is compiled without UTF8 support"
msgstr "PCRE 程å¼åº«ä¸¦æœªç·¨è­¯å° UTF8 的支æ´"
-#: ../glib/gregex.c:1321
+#: ../glib/gregex.c:1320
msgid "PCRE library is compiled without UTF8 properties support"
msgstr "PCRE 程å¼åº«ä¸¦æœªç·¨è­¯å° UTF8 屬性的支æ´"
-#: ../glib/gregex.c:1329
+#: ../glib/gregex.c:1328
msgid "PCRE library is compiled with incompatible options"
msgstr "PCRE 程å¼åº«ä¸¦æœªç·¨è­¯ä¸ç›¸å®¹çš„é¸é …"
-#: ../glib/gregex.c:1358
+#: ../glib/gregex.c:1357
#, c-format
msgid "Error while optimizing regular expression %s: %s"
msgstr "最佳化正è¦è¡¨ç¤ºå¼ %s 時發生錯誤:%s"
-#: ../glib/gregex.c:1438
+#: ../glib/gregex.c:1437
#, c-format
msgid "Error while compiling regular expression %s at char %d: %s"
msgstr "編譯正è¦è¡¨ç¤ºå¼ %s 時於第 %d 個字發生錯誤:%s"
@@ -4993,250 +5299,402 @@ msgstr "ä¸æ˜Žçš„跳脫åºåˆ—"
msgid "Error while parsing replacement text “%s†at char %lu: %s"
msgstr "當解æžæ–¼å­—å…ƒ %2$lu çš„å–代文字「%1$sã€æ™‚發生錯誤:%3$s"
-#: ../glib/gshell.c:96
+#: ../glib/gshell.c:94
msgid "Quoted text doesn’t begin with a quotation mark"
msgstr "應該用引號括起來的文字ä¸æ˜¯ä»¥æ‹¬è™Ÿç‚ºé–‹å§‹"
-#: ../glib/gshell.c:186
+#: ../glib/gshell.c:184
msgid "Unmatched quotation mark in command line or other shell-quoted text"
msgstr "指令列或其它標為指令的字串內有ä¸å°ç¨±çš„引號"
-#: ../glib/gshell.c:582
+#: ../glib/gshell.c:580
#, c-format
msgid "Text ended just after a “\\†character. (The text was “%sâ€)"
msgstr "文字在「\\ã€å­—元後就終止了。(文字為「%sã€)"
-#: ../glib/gshell.c:589
+#: ../glib/gshell.c:587
#, c-format
msgid "Text ended before matching quote was found for %c. (The text was “%sâ€)"
msgstr "字串完çµå‰ä»æ²’有å°æ‡‰æ–¼ %c 的引號 (字串為「%sã€)"
-#: ../glib/gshell.c:601
+#: ../glib/gshell.c:599
msgid "Text was empty (or contained only whitespace)"
msgstr "文字是空白的(或åªå«æœ‰ç©ºç™½å­—元)"
-#: ../glib/gspawn.c:209
+#: ../glib/gspawn.c:253
#, c-format
msgid "Failed to read data from child process (%s)"
msgstr "無法從副進程讀å–資料 (%s)"
-#: ../glib/gspawn.c:353
+#: ../glib/gspawn.c:401
#, c-format
msgid "Unexpected error in select() reading data from a child process (%s)"
msgstr "當 select() 從å­ç¨‹åºè®€å–資料時發生未é æœŸçš„錯誤 (%s)"
-#: ../glib/gspawn.c:438
+#: ../glib/gspawn.c:486
#, c-format
msgid "Unexpected error in waitpid() (%s)"
msgstr "waitpid() 發生未é æœŸçš„錯誤 (%s)"
-#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233
+#: ../glib/gspawn.c:897 ../glib/gspawn-win32.c:1231
#, c-format
msgid "Child process exited with code %ld"
msgstr "å­ç¨‹åºä»¥ä»£ç¢¼ %ld çµæŸ"
-#: ../glib/gspawn.c:852
+#: ../glib/gspawn.c:905
#, c-format
msgid "Child process killed by signal %ld"
msgstr "å­ç¨‹åºè¢«ä¿¡è™Ÿ %ld 中止"
-#: ../glib/gspawn.c:859
+#: ../glib/gspawn.c:912
#, c-format
msgid "Child process stopped by signal %ld"
msgstr "å­ç¨‹åºè¢«ä¿¡è™Ÿ %ld åœæ­¢"
-#: ../glib/gspawn.c:866
+#: ../glib/gspawn.c:919
#, 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:1324 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
#, c-format
msgid "Failed to read from child pipe (%s)"
msgstr "無法從管é“讀å–資料 (%s)"
-#: ../glib/gspawn.c:1341
+#: ../glib/gspawn.c:1394
#, c-format
msgid "Failed to fork (%s)"
msgstr "無法è¡ç”Ÿé€²ç¨‹ (%s)"
-#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370
+#: ../glib/gspawn.c:1543 ../glib/gspawn-win32.c:368
#, c-format
msgid "Failed to change to directory “%s†(%s)"
msgstr "無法進入目錄「%sã€(%s)"
-#: ../glib/gspawn.c:1500
+#: ../glib/gspawn.c:1553
#, c-format
msgid "Failed to execute child process “%s†(%s)"
msgstr "無法執行副程åºã€Œ%sã€(%s)"
-#: ../glib/gspawn.c:1510
+#: ../glib/gspawn.c:1563
#, c-format
msgid "Failed to redirect output or input of child process (%s)"
msgstr "無法將副進程的輸出或輸入é‡æ–°å°Žå‘ (%s)"
-#: ../glib/gspawn.c:1519
+#: ../glib/gspawn.c:1572
#, c-format
msgid "Failed to fork child process (%s)"
msgstr "無法è¡ç”Ÿå‰¯é€²ç¨‹ (%s)"
-#: ../glib/gspawn.c:1527
+#: ../glib/gspawn.c:1580
#, c-format
msgid "Unknown error executing child process “%sâ€"
msgstr "執行副程åºã€Œ%sã€æ™‚發生ä¸æ˜Žçš„錯誤"
-#: ../glib/gspawn.c:1551
+#: ../glib/gspawn.c:1604
#, c-format
msgid "Failed to read enough data from child pid pipe (%s)"
msgstr "無法從 child pid pipe 讀å–足夠的資料 (%s)"
-#: ../glib/gspawn-win32.c:283
+#: ../glib/gspawn-win32.c:281
msgid "Failed to read data from child process"
msgstr "無法從副進程讀å–資料"
-#: ../glib/gspawn-win32.c:300
+#: ../glib/gspawn-win32.c:298
#, 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:374 ../glib/gspawn-win32.c:493
#, c-format
msgid "Failed to execute child process (%s)"
msgstr "無法執行副進程 (%s)"
-#: ../glib/gspawn-win32.c:445
+#: ../glib/gspawn-win32.c:443
#, 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:453 ../glib/gspawn-win32.c:720
#, 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:464 ../glib/gspawn-win32.c:735
#, c-format
msgid "Invalid string in environment: %s"
msgstr "環境變數中的字串無效:%s"
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278
+#: ../glib/gspawn-win32.c:716
#, c-format
msgid "Invalid working directory: %s"
msgstr "無效的工作目錄:%s"
-#: ../glib/gspawn-win32.c:783
+#: ../glib/gspawn-win32.c:781
#, c-format
msgid "Failed to execute helper program (%s)"
msgstr "無法執行å”åŠ©ç¨‹å¼ (%s)"
-#: ../glib/gspawn-win32.c:997
+#: ../glib/gspawn-win32.c:995
msgid ""
"Unexpected error in g_io_channel_win32_poll() reading data from a child "
"process"
msgstr "當 g_io_channel_win32_poll() 從副進程讀å–資料時發生無法é è¨ˆçš„錯誤"
-#: ../glib/gutf8.c:797
+#: ../glib/gstrfuncs.c:3247 ../glib/gstrfuncs.c:3348
+msgid "Empty string is not a number"
+msgstr ""
+
+#: ../glib/gstrfuncs.c:3271
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid name"
+msgid "“%s†is not a signed number"
+msgstr "「%sã€ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„å稱"
+
+#: ../glib/gstrfuncs.c:3281 ../glib/gstrfuncs.c:3384
+#, c-format
+msgid "Number “%s†is out of bounds [%s, %s]"
+msgstr ""
+
+#: ../glib/gstrfuncs.c:3374
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid name"
+msgid "“%s†is not an unsigned number"
+msgstr "「%sã€ä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„å稱"
+
+#: ../glib/gutf8.c:808
msgid "Failed to allocate memory"
msgstr "é…置記憶體失敗"
-#: ../glib/gutf8.c:930
+#: ../glib/gutf8.c:941
msgid "Character out of range for UTF-8"
msgstr "å­—å…ƒä¸åœ¨ UTF-8 範åœä¹‹å…§"
-#: ../glib/gutf8.c:1031 ../glib/gutf8.c:1040 ../glib/gutf8.c:1170
-#: ../glib/gutf8.c:1179 ../glib/gutf8.c:1318 ../glib/gutf8.c:1415
+#: ../glib/gutf8.c:1042 ../glib/gutf8.c:1051 ../glib/gutf8.c:1181
+#: ../glib/gutf8.c:1190 ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
msgid "Invalid sequence in conversion input"
msgstr "轉æ›è¼¸å…¥è³‡æ–™æ™‚出ç¾ç„¡æ•ˆçš„字元次åº"
-#: ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
+#: ../glib/gutf8.c:1340 ../glib/gutf8.c:1437
msgid "Character out of range for UTF-16"
msgstr "å­—å…ƒä¸åœ¨ UTF-16 範åœä¹‹å…§"
-#: ../glib/gutils.c:2139 ../glib/gutils.c:2166 ../glib/gutils.c:2272
+#: ../glib/gutils.c:2229
#, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u ä½å…ƒçµ„"
+msgid "%.1f kB"
+msgstr "%.1f kB"
+
+#: ../glib/gutils.c:2230 ../glib/gutils.c:2436
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
+
+#: ../glib/gutils.c:2231 ../glib/gutils.c:2441
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
+
+#: ../glib/gutils.c:2232 ../glib/gutils.c:2446
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
+
+#: ../glib/gutils.c:2233 ../glib/gutils.c:2451
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
+
+#: ../glib/gutils.c:2234 ../glib/gutils.c:2456
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
-#: ../glib/gutils.c:2145
+#: ../glib/gutils.c:2237
#, c-format
msgid "%.1f KiB"
msgstr "%.1f KiB"
-#: ../glib/gutils.c:2147
+#: ../glib/gutils.c:2238
#, c-format
msgid "%.1f MiB"
msgstr "%.1f MiB"
-#: ../glib/gutils.c:2150
+#: ../glib/gutils.c:2239
#, c-format
msgid "%.1f GiB"
msgstr "%.1f GiB"
-#: ../glib/gutils.c:2153
+#: ../glib/gutils.c:2240
#, c-format
msgid "%.1f TiB"
msgstr "%.1f TiB"
-#: ../glib/gutils.c:2156
+#: ../glib/gutils.c:2241
#, c-format
msgid "%.1f PiB"
msgstr "%.1f PiB"
-#: ../glib/gutils.c:2159
+#: ../glib/gutils.c:2242
#, c-format
msgid "%.1f EiB"
msgstr "%.1f EiB"
-#: ../glib/gutils.c:2172
-#, c-format
-msgid "%.1f kB"
+#: ../glib/gutils.c:2245
+#, fuzzy, c-format
+#| msgid "%.1f kB"
+msgid "%.1f kb"
msgstr "%.1f kB"
-#: ../glib/gutils.c:2175 ../glib/gutils.c:2290
-#, c-format
-msgid "%.1f MB"
+#: ../glib/gutils.c:2246
+#, fuzzy, c-format
+#| msgid "%.1f MB"
+msgid "%.1f Mb"
msgstr "%.1f MB"
-#: ../glib/gutils.c:2178 ../glib/gutils.c:2295
-#, c-format
-msgid "%.1f GB"
+#: ../glib/gutils.c:2247
+#, fuzzy, c-format
+#| msgid "%.1f GB"
+msgid "%.1f Gb"
msgstr "%.1f GB"
-#: ../glib/gutils.c:2180 ../glib/gutils.c:2300
-#, c-format
-msgid "%.1f TB"
+#: ../glib/gutils.c:2248
+#, fuzzy, c-format
+#| msgid "%.1f TB"
+msgid "%.1f Tb"
msgstr "%.1f TB"
-#: ../glib/gutils.c:2183 ../glib/gutils.c:2305
-#, c-format
-msgid "%.1f PB"
+#: ../glib/gutils.c:2249
+#, fuzzy, c-format
+#| msgid "%.1f PB"
+msgid "%.1f Pb"
msgstr "%.1f PB"
-#: ../glib/gutils.c:2186 ../glib/gutils.c:2310
-#, c-format
-msgid "%.1f EB"
+#: ../glib/gutils.c:2250
+#, fuzzy, c-format
+#| msgid "%.1f EB"
+msgid "%.1f Eb"
msgstr "%.1f EB"
+#: ../glib/gutils.c:2253
+#, fuzzy, c-format
+#| msgid "%.1f KiB"
+msgid "%.1f Kib"
+msgstr "%.1f KiB"
+
+#: ../glib/gutils.c:2254
+#, fuzzy, c-format
+#| msgid "%.1f MiB"
+msgid "%.1f Mib"
+msgstr "%.1f MiB"
+
+#: ../glib/gutils.c:2255
+#, fuzzy, c-format
+#| msgid "%.1f GiB"
+msgid "%.1f Gib"
+msgstr "%.1f GiB"
+
+#: ../glib/gutils.c:2256
+#, fuzzy, c-format
+#| msgid "%.1f TiB"
+msgid "%.1f Tib"
+msgstr "%.1f TiB"
+
+#: ../glib/gutils.c:2257
+#, fuzzy, c-format
+#| msgid "%.1f PiB"
+msgid "%.1f Pib"
+msgstr "%.1f PiB"
+
+#: ../glib/gutils.c:2258
+#, fuzzy, c-format
+#| msgid "%.1f EiB"
+msgid "%.1f Eib"
+msgstr "%.1f EiB"
+
+#: ../glib/gutils.c:2292 ../glib/gutils.c:2418
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u ä½å…ƒçµ„"
+
+#: ../glib/gutils.c:2296
+#, fuzzy, c-format
+#| msgid "%u byte"
+#| msgid_plural "%u bytes"
+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:2223
+#: ../glib/gutils.c:2363
#, 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:2368
+#, fuzzy, c-format
+#| msgid "%s byte"
+#| msgid_plural "%s bytes"
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s ä½å…ƒçµ„"
+
#. 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:2285
+#: ../glib/gutils.c:2431
#, c-format
msgid "%.1f KB"
msgstr "%.1f KB"
+#~ msgid "No such interface"
+#~ msgstr "沒有這個介é¢"
+
+#~ msgid ""
+#~ "Message has %d file descriptors but the header field indicates %d file "
+#~ "descriptors"
+#~ msgstr "訊æ¯æœ‰ %d 檔案æ述符但標頭欄ä½è¡¨ç¤ºæœ‰ %d 檔案æ述符"
+
+#~ msgid "Error: signal not specified.\n"
+#~ msgstr "錯誤:尚未指定信號。\n"
+
+#~ msgid "Error: signal must be the fully-qualified name.\n"
+#~ msgstr "錯誤:信號必須為完全åˆè¦å®šçš„å稱。\n"
+
+#~ msgid "No files given"
+#~ msgstr "尚未指定檔案"
+
+#~ msgid "Error getting writable attributes: %s\n"
+#~ msgstr "å–å¾—å¯å¯«å…¥å±¬æ€§æ™‚發生錯誤:%s\n"
+
+#~ msgid "Error mounting location: %s\n"
+#~ msgstr "掛載ä½ç½®æ™‚發生錯誤: %s\n"
+
+#~ msgid "Error unmounting mount: %s\n"
+#~ msgstr "å¸è¼‰æ™‚發生錯誤: %s\n"
+
+#~ msgid "Error finding enclosing mount: %s\n"
+#~ msgstr "尋找å°è£æŽ›è¼‰ç™¼ç”ŸéŒ¯èª¤ï¼š%s\n"
+
+#~ msgid "Error ejecting mount: %s\n"
+#~ msgstr "退出掛載時發生錯誤:%s\n"
+
+#~ msgid "Error mounting %s: %s\n"
+#~ msgstr "掛載 %s 時發生錯誤:%s\n"
+
+#~ msgid "No files to open"
+#~ msgstr "沒有檔案å¯é–‹å•Ÿ"
+
+#~ msgid "No files to delete"
+#~ msgstr "沒有è¦åˆªé™¤çš„檔案"
+
+#~ msgid "Error setting attribute: %s\n"
+#~ msgstr "設定屬性時發生錯誤:%s\n"
+
#~ msgid "No locations gives"
#~ msgstr "未æä¾›ä½ç½®"