+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
==================================
/* 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
/* 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 */
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)])
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.
glib_pid_type=int
glib_pid_format='i'
glib_pollfd_format='%d'
+ glib_dir_separator='/'
+ glib_searchpath_separator=':'
;;
esac
case $host in
[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>
],[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)
#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__ */
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\""
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
<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>
<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>
#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
<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>
<literal>NAME</literal> is a place-holder for the interface
name, e.g. <literal>net.Corp.FooBar</literal> and so on.
</para>
+ <para>
+ Pass <option>--output-directory</option> to specify the directory
+ to put the output files in. By default the current directory
+ will be used.
+ </para>
</listitem>
</varlistentry>
</varlistentry>
<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>
<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>
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
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
</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>
<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>
<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>
<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>
<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>
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>
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>
<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>
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.
gwin32outputstream.c \
gwin32outputstream.h \
gwin32networking.h \
+ gwin32networkmonitor.c \
+ gwin32networkmonitor.h \
$(NULL)
win32_more_sources_for_vcproj = \
* 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,
* 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,
* 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,
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,
# -*- 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
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'):
# 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)
# 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)
# 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
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:
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')
# ---
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')
# ---
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'
' *\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'
' *\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'
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'
' *\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.'
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'
' *\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':
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')
# ----------------------------------------------------------------------------------------------------
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'
' *\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'
' *\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:
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'
' *\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')
# ---------------------------------------------------------------------------------------------------
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'
' *\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'
' *\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'
' *\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')
# ---------------------------------------------------------------------------------------------------
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'
' *\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'
' *\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'
' *\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'
' *\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
# 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'
' *\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'
' * 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'
' * 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'
' *\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'
' *\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'
' *\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'
' * 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'
'}\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'
' * 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'
' *\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'
' * 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'
' *\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'
' *\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'
' *\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'
' *\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'
' *\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')
# ---------------------------------------------------------------------------------------------------
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'
# ---------------------------------------------------------------------------------------------------
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'
' * 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)
if self.generate_objmanager:
self.generate_object()
self.generate_object_manager_client()
-
- self.generate_outro()
# ----------------------------------------------------------------------------------------------------
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):
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'%())
# -*- 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
#
# 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:
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
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)
# Author: David Zeuthen <davidz@redhat.com>
from . import utils
+from .utils import print_error
class Annotation:
def __init__(self, key, value):
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
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
import xml.parsers.expat
from . import dbustypes
+from .utils import print_error
class DBusXMLParser:
STATE_TOP = 'top'
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
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)
# 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 = ''
* 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);
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,
* @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
*
* 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.:
* gboolean incoming,
* gpointer user_data)
* {
- * /<!-- -->* inspect @message *<!-- -->/
+ * // inspect @message
* return message;
* }
* ]|
*
* 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;
* }
*
* 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.
*
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;
* 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
* 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
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
* 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
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
* 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.
*
* 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.
*
#ifdef G_PLATFORM_WIN32
#include <windows.h>
+extern GType _g_win32_network_monitor_get_type (void);
static HMODULE gio_dll = NULL;
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);
_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;
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
*/
/* 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;
{
if (!(g_ascii_isxdigit (p[0]) ||
g_ascii_isxdigit (p[1])))
- return FALSE;
+ goto error;
p++;
strchr (G_URI_OTHER_UNRESERVED, c) ||
strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c) ||
c == ':'))
- return FALSE;
+ goto error;
}
if (userinfo)
strchr (G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, c) ||
c == ':' ||
c == '.'))
- goto error;
+ goto error;
}
if (host)
{
if (!(g_ascii_isxdigit (p[0]) ||
g_ascii_isxdigit (p[1])))
- goto error;
+ goto error;
p++;
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)
break;
if (!g_ascii_isdigit (c))
- goto error;
+ goto error;
tmp = (tmp * 10) + (c - '0');
*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);
*userinfo = NULL;
}
+ g_free (ascii_uri);
+
return FALSE;
}
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;
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,
/**
* 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
*/
GTypeInterface g_iface;
void (*network_changed) (GNetworkMonitor *monitor,
- gboolean available);
+ gboolean network_available);
gboolean (*can_reach) (GNetworkMonitor *monitor,
GSocketConnectable *connectable,
* 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,
{
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;
}
/**
* 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).
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)
{
#include "gasyncresult.h"
#include "gcancellable.h"
+#include "gtask.h"
#include "giomodule.h"
#include "giomodule-priv.h"
+#include "gnetworkingprivate.h"
/**
* SECTION:gproxyresolver
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);
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);
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);
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)->
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)->
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);
}
/**
* 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
/**
* 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
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];
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://";
* GSocketAddressEnumerator:
*
* Enumerator type for objects that contain or generate
- * #GSocketAddress<!-- -->es.
+ * #GSocketAddress instances.
*/
typedef struct _GSocketAddressEnumeratorClass GSocketAddressEnumeratorClass;
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)
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;
/**
* 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",
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)
* 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)
/**
* 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,
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
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)
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,
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
--- /dev/null
+/* 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;
+}
--- /dev/null
+/* 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__ */
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')
'gwin32volumemonitor.c',
'gwin32inputstream.c',
'gwin32outputstream.c',
+ 'gwin32networkmonitor.c',
+ 'gwin32networkmonitor.h',
)
gio_win_rc = configure_file(
g_object_unref (stream);
}
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+
static void
test_read_until (void)
{
g_object_unref (stream);
}
+G_GNUC_END_IGNORE_DEPRECATIONS
+
static void
test_read_upto (void)
{
{
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)
test_replace_load (void)
{
ReplaceLoadData *data;
- gchar *path;
+ const gchar *path;
GFileIOStream *iostream;
data = g_new0 (ReplaceLoadData, 1);
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));
g_main_loop_unref (data->loop);
g_object_unref (data->file);
g_free (data);
- free (path);
}
static void
/* 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 (" ");
#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),
</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>
* 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.
*
*
* 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;
* }
* ]|
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]));
}
* Since: 2.32
**/
+/* Keep in sync with glib/tests/bytes.c */
struct _GBytes
{
gconstpointer data; /* may be NULL iff (size == 0) */
* 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
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));
}
* 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().
*
* 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
* 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
* 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
/**
* 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(),
* 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*
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)
/**
* 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(),
* 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,
/**
* 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.
*
* 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(),
* 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,
*
*/
+/*
+ * 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;
_("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)
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
* 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
* 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,
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
* 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,
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
/**
* 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
* 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
* 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,
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
* 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.
*
* 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*
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
* 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.
*/
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;
/**
*
* 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.
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;
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;
}
{
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);
* 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++;
}
void
g_unsetenv_utf8 (const gchar *variable)
{
- return g_unsetenv (variable);
+ g_unsetenv (variable);
}
#endif
#error "Only <glib.h> can be included directly."
#endif
+#include <glibconfig.h>
#include <glib/gerror.h>
G_BEGIN_DECLS
* 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 */
* 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
"found in search dirs"));
}
- if (output_file != NULL && fd > 0)
+ if (output_file != NULL && fd != -1)
*output_file = g_strdup (path);
g_free (path);
}
/**
+ * 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
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,
#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__ */
#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 */
}
}
-/* 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,
/* 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;
}
{
/* 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);
}
}
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);
}
/**
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);
}
/**
*
* 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++)
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 "";
_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
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;
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)
#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.
#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, \
* 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.
*/
/**
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
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);
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);
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);
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);
}
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)
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);
* 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
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);
}
* 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
* 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
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
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);
* 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
* 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
* 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
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
* 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()
* 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
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
* 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 *
* GVariant *new_variant;
*
* new_variant = g_variant_new ("(t^as)",
- * /<!-- -->* This cast is required. *<!-- -->/
+ * // This cast is required.
* (guint64) some_flags,
* some_strings);
* ]|
#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;
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)
{
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);
#undef G_DISABLE_ASSERT
#undef G_LOG_DOMAIN
+#include <locale.h>
#include <string.h>
#include <glib.h>
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);
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);
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,
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)
{
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 ();
}
}
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,
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[])
{
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 ();
}
* 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.
*
* 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.
*
* 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()`.
*
project('glib', 'c', 'cpp',
- version : '2.55.1',
+ version : '2.55.2',
meson_version : '>= 0.44.0',
default_options : [
'warning_level=1',
# 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 #
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
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)
# 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"
"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"
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"
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"
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"
#: ../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"
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"
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»"
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)"
"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 "
"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 "
"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 "
"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 "
"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"
"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"
"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"
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"
"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"
"O segundo token da liña %d no anel de chaves en «%s» co contido «%s» está "
"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»"
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) "
"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"
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 "
"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)."
"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 "
"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"
"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 "
"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"
"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"
"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 "
"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"
"\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 "
"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)"
"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"
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"
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"
#. * 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"
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"
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"
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"
"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"
#. 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"
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."
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"
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"
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 ""
#. * 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"
"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"
#. 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"
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"
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"
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"
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"
"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"
"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"
"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"
"%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"
" 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"
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»"
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"
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"
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"
"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."
"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 "
"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."
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 ""
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"
# 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"
"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"
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"
#: ../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]"
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"
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"
#: ../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
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"
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 ""
"“%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
"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"
"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"
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"
"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"
"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 ”"
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) "
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
"é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
#: ../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
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 "
"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)."
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 "
"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 "
"É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 "
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 "
"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"
"\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)"
"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"
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"
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"
#. * 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"
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"
#: ../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
#, 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"
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"
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"
"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"
#. 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"
"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"
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."
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"
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"
#: ../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"
#: ../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"
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"
#: ../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: "
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"
#: ../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"
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"
#, 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"
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"
#: ../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"
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"
#: ../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>"
#: ../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'>"
#: ../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"
#: ../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”"
#: ../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"
"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
#: ../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>"
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"
#. * 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"
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"
#. 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” "
#. 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” "
#. 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"
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"
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"
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"
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"
"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"
"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"
"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"
"%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"
" 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"
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"
#. 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."
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"
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"
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"
"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 "
"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."
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)"
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"
-
"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"
"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"
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"
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"
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"
#: ../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"
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\""
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)"
"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 "
"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 "
"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 "
"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 "
"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"
"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"
"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"
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 "
#: ../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: "
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"
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"
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"
#. * 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"
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"
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"
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"
#. * 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"
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"
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
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"
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"
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"
"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"
"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"
"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"
"%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"
" 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"
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"
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\""
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"
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"
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\""
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 "
"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."
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"
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"
# 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"
"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"
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"
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"
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"
#: ../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"
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"
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”"
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)"
"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 "
"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 "
"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 "
"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 "
"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"
"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"
"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"
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"
"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"
"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”"
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) "
"„%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"
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 "
"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)."
"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 "
"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"
"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 "
"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"
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"
"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ą"
"\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 "
"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)"
"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"
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"
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"
#. * 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"
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"
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"
#: ../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"
#: ../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ń"
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."
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"
#. * 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"
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"
#. 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”"
#. 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"
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"
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"
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"
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"
"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"
"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"
"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"
"%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"
" 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 "
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”"
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"
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ą"
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”"
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"
"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."
"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 "
"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."
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 ""
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"
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"
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 "顯示求助"
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 "輸出版本資訊並離開"
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 "指令"
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"
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"
#: ../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 的計數值太大"
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 "操作已被取消"
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 檔案類型"
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 "
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"
"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"
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 "這個連線已關閉"
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 "
"預期為有效的 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)."
"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 "
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 "
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:"
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"
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"
" 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 ""
"\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 "é\8c¯èª¤ï¼\9a%s ä¸\8dæ\98¯æ\9c\89æ\95\88ç\9a\84ç\89©ä»¶è·¯å¾\91\n"
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "é\8c¯èª¤ï¼\9a%s ä¸\8dæ\98¯æ\9c\89æ\95\88ç\9a\84ç\8d¨ç\89¹å\8c¯æµ\81æ\8e\92å\90\8d稱ã\80\82\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 的定義"
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 "不支援的操作"
#. * 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 "沒有應用程式註冊為用以處理這個檔案"
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 代理伺服器未預期關閉連線。"
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 位址沒有足夠的空間"
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"
"位置來取代本地端檔案:例如您可以使用類似\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"
#. 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"
"位置來取代本地端檔案:例如您可以使用類似\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」?"
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"
"屬性可以使用它們的 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 "顯示隱藏檔案"
"如果有指定處理程式,會將它設定為此 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"
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 "監控檔案或目錄的變更。"
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 "掛載或卸載位置。"
"位置來取代本地端檔案:例如您可以使用類似\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."
"使用註冊為處理該檔案類型的\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 "忽略不存在的檔案,永不提示"
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"
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"
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 "沒有指定目的端"
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 "清理回收筒"
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> 內"
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 "顯示程式的版本並離開"
"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 "目錄"
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> "
"<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 "
"在覆蓋檔案「%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 "
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"
"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"
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"
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"
#. 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 "掛載點尚未實作同步內容類型預測"
msgid "Could not get network status: "
msgstr "無法取得網路狀態:"
-#: ../gio/gnetworkmonitornm.c:326
+#: ../gio/gnetworkmonitornm.c:329
#, c-format
msgid "NetworkManager version too old"
msgstr "NetworkManager 版本太舊"
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 "輸入串流尚未實作尋找"
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"
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"
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"
"遞迴的列出設定鍵與鍵值\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"
"如果沒有指定 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"
"使用「gsettings help COMMAND」取得詳細的說明。\n"
"\n"
-#: ../gio/gsettings-tool.c:644
+#: ../gio/gsettings-tool.c:675
#, c-format
msgid ""
"Usage:\n"
"%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"
" 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 上實作"
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」時發生錯誤"
"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 "輔助資料的未預期類型"
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 位址"
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」"
#: ../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」的書籤"
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」不能被解譯為布林值。"
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 "
"字元參引的結束部分不是分號;很可能您想使用 & 字元但未將它變為實體 ─ 請將 & 轉"
"換為 &"
-#: ../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 &"
"實體的結束部分不是分號;很可能您想使用 & 字元但未將它變為實體 ─ 請將 & 轉換"
"為 &"
-#: ../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 "
"不尋常的字元「%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 "
"不尋常的字元「%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 "在註解或處理指示內,文件突然結束"
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"
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 "未提供位置"