diff options
author | Hyunjee Kim <hj0426.kim@samsung.com> | 2019-12-03 09:48:48 +0900 |
---|---|---|
committer | Hyunjee Kim <hj0426.kim@samsung.com> | 2019-12-03 09:48:48 +0900 |
commit | 4f8ba849e7e6cc8e2096d03b99438e7700ab1f54 (patch) | |
tree | 3f5bb5c7d36e8ec6222eeffe88465fdcf81abac6 | |
parent | 341683cfae94bb8234f60972c4c022bf95f3c577 (diff) | |
download | glib-4f8ba849e7e6cc8e2096d03b99438e7700ab1f54.tar.gz glib-4f8ba849e7e6cc8e2096d03b99438e7700ab1f54.tar.bz2 glib-4f8ba849e7e6cc8e2096d03b99438e7700ab1f54.zip |
Imported Upstream version 2.55.2
88 files changed, 8042 insertions, 5430 deletions
@@ -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">#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, /*< underscore_name=gnome_vfs_uri_hide_options >*/. +function. For instance, <literal>/*< underscore_name=gnome_vfs_uri_hide_options >*/</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 (¶mv[0], %sTYPE_%s);\n' - ' g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT);\n' - ' g_value_set_variant (¶mv[n], child);\n' - ' n++;\n' - ' }\n' - ' else\n' - ' g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[0], %sTYPE_%s);\n' + ' g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT);\n' + ' g_value_set_variant (¶mv[n], child);\n' + ' n++;\n' + ' }\n' + ' else\n' + ' g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], %sTYPE_%s);\n' - ' g_value_set_object (¶mv[n++], skeleton);\n' - ' g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n' - ' g_value_set_object (¶mv[n++], invocation);\n' - ' if (info->pass_fdlist)\n' - ' {\n' - '#ifdef G_OS_UNIX\n' - ' g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST);\n' - ' g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT);\n' - ' g_value_set_variant (¶mv[n], child);\n' - ' n++;\n' - ' }\n' - ' else\n' - ' g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], %sTYPE_%s);\n' + ' g_value_set_object (¶mv[n++], skeleton);\n' + ' g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION);\n' + ' g_value_set_object (¶mv[n++], invocation);\n' + ' if (info->pass_fdlist)\n' + ' {\n' + '#ifdef G_OS_UNIX\n' + ' g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST);\n' + ' g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT);\n' + ' g_value_set_variant (¶mv[n], child);\n' + ' n++;\n' + ' }\n' + ' else\n' + ' g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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), @@ -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ó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) @@ -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" @@ -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" - @@ -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" @@ -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 (ê for example) - perhaps the digit is too large" msgstr "無法解æžâ€˜%-.*s’,å—å…ƒåƒå¼•å…§æ‡‰è©²å«æœ‰æ•¸å—(例如 ê)─ å¯èƒ½æ˜¯æ•¸å—太大" -#: ../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 "" "å—å…ƒåƒå¼•çš„çµæŸéƒ¨åˆ†ä¸æ˜¯åˆ†è™Ÿï¼›å¾ˆå¯èƒ½æ‚¨æƒ³ä½¿ç”¨ & å—元但未將它變為實體 ─ è«‹å°‡ & 轉" "æ›ç‚º &" -#: ../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: & " < > '" msgstr "出ç¾ç©ºç™½çš„實體‘&;’;å¯ç”¨çš„實體為:& " < > '" -#: ../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 &" @@ -4449,31 +4755,31 @@ msgstr "" "實體的çµæŸéƒ¨åˆ†ä¸æ˜¯åˆ†è™Ÿï¼›å¾ˆå¯èƒ½æ‚¨æƒ³ä½¿ç”¨ & å—元但未將它變為實體 ─ è«‹å°‡ & 轉æ›" "為 &" -#: ../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 "未æä¾›ä½ç½®" |