From 3812559659e645be223e34f12040c2d58fdc875c Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 3 Feb 2011 17:26:51 -0500 Subject: [PATCH 01/85] Remove unused variable in gvdb-reader As originally committed against dconf by Owen. Newer GCC flags this. --- gvdb-reader.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/gvdb-reader.c b/gvdb-reader.c index 264e87d15..73f4f1385 100644 --- a/gvdb-reader.c +++ b/gvdb-reader.c @@ -87,7 +87,6 @@ gvdb_table_setup_root (GvdbTable *file, { const struct gvdb_hash_header *header; guint32 n_bloom_words; - guint32 bloom_shift; guint32 n_buckets; gsize size; @@ -100,7 +99,6 @@ gvdb_table_setup_root (GvdbTable *file, n_bloom_words = guint32_from_le (header->n_bloom_words); n_buckets = guint32_from_le (header->n_buckets); - bloom_shift = n_bloom_words >> 27; n_bloom_words &= (1u << 27) - 1; if G_UNLIKELY (n_bloom_words * sizeof (guint32_le) > size) From 1a0424b7ff4550ae90ff730bb98d40bface512f3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 8 Apr 2011 17:02:01 -0400 Subject: [PATCH 02/85] Fix another faulty GApplicationCommandline example Several flaws were pointed out by Shaun McCance. We were leaking handled arguments, and we were mishandling the last argument, and we were actually skipping arguments too. https://bugzilla.gnome.org/show_bug.cgi?id=647031 --- gio/tests/gapplication-example-cmdline2.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gio/tests/gapplication-example-cmdline2.c b/gio/tests/gapplication-example-cmdline2.c index 43512247c..ed8ddcded 100644 --- a/gio/tests/gapplication-example-cmdline2.c +++ b/gio/tests/gapplication-example-cmdline2.c @@ -30,16 +30,20 @@ test_local_cmdline (GApplication *application, argv = *arguments; - for (i = 0; argv[i]; i++) + i = 1; + while (argv[i]) { if (g_str_has_prefix (argv[i], "--local-")) { g_print ("handling argument %s locally\n", argv[i]); - for (j = i + 1; argv[j]; j++) - { - argv[j - 1] = argv[j]; - argv[j] = NULL; - } + g_free (argv[i]); + for (j = i; argv[j]; j++) + argv[j] = argv[j + 1]; + } + else + { + g_print ("not handling argument %s locally\n", argv[i]); + i++; } } From ea57feff96f13bbd4d03a76040a4ddfad2677310 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 10 Mar 2011 22:09:31 -0500 Subject: [PATCH 03/85] gsettings-tool: warn if setting a value fails eg, if the dconf backend cannot connect to dbus https://bugzilla.gnome.org/show_bug.cgi?id=641768 --- gio/gsettings-tool.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c index 14bd99f22..a5d43a473 100644 --- a/gio/gsettings-tool.c +++ b/gio/gsettings-tool.c @@ -409,6 +409,7 @@ gsettings_set (GSettings *settings, GError *error = NULL; GVariant *existing; GVariant *new; + GVariant *stored; gchar *freeme = NULL; existing = g_settings_get_value (settings, key); @@ -442,16 +443,23 @@ gsettings_set (GSettings *settings, if (!g_settings_range_check (settings, key, new)) { g_printerr (_("The provided value is outside of the valid range\n")); - g_variant_unref (new); exit (1); } g_settings_set_value (settings, key, new); + g_settings_sync (); + + stored = g_settings_get_value (settings, key); + if (g_variant_equal (stored, existing)) + { + g_printerr (_("Failed to set value\n")); + exit (1); + } + + g_variant_unref (stored); g_variant_unref (existing); g_variant_unref (new); - g_settings_sync (); - g_free (freeme); } From 61704dbca5a0004ab9b1172cd96b8d81b1697d61 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sat, 9 Apr 2011 12:47:32 -0400 Subject: [PATCH 04/85] GSocket: clarify g_socket_receive documentation g_socket_receive* return 0 if the connection is closed. https://bugzilla.gnome.org/show_bug.cgi?id=643074 --- gio/gsocket.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/gio/gsocket.c b/gio/gsocket.c index aa0a39cc8..d0219c111 100644 --- a/gio/gsocket.c +++ b/gio/gsocket.c @@ -1756,15 +1756,17 @@ g_socket_check_connect_result (GSocket *socket, * received, the additional data will be returned in future calls to * g_socket_receive(). * - * If the socket is in blocking mode the call will block until there is - * some data to receive or there is an error. If there is no data available - * and the socket is in non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error - * will be returned. To be notified when data is available, wait for the + * If the socket is in blocking mode the call will block until there + * is some data to receive, the connection is closed, or there is an + * error. If there is no data available and the socket is in + * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be + * returned. To be notified when data is available, wait for the * %G_IO_IN condition. * * On error -1 is returned and @error is set accordingly. * - * Returns: Number of bytes read, or -1 on error + * Returns: Number of bytes read, or 0 if the connection was closed by + * the peer, or -1 on error * * Since: 2.22 */ @@ -1794,7 +1796,8 @@ g_socket_receive (GSocket *socket, * the choice of blocking or non-blocking behavior is determined by * the @blocking argument rather than by @socket's properties. * - * Returns: Number of bytes read, or -1 on error + * Returns: Number of bytes read, or 0 if the connection was closed by + * the peer, or -1 on error * * Since: 2.26 */ @@ -1876,7 +1879,8 @@ g_socket_receive_with_blocking (GSocket *socket, * * See g_socket_receive() for additional information. * - * Returns: Number of bytes read, or -1 on error + * Returns: Number of bytes read, or 0 if the connection was closed by + * the peer, or -1 on error * * Since: 2.22 */ @@ -3182,14 +3186,16 @@ g_socket_send_message (GSocket *socket, * sufficiently-large buffer. * * If the socket is in blocking mode the call will block until there - * is some data to receive or there is an error. If there is no data - * available and the socket is in non-blocking mode, a - * %G_IO_ERROR_WOULD_BLOCK error will be returned. To be notified when - * data is available, wait for the %G_IO_IN condition. + * is some data to receive, the connection is closed, or there is an + * error. If there is no data available and the socket is in + * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be + * returned. To be notified when data is available, wait for the + * %G_IO_IN condition. * * On error -1 is returned and @error is set accordingly. * - * Returns: Number of bytes read, or -1 on error + * Returns: Number of bytes read, or 0 if the connection was closed by + * the peer, or -1 on error * * Since: 2.22 */ From 53389d963d1271d0c36862e2b4866ff5231b9b9e Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sun, 10 Apr 2011 07:50:26 -0400 Subject: [PATCH 05/85] GApplication: fix leaked object path In the case that we fail to become the primary instance we should unregister *both* object paths that we registered during our attempt. --- gio/gapplicationimpl-dbus.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gio/gapplicationimpl-dbus.c b/gio/gapplicationimpl-dbus.c index 406b8390d..c59c90e97 100644 --- a/gio/gapplicationimpl-dbus.c +++ b/gio/gapplicationimpl-dbus.c @@ -659,6 +659,9 @@ g_application_impl_register (GApplication *application, g_dbus_connection_unregister_object (impl->session_bus, impl->object_id); impl->object_id = 0; + g_dbus_connection_unregister_object (impl->session_bus, + impl->action_id); + impl->action_id = 0; if (flags & G_APPLICATION_IS_SERVICE) { From 9d204338f3e2a0eb7fb53eb7287040eb8d0f8589 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sun, 10 Apr 2011 07:51:55 -0400 Subject: [PATCH 06/85] GApplication: add G_APPLICATION_NON_UNIQUE Add a flag to essentially short-circuit g_application_register(). The application makes no attempt to acquire the bus name or check for existing instances with that name. The application is never considered as being 'remote' and all requests are handled locally. Closes #646985. --- gio/gapplication.c | 17 ++++++++++------- gio/gioenums.h | 9 ++++++++- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/gio/gapplication.c b/gio/gapplication.c index 7a97fefb5..c37c3db65 100644 --- a/gio/gapplication.c +++ b/gio/gapplication.c @@ -1006,14 +1006,17 @@ g_application_register (GApplication *application, if (!application->priv->is_registered) { - application->priv->impl = - g_application_impl_register (application, application->priv->id, - application->priv->flags, - &application->priv->remote_actions, - cancellable, error); + if (~application->priv->flags & G_APPLICATION_NON_UNIQUE) + { + application->priv->impl = + g_application_impl_register (application, application->priv->id, + application->priv->flags, + &application->priv->remote_actions, + cancellable, error); - if (application->priv->impl == NULL) - return FALSE; + if (application->priv->impl == NULL) + return FALSE; + } application->priv->is_remote = application->priv->remote_actions != NULL; application->priv->is_registered = TRUE; diff --git a/gio/gioenums.h b/gio/gioenums.h index 0989799a5..01bab2156 100644 --- a/gio/gioenums.h +++ b/gio/gioenums.h @@ -1265,6 +1265,11 @@ typedef enum * when editing a git commit message. The environment is available * to the #GApplication::command-line signal handler, via * g_application_command_line_getenv(). + * @G_APPLICATION_NON_UNIQUE: Make no attempts to do any of the typical + * single-instance application negotiation. The application neither + * attempts to become the owner of the application ID nor does it + * check if an existing owner already exists. Everything occurs in + * the local process. Since: 2.30. * * Flags used to define the behaviour of a #GApplication. * @@ -1278,7 +1283,9 @@ typedef enum G_APPLICATION_HANDLES_OPEN = (1 << 2), G_APPLICATION_HANDLES_COMMAND_LINE = (1 << 3), - G_APPLICATION_SEND_ENVIRONMENT = (1 << 4) + G_APPLICATION_SEND_ENVIRONMENT = (1 << 4), + + G_APPLICATION_NON_UNIQUE = (1 << 5), } GApplicationFlags; /** From 45377252db37ed46b4fd4c17ae88d8804c8c0923 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Sun, 10 Apr 2011 07:55:03 -0400 Subject: [PATCH 07/85] Add test case for G_APPLICATION_NON_UNIQUE --- gio/tests/gapplication.c | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/gio/tests/gapplication.c b/gio/tests/gapplication.c index 4bd70b33a..ac0022623 100644 --- a/gio/tests/gapplication.c +++ b/gio/tests/gapplication.c @@ -221,6 +221,79 @@ basic (void) session_bus_down (); } + +static GApplication *recently_activated; +static GMainLoop *loop; + +static void +nonunique_activate (GApplication *application) +{ + recently_activated = application; + + if (loop != NULL) + g_main_loop_quit (loop); +} + +static GApplication * +make_app (gboolean non_unique) +{ + GApplication *app; + gboolean ok; + + app = g_application_new ("org.gtk.TestApplication", + non_unique ? G_APPLICATION_NON_UNIQUE : 0); + g_signal_connect (app, "activate", G_CALLBACK (nonunique_activate), NULL); + ok = g_application_register (app, NULL, NULL); + if (!ok) + { + g_object_unref (app); + return NULL; + } + + g_application_activate (app); + + return app; +} + +static void +test_nonunique (void) +{ + GApplication *first, *second, *third, *fourth; + + session_bus_up (); + + first = make_app (TRUE); + /* non-remote because it is non-unique */ + g_assert (!g_application_get_is_remote (first)); + g_assert (recently_activated == first); + recently_activated = NULL; + + second = make_app (FALSE); + /* non-remote because it is first */ + g_assert (!g_application_get_is_remote (second)); + g_assert (recently_activated == second); + recently_activated = NULL; + + third = make_app (TRUE); + /* non-remote because it is non-unique */ + g_assert (!g_application_get_is_remote (third)); + g_assert (recently_activated == third); + recently_activated = NULL; + + fourth = make_app (FALSE); + /* should have failed to register due to being + * unable to register the object paths + */ + g_assert (fourth == NULL); + g_assert (recently_activated == NULL); + + g_object_unref (first); + g_object_unref (second); + g_object_unref (third); + + session_bus_down (); +} + static void properties (void) { @@ -289,6 +362,7 @@ main (int argc, char **argv) g_test_init (&argc, &argv, NULL); g_test_add_func ("/gapplication/basic", basic); + g_test_add_func ("/gapplication/non-unique", test_nonunique); g_test_add_func ("/gapplication/properties", properties); g_test_add_func ("/gapplication/app-id", appid); From 68aef334041c7da2c67e43b743b8e93114d84e54 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Mon, 11 Apr 2011 03:37:47 -0400 Subject: [PATCH 08/85] GSettings: make _sync() a no-op if uninitialised If GSettings is uninitialised then g_settings_sync() should very obviously just return right away (rather than attempting to initialise GSettings first). --- gio/gsettingsbackend.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/gio/gsettingsbackend.c b/gio/gsettingsbackend.c index 24a6f9aa1..553eda037 100644 --- a/gio/gsettingsbackend.c +++ b/gio/gsettingsbackend.c @@ -45,6 +45,13 @@ struct _GSettingsBackendPrivate GStaticMutex lock; }; +/* For g_settings_backend_sync_default(), we only want to actually do + * the sync if the backend already exists. This avoids us creating an + * entire GSettingsBackend in order to call a do-nothing sync() + * operation on it. This variable lets us avoid that. + */ +static gboolean g_settings_has_backend; + /** * SECTION:gsettingsbackend * @title: GSettingsBackend @@ -982,6 +989,7 @@ g_settings_backend_get_default (void) extension_type = g_io_extension_get_type (extension); instance = g_object_new (extension_type, NULL); + g_settings_has_backend = TRUE; g_once_init_leave (&backend, (gsize) instance); } @@ -1021,12 +1029,15 @@ g_settings_backend_get_permission (GSettingsBackend *backend, void g_settings_backend_sync_default (void) { - GSettingsBackendClass *class; - GSettingsBackend *backend; + if (g_settings_has_backend) + { + GSettingsBackendClass *class; + GSettingsBackend *backend; - backend = g_settings_backend_get_default (); - class = G_SETTINGS_BACKEND_GET_CLASS (backend); + backend = g_settings_backend_get_default (); + class = G_SETTINGS_BACKEND_GET_CLASS (backend); - if (class->sync) - class->sync (backend); + if (class->sync) + class->sync (backend); + } } From ff57ed5d6a67f91ef35ae947f3fea7ecce12ee7b Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Mon, 11 Apr 2011 03:30:24 -0400 Subject: [PATCH 09/85] GApplication: g_settings_sync() on exit Call g_settings_sync() just before g_applcation_run() returns. This is really the correct thing to do in every case that you're using GSettings and it prevents every single application from having to do it for themselves. Closes bug #647419. --- gio/gapplication.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gio/gapplication.c b/gio/gapplication.c index c37c3db65..ee6cbe9c4 100644 --- a/gio/gapplication.c +++ b/gio/gapplication.c @@ -1329,6 +1329,8 @@ g_application_run (GApplication *application, if (application->priv->impl) g_application_impl_flush (application->priv->impl); + g_settings_sync (); + return status; } From 8f2a6d3e5a6208953c4e1691826597b2cd6ea2b2 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 12:26:15 -0400 Subject: [PATCH 10/85] Updates --- NEWS | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 140330e5c..dba259af0 100644 --- a/NEWS +++ b/NEWS @@ -1,29 +1,77 @@ Overview of Changes from GLib 2.28.0 to 2.29.2 ============================================== -* The format accepted by the GVariant parser has beend documented +* GApplication + - The documentation has been enhanced and clarified + - An opt-out for uniqueness has been added: G_APPLICATION_NON_UNIQUE + - GApplication now syncs settings before g_application_run() returns -* The return value of g_datetime_compare() has been fixed to - match strcmp() semantics +* GDBus + - Interface lookups are now happening in constant time + - Signature checking and handling of various unexpected + situations has been improved + +* GVariant + - The format accepted by the GVariant parser has beend documented + - GVariant accepts G_VARIANT_TYPE_VARDICT for a{sv} + +* GDateTime: + - The return value of g_datetime_compare() has been fixed to + match strcmp() semantics + - In order to handle problems with changing timezones, a GTimeZoneMonitor + has been added to GIO, and g_time_zone_refresh_local() can be + called to update the cached information about the local timezone + +* GOption now uses /proc/self/cmdline to set the program name instead + and only falls back to "" if that is unavailable + +* GSettings: + - The schema compiler now warns about references to non-existing schemas * Commandline utilities are now fully translated +* Signals can now indicate that collecting their arguments must + always happen, even in the absence of connected signal handlers, + using the G_SIGNAL_MUST_COLLECT flag. + * Bugs fixed: 635099 Memory leak in gdbus introspection when parsing xml 640489 $ and ^ do not match lines if G_REGEX_MULTILINE|G_R... 642042 Overriding GDBus org.freedesktop.DBus.Properties im... 642052 g_timeout_add(_seconds) cannot handle large intervals 642490 notify_desktop_launch() "g_variant_new_bytestring:... +613269,624943,637738,642797,638185,642825,642944,643197,643468,643478,643649,643795,643780,644428,644465,644552,644607,643624,639478,645789,641755,646310,644309,646420,646843,646039,641768,643074,646985 * Translation updates + Afrikaans Bulgarian Bengali India - Korean - Polish + British English + Bulgarian + Catalan + Czech + Danish + French Galician + German + Greek + Gujarati Hebrew + Hungarian Italian + Japanese + Korean + Lithuanian + Polish + Portuguese + Romanian + Serbian + Simplified Chinese Spanish + Swedish + Traditional Chinese + Uighur + Vietnamese Overview of Changes from GLib 2.27.93 to 2.28.0 From 9d048615da794e265256ad29c27daf147675f239 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 12:53:25 -0400 Subject: [PATCH 11/85] Add 2.30 index to GLib docs --- docs/reference/glib/glib-docs.sgml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/reference/glib/glib-docs.sgml b/docs/reference/glib/glib-docs.sgml index f3197d9ed..cb864ce99 100644 --- a/docs/reference/glib/glib-docs.sgml +++ b/docs/reference/glib/glib-docs.sgml @@ -199,6 +199,10 @@ synchronize their operation. Index of new symbols in 2.28 + + Index of new symbols in 2.30 + + From 3c94299b0ff1c8e1b0b06bedd73b1b725e631d8a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 12:57:19 -0400 Subject: [PATCH 12/85] Don't include unistd.h unconditionally It doesn't exist on all platforms. Partial fix for bug 647341. --- gio/glib-compile-schemas.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c index d2c3f77b4..a301dff9a 100644 --- a/gio/glib-compile-schemas.c +++ b/gio/glib-compile-schemas.c @@ -24,13 +24,16 @@ #include "config.h" #include -#include -#include -#include -#include - #include +#include +#include +#include + +#ifdef HAVE_UNISTD_H +#include +#endif + #include "gvdb/gvdb-builder.h" #include "strinfo.c" From 1a6dd8c7fabdb79bcce7dc04f0e6044a343169f4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 13:20:55 -0400 Subject: [PATCH 13/85] Fix a few parameter mismatches in the docs --- glib/gtimezone.c | 20 ++++++++++---------- glib/gtimezone.h | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/glib/gtimezone.c b/glib/gtimezone.c index 1c332ae78..2f77f018e 100644 --- a/glib/gtimezone.c +++ b/glib/gtimezone.c @@ -594,27 +594,27 @@ interval_valid (GTimeZone *tz, /** * g_time_zone_adjust_time: * @tz: a #GTimeZone - * @type: the #GTimeType of @time - * @time: a pointer to a number of seconds since January 1, 1970 + * @type: the #GTimeType of @time_ + * @time_: a pointer to a number of seconds since January 1, 1970 * - * Finds an interval within @tz that corresponds to the given @time, - * possibly adjusting @time if required to fit into an interval. - * The meaning of @time depends on @type. + * Finds an interval within @tz that corresponds to the given @time_, + * possibly adjusting @time_ if required to fit into an interval. + * The meaning of @time_ depends on @type. * * This function is similar to g_time_zone_find_interval(), with the * difference that it always succeeds (by making the adjustments * described below). * * In any of the cases where g_time_zone_find_interval() succeeds then - * this function returns the same value, without modifying @time. + * this function returns the same value, without modifying @time_. * - * This function may, however, modify @time in order to deal with - * non-existent times. If the non-existent local @time of 02:30 were + * This function may, however, modify @time_ in order to deal with + * non-existent times. If the non-existent local @time_ of 02:30 were * requested on March 13th 2010 in Toronto then this function would - * adjust @time to be 03:00 and return the interval containing the + * adjust @time_ to be 03:00 and return the interval containing the * adjusted time. * - * Returns: the interval containing @time, never -1 + * Returns: the interval containing @time_, never -1 * * Since: 2.26 **/ diff --git a/glib/gtimezone.h b/glib/gtimezone.h index bc72c206c..eb7e287a0 100644 --- a/glib/gtimezone.h +++ b/glib/gtimezone.h @@ -65,11 +65,11 @@ void g_time_zone_unref (GTimeZo gint g_time_zone_find_interval (GTimeZone *tz, GTimeType type, - gint64 time); + gint64 time_); gint g_time_zone_adjust_time (GTimeZone *tz, GTimeType type, - gint64 *time); + gint64 *time_); const gchar * g_time_zone_get_abbreviation (GTimeZone *tz, gint interval); From c36aa59bf05b972ae1c1e0b9e273064914ca3447 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 13:21:12 -0400 Subject: [PATCH 14/85] Fix duplicate private subsection gtk-doc doesn't understand duplicate Private subsections in the obvious way, it seems. --- docs/reference/glib/glib-sections.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index c1c68b096..eee5df629 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -840,11 +840,6 @@ g_io_channel_set_encoding g_io_channel_get_close_on_unref g_io_channel_set_close_on_unref - -g_io_channel_win32_poll -g_io_channel_win32_make_pollfd -g_io_channel_win32_get_fd - g_io_channel_read GIOError @@ -853,6 +848,9 @@ g_io_channel_seek g_io_channel_close +g_io_channel_win32_poll +g_io_channel_win32_make_pollfd +g_io_channel_win32_get_fd g_io_channel_error_quark g_io_watch_funcs From eaef2a8f3f54354af50e0089a578f83656756d8d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 13:26:40 -0400 Subject: [PATCH 15/85] Add forgotten apis g_desktop_app_info_launch_uris_as_manager was not listed in the docs. --- docs/reference/gio/gio-sections.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index b2c732b29..a79be0596 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -1400,6 +1400,8 @@ g_desktop_app_info_new g_desktop_app_info_get_filename g_desktop_app_info_get_is_hidden g_desktop_app_info_set_desktop_env +GDesktopAppLaunchCallback +g_desktop_app_info_launch_uris_as_manager GDesktopAppInfoClass G_TYPE_DESKTOP_APP_INFO From 5ec05ebfd48ab6bac396f8cd30b47d61b93c7884 Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Mon, 11 Apr 2011 21:06:01 +0200 Subject: [PATCH 16/85] Updated Spanish translation --- po/es.po | 530 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 272 insertions(+), 258 deletions(-) diff --git a/po/es.po b/po/es.po index 5576d5438..bf4619995 100644 --- a/po/es.po +++ b/po/es.po @@ -13,8 +13,8 @@ msgstr "" "Project-Id-Version: glib.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-03-17 11:53+0000\n" -"PO-Revision-Date: 2011-03-17 20:35+0100\n" +"POT-Creation-Date: 2011-04-09 16:54+0000\n" +"PO-Revision-Date: 2011-04-11 19:21+0200\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -646,11 +646,11 @@ msgstr "" #: ../glib/gmarkup.c:1185 #, c-format msgid "" -"Odd character '%s', expected a '>' character to end the empty-element tag " -"'%s'" +"Odd character '%s', expected a '>' character to end the empty-element tag '%" +"s'" msgstr "" -"Carácter «%s» impropio, se esperaba un carácter «>» para terminar la " -"etiqueta vacía del elemento «%s»" +"Carácter «%s» impropio, se esperaba un carácter «>» para terminar la etiqueta " +"vacía del elemento «%s»" #: ../glib/gmarkup.c:1269 #, c-format @@ -677,8 +677,8 @@ msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " "giving value for attribute '%s' of element '%s'" msgstr "" -"Carácter «%s» impropio, se esperaba una marca de apertura de comillas " -"después del signo igual al darle valor al atributo «%s» del elemento «%s»" +"Carácter «%s» impropio, se esperaba una marca de apertura de comillas después " +"del signo igual al darle valor al atributo «%s» del elemento «%s»" #: ../glib/gmarkup.c:1487 #, c-format @@ -686,8 +686,8 @@ msgid "" "'%s' is not a valid character following the characters ' already specified" msgstr " ya especificado" -#: ../gio/glib-compile-schemas.c:856 +#: ../gio/glib-compile-schemas.c:882 msgid "can not add keys to a 'list-of' schema" msgstr "no se pueden añadir claves a un esquema de «lista-de»" -#: ../gio/glib-compile-schemas.c:867 +#: ../gio/glib-compile-schemas.c:893 #, c-format msgid " already specified" msgstr " ya especificada" -#: ../gio/glib-compile-schemas.c:885 +#: ../gio/glib-compile-schemas.c:911 #, c-format msgid "" " shadows in ; use " @@ -2568,65 +2577,65 @@ msgstr "" " eclipsa a en ; use " " para modificar el valor" -#: ../gio/glib-compile-schemas.c:896 +#: ../gio/glib-compile-schemas.c:922 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " "to " msgstr "" -"se debe especificar exactamente uno de «type», «enum» o «flags» como " -"atributo para " +"se debe especificar exactamente uno de «type», «enum» o «flags» como atributo " +"para " -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:941 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> aún no especificado." -#: ../gio/glib-compile-schemas.c:930 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "invalid GVariant type string '%s'" msgstr "tipo de cadena GVarian «%s» no válida" -#: ../gio/glib-compile-schemas.c:960 +#: ../gio/glib-compile-schemas.c:986 msgid " given but schema isn't extending anything" msgstr "Se proporcionó pero el esquema no está extendiendo nada" -#: ../gio/glib-compile-schemas.c:973 +#: ../gio/glib-compile-schemas.c:999 #, c-format msgid "no to override" msgstr "no existe para sobreescribir" -#: ../gio/glib-compile-schemas.c:981 +#: ../gio/glib-compile-schemas.c:1007 #, c-format msgid " already specified" msgstr " ya especificada" -#: ../gio/glib-compile-schemas.c:1052 +#: ../gio/glib-compile-schemas.c:1078 #, c-format msgid " already specified" msgstr " ya especificado" -#: ../gio/glib-compile-schemas.c:1064 +#: ../gio/glib-compile-schemas.c:1090 #, c-format msgid " extends not yet existing schema '%s'" msgstr " extiende el esquema «%s» que aún no existe" -#: ../gio/glib-compile-schemas.c:1080 +#: ../gio/glib-compile-schemas.c:1106 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " es una lista del esquema «%s» que aún no existe" -#: ../gio/glib-compile-schemas.c:1088 +#: ../gio/glib-compile-schemas.c:1114 #, c-format msgid "Can not be a list of a schema with a path" msgstr "No puede ser una lista de un esquema con una ruta" -#: ../gio/glib-compile-schemas.c:1098 +#: ../gio/glib-compile-schemas.c:1124 #, c-format msgid "Can not extend a schema with a path" msgstr "No se puede extender un esquema con una ruta" -#: ../gio/glib-compile-schemas.c:1108 +#: ../gio/glib-compile-schemas.c:1134 #, c-format msgid "" " is a list, extending which is not a list" @@ -2634,96 +2643,96 @@ msgstr "" " es una lista, extendiendo que no es una " "lista" -#: ../gio/glib-compile-schemas.c:1118 +#: ../gio/glib-compile-schemas.c:1144 #, c-format msgid "" " extends but '%s' " "does not extend '%s'" msgstr "" -" extiende pero " -"«%s» no extiende «%s»" +" extiende pero «%" +"s» no extiende «%s»" -#: ../gio/glib-compile-schemas.c:1135 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "si se especifica una ruta, debe comenzar y terminar con una barra" -#: ../gio/glib-compile-schemas.c:1142 +#: ../gio/glib-compile-schemas.c:1168 #, c-format msgid "the path of a list must end with ':/'" msgstr "la ruta de la lista debe terminar con «:/»" -#: ../gio/glib-compile-schemas.c:1168 +#: ../gio/glib-compile-schemas.c:1194 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> ya especificado" -#: ../gio/glib-compile-schemas.c:1387 +#: ../gio/glib-compile-schemas.c:1414 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "No se permite el elemento <%s> dentro de <%s>" -#: ../gio/glib-compile-schemas.c:1391 +#: ../gio/glib-compile-schemas.c:1418 #, c-format msgid "Element <%s> not allowed at toplevel" msgstr "No se permite el elemento <%s> en el nivel superior" -#: ../gio/glib-compile-schemas.c:1485 +#: ../gio/glib-compile-schemas.c:1509 #, c-format msgid "text may not appear inside <%s>" msgstr "El texto no debe aparecer dentro de <%s>" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1654 ../gio/glib-compile-schemas.c:1725 -#: ../gio/glib-compile-schemas.c:1801 +#: ../gio/glib-compile-schemas.c:1694 ../gio/glib-compile-schemas.c:1765 +#: ../gio/glib-compile-schemas.c:1841 #, c-format msgid "--strict was specified; exiting.\n" msgstr "se especificó --strict; saliendo.\n" -#: ../gio/glib-compile-schemas.c:1662 +#: ../gio/glib-compile-schemas.c:1702 #, c-format msgid "This entire file has been ignored.\n" msgstr "Se ha ignorado este archivo completamente.\n" -#: ../gio/glib-compile-schemas.c:1721 +#: ../gio/glib-compile-schemas.c:1761 #, c-format msgid "Ignoring this file.\n" msgstr "Ignorando este archivo.\n" -#: ../gio/glib-compile-schemas.c:1761 +#: ../gio/glib-compile-schemas.c:1801 #, c-format msgid "No such key `%s' in schema `%s' as specified in override file `%s'" msgstr "" -"No existe la clave «%s» en el esquema «%s» como se especificó en el archivo " -"de sobreescitura «%s»" +"No existe la clave «%s» en el esquema «%s» como se especificó en el archivo de " +"sobreescitura «%s»" -#: ../gio/glib-compile-schemas.c:1767 ../gio/glib-compile-schemas.c:1825 -#: ../gio/glib-compile-schemas.c:1853 +#: ../gio/glib-compile-schemas.c:1807 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1893 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignorando la sobreescritura para esta clave.\n" -#: ../gio/glib-compile-schemas.c:1771 ../gio/glib-compile-schemas.c:1829 -#: ../gio/glib-compile-schemas.c:1857 +#: ../gio/glib-compile-schemas.c:1811 ../gio/glib-compile-schemas.c:1869 +#: ../gio/glib-compile-schemas.c:1897 #, c-format msgid " and --strict was specified; exiting.\n" msgstr "y se especificó --strict; saliendo.\n" -#: ../gio/glib-compile-schemas.c:1787 +#: ../gio/glib-compile-schemas.c:1827 #, c-format msgid "" -"error parsing key `%s' in schema `%s' as specified in override file `%s': " -"%s. " +"error parsing key `%s' in schema `%s' as specified in override file `%s': %" +"s. " msgstr "" "error al analizar la clave «%s» en el esquema «%s» como se especificó en el " "archivo de sobreescritura «%s»: %s." -#: ../gio/glib-compile-schemas.c:1797 +#: ../gio/glib-compile-schemas.c:1837 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignorando la sobreescritura para esta clave.\n" -#: ../gio/glib-compile-schemas.c:1815 +#: ../gio/glib-compile-schemas.c:1855 #, c-format msgid "" "override for key `%s' in schema `%s' in override file `%s' is out of the " @@ -2732,7 +2741,7 @@ msgstr "" "la clave de sobreescritura «%s» en el esquema «%s» en el archivo de " "sobreescritura «%s» está fuera del rango proporcionado en el esquema" -#: ../gio/glib-compile-schemas.c:1843 +#: ../gio/glib-compile-schemas.c:1883 #, c-format msgid "" "override for key `%s' in schema `%s' in override file `%s' is not in the " @@ -2741,31 +2750,31 @@ msgstr "" "la clave de sobreescritura «%s» en el esquema «%s» en el archivo de " "sobreescritura «%s» no está en la lista de opciones válidas" -#: ../gio/glib-compile-schemas.c:1897 +#: ../gio/glib-compile-schemas.c:1937 msgid "where to store the gschemas.compiled file" msgstr "dónde almacenar el archivo gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1897 ../gio/glib-compile-schemas.c:1923 +#: ../gio/glib-compile-schemas.c:1937 ../gio/glib-compile-schemas.c:1963 msgid "DIRECTORY" msgstr "DIRECTORIO" -#: ../gio/glib-compile-schemas.c:1898 +#: ../gio/glib-compile-schemas.c:1938 msgid "Abort on any errors in schemas" msgstr "Abortar ante cualquier error en los esquemas" -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1939 msgid "Do not write the gschema.compiled file" msgstr "No escribir el archivo gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1900 +#: ../gio/glib-compile-schemas.c:1940 msgid "This option will be removed soon." msgstr "Pronto se quitará esta opción." -#: ../gio/glib-compile-schemas.c:1901 +#: ../gio/glib-compile-schemas.c:1941 msgid "Do not enforce key name restrictions" msgstr "No forzar las restricciones de nombre de las claves" -#: ../gio/glib-compile-schemas.c:1926 +#: ../gio/glib-compile-schemas.c:1966 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -2776,22 +2785,22 @@ msgstr "" "Los archivos de esquema deben tener la extensión .gschema.xml,\n" "y el archivo de caché se llama gschemas.compiled." -#: ../gio/glib-compile-schemas.c:1942 +#: ../gio/glib-compile-schemas.c:1982 #, c-format msgid "You should give exactly one directory name\n" msgstr "Deberá proporcionar exactamente un nombre de directorio\n" -#: ../gio/glib-compile-schemas.c:1981 +#: ../gio/glib-compile-schemas.c:2021 #, c-format msgid "No schema files found: " msgstr "No se encontró ningún archivo de esquemas: " -#: ../gio/glib-compile-schemas.c:1984 +#: ../gio/glib-compile-schemas.c:2024 #, c-format msgid "doing nothing.\n" msgstr "sin hacer nada.\n" -#: ../gio/glib-compile-schemas.c:1987 +#: ../gio/glib-compile-schemas.c:2027 #, c-format msgid "removed existing output file.\n" msgstr "se quitó el archivo de salida existente.\n" @@ -3188,27 +3197,27 @@ msgstr "El flujo de salida no implementa la escritura" msgid "Source stream is already closed" msgstr "El flujo de origen ya está cerrado" -#: ../gio/gresolver.c:737 +#: ../gio/gresolver.c:738 #, c-format msgid "Error resolving '%s': %s" msgstr "Error al resolver «%s»: %s" -#: ../gio/gresolver.c:787 +#: ../gio/gresolver.c:788 #, c-format msgid "Error reverse-resolving '%s': %s" msgstr "Error al resolver «%s» de forma invertida: %s" -#: ../gio/gresolver.c:822 ../gio/gresolver.c:900 +#: ../gio/gresolver.c:823 ../gio/gresolver.c:902 #, c-format msgid "No service record for '%s'" msgstr "No hay registro de servicio para «%s»" -#: ../gio/gresolver.c:827 ../gio/gresolver.c:905 +#: ../gio/gresolver.c:828 ../gio/gresolver.c:907 #, c-format msgid "Temporarily unable to resolve '%s'" msgstr "No se puede resolver «%s» temporalmente" -#: ../gio/gresolver.c:832 ../gio/gresolver.c:910 +#: ../gio/gresolver.c:833 ../gio/gresolver.c:912 #, c-format msgid "Error resolving '%s'" msgstr "Error al resolver «%s»" @@ -3253,36 +3262,42 @@ msgstr "La ruta no debe contener dos barras adyacentes (//)\n" msgid "No such key '%s'\n" msgstr "No existe la clave «%s»\n" -#: ../gio/gsettings-tool.c:444 +#: ../gio/gsettings-tool.c:445 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "El valor proporcionado está fuera del rango válido\n" -#: ../gio/gsettings-tool.c:473 +#: ../gio/gsettings-tool.c:455 +#, c-format +#| msgid "failed to get memory" +msgid "Failed to set value\n" +msgstr "Falló al establecer el valor\n" + +#: ../gio/gsettings-tool.c:481 msgid "Print help" msgstr "Imprimir ayuda" -#: ../gio/gsettings-tool.c:479 +#: ../gio/gsettings-tool.c:487 msgid "List the installed (non-relocatable) schemas" msgstr "Listar los esquemas instalados (no reubicables)" -#: ../gio/gsettings-tool.c:485 +#: ../gio/gsettings-tool.c:493 msgid "List the installed relocatable schemas" msgstr "Listar los esquemas reubicables instalados" -#: ../gio/gsettings-tool.c:491 +#: ../gio/gsettings-tool.c:499 msgid "List the keys in SCHEMA" msgstr "Listar las claves en el ESQUEMA" -#: ../gio/gsettings-tool.c:492 ../gio/gsettings-tool.c:498 +#: ../gio/gsettings-tool.c:500 ../gio/gsettings-tool.c:506 msgid "SCHEMA[:PATH]" msgstr "ESQUEMA[:RUTA]" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:505 msgid "List the children of SCHEMA" msgstr "Listar los hijos del ESQUEMA" -#: ../gio/gsettings-tool.c:503 +#: ../gio/gsettings-tool.c:511 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -3290,40 +3305,40 @@ msgstr "" "Listar las claves y valores recursivamente\n" "Si no se proporciona un ESQUEMA, listar todas las claves\n" -#: ../gio/gsettings-tool.c:505 +#: ../gio/gsettings-tool.c:513 msgid "[SCHEMA[:PATH]]" msgstr "[ESQUEMA[:RUTA]]" -#: ../gio/gsettings-tool.c:510 +#: ../gio/gsettings-tool.c:518 msgid "Get the value of KEY" msgstr "Obtener el valor de la CLAVE" -#: ../gio/gsettings-tool.c:511 ../gio/gsettings-tool.c:517 -#: ../gio/gsettings-tool.c:529 ../gio/gsettings-tool.c:535 +#: ../gio/gsettings-tool.c:519 ../gio/gsettings-tool.c:525 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 msgid "SCHEMA[:PATH] KEY" msgstr "ESQUEMA[:RUTA] CLAVE" -#: ../gio/gsettings-tool.c:516 +#: ../gio/gsettings-tool.c:524 msgid "Query the range of valid values for KEY" msgstr "Consultar el rango de valores válidos para la CLAVE" -#: ../gio/gsettings-tool.c:522 +#: ../gio/gsettings-tool.c:530 msgid "Set the value of KEY to VALUE" msgstr "Establecer el valor de la CLAVE a VALOR" -#: ../gio/gsettings-tool.c:523 +#: ../gio/gsettings-tool.c:531 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "ESQUEMA[:RUTA] CLAVE VALOR" -#: ../gio/gsettings-tool.c:528 +#: ../gio/gsettings-tool.c:536 msgid "Reset KEY to its default value" msgstr "Restablecer la CLAVE a su valor predeterminado" -#: ../gio/gsettings-tool.c:534 +#: ../gio/gsettings-tool.c:542 msgid "Check if KEY is writable" msgstr "Comprobar si la CLAVE se puede escribir" -#: ../gio/gsettings-tool.c:540 +#: ../gio/gsettings-tool.c:548 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -3333,11 +3348,11 @@ msgstr "" "Si no se especifica una CLAVE, monitorizar todas las claves en el ESQUEMA.\n" "Use ^C para detener la monitorización.\n" -#: ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:551 msgid "SCHEMA[:PATH] [KEY]" msgstr "ESQUEMA[:RUTA] [CLAVE]" -#: ../gio/gsettings-tool.c:547 +#: ../gio/gsettings-tool.c:555 #, c-format msgid "" "Unknown command %s\n" @@ -3346,7 +3361,7 @@ msgstr "" "Comando «%s» desconocido\n" "\n" -#: ../gio/gsettings-tool.c:555 +#: ../gio/gsettings-tool.c:563 msgid "" "Usage:\n" " gsettings COMMAND [ARGS...]\n" @@ -3388,7 +3403,7 @@ msgstr "" "Use «gsettings help COMANDO» para obtener una ayuda detallada.\n" "\n" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:584 #, c-format msgid "" "Usage:\n" @@ -3403,15 +3418,15 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:581 +#: ../gio/gsettings-tool.c:589 msgid "Arguments:\n" msgstr "Argumentos:\n" -#: ../gio/gsettings-tool.c:585 +#: ../gio/gsettings-tool.c:593 msgid " COMMAND The (optional) command to explain\n" msgstr " COMANDO El comando (opcional) que explicar\n" -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:597 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -3419,19 +3434,19 @@ msgstr "" " SCHEMA El nombre del esquema\n" " RUTA La ruta, para esquemas reubicables\n" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:602 msgid " KEY The (optional) key within the schema\n" msgstr " CLAVE La clave (opcional) para el esquema\n" -#: ../gio/gsettings-tool.c:598 +#: ../gio/gsettings-tool.c:606 msgid " KEY The key within the schema\n" msgstr " CLAVE La clave para el esquema\n" -#: ../gio/gsettings-tool.c:602 +#: ../gio/gsettings-tool.c:610 msgid " VALUE The value to set\n" msgstr " VALOR El valor para establecer\n" -#: ../gio/gsettings-tool.c:691 +#: ../gio/gsettings-tool.c:699 #, c-format msgid "Empty schema name given\n" msgstr "Se proporcionó un nombre de esquema vacío\n" @@ -3449,7 +3464,7 @@ msgstr "Socket no válido, falló la instalación debido a: %s" msgid "Socket is already closed" msgstr "El socket ya está cerrado" -#: ../gio/gsocket.c:300 ../gio/gsocket.c:2769 ../gio/gsocket.c:2813 +#: ../gio/gsocket.c:300 ../gio/gsocket.c:2774 ../gio/gsocket.c:2818 msgid "Socket I/O timed out" msgstr "Expiró la E/S del socket" @@ -3458,7 +3473,7 @@ msgstr "Expiró la E/S del socket" msgid "creating GSocket from fd: %s" msgstr "creando el GSocket desde fd: %s" -#: ../gio/gsocket.c:477 ../gio/gsocket.c:493 ../gio/gsocket.c:2135 +#: ../gio/gsocket.c:477 ../gio/gsocket.c:493 ../gio/gsocket.c:2140 #, c-format msgid "Unable to create socket: %s" msgstr "No se pudo crear el socket: %s" @@ -3467,79 +3482,79 @@ msgstr "No se pudo crear el socket: %s" msgid "Unknown protocol was specified" msgstr "Se especificó un protocolo desconocido" -#: ../gio/gsocket.c:1246 +#: ../gio/gsocket.c:1247 #, c-format msgid "could not get local address: %s" msgstr "no se pudo obtener la dirección local: %s" -#: ../gio/gsocket.c:1289 +#: ../gio/gsocket.c:1290 #, c-format msgid "could not get remote address: %s" msgstr "no se pudo obtener la dirección remota: %s" -#: ../gio/gsocket.c:1350 +#: ../gio/gsocket.c:1351 #, c-format msgid "could not listen: %s" msgstr "no se pudo escuchar: %s" -#: ../gio/gsocket.c:1424 +#: ../gio/gsocket.c:1425 #, c-format msgid "Error binding to address: %s" msgstr "Error al vincular con la dirección: %s" -#: ../gio/gsocket.c:1544 +#: ../gio/gsocket.c:1545 #, c-format msgid "Error accepting connection: %s" msgstr "Error al aceptar la conexión: %s" -#: ../gio/gsocket.c:1661 +#: ../gio/gsocket.c:1662 msgid "Error connecting: " msgstr "Error al conectar: " -#: ../gio/gsocket.c:1666 +#: ../gio/gsocket.c:1667 msgid "Connection in progress" msgstr "Conexión en progreso" -#: ../gio/gsocket.c:1673 +#: ../gio/gsocket.c:1674 #, c-format msgid "Error connecting: %s" msgstr "Error al conectar: %s" -#: ../gio/gsocket.c:1716 ../gio/gsocket.c:3532 +#: ../gio/gsocket.c:1717 ../gio/gsocket.c:3534 #, c-format msgid "Unable to get pending error: %s" msgstr "No se pudo obtener el error pendiente: %s" -#: ../gio/gsocket.c:1848 +#: ../gio/gsocket.c:1852 #, c-format msgid "Error receiving data: %s" msgstr "Error al recibir los datos: %s" -#: ../gio/gsocket.c:2022 +#: ../gio/gsocket.c:2027 #, c-format msgid "Error sending data: %s" msgstr "Error al enviar los datos: %s" -#: ../gio/gsocket.c:2214 +#: ../gio/gsocket.c:2219 #, c-format msgid "Error closing socket: %s" msgstr "Error al cerrar el socket: %s" -#: ../gio/gsocket.c:2762 +#: ../gio/gsocket.c:2767 #, c-format msgid "Waiting for socket condition: %s" msgstr "Esperando la condición del socket: %s" -#: ../gio/gsocket.c:3052 +#: ../gio/gsocket.c:3057 msgid "GSocketControlMessage not supported on windows" msgstr "GSocketControlMessage no está soportado en win32" -#: ../gio/gsocket.c:3311 ../gio/gsocket.c:3452 +#: ../gio/gsocket.c:3318 ../gio/gsocket.c:3454 #, c-format msgid "Error receiving message: %s" msgstr "Error al recibir el mensaje: %s" -#: ../gio/gsocket.c:3547 +#: ../gio/gsocket.c:3549 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials no está implementado en este SO" @@ -3679,12 +3694,12 @@ msgstr "No se pudo analizar el certificado codificado con PEM" msgid "Could not parse PEM-encoded private key" msgstr "No se pudo analizar la clave privada codificada con PEM" -#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:505 +#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:506 #, c-format msgid "Expecting 1 control message, got %d" msgstr "Se esperaba un mensaje de control, se obtuvieron %d" -#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:515 +#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:516 msgid "Unexpected type of ancillary data" msgstr "Tipos de datos complementarios inesperados" @@ -3720,14 +3735,14 @@ msgstr "" msgid "Error enabling SO_PASSCRED: %s" msgstr "Error al activar SO_PASSCRED: %s" -#: ../gio/gunixconnection.c:495 +#: ../gio/gunixconnection.c:496 msgid "" "Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" "Se esperaba leer un solo byte para recibir las credenciales pero se leyeron " "cero bytes" -#: ../gio/gunixconnection.c:538 +#: ../gio/gunixconnection.c:539 #, c-format msgid "Error while disabling SO_PASSCRED: %s" msgstr "Error al desactivar SO_PASSCRED: %s" @@ -3825,8 +3840,7 @@ msgstr "Datos comprimidos no válidos" #~ msgid "No such schema `%s' specified in override file `%s'" #~ msgstr "" -#~ "No existe el esquema «%s» especificado en el archivo de sobreescritura " -#~ "«%s»" +#~ "No existe el esquema «%s» especificado en el archivo de sobreescritura «%s»" #~ msgid "" #~ "Commands:\n" @@ -3971,8 +3985,8 @@ msgstr "Datos comprimidos no válidos" #~ "characters. Ignores names after the first if multiple names are given." #~ msgstr "" #~ "Indica si se debe usar los valores de reserva encontrados al acortar el " -#~ "nombre en los caracteres «-». Si se proporcionan varios nombres los " -#~ "ignora después del primero." +#~ "nombre en los caracteres «-». Si se proporcionan varios nombres los ignora " +#~ "después del primero." #~ msgid "File descriptor" #~ msgstr "Descriptor del archivo" From ff6ecc61c992e27cc018b0716a3910efb4c0656a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Apr 2011 13:26:40 -0400 Subject: [PATCH 17/85] Add forgotten apis g_desktop_app_info_launch_uris_as_manager was not listed in the docs. --- NEWS | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index dba259af0..97ac245e5 100644 --- a/NEWS +++ b/NEWS @@ -40,7 +40,35 @@ Overview of Changes from GLib 2.28.0 to 2.29.2 642042 Overriding GDBus org.freedesktop.DBus.Properties im... 642052 g_timeout_add(_seconds) cannot handle large intervals 642490 notify_desktop_launch() "g_variant_new_bytestring:... -613269,624943,637738,642797,638185,642825,642944,643197,643468,643478,643649,643795,643780,644428,644465,644552,644607,643624,639478,645789,641755,646310,644309,646420,646843,646039,641768,643074,646985 + 613269 g_type_get_qdata() doesn't work as I expected on subtypes + 624943 G_VALUE_NOCOPY_CONTENTS is undocumented + 637738 object_interface_check_properties never actually executes + 638185 GIOCondition should be annotated as "flags" + 639478 GDBusServer's g_dbus_server_new_sync() function should just... + 641755 Add g_settings_get/set_uint() helpers + 641768 dconf gsettings backend silently drops writes if it can't... + 642797 g_app_info_get_default_for_type() broken for subtypes + 642825 Unnecessary assertion failure in g_option_context_parse() + 642944 NULL key lookup using g_hash_table_lookup_extended() + 643074 Incorrect documentation for g_socket_receive() and g_socket... + 643197 g_application_id_is_valid docs imply no valid ids + 643468 GApplication docs: Warn that handling "command-line" means... + 643478 GApplication::local_command_line vfunc documentation seems wrong + 643624 Can g_variant_unref() on an already free'd variant + 643649 g_application_run() should say that argc/argv can be NULL + 643780 shouldn't need to create an action group to use actions... + 643795 g_timeout_add_seconds fires with intervals 1 second longer... + 644309 Program name is not set when using GtkApplication + 644428 Crash in failure section of g_markup_collect_attributes() + 644465 undefined reference to `_usleep' + 644552 g_timeout_add_seconds(1, ...) may have a latency of up to 2... + 644607 Correct internal definition of C_() + 645789 annotations for g_file_*_contents + 646039 g_settings_list_children() returns child that cannot be opened + 646310 Accept range with only min or max + 646420 g_dbus_method_invocation_get_parameters() docs should say... + 646843 occasional abort on autologin + 646985 add G_APPLICATION_NON_UNIQUE flag * Translation updates Afrikaans From f8b154f53a30930b6e3213c8b85bbb3dea4f68d7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 09:55:59 -0400 Subject: [PATCH 18/85] GMatchInfo: improve struct packing --- glib/gregex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glib/gregex.c b/glib/gregex.c index a1d231545..6bb655818 100644 --- a/glib/gregex.c +++ b/glib/gregex.c @@ -139,8 +139,8 @@ struct _GMatchInfo GRegexMatchFlags match_opts; /* options used at match time on the regex */ gint matches; /* number of matching sub patterns */ gint pos; /* position in the string where last match left off */ + gint n_offsets; /* number of offsets */ gint *offsets; /* array of offsets paired 0,1 ; 2,3 ; 3,4 etc */ - gint n_offsets; /* number of offsets */ gint *workspace; /* workspace for pcre_dfa_exec() */ gint n_workspace; /* number of workspace elements */ const gchar *string; /* string passed to the match function */ From 9890c03579754ecf145575f6f77af6e34aa9b05c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 09:58:13 -0400 Subject: [PATCH 19/85] GMarkupParseContext: Improve struct packing --- glib/gmarkup.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 609b88d80..cfcde88e3 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -124,6 +124,8 @@ struct _GMarkupParseContext gint line_number; gint char_number; + GMarkupParseState state; + gpointer user_data; GDestroyNotify dnotify; @@ -134,7 +136,6 @@ struct _GMarkupParseContext GString *partial_chunk; GSList *spare_chunks; - GMarkupParseState state; GSList *tag_stack; GSList *tag_stack_gstr; GSList *spare_list_nodes; From 53e3e111fd5a891e7b3668e1ca7eab4b987c855e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 10:00:03 -0400 Subject: [PATCH 20/85] GDBusWorker: Improve struct packing --- gio/gdbusprivate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c index 9c2c58c15..86edb1be7 100644 --- a/gio/gdbusprivate.c +++ b/gio/gdbusprivate.c @@ -399,10 +399,10 @@ struct GDBusWorker * only user) - we might want it to affect messages sent to the other peer too? */ gboolean frozen; + GDBusCapabilityFlags capabilities; GQueue *received_messages_while_frozen; GIOStream *stream; - GDBusCapabilityFlags capabilities; GCancellable *cancellable; GDBusWorkerMessageReceivedCallback message_received_callback; GDBusWorkerMessageAboutToBeSentCallback message_about_to_be_sent_callback; @@ -425,9 +425,9 @@ struct GDBusWorker gint read_num_ancillary_messages; /* used for writing */ + gint num_writes_pending; GMutex *write_lock; GQueue *write_queue; - gint num_writes_pending; guint64 write_num_messages_written; GList *write_pending_flushes; gboolean flush_pending; From 8903ec808bb02847d80a26c6224b319b2b2be059 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 10:00:37 -0400 Subject: [PATCH 21/85] GDBusProxy: Improve struct packing --- gio/gdbusproxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c index 67af1fb83..e9e7ecf4c 100644 --- a/gio/gdbusproxy.c +++ b/gio/gdbusproxy.c @@ -82,9 +82,9 @@ struct _GDBusProxyPrivate { GBusType bus_type; + GDBusProxyFlags flags; GDBusConnection *connection; - GDBusProxyFlags flags; gchar *name; gchar *name_owner; gchar *object_path; From 3e4f3673d8a54b3e1924d00a4a3a6048426f0b10 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 10:01:05 -0400 Subject: [PATCH 22/85] GFileAttributeMatcher: Improve struct packing --- gio/gfileinfo.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gio/gfileinfo.c b/gio/gfileinfo.c index 41c242d4b..579148dcc 100644 --- a/gio/gfileinfo.c +++ b/gio/gfileinfo.c @@ -2096,12 +2096,13 @@ typedef struct { struct _GFileAttributeMatcher { gboolean all; SubMatcher sub_matchers[ON_STACK_MATCHERS]; + gint ref; + GArray *more_sub_matchers; /* Interator */ guint32 iterator_ns; - int iterator_pos; - int ref; + gint iterator_pos; }; static void From bfe7548fe14ec3b49c96264c1e6d1650357fa41a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 10:01:37 -0400 Subject: [PATCH 23/85] GFilenameCompleter: Improve struct packing --- gio/gfilenamecompleter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gio/gfilenamecompleter.c b/gio/gfilenamecompleter.c index e84b17f73..fc9afebf8 100644 --- a/gio/gfilenamecompleter.c +++ b/gio/gfilenamecompleter.c @@ -64,8 +64,8 @@ struct _GFilenameCompleter { GFile *basenames_dir; gboolean basenames_are_escaped; - GList *basenames; gboolean dirs_only; + GList *basenames; LoadBasenamesData *basename_loader; }; From a2094d5e564433ed3a4398afeacce80519bbda44 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 10:02:12 -0400 Subject: [PATCH 24/85] GIOSchedulerJob: Improve struct packing --- gio/gioscheduler.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gio/gioscheduler.c b/gio/gioscheduler.c index 61e1afcca..cd7bba7a5 100644 --- a/gio/gioscheduler.c +++ b/gio/gioscheduler.c @@ -51,11 +51,10 @@ struct _GIOSchedulerJob { GSourceFunc cancel_func; /* Runs under job map lock */ gpointer data; GDestroyNotify destroy_notify; - - gint io_priority; GCancellable *cancellable; GMainContext *context; + gint io_priority; guint idle_tag; }; From 3f7912f142088cd27f53ba74fb69037c45223678 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 12 Apr 2011 10:02:31 -0400 Subject: [PATCH 25/85] GLocalDirectoryMonitor: Improve struct packing --- gio/glocaldirectorymonitor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gio/glocaldirectorymonitor.h b/gio/glocaldirectorymonitor.h index 418634e92..1d54585ee 100644 --- a/gio/glocaldirectorymonitor.h +++ b/gio/glocaldirectorymonitor.h @@ -47,8 +47,8 @@ struct _GLocalDirectoryMonitor gchar *dirname; GFileMonitorFlags flags; /* For mount emulation */ - GUnixMountMonitor *mount_monitor; gboolean was_mounted; + GUnixMountMonitor *mount_monitor; }; struct _GLocalDirectoryMonitorClass From 3fd9f2e8f98d59c614a04be8b4a052027e025a64 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 12 Apr 2011 11:00:54 -0400 Subject: [PATCH 26/85] gsettings: Implement reset-recursively Motivation was the ability to: $ gsettings reset-recursively org.gnome.gnome-panel https://bugzilla.gnome.org/show_bug.cgi?id=647579 --- gio/gsettings-tool.c | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c index a5d43a473..bed72f170 100644 --- a/gio/gsettings-tool.c +++ b/gio/gsettings-tool.c @@ -357,6 +357,53 @@ gsettings_reset (GSettings *settings, g_settings_sync (); } +static void +reset_all_keys (GSettings *settings) +{ + gchar **keys; + gint i; + + keys = g_settings_list_keys (settings); + for (i = 0; keys[i]; i++) + { + g_settings_reset (settings, keys[i]); + } + + g_strfreev (keys); +} + +static void +gsettings_reset_recursively (GSettings *settings, + const gchar *key, + const gchar *value) +{ + gchar **children; + gint i; + + g_settings_delay (settings); + + reset_all_keys (settings); + children = g_settings_list_children (settings); + for (i = 0; children[i]; i++) + { + GSettings *child; + gchar *schema; + + child = g_settings_get_child (settings, children[i]); + g_object_get (child, "schema", &schema, NULL); + + if (is_schema (schema)) + reset_all_keys (child); + + g_object_unref (child); + g_free (schema); + } + + g_strfreev (children); + + g_settings_sync (); +} + static void gsettings_writable (GSettings *settings, const gchar *key, @@ -537,6 +584,12 @@ gsettings_help (gboolean requested, synopsis = N_("SCHEMA[:PATH] KEY"); } + else if (strcmp (command, "reset-recursively") == 0) + { + description = _("Reset all keys in SCHEMA to their defaults"); + synopsis = N_("SCHEMA[:PATH]"); + } + else if (strcmp (command, "writable") == 0) { description = _("Check if KEY is writable"); @@ -574,6 +627,7 @@ gsettings_help (gboolean requested, " get Get the value of a key\n" " set Set the value of a key\n" " reset Reset the value of a key\n" + " reset-recursively Reset all values in a given schema\n" " writable Check if a key is writable\n" " monitor Watch for changes\n" "\n" @@ -679,6 +733,9 @@ main (int argc, char **argv) else if (argc == 4 && strcmp (argv[1], "reset") == 0) function = gsettings_reset; + else if (argc == 3 && strcmp (argv[1], "reset-recursively") == 0) + function = gsettings_reset_recursively; + else if (argc == 4 && strcmp (argv[1], "writable") == 0) function = gsettings_writable; From bf087aabbf3811ccb0abce532122c190673356e5 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 12 Apr 2011 12:56:33 -0400 Subject: [PATCH 27/85] gsettings-tool fixes: Add missing _apply(), add unset-recursively to man page --- docs/reference/gio/gsettings.xml | 12 ++++++++++++ gio/gsettings-tool.c | 1 + 2 files changed, 13 insertions(+) diff --git a/docs/reference/gio/gsettings.xml b/docs/reference/gio/gsettings.xml index 1d8e38187..f55784dc2 100644 --- a/docs/reference/gio/gsettings.xml +++ b/docs/reference/gio/gsettings.xml @@ -49,6 +49,11 @@ SCHEMA:PATH KEY + + gsettings + reset-recursively + SCHEMA:PATH + gsettings list-schemas @@ -151,6 +156,13 @@ Resets KEY to its default value. + + + +Reset all keys under the given SCHEMA. + + + diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c index bed72f170..824da5a14 100644 --- a/gio/gsettings-tool.c +++ b/gio/gsettings-tool.c @@ -401,6 +401,7 @@ gsettings_reset_recursively (GSettings *settings, g_strfreev (children); + g_settings_apply (settings); g_settings_sync (); } From c1a7599568ba953db6d5f6c840a9c4fb121a9bac Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Apr 2011 00:39:01 -0400 Subject: [PATCH 28/85] Fix a typo in the GSettings docs Pointed out by Thomas Andersen https://bugzilla.gnome.org/show_bug.cgi?id=647600 --- gio/gsettings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gio/gsettings.c b/gio/gsettings.c index 74232f050..7731e97c4 100644 --- a/gio/gsettings.c +++ b/gio/gsettings.c @@ -59,7 +59,7 @@ * even need to be started in this case. For this reason, you should * only ever modify #GSettings keys in response to explicit user action. * Particular care should be paid to ensure that modifications are not - * made during startup -- for example, when settings the initial value + * made during startup -- for example, when setting the initial value * of preferences widgets. The built-in g_settings_bind() functionality * is careful not to write settings in response to notify signals as a * result of modifications that it makes to widgets. From 5f90baafb5210a551289900a160928dfd698037e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Apr 2011 00:42:51 -0400 Subject: [PATCH 29/85] More updates --- NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS b/NEWS index 97ac245e5..afebe3b09 100644 --- a/NEWS +++ b/NEWS @@ -69,6 +69,8 @@ Overview of Changes from GLib 2.28.0 to 2.29.2 646420 g_dbus_method_invocation_get_parameters() docs should say... 646843 occasional abort on autologin 646985 add G_APPLICATION_NON_UNIQUE flag + 647579 gsettings: Implement reset-recursively + 647600 gsettings description has typo * Translation updates Afrikaans From 67b8c7ea8adeef5e2db5e2ed65a15db1e6c91f74 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Apr 2011 01:31:19 -0400 Subject: [PATCH 30/85] Fix non-srcdir builds --- glib/tests/mappedfile.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/glib/tests/mappedfile.c b/glib/tests/mappedfile.c index 8a0af9b21..2678fd20d 100644 --- a/glib/tests/mappedfile.c +++ b/glib/tests/mappedfile.c @@ -8,7 +8,7 @@ test_empty (void) GError *error; error = NULL; - file = g_mapped_file_new ("empty", FALSE, &error); + file = g_mapped_file_new (SRCDIR "/empty", FALSE, &error); g_assert_no_error (error); g_assert (g_mapped_file_get_contents (file) == NULL); @@ -39,7 +39,7 @@ test_writable (void) const gchar *new = "abcdefghijklmnopqrstuvxyz"; error = NULL; - file = g_mapped_file_new ("4096-random-bytes", TRUE, &error); + file = g_mapped_file_new (SRCDIR "/4096-random-bytes", TRUE, &error); g_assert_no_error (error); contents = g_mapped_file_get_contents (file); @@ -51,7 +51,7 @@ test_writable (void) g_mapped_file_free (file); error = NULL; - file = g_mapped_file_new ("4096-random-bytes", TRUE, &error); + file = g_mapped_file_new (SRCDIR "/4096-random-bytes", TRUE, &error); g_assert_no_error (error); contents = g_mapped_file_get_contents (file); From 0e55346420e74a562b42d14a136c07a4bbd9d955 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Apr 2011 08:19:35 -0400 Subject: [PATCH 31/85] Skip the writable test if the file is not writable Since make distcheck operates on a readonly source tree. --- glib/tests/mappedfile.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/glib/tests/mappedfile.c b/glib/tests/mappedfile.c index 2678fd20d..b9f2aa1dc 100644 --- a/glib/tests/mappedfile.c +++ b/glib/tests/mappedfile.c @@ -1,5 +1,9 @@ +#include #include #include +#ifdef HAVE_UNISTD_H +#include +#endif static void test_empty (void) @@ -38,6 +42,12 @@ test_writable (void) const gchar *old = "MMMMMMMMMMMMMMMMMMMMMMMMM"; const gchar *new = "abcdefghijklmnopqrstuvxyz"; + if (access (SRCDIR "/4096-random-bytes", W_OK) != 0) + { + g_test_message ("Skipping writable mapping test"); + return; + } + error = NULL; file = g_mapped_file_new (SRCDIR "/4096-random-bytes", TRUE, &error); g_assert_no_error (error); From 76492d7741c7c6f48d2d7301c872020e42b025ff Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 13 Apr 2011 08:48:10 -0400 Subject: [PATCH 32/85] Bump version --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 1fafc76a9..73690f4c6 100644 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,7 @@ m4_define(glib_configure_ac) m4_define([glib_major_version], [2]) m4_define([glib_minor_version], [29]) -m4_define([glib_micro_version], [2]) +m4_define([glib_micro_version], [3]) m4_define([glib_interface_age], [0]) m4_define([glib_binary_age], [m4_eval(100 * glib_minor_version + glib_micro_version)]) From 4d15ba90c04e474f996777c9931d50eae712816e Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Wed, 13 Apr 2011 11:46:33 -0400 Subject: [PATCH 33/85] G_VARIANT_TYPE_VARDICT: Add 'Since:' tag --- glib/gvarianttype.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glib/gvarianttype.h b/glib/gvarianttype.h index ecf9d2e61..5c686ddac 100644 --- a/glib/gvarianttype.h +++ b/glib/gvarianttype.h @@ -260,6 +260,8 @@ typedef struct _GVariantType GVariantType; * * The type of a dictionary mapping strings to variants (the ubiquitous * "a{sv}" type). + * + * Since: 2.30 **/ #define G_VARIANT_TYPE_VARDICT ((const GVariantType *) "a{sv}") From 68b16deb1f4ec739f80291156f2e0e2eed87d225 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 13 Apr 2011 14:03:58 -0400 Subject: [PATCH 34/85] gdbusconnection: Avoid tripping assertion if we fail to authenticate twice If g_bus_get_sync() fails in authentication (because e.g. the process uid, doesn't match the expected in EXTERNAL), a secondary call to g_bus_get_sync() would notice we aren't initialized, and try to initialize. The assertion here is just wrong; we now explicitly and clearly handle both cases where we already have an error, or we already succeeded. https://bugzilla.gnome.org/show_bug.cgi?id=635694 --- gio/gdbusconnection.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c index 3bacf81f5..999cb8043 100644 --- a/gio/gdbusconnection.c +++ b/gio/gdbusconnection.c @@ -2264,15 +2264,20 @@ initable_init (GInitable *initable, ret = FALSE; + /* First, handle the case where the connection already has an + * initialization error set. + */ + if (connection->initialization_error != NULL) + goto out; + + /* Also make this a no-op if we're already initialized fine */ if (connection->is_initialized) { - if (connection->stream != NULL) - ret = TRUE; - else - g_assert (connection->initialization_error != NULL); + ret = TRUE; goto out; } - g_assert (connection->initialization_error == NULL); + + g_assert (connection->initialization_error == NULL && !connection->is_initialized); /* The user can pass multiple (but mutally exclusive) construct * properties: From 25c57d31c5f8bb36f17328bbeacce4796490b241 Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Wed, 13 Apr 2011 17:49:19 -0400 Subject: [PATCH 35/85] GDBus: Allow tcp: and nonce-tcp: addresses without any arguments This was broken in this commit http://git.gnome.org/browse/glib/commit/?id=0729260141bb585943ad1c6efa8ab7ee9058b0aa The test case for catching this is unfortunately commented out (so it didn't catch it) due to this bug https://bugzilla.gnome.org/show_bug.cgi?id=631379 still being unresolved. Signed-off-by: David Zeuthen --- gio/gdbusaddress.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c index 1f2645e1a..642aa2d9f 100644 --- a/gio/gdbusaddress.c +++ b/gio/gdbusaddress.c @@ -258,25 +258,13 @@ is_valid_nonce_tcp (const gchar *address_entry, goto out; } - if (nonce_file == NULL) + if (host != NULL) { - g_set_error (error, - G_IO_ERROR, - G_IO_ERROR_INVALID_ARGUMENT, - _("Error in address `%s' - missing noncefile attribute"), - address_entry); - goto out; - } - if (host == NULL) - { - g_set_error (error, - G_IO_ERROR, - G_IO_ERROR_INVALID_ARGUMENT, - _("Error in address `%s' - missing host attribute"), - address_entry); - goto out; + /* TODO: validate host */ } + nonce_file = nonce_file; /* To avoid -Wunused-but-set-variable */ + ret= TRUE; out: @@ -351,14 +339,9 @@ is_valid_tcp (const gchar *address_entry, goto out; } - if (host == NULL) + if (host != NULL) { - g_set_error (error, - G_IO_ERROR, - G_IO_ERROR_INVALID_ARGUMENT, - _("Error in address `%s' - missing host attribute"), - address_entry); - goto out; + /* TODO: validate host */ } ret= TRUE; From befb60d8268ad2296fe94cebbeadf749314c7a70 Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Wed, 13 Apr 2011 18:19:57 -0400 Subject: [PATCH 36/85] GDBus: Nuke debug spew from the ANONYMOUS authentication method Signed-off-by: David Zeuthen --- gio/gdbusauthmechanismanon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gio/gdbusauthmechanismanon.c b/gio/gdbusauthmechanismanon.c index 601200d75..ea5843821 100644 --- a/gio/gdbusauthmechanismanon.c +++ b/gio/gdbusauthmechanismanon.c @@ -187,8 +187,7 @@ mechanism_server_initiate (GDBusAuthMechanism *mechanism, g_return_if_fail (G_IS_DBUS_AUTH_MECHANISM_ANON (mechanism)); g_return_if_fail (!m->priv->is_server && !m->priv->is_client); - if (initial_response != NULL) - g_debug ("ANONYMOUS: initial_response was `%s'", initial_response); + //g_debug ("ANONYMOUS: initial_response was `%s'", initial_response); m->priv->is_server = TRUE; m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_ACCEPTED; From 3b997d92c13217db78fcc774bff6d6c0fcd919e6 Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Wed, 13 Apr 2011 18:21:16 -0400 Subject: [PATCH 37/85] GDBus: Add test case for the ANONYMOUS authentication method Signed-off-by: David Zeuthen --- gio/tests/gdbus-peer.c | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/gio/tests/gdbus-peer.c b/gio/tests/gdbus-peer.c index e3046181e..b6a9b67a1 100644 --- a/gio/tests/gdbus-peer.c +++ b/gio/tests/gdbus-peer.c @@ -1438,6 +1438,97 @@ test_overflow (void) /* ---------------------------------------------------------------------------------------------------- */ +#ifdef BUG_631379_FIXED +static gboolean +tcp_anonymous_on_new_connection (GDBusServer *server, + GDBusConnection *connection, + gpointer user_data) +{ + gboolean *seen_connection = user_data; + *seen_connection = TRUE; + return TRUE; +} + +static gpointer +tcp_anonymous_service_thread_func (gpointer user_data) +{ + gboolean *seen_connection = user_data; + GMainContext *service_context; + GError *error; + + service_context = g_main_context_new (); + g_main_context_push_thread_default (service_context); + + error = NULL; + server = g_dbus_server_new_sync ("tcp:", + G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS, + test_guid, + NULL, /* GDBusObserver* */ + NULL, /* GCancellable* */ + &error); + g_assert_no_error (error); + + g_signal_connect (server, + "new-connection", + G_CALLBACK (tcp_anonymous_on_new_connection), + seen_connection); + + g_dbus_server_start (server); + + service_loop = g_main_loop_new (service_context, FALSE); + g_main_loop_run (service_loop); + + g_main_context_pop_thread_default (service_context); + + g_main_loop_unref (service_loop); + g_main_context_unref (service_context); + + return NULL; +} + +static void +test_tcp_anonymous (void) +{ + gboolean seen_connection; + GThread *service_thread; + GDBusConnection *connection; + GError *error; + + seen_connection = FALSE; + service_loop = NULL; + service_thread = g_thread_create (tcp_anonymous_service_thread_func, + &seen_connection, /* user_data */ + TRUE, /* joinable */ + &error); + while (service_loop == NULL) + g_thread_yield (); + g_assert (server != NULL); + + error = NULL; + connection = g_dbus_connection_new_for_address_sync (g_dbus_server_get_client_address (server), + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT, + NULL, /* GDBusAuthObserver* */ + NULL, /* GCancellable */ + &error); + g_assert_no_error (error); + g_assert (connection != NULL); + + while (!seen_connection) + g_thread_yield (); + + g_object_unref (connection); + + g_main_loop_quit (service_loop); + g_dbus_server_stop (server); + g_object_unref (server); + server = NULL; + + g_thread_join (service_thread); +} +#endif + +/* ---------------------------------------------------------------------------------------------------- */ + int main (int argc, char *argv[]) @@ -1462,6 +1553,7 @@ main (int argc, g_test_add_func ("/gdbus/delayed-message-processing", delayed_message_processing); #ifdef BUG_631379_FIXED g_test_add_func ("/gdbus/nonce-tcp", test_nonce_tcp); + g_test_add_func ("/gdbus/tcp-anonymous", test_tcp_anonymous); #endif g_test_add_func ("/gdbus/credentials", test_credentials); g_test_add_func ("/gdbus/overflow", test_overflow); From e38ef14e8b8d2fed909d92514b665bb8c3c99e6c Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Wed, 13 Apr 2011 18:40:47 -0400 Subject: [PATCH 38/85] GDBus: If an authentication method fail, don't give up, just try the next one This problem was reported in bug 647602. https://bugzilla.gnome.org/show_bug.cgi?id=647602 Signed-off-by: David Zeuthen --- gio/gdbusauth.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gio/gdbusauth.c b/gio/gdbusauth.c index f190469a4..29e229a1f 100644 --- a/gio/gdbusauth.c +++ b/gio/gdbusauth.c @@ -663,7 +663,8 @@ _g_dbus_auth_run_client (GDBusAuth *auth, if (line == NULL) goto out; debug_print ("CLIENT: WaitingForReject, read '%s'", line); - foobar: + + choose_mechanism: if (!g_str_has_prefix (line, "REJECTED ")) { g_set_error (error, @@ -739,7 +740,7 @@ _g_dbus_auth_run_client (GDBusAuth *auth, } else if (g_str_has_prefix (line, "REJECTED ")) { - goto foobar; + goto choose_mechanism; } else { @@ -841,6 +842,13 @@ _g_dbus_auth_run_client (GDBusAuth *auth, } state = CLIENT_STATE_WAITING_FOR_OK; } + else if (g_str_has_prefix (line, "REJECTED ")) + { + /* could be the chosen authentication method just doesn't work. Try + * another one... + */ + goto choose_mechanism; + } else { g_set_error (error, From 8b03077a44092ce2b510ef3246da063cacc8d951 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 14 Apr 2011 09:54:17 -0400 Subject: [PATCH 39/85] GTimeZone: fix non-threadsafe refcounting In the previous code, if the timezone was pulled out of the cache again just as the last reference was being dropped, the cache code will increase its refcount and return it while the unref code was freeing it. Protect against that. Closes #646435. --- glib/gtimezone.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/glib/gtimezone.c b/glib/gtimezone.c index 2f77f018e..0d9d6f742 100644 --- a/glib/gtimezone.c +++ b/glib/gtimezone.c @@ -146,29 +146,41 @@ static GHashTable/**/ *time_zones; void g_time_zone_unref (GTimeZone *tz) { - g_assert (tz->ref_count > 0); + int ref_count; - if (g_atomic_int_dec_and_test (&tz->ref_count)) +again: + ref_count = g_atomic_int_get (&tz->ref_count); + + g_assert (ref_count > 0); + + if (ref_count == 1) { if G_UNLIKELY (tz == local_timezone) { g_critical ("The last reference on the local timezone was just " "dropped, but GTimeZone itself still owns one. This " "means that g_time_zone_unref() was called too many " - "times. Restoring the refcount to 1."); + "times. Returning without lowering the refcount."); /* We don't want to just inc this back again since if there * are refcounting bugs in the code then maybe we are already * at -1 and inc will just take us back to 0. Set to 1 to be * sure. */ - tz->ref_count = 1; return; } if (tz->name != NULL) { G_LOCK(time_zones); + + /* someone else might have grabbed a ref in the meantime */ + if G_UNLIKELY (g_atomic_int_get (&tz->ref_count) != 1) + { + G_UNLOCK(time_zones); + goto again; + } + g_hash_table_remove (time_zones, tz->name); G_UNLOCK(time_zones); } @@ -180,6 +192,11 @@ g_time_zone_unref (GTimeZone *tz) g_slice_free (GTimeZone, tz); } + + else if G_UNLIKELY (!g_atomic_int_compare_and_exchange (&tz->ref_count, + ref_count, + ref_count - 1)) + goto again; } /** From 33515d4eb4175fac70ab42151020336c34bc2083 Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Thu, 14 Apr 2011 11:27:57 -0400 Subject: [PATCH 40/85] GInetAddress: add equal() method This is needed in the fix for https://bugzilla.gnome.org/show_bug.cgi?id=631379 Signed-off-by: David Zeuthen --- docs/reference/gio/gio-sections.txt | 1 + gio/ginetaddress.c | 29 +++++++++++++++++++++++++++++ gio/ginetaddress.h | 3 +++ gio/gio.symbols | 1 + 4 files changed, 34 insertions(+) diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index a79be0596..13c7cc59b 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -1486,6 +1486,7 @@ g_inet_address_new_from_string g_inet_address_new_from_bytes g_inet_address_new_any g_inet_address_new_loopback +g_inet_address_equal g_inet_address_to_bytes g_inet_address_get_native_size g_inet_address_to_string diff --git a/gio/ginetaddress.c b/gio/ginetaddress.c index 260c7752d..743ac0682 100644 --- a/gio/ginetaddress.c +++ b/gio/ginetaddress.c @@ -866,3 +866,32 @@ g_inet_address_get_is_mc_site_local (GInetAddress *address) else return IN6_IS_ADDR_MC_SITELOCAL (&address->priv->addr.ipv6); } + +/** + * g_inet_address_equal: + * @address: A #GInetAddress. + * @other_address: Another #GInetAddress. + * + * Checks if two #GInetAddress instances are equal, e.g. the same address. + * + * Returns: %TRUE if @address and @other_address are equal, %FALSE otherwise. + * + * Since: 2.30 + */ +gboolean +g_inet_address_equal (GInetAddress *address, + GInetAddress *other_address) +{ + g_return_val_if_fail (G_IS_INET_ADDRESS (address), FALSE); + g_return_val_if_fail (G_IS_INET_ADDRESS (other_address), FALSE); + + if (g_inet_address_get_family (address) != g_inet_address_get_family (other_address)) + return FALSE; + + if (memcmp (g_inet_address_to_bytes (address), + g_inet_address_to_bytes (other_address), + g_inet_address_get_native_size (address)) != 0) + return FALSE; + + return TRUE; +} diff --git a/gio/ginetaddress.h b/gio/ginetaddress.h index 9c11efefd..d523cd654 100644 --- a/gio/ginetaddress.h +++ b/gio/ginetaddress.h @@ -69,6 +69,9 @@ GInetAddress * g_inet_address_new_loopback (GSocketFamily GInetAddress * g_inet_address_new_any (GSocketFamily family); +gboolean g_inet_address_equal (GInetAddress *address, + GInetAddress *other_address); + gchar * g_inet_address_to_string (GInetAddress *address); const guint8 * g_inet_address_to_bytes (GInetAddress *address); diff --git a/gio/gio.symbols b/gio/gio.symbols index 64275aebc..68ed9a3f3 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -1123,6 +1123,7 @@ g_inet_address_get_is_site_local g_inet_address_to_bytes g_inet_address_get_native_size g_inet_address_to_string +g_inet_address_equal #endif #endif From 4da18247592f1159ee03e414990d2a744aa0a8c7 Mon Sep 17 00:00:00 2001 From: David Zeuthen Date: Thu, 14 Apr 2011 11:27:57 -0400 Subject: [PATCH 41/85] GResolver: Don't return duplicate addresses ... this was causing a GDBus test-case to fail so now that it is fixed, also reenable the test case. https://bugzilla.gnome.org/show_bug.cgi?id=631379 Signed-off-by: David Zeuthen --- gio/gresolver.c | 49 ++++++++++++++++++++++++++++++++++++++---- gio/tests/gdbus-peer.c | 6 ------ 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/gio/gresolver.c b/gio/gresolver.c index 9309846ec..d08b3b555 100644 --- a/gio/gresolver.c +++ b/gio/gresolver.c @@ -212,6 +212,36 @@ g_resolver_maybe_reload (GResolver *resolver) #endif } +/* filter out duplicates, cf. https://bugzilla.gnome.org/show_bug.cgi?id=631379 */ +static void +remove_duplicates (GList *addrs) +{ + GList *l; + GList *ll; + GList *lll; + + /* TODO: if this is too slow (it's O(n^2) but n is typically really + * small), we can do something more clever but note that we must not + * change the order of elements... + */ + for (l = addrs; l != NULL; l = l->next) + { + GInetAddress *address = G_INET_ADDRESS (l->data); + for (ll = l->next; ll != NULL; ll = lll) + { + GInetAddress *other_address = G_INET_ADDRESS (ll->data); + lll = ll->next; + if (g_inet_address_equal (address, other_address)) + { + g_object_unref (other_address); + /* we never return the first element */ + g_warn_if_fail (g_list_delete_link (addrs, ll) == addrs); + } + } + } +} + + /** * g_resolver_lookup_by_name: * @resolver: a #GResolver @@ -225,9 +255,12 @@ g_resolver_maybe_reload (GResolver *resolver) * a wrapper around g_inet_address_new_from_string()). * * On success, g_resolver_lookup_by_name() will return a #GList of - * #GInetAddress, sorted in order of preference. (That is, you should - * attempt to connect to the first address first, then the second if - * the first fails, etc.) + * #GInetAddress, sorted in order of preference and guaranteed to not + * contain duplicates. That is, if using the result to connect to + * @hostname, you should attempt to connect to the first address + * first, then the second if the first fails, etc. If you are using + * the result to listen on a socket, it is appropriate to add each + * result using e.g. g_socket_listener_add_address(). * * If the DNS resolution fails, @error (if non-%NULL) will be set to a * value from #GResolverError. @@ -272,6 +305,8 @@ g_resolver_lookup_by_name (GResolver *resolver, addrs = G_RESOLVER_GET_CLASS (resolver)-> lookup_by_name (resolver, hostname, cancellable, error); + remove_duplicates (addrs); + g_free (ascii_hostname); return addrs; } @@ -354,6 +389,8 @@ g_resolver_lookup_by_name_finish (GResolver *resolver, GAsyncResult *result, GError **error) { + GList *addrs; + g_return_val_if_fail (G_IS_RESOLVER (resolver), NULL); if (G_IS_SIMPLE_ASYNC_RESULT (result)) @@ -373,8 +410,12 @@ g_resolver_lookup_by_name_finish (GResolver *resolver, } } - return G_RESOLVER_GET_CLASS (resolver)-> + addrs = G_RESOLVER_GET_CLASS (resolver)-> lookup_by_name_finish (resolver, result, error); + + remove_duplicates (addrs); + + return addrs; } /** diff --git a/gio/tests/gdbus-peer.c b/gio/tests/gdbus-peer.c index b6a9b67a1..e582d570f 100644 --- a/gio/tests/gdbus-peer.c +++ b/gio/tests/gdbus-peer.c @@ -1083,7 +1083,6 @@ delayed_message_processing (void) /* ---------------------------------------------------------------------------------------------------- */ -#ifdef BUG_631379_FIXED static gboolean nonce_tcp_on_authorize_authenticated_peer (GDBusAuthObserver *observer, GIOStream *stream, @@ -1285,7 +1284,6 @@ test_nonce_tcp (void) g_main_loop_quit (service_loop); g_thread_join (service_thread); } -#endif static void test_credentials (void) @@ -1438,7 +1436,6 @@ test_overflow (void) /* ---------------------------------------------------------------------------------------------------- */ -#ifdef BUG_631379_FIXED static gboolean tcp_anonymous_on_new_connection (GDBusServer *server, GDBusConnection *connection, @@ -1525,7 +1522,6 @@ test_tcp_anonymous (void) g_thread_join (service_thread); } -#endif /* ---------------------------------------------------------------------------------------------------- */ @@ -1551,10 +1547,8 @@ main (int argc, g_test_add_func ("/gdbus/peer-to-peer", test_peer); g_test_add_func ("/gdbus/delayed-message-processing", delayed_message_processing); -#ifdef BUG_631379_FIXED g_test_add_func ("/gdbus/nonce-tcp", test_nonce_tcp); g_test_add_func ("/gdbus/tcp-anonymous", test_tcp_anonymous); -#endif g_test_add_func ("/gdbus/credentials", test_credentials); g_test_add_func ("/gdbus/overflow", test_overflow); From a3722d0408fd3746a30180e0c37f1713673a1fcc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 14 Apr 2011 20:41:54 -0400 Subject: [PATCH 42/85] Slight docs rewording Proposed by Thomas Andersen, https://bugzilla.gnome.org/show_bug.cgi?id=647700 --- gio/gsettings.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gio/gsettings.c b/gio/gsettings.c index 7731e97c4..275edf16b 100644 --- a/gio/gsettings.c +++ b/gio/gsettings.c @@ -810,8 +810,8 @@ g_settings_new_with_path (const gchar *schema, * * Creates a new #GSettings object with a given schema and backend. * - * Creating settings objects with an different backend allows accessing settings - * from a database other than the usual one. For example, it may make + * Creating a #GSettings object with a different backend allows accessing + * settings from a database other than the usual one. For example, it may make * sense to pass a backend corresponding to the "defaults" settings database on * the system to get a settings object that modifies the system default * settings instead of the settings for this user. From 8b50e2f5475f9817baa358e2f638d0853e50ffb1 Mon Sep 17 00:00:00 2001 From: Kean Johnston Date: Fri, 15 Apr 2011 10:15:04 +0200 Subject: [PATCH 43/85] GLocalFile: Use _fstati64 rather than stat on Win32 We want this to get 64bit timestamps and file lenghts. --- gio/glocalfile.c | 12 +++++++++--- gio/glocalfileoutputstream.c | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gio/glocalfile.c b/gio/glocalfile.c index 9e4aace78..84ba0e20e 100644 --- a/gio/glocalfile.c +++ b/gio/glocalfile.c @@ -1297,8 +1297,8 @@ g_local_file_read (GFile *file, GError **error) { GLocalFile *local = G_LOCAL_FILE (file); - int fd; - struct stat buf; + int fd, ret; + GLocalFileStat buf; fd = g_open (local->filename, O_RDONLY|O_BINARY, 0); if (fd == -1) @@ -1312,7 +1312,13 @@ g_local_file_read (GFile *file, return NULL; } - if (fstat(fd, &buf) == 0 && S_ISDIR (buf.st_mode)) +#ifdef G_OS_WIN32 + ret = _fstati64 (fd, &buf); +#else + ret = fstat (fd, &buf); +#endif + + if (ret == 0 && S_ISDIR (buf.st_mode)) { close (fd); g_set_error_literal (error, G_IO_ERROR, diff --git a/gio/glocalfileoutputstream.c b/gio/glocalfileoutputstream.c index 40576a9cc..650550e75 100644 --- a/gio/glocalfileoutputstream.c +++ b/gio/glocalfileoutputstream.c @@ -909,10 +909,16 @@ handle_overwrite_open (const char *filename, ) ) { - struct stat tmp_statbuf; - + GLocalFileStat tmp_statbuf; + int tres; + +#ifdef G_OS_WIN32 + tres = _fstati64 (tmpfd, &tmp_statbuf); +#else + tres = fstat (tmpfd, &tmp_statbuf); +#endif /* Check that we really needed to change something */ - if (fstat (tmpfd, &tmp_statbuf) != 0 || + if (tres != 0 || original_stat.st_uid != tmp_statbuf.st_uid || original_stat.st_gid != tmp_statbuf.st_gid || original_stat.st_mode != tmp_statbuf.st_mode) From c2387ddff164becd90654b459d8c6031c3656577 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 31 Mar 2011 13:58:55 +0100 Subject: [PATCH 44/85] /gdbus/message-serialize-invalid test: be compatible with D-Bus 1.4.8 Older versions of libdbus would let you construct an invalid DBusMessage, but that's a bug, which will be fixed in 1.4.8/1.5.0. Instead, construct a valid message of the same length, then replace substrings in the serialized blob with their invalid counterparts. Bug: https://bugzilla.gnome.org/show_bug.cgi?id=646326 Signed-off-by: David Zeuthen --- gio/tests/gdbus-serialization.c | 43 ++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/gio/tests/gdbus-serialization.c b/gio/tests/gdbus-serialization.c index 38227c34f..25dada2e9 100644 --- a/gio/tests/gdbus-serialization.c +++ b/gio/tests/gdbus-serialization.c @@ -735,16 +735,31 @@ message_serialize_complex (void) /* ---------------------------------------------------------------------------------------------------- */ +static void +replace (char *blob, + gsize len, + const char *before, + const char *after) +{ + gsize i; + gsize slen = strlen (before) + 1; + + g_assert_cmpuint (strlen (before), ==, strlen (after)); + g_assert_cmpuint (len, >=, slen); + + for (i = 0; i < (len - slen + 1); i++) + { + if (memcmp (blob + i, before, slen) == 0) + memcpy (blob + i, after, slen); + } +} + static void message_serialize_invalid (void) { guint n; - /* Here we're relying on libdbus-1's DBusMessage type not checking - * anything. If that were to change, we'd need to do our own - * thing. - * - * Other things we could check (note that GDBus _does_ check for all + /* Other things we could check (note that GDBus _does_ check for all * these things - we just don't have test-suit coverage for it) * * - array exceeding 64 MiB (2^26 bytes) - unfortunately libdbus-1 checks @@ -769,9 +784,14 @@ message_serialize_invalid (void) DBusMessage *dbus_message; char *blob; int blob_len; + int i; + /* these are in pairs with matching length */ + const gchar *valid_utf8_str = "this is valid..."; const gchar *invalid_utf8_str = "this is invalid\xff"; - const gchar *invalid_object_path = "/this/is/not a valid object path"; + const gchar *valid_signature = "a{sv}a{sv}a{sv}aiai"; const gchar *invalid_signature = "not valid signature"; + const gchar *valid_object_path = "/this/is/a/valid/dbus/object/path"; + const gchar *invalid_object_path = "/this/is/not a valid object path!"; dbus_message = dbus_message_new (DBUS_MESSAGE_TYPE_METHOD_CALL); dbus_message_set_serial (dbus_message, 0x41); @@ -782,21 +802,21 @@ message_serialize_invalid (void) case 0: /* invalid UTF-8 */ dbus_message_append_args (dbus_message, - DBUS_TYPE_STRING, &invalid_utf8_str, + DBUS_TYPE_STRING, &valid_utf8_str, DBUS_TYPE_INVALID); break; case 1: /* invalid object path */ dbus_message_append_args (dbus_message, - DBUS_TYPE_OBJECT_PATH, &invalid_object_path, + DBUS_TYPE_OBJECT_PATH, &valid_object_path, DBUS_TYPE_INVALID); break; case 2: /* invalid signature */ dbus_message_append_args (dbus_message, - DBUS_TYPE_SIGNATURE, &invalid_signature, + DBUS_TYPE_SIGNATURE, &valid_signature, DBUS_TYPE_INVALID); break; @@ -805,6 +825,11 @@ message_serialize_invalid (void) break; } dbus_message_marshal (dbus_message, &blob, &blob_len); + /* hack up the message to be invalid by replacing each valid string + * with its invalid counterpart */ + replace (blob, blob_len, valid_utf8_str, invalid_utf8_str); + replace (blob, blob_len, valid_object_path, invalid_object_path); + replace (blob, blob_len, valid_signature, invalid_signature); error = NULL; message = g_dbus_message_new_from_blob ((guchar *) blob, From 2553511f4eaf4af8e48f21f4a3a0ac7c58defc8a Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Wed, 22 Dec 2010 10:11:11 +0100 Subject: [PATCH 45/85] Bug 637561 - Crash when using G_DBUS_SERVER_FLAGS_RUN_IN_THREAD https://bugzilla.gnome.org/show_bug.cgi?id=637561 Signed-off-by: David Zeuthen --- gio/gdbusserver.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gio/gdbusserver.c b/gio/gdbusserver.c index 9b5b8c3ba..964abe77f 100644 --- a/gio/gdbusserver.c +++ b/gio/gdbusserver.c @@ -979,11 +979,16 @@ on_run (GSocketService *service, if (server->flags & G_DBUS_SERVER_FLAGS_RUN_IN_THREAD) { + gboolean claimed; + + claimed = FALSE; g_signal_emit (server, _signals[NEW_CONNECTION_SIGNAL], 0, - connection); - g_dbus_connection_start_message_processing (connection); + connection, + &claimed); + if (claimed) + g_dbus_connection_start_message_processing (connection); g_object_unref (connection); } else From a5dd6fcc4f46a322cc547a5fcfa1b52cbc5ec6d6 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Fri, 15 Apr 2011 09:27:38 -0400 Subject: [PATCH 46/85] builder: do not include on win32 Spotted by Kean Johnston . https://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00010.html --- gvdb-builder.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gvdb-builder.c b/gvdb-builder.c index 4b48d804e..f65ca7dbd 100644 --- a/gvdb-builder.c +++ b/gvdb-builder.c @@ -24,7 +24,9 @@ #include #include +#if !defined(G_OS_WIN32) || !defined(_MSC_VER) #include +#endif #include From 0f9b83dd36a252552e4644257c0fa8272f6ba847 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Fri, 15 Apr 2011 09:30:24 -0400 Subject: [PATCH 47/85] GApplication: #include "gsettings.h" Since we call g_settings_sync() from there now... --- gio/gapplication.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gio/gapplication.c b/gio/gapplication.c index ee6cbe9c4..f3e0d9526 100644 --- a/gio/gapplication.c +++ b/gio/gapplication.c @@ -27,6 +27,7 @@ #include "gapplicationcommandline.h" #include "gapplicationimpl.h" #include "gactiongroup.h" +#include "gsettings.h" #include "gioenumtypes.h" #include "gio-marshal.h" From 78203f369977b797116c9fc3b2c72a56c55db656 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 14 Apr 2011 16:03:18 -0400 Subject: [PATCH 48/85] gapplication: Fix typo in property --- gio/gapplication.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gio/gapplication.c b/gio/gapplication.c index f3e0d9526..2f831576a 100644 --- a/gio/gapplication.c +++ b/gio/gapplication.c @@ -558,7 +558,7 @@ g_application_class_init (GApplicationClass *class) g_object_class_install_property (object_class, PROP_INACTIVITY_TIMEOUT, g_param_spec_uint ("inactivity-timeout", P_("Inactivity timeout"), - P_("Iime (ms) to stay alive after becoming idle"), + P_("Time (ms) to stay alive after becoming idle"), 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); From 01602e16955fb7ca60799d4e142c7392ad91237d Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 15 Apr 2011 15:51:25 -0400 Subject: [PATCH 49/85] Fix some compiler warnings from gcc 4.6 --- gio/gdbusauthmechanismsha1.c | 1 + gio/tests/gdbus-serialization.c | 1 - gio/tests/proxy.c | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gio/gdbusauthmechanismsha1.c b/gio/gdbusauthmechanismsha1.c index a38a3fe73..e1b33cfda 100644 --- a/gio/gdbusauthmechanismsha1.c +++ b/gio/gdbusauthmechanismsha1.c @@ -652,6 +652,7 @@ keyring_generate_entry (const gchar *cookie_context, lines = NULL; new_contents = NULL; have_id = FALSE; + use_id = 0; use_cookie = NULL; lock_fd = -1; diff --git a/gio/tests/gdbus-serialization.c b/gio/tests/gdbus-serialization.c index 25dada2e9..0ca13ef0a 100644 --- a/gio/tests/gdbus-serialization.c +++ b/gio/tests/gdbus-serialization.c @@ -784,7 +784,6 @@ message_serialize_invalid (void) DBusMessage *dbus_message; char *blob; int blob_len; - int i; /* these are in pairs with matching length */ const gchar *valid_utf8_str = "this is valid..."; const gchar *invalid_utf8_str = "this is invalid\xff"; diff --git a/gio/tests/proxy.c b/gio/tests/proxy.c index cf54d6935..664be5866 100644 --- a/gio/tests/proxy.c +++ b/gio/tests/proxy.c @@ -278,7 +278,7 @@ use_inet_address (gboolean synchronous) { GSocketAddressEnumerator *enumerator; GSocketAddress *sockaddr; - GInetAddress *addr; + GInetAddress *addr = NULL; guint port = 0; gchar **ip_and_port; From 19fdb18ef8794bde6b29e400a6d868a7974b73e2 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 18 Apr 2011 14:35:58 +0200 Subject: [PATCH 50/85] testutils: Return a boolean from g_test_case_run() Return value is intened to be TRUE for success, FALSE for failure. Currently we return TRUE all the time. Previously the test returned 0 all the time. --- glib/gtestutils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/glib/gtestutils.c b/glib/gtestutils.c index c5754ec0c..7488ec3ef 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -1146,7 +1146,7 @@ g_test_queue_destroy (GDestroyNotify destroy_func, test_destroy_queue = dentry; } -static int +static gboolean test_case_run (GTestCase *tc) { gchar *old_name = test_run_name, *old_base = g_strdup (test_uri_base); @@ -1195,7 +1195,7 @@ test_case_run (GTestCase *tc) test_run_name = old_name; g_free (test_uri_base); test_uri_base = old_base; - return 0; + return TRUE; } static int @@ -1220,7 +1220,8 @@ g_test_run_suite_internal (GTestSuite *suite, if (l == n && strncmp (path, tc->name, n) == 0) { n_good++; - n_bad += test_case_run (tc) != 0; + if (!test_case_run (tc)) + n_bad++; } } g_slist_free (reversed); From 62e68ceec8cfad06fffb00fd23ccaad3fc0f476e Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 18 Apr 2011 14:37:24 +0200 Subject: [PATCH 51/85] testutils: Remove unused variable --- glib/gtestutils.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/glib/gtestutils.c b/glib/gtestutils.c index 7488ec3ef..9ddad8846 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -1202,7 +1202,7 @@ static int g_test_run_suite_internal (GTestSuite *suite, const char *path) { - guint n_bad = 0, n_good = 0, bad_suite = 0, l; + guint n_bad = 0, bad_suite = 0, l; gchar *rest, *old_name = test_run_name; GSList *slist, *reversed; g_return_val_if_fail (suite != NULL, -1); @@ -1219,7 +1219,6 @@ g_test_run_suite_internal (GTestSuite *suite, guint n = l ? strlen (tc->name) : 0; if (l == n && strncmp (path, tc->name, n) == 0) { - n_good++; if (!test_case_run (tc)) n_bad++; } From d259d50afd7b1f0f063e9ad95f5784540bd0378c Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 18 Apr 2011 14:41:51 +0200 Subject: [PATCH 52/85] testutils: Return number of bad tests from g_test_run_suite_internal() In particular do not return a boolean disguised as an int. --- glib/gtestutils.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/glib/gtestutils.c b/glib/gtestutils.c index 9ddad8846..2f825a7d2 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -1202,7 +1202,7 @@ static int g_test_run_suite_internal (GTestSuite *suite, const char *path) { - guint n_bad = 0, bad_suite = 0, l; + guint n_bad = 0, l; gchar *rest, *old_name = test_run_name; GSList *slist, *reversed; g_return_val_if_fail (suite != NULL, -1); @@ -1230,12 +1230,12 @@ g_test_run_suite_internal (GTestSuite *suite, GTestSuite *ts = slist->data; guint n = l ? strlen (ts->name) : 0; if (l == n && strncmp (path, ts->name, n) == 0) - bad_suite += g_test_run_suite_internal (ts, rest ? rest : "") != 0; + n_bad += g_test_run_suite_internal (ts, rest ? rest : ""); } g_slist_free (reversed); g_free (test_run_name); test_run_name = old_name; - return n_bad || bad_suite; + return n_bad; } /** @@ -1271,7 +1271,7 @@ g_test_run_suite (GTestSuite *suite) path++; if (!n) /* root suite, run unconditionally */ { - n_bad += 0 != g_test_run_suite_internal (suite, path); + n_bad += g_test_run_suite_internal (suite, path); continue; } /* regular suite, match path */ @@ -1279,7 +1279,7 @@ g_test_run_suite (GTestSuite *suite) l = strlen (path); l = rest ? MIN (l, rest - path) : l; if ((!l || l == n) && strncmp (path, suite->name, n) == 0) - n_bad += 0 != g_test_run_suite_internal (suite, rest ? rest : ""); + n_bad += g_test_run_suite_internal (suite, rest ? rest : ""); } return n_bad; } From 9a121032599ec90c883937017f49af2ba1fc6071 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 18 Apr 2011 14:45:53 +0200 Subject: [PATCH 53/85] testutils: Sprinkle code with newlines Readable code ftw! --- glib/gtestutils.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/glib/gtestutils.c b/glib/gtestutils.c index 2f825a7d2..761b08595 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -49,7 +49,7 @@ #include "gstrfuncs.h" #include "gtimer.h" - + /* Global variable for storing assertion messages; this is the counterpart to * glibc's (private) __abort_msg variable, and allows developers and crash * analysis systems like Apport and ABRT to fish out assertion messages from @@ -722,9 +722,11 @@ g_test_minimized_result (double minimized_quantity, long double largs = minimized_quantity; gchar *buffer; va_list args; + va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); + g_test_log (G_TEST_LOG_MIN_RESULT, buffer, NULL, 1, &largs); g_free (buffer); } @@ -751,9 +753,11 @@ g_test_maximized_result (double maximized_quantity, long double largs = maximized_quantity; gchar *buffer; va_list args; + va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); + g_test_log (G_TEST_LOG_MAX_RESULT, buffer, NULL, 1, &largs); g_free (buffer); } @@ -773,9 +777,11 @@ g_test_message (const char *format, { gchar *buffer; va_list args; + va_start (args, format); buffer = g_strdup_vprintf (format, args); va_end (args); + g_test_log (G_TEST_LOG_MESSAGE, buffer, NULL, 0, NULL); g_free (buffer); } @@ -820,8 +826,10 @@ void g_test_bug (const char *bug_uri_snippet) { char *c; + g_return_if_fail (test_uri_base != NULL); g_return_if_fail (bug_uri_snippet != NULL); + c = strstr (test_uri_base, "%s"); if (c) { @@ -853,6 +861,7 @@ g_test_get_root (void) g_free (test_suite_root->name); test_suite_root->name = g_strdup (""); } + return test_suite_root; } @@ -914,10 +923,12 @@ g_test_create_case (const char *test_name, GTestFixtureFunc data_teardown) { GTestCase *tc; + g_return_val_if_fail (test_name != NULL, NULL); g_return_val_if_fail (strchr (test_name, '/') == NULL, NULL); g_return_val_if_fail (test_name[0] != 0, NULL); g_return_val_if_fail (data_test != NULL, NULL); + tc = g_slice_new0 (GTestCase); tc->name = g_strdup (test_name); tc->test_data = (gpointer) test_data; @@ -925,6 +936,7 @@ g_test_create_case (const char *test_name, tc->fixture_setup = (void*) data_setup; tc->fixture_test = (void*) data_test; tc->fixture_teardown = (void*) data_teardown; + return tc; } @@ -1081,6 +1093,7 @@ g_test_suite_add (GTestSuite *suite, { g_return_if_fail (suite != NULL); g_return_if_fail (test_case != NULL); + suite->cases = g_slist_prepend (suite->cases, test_case); } @@ -1099,6 +1112,7 @@ g_test_suite_add_suite (GTestSuite *suite, { g_return_if_fail (suite != NULL); g_return_if_fail (nestedsuite != NULL); + suite->suites = g_slist_prepend (suite->suites, nestedsuite); } @@ -1138,7 +1152,9 @@ g_test_queue_destroy (GDestroyNotify destroy_func, gpointer destroy_data) { DestroyEntry *dentry; + g_return_if_fail (destroy_func != NULL); + dentry = g_slice_new0 (DestroyEntry); dentry->destroy_func = destroy_func; dentry->destroy_data = destroy_data; @@ -1150,6 +1166,7 @@ static gboolean test_case_run (GTestCase *tc) { gchar *old_name = test_run_name, *old_base = g_strdup (test_uri_base); + test_run_name = g_strconcat (old_name, "/", tc->name, NULL); if (++test_run_count <= test_skip_count) g_test_log (G_TEST_LOG_SKIP_CASE, test_run_name, NULL, 0, NULL); @@ -1195,6 +1212,7 @@ test_case_run (GTestCase *tc) test_run_name = old_name; g_free (test_uri_base); test_uri_base = old_base; + return TRUE; } @@ -1205,7 +1223,9 @@ g_test_run_suite_internal (GTestSuite *suite, guint n_bad = 0, l; gchar *rest, *old_name = test_run_name; GSList *slist, *reversed; + g_return_val_if_fail (suite != NULL, -1); + while (path[0] == '/') path++; l = strlen (path); @@ -1235,6 +1255,7 @@ g_test_run_suite_internal (GTestSuite *suite, g_slist_free (reversed); g_free (test_run_name); test_run_name = old_name; + return n_bad; } @@ -1257,9 +1278,12 @@ int g_test_run_suite (GTestSuite *suite) { guint n_bad = 0; + g_return_val_if_fail (g_test_config_vars->test_initialized, -1); g_return_val_if_fail (g_test_run_once == TRUE, -1); + g_test_run_once = FALSE; + if (!test_paths) test_paths = g_slist_prepend (test_paths, ""); while (test_paths) @@ -1281,6 +1305,7 @@ g_test_run_suite (GTestSuite *suite) if ((!l || l == n) && strncmp (path, suite->name, n) == 0) n_bad += g_test_run_suite_internal (suite, rest ? rest : ""); } + return n_bad; } @@ -1294,6 +1319,7 @@ gtest_default_log_handler (const gchar *log_domain, gboolean fatal = FALSE; gchar *msg; guint i = 0; + if (log_domain) { strv[i++] = log_domain; @@ -1321,9 +1347,11 @@ gtest_default_log_handler (const gchar *log_domain, strv[i++] = ": "; strv[i++] = message; strv[i++] = NULL; + msg = g_strjoinv ("", (gchar**) strv); g_test_log (fatal ? G_TEST_LOG_ERROR : G_TEST_LOG_MESSAGE, msg, NULL, 0, NULL); g_log_default_handler (log_domain, log_level, message, unused_data); + g_free (msg); } @@ -1336,6 +1364,7 @@ g_assertion_message (const char *domain, { char lstr[32]; char *s; + if (!message) message = "code should not be reached"; g_snprintf (lstr, 32, "%d", line); From d5dc79c0b066895ad41e84db35568d5a30235186 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 15 Apr 2011 03:23:12 +0200 Subject: [PATCH 54/85] API: testutils: Add g_test_fail() This allows tests to fail in a nonfatal way and the test runner can continue if invoked with -k. https://bugzilla.gnome.org/show_bug.cgi?id=647826 --- docs/reference/glib/glib-sections.txt | 1 + glib/glib.symbols | 1 + glib/gtestutils.c | 34 +++++++++++++++++++++++++-- glib/gtestutils.h | 2 ++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index eee5df629..037f577e4 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -2798,6 +2798,7 @@ GTestDataFunc g_test_add_data_func g_test_add +g_test_fail g_test_message g_test_bug_base g_test_bug diff --git a/glib/glib.symbols b/glib/glib.symbols index 0ec14b165..6c8666721 100644 --- a/glib/glib.symbols +++ b/glib/glib.symbols @@ -1451,6 +1451,7 @@ g_test_config_vars #endif g_test_create_case g_test_create_suite +g_test_fail g_test_get_root g_test_init g_test_log_buffer_free diff --git a/glib/gtestutils.c b/glib/gtestutils.c index 761b08595..1999908ba 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -101,6 +101,7 @@ static GRand *test_run_rand = NULL; static gchar *test_run_name = ""; static guint test_run_forks = 0; static guint test_run_count = 0; +static guint test_run_success = FALSE; static guint test_skip_count = 0; static GTimer *test_user_timer = NULL; static double test_user_stamp = 0; @@ -997,6 +998,31 @@ g_test_add_vtable (const char *testpath, g_strfreev (segments); } +/** + * g_test_fail: + * + * Indicates that a test failed. This function can be called + * multiple times from the same test. You can use this function + * if your test failed in a recoverable way. + * + * Do not use this function if the failure of a test could cause + * other tests to malfunction. + * + * Calling this function will not stop the test from running, you + * need to return from the test function yourself. So you can + * produce additional diagnostic messages or even continue running + * the test. + * + * If not called from inside a test, this function does nothing. + * + * @Since: 2.30 + **/ +void +g_test_fail (void) +{ + test_run_success = FALSE; +} + /** * GTestFunc: * @@ -1166,6 +1192,7 @@ static gboolean test_case_run (GTestCase *tc) { gchar *old_name = test_run_name, *old_base = g_strdup (test_uri_base); + gboolean success = TRUE; test_run_name = g_strconcat (old_name, "/", tc->name, NULL); if (++test_run_count <= test_skip_count) @@ -1182,6 +1209,7 @@ test_case_run (GTestCase *tc) void *fixture; g_test_log (G_TEST_LOG_START_CASE, test_run_name, NULL, 0, NULL); test_run_forks = 0; + test_run_success = TRUE; g_test_log_set_fatal_handler (NULL, NULL); g_timer_start (test_run_timer); fixture = tc->fixture_size ? g_malloc0 (tc->fixture_size) : tc->test_data; @@ -1202,7 +1230,9 @@ test_case_run (GTestCase *tc) if (tc->fixture_size) g_free (fixture); g_timer_stop (test_run_timer); - largs[0] = 0; /* OK */ + success = test_run_success; + test_run_success = FALSE; + largs[0] = success ? 0 : 1; /* OK */ largs[1] = test_run_forks; largs[2] = g_timer_elapsed (test_run_timer, NULL); g_test_log (G_TEST_LOG_STOP_CASE, NULL, NULL, G_N_ELEMENTS (largs), largs); @@ -1213,7 +1243,7 @@ test_case_run (GTestCase *tc) g_free (test_uri_base); test_uri_base = old_base; - return TRUE; + return success; } static int diff --git a/glib/gtestutils.h b/glib/gtestutils.h index b441fe08b..1e49ad969 100644 --- a/glib/gtestutils.h +++ b/glib/gtestutils.h @@ -107,6 +107,8 @@ void g_test_add_func (const char *testpath, void g_test_add_data_func (const char *testpath, gconstpointer test_data, GTestDataFunc test_func); +/* tell about failure */ +void g_test_fail (void); /* hook up a test with fixture under test path */ #define g_test_add(testpath, Fixture, tdata, fsetup, ftest, fteardown) \ From c2f670ef492eac0ed8574fc4df1e561ff0b1c89a Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 20 Apr 2011 11:24:46 -0400 Subject: [PATCH 55/85] GSocketService: clarify transfer semantics of incoming connections The @connection parameter to the ::incoming signal is (transfer none), so you need to ref it if you want to keep it. https://bugzilla.gnome.org/show_bug.cgi?id=647746 --- gio/gsocketservice.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gio/gsocketservice.c b/gio/gsocketservice.c index 8d9f724b0..18877d0e4 100644 --- a/gio/gsocketservice.c +++ b/gio/gsocketservice.c @@ -260,6 +260,9 @@ g_socket_service_class_init (GSocketServiceClass *class) * handling of @connection, but may not block; in essence, * asynchronous operations must be used. * + * @connection will be unreffed once the signal handler returns, so + * you need to ref it yourself if you are planning to use it. + * * Returns: %TRUE to stop other handlers from being called * * Since: 2.22 From f42d97b88b092e9cb3d0c769cb9f41fe2ce43b16 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 20 Apr 2011 19:08:06 +0200 Subject: [PATCH 56/85] docs: fix typos in networking classes --- gio/gsocketclient.c | 22 +++++++++++----------- gio/gsocketconnection.c | 6 +++--- gio/gsocketlistener.c | 12 ++++++------ gio/gsocketservice.c | 4 ++-- gio/gtcpconnection.c | 2 +- gio/gthreadedsocketservice.c | 4 ++-- gio/gunixconnection.c | 6 +++--- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/gio/gsocketclient.c b/gio/gsocketclient.c index bb60fcc9f..0519346b1 100644 --- a/gio/gsocketclient.c +++ b/gio/gsocketclient.c @@ -58,7 +58,7 @@ * #GSocketClient is a high-level utility class for connecting to a * network host using a connection oriented socket type. * - * You create a #GSocketClient object, set any options you want, then + * You create a #GSocketClient object, set any options you want, and then * call a sync or async connect operation, which returns a #GSocketConnection * subclass on success. * @@ -442,7 +442,7 @@ g_socket_client_get_local_address (GSocketClient *client) * The sockets created by this object will bound to the * specified address (if not %NULL) before connecting. * - * This is useful if you want to ensure the the local + * This is useful if you want to ensure that the local * side of the connection is on a specific port, or on * a specific interface. * @@ -726,7 +726,7 @@ g_socket_client_class_init (GSocketClientClass *class) * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. * @error: #GError for error reporting, or %NULL to ignore. * - * Tries to resolve the @connectable and make a network connection to it.. + * Tries to resolve the @connectable and make a network connection to it. * * Upon a successful connection, a new #GSocketConnection is constructed * and returned. The caller owns this new object and must drop their @@ -736,7 +736,7 @@ g_socket_client_class_init (GSocketClientClass *class) * the underlying socket that is used. For instance, for a TCP/IP connection * it will be a #GTcpConnection. * - * The socket created will be the same family as the the address that the + * The socket created will be the same family as the address that the * @connectable resolves to, unless family is set with g_socket_client_set_family() * or indirectly via g_socket_client_set_local_address(). The socket type * defaults to %G_SOCKET_TYPE_STREAM but can be set with @@ -912,7 +912,7 @@ g_socket_client_connect (GSocketClient *client, * * Attempts to create a TCP connection to the named host. * - * @host_and_port may be in any of a number of recognised formats; an IPv6 + * @host_and_port may be in any of a number of recognized formats; an IPv6 * address, an IPv4 address, or a domain name (in which case a DNS * lookup is performed). Quoting with [] is supported for all address * types. A port override may be specified in the usual way with a @@ -923,7 +923,7 @@ g_socket_client_connect (GSocketClient *client, * used as the port number to connect to. * * In general, @host_and_port is expected to be provided by the user (allowing - * them to give the hostname, and a port overide if necessary) and + * them to give the hostname, and a port override if necessary) and * @default_port is expected to be provided by the application. * * In the case that an IP address is given, a single connection @@ -1591,7 +1591,7 @@ g_socket_client_connect_to_uri_async (GSocketClient *client, * g_socket_client_connect_finish: * @client: a #GSocketClient. * @result: a #GAsyncResult. - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes an async connect operation. See g_socket_client_connect_async() @@ -1617,7 +1617,7 @@ g_socket_client_connect_finish (GSocketClient *client, * g_socket_client_connect_to_host_finish: * @client: a #GSocketClient. * @result: a #GAsyncResult. - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes an async connect operation. See g_socket_client_connect_to_host_async() @@ -1638,7 +1638,7 @@ g_socket_client_connect_to_host_finish (GSocketClient *client, * g_socket_client_connect_to_service_finish: * @client: a #GSocketClient. * @result: a #GAsyncResult. - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes an async connect operation. See g_socket_client_connect_to_service_async() @@ -1659,7 +1659,7 @@ g_socket_client_connect_to_service_finish (GSocketClient *client, * g_socket_client_connect_to_uri_finish: * @client: a #GSocketClient. * @result: a #GAsyncResult. - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes an async connect operation. See g_socket_client_connect_to_uri_async() @@ -1684,7 +1684,7 @@ g_socket_client_connect_to_uri_finish (GSocketClient *client, * Enable proxy protocols to be handled by the application. When the * indicated proxy protocol is returned by the #GProxyResolver, * #GSocketClient will consider this protocol as supported but will - * not try find a #GProxy instance to handle handshaking. The + * not try to find a #GProxy instance to handle handshaking. The * application must check for this case by calling * g_socket_connection_get_remote_address() on the returned * #GSocketConnection, and seeing if it's a #GProxyAddress of the diff --git a/gio/gsocketconnection.c b/gio/gsocketconnection.c index ac9ce74de..6f2f102a0 100644 --- a/gio/gsocketconnection.c +++ b/gio/gsocketconnection.c @@ -52,7 +52,7 @@ * depends on the type of the underlying socket that is in use. For * instance, for a TCP/IP connection it will be a #GTcpConnection. * - * Chosing what type of object to construct is done with the socket + * Choosing what type of object to construct is done with the socket * connection factory, and it is possible for 3rd parties to register * custom socket connection types for specific combination of socket * family/type/protocol using g_socket_connection_factory_register_type(). @@ -404,7 +404,7 @@ G_LOCK_DEFINE_STATIC(connection_factories); * @protocol: a protocol id * * Looks up the #GType to be used when creating socket connections on - * sockets with the specified @family,@type and @protocol. + * sockets with the specified @family, @type and @protocol. * * If no type is registered, the #GSocketConnection base type is returned. * @@ -458,7 +458,7 @@ init_builtin_types (void) * @protocol_id: a protocol id * * Looks up the #GType to be used when creating socket connections on - * sockets with the specified @family,@type and @protocol_id. + * sockets with the specified @family, @type and @protocol_id. * * If no type is registered, the #GSocketConnection base type is returned. * diff --git a/gio/gsocketlistener.c b/gio/gsocketlistener.c index c20bd5bbf..970540a72 100644 --- a/gio/gsocketlistener.c +++ b/gio/gsocketlistener.c @@ -263,7 +263,7 @@ g_socket_listener_add_socket (GSocketListener *listener, * * Note that adding an IPv6 address, depending on the platform, * may or may not result in a listener that also accepts IPv4 - * connections. For more determinstic behaviour, see + * connections. For more deterministic behavior, see * g_socket_listener_add_inet_port(). * * @source_object will be passed out in the various calls @@ -272,7 +272,7 @@ g_socket_listener_add_socket (GSocketListener *listener, * different things depending on what address is connected to. * * If successful and @effective_address is non-%NULL then it will - * be set to the address that the binding actually occured at. This + * be set to the address that the binding actually occurred at. This * is helpful for determining the port number that was used for when * requesting a binding to port 0 (ie: "any port"). This address, if * requested, belongs to the caller and must be freed. @@ -770,7 +770,7 @@ g_socket_listener_accept_socket_async (GSocketListener *listener, * @listener: a #GSocketListener * @result: a #GAsyncResult. * @source_object: (out) (transfer none) (allow-none): Optional #GObject identifying this source - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes an async accept operation. See g_socket_listener_accept_socket_async() @@ -837,7 +837,7 @@ g_socket_listener_accept_async (GSocketListener *listener, * @listener: a #GSocketListener * @result: a #GAsyncResult. * @source_object: (out) (transfer none) (allow-none): Optional #GObject identifying this source - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Finishes an async accept operation. See g_socket_listener_accept_async() @@ -928,11 +928,11 @@ g_socket_listener_close (GSocketListener *listener) * g_socket_listener_add_any_inet_port: * @listener: a #GSocketListener * @source_object: (allow-none): Optional #GObject identifying this source - * @error: a #GError location to store the error occuring, or %NULL to + * @error: a #GError location to store the error occurring, or %NULL to * ignore. * * Listens for TCP connections on any available port number for both - * IPv6 and IPv4 (if each are available). + * IPv6 and IPv4 (if each is available). * * This is useful if you need to have a socket for incoming connections * but don't care about the specific port number. diff --git a/gio/gsocketservice.c b/gio/gsocketservice.c index 18877d0e4..830267313 100644 --- a/gio/gsocketservice.c +++ b/gio/gsocketservice.c @@ -34,8 +34,8 @@ * signal is emitted. * * A #GSocketService is a subclass of #GSocketListener and you need - * to add the addresses you want to accept connections on to the - * with the #GSocketListener APIs. + * to add the addresses you want to accept connections on with the + * #GSocketListener APIs. * * There are two options for implementing a network service based on * #GSocketService. The first is to create the service using diff --git a/gio/gtcpconnection.c b/gio/gtcpconnection.c index cbb606478..69881f62a 100644 --- a/gio/gtcpconnection.c +++ b/gio/gtcpconnection.c @@ -326,7 +326,7 @@ g_tcp_connection_close_async (GIOStream *stream, * @graceful_disconnect: Whether to do graceful disconnects or not * * This enabled graceful disconnects on close. A graceful disconnect - * means that we signal the recieving end that the connection is terminated + * means that we signal the receiving end that the connection is terminated * and wait for it to close the connection before closing the connection. * * A graceful disconnect means that we can be sure that we successfully sent diff --git a/gio/gthreadedsocketservice.c b/gio/gthreadedsocketservice.c index e69804e7f..6d9bc4156 100644 --- a/gio/gthreadedsocketservice.c +++ b/gio/gthreadedsocketservice.c @@ -37,7 +37,7 @@ * until the connection is closed. * * The service is implemented using a thread pool, so there is a - * limited amount of threads availible to serve incomming requests. + * limited amount of threads available to serve incoming requests. * The service automatically stops the #GSocketService from accepting * new connections when all threads are busy. * @@ -234,7 +234,7 @@ g_threaded_socket_service_class_init (GThreadedSocketServiceClass *class) * @connection and may perform blocking IO. The signal handler need * not return until the connection is closed. * - * Returns: %TRUE to stope further signal handlers from being called + * Returns: %TRUE to stop further signal handlers from being called */ g_threaded_socket_service_run_signal = g_signal_new ("run", G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, diff --git a/gio/gunixconnection.c b/gio/gunixconnection.c index 4d1cf40d4..0617bb9e3 100644 --- a/gio/gunixconnection.c +++ b/gio/gunixconnection.c @@ -66,8 +66,8 @@ G_DEFINE_TYPE_WITH_CODE (GUnixConnection, g_unix_connection, * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. * @error: (allow-none): #GError for error reporting, or %NULL to ignore. * - * Passes a file descriptor to the recieving side of the - * connection. The recieving end has to call g_unix_connection_receive_fd() + * Passes a file descriptor to the receiving side of the + * connection. The receiving end has to call g_unix_connection_receive_fd() * to accept the file descriptor. * * As well as sending the fd this also writes a single byte to the @@ -308,7 +308,7 @@ gboolean g_unix_connection_create_pair (GUnixCo * @error: Return location for error or %NULL. * * Passes the credentials of the current user the receiving side - * of the connection. The recieving end has to call + * of the connection. The receiving end has to call * g_unix_connection_receive_credentials() (or similar) to accept the * credentials. * From dc7e9a54e5957178ecd5ec250d3fe44064fab58b Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Mon, 25 Apr 2011 13:32:18 +0800 Subject: [PATCH 57/85] Add VS 2010 compilation support for some utilities -Added projects to compile the glib-compile-schemas and gsettings utilities -Update .vsprops to install these in "install" phase -Distribute these projects also --- build/win32/vs10/Makefile.am | 4 + build/win32/vs10/glib-compile-schemas.vcxproj | 174 ++++++++++++++++++ .../vs10/glib-compile-schemas.vcxproj.filters | 17 ++ build/win32/vs10/glib.props | 8 + build/win32/vs10/glib.sln | 36 ++++ build/win32/vs10/gsettings.vcxproj | 174 ++++++++++++++++++ build/win32/vs10/gsettings.vcxproj.filters | 14 ++ 7 files changed, 427 insertions(+) create mode 100644 build/win32/vs10/glib-compile-schemas.vcxproj create mode 100644 build/win32/vs10/glib-compile-schemas.vcxproj.filters create mode 100644 build/win32/vs10/gsettings.vcxproj create mode 100644 build/win32/vs10/gsettings.vcxproj.filters diff --git a/build/win32/vs10/Makefile.am b/build/win32/vs10/Makefile.am index 5595774ff..59d06898d 100644 --- a/build/win32/vs10/Makefile.am +++ b/build/win32/vs10/Makefile.am @@ -26,4 +26,8 @@ EXTRA_DIST = \ gio.vcxproj.filtersin \ testglib.vcxproj \ testglib.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ install.vcxproj diff --git a/build/win32/vs10/glib-compile-schemas.vcxproj b/build/win32/vs10/glib-compile-schemas.vcxproj new file mode 100644 index 000000000..d6ee46049 --- /dev/null +++ b/build/win32/vs10/glib-compile-schemas.vcxproj @@ -0,0 +1,174 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {015D69D0-8B42-438A-ADAE-052AC036E065} + glibcompileschemas + Win32Proj + + + + Application + Unicode + true + + + Application + Unicode + + + Application + MultiByte + true + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + true + false + false + + + + Disabled + _DEBUG;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + DEBUG;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs10/glib-compile-schemas.vcxproj.filters b/build/win32/vs10/glib-compile-schemas.vcxproj.filters new file mode 100644 index 000000000..2f5dca9c1 --- /dev/null +++ b/build/win32/vs10/glib-compile-schemas.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs10/glib.props b/build/win32/vs10/glib.props index 129248d3d..c448efc51 100644 --- a/build/win32/vs10/glib.props +++ b/build/win32/vs10/glib.props @@ -15,6 +15,10 @@ copy $(SolutionDir)$(Configuration)\$(Platform)\bin\glib-genmarshal.exe $(CopyDi copy $(SolutionDir)$(Configuration)\$(Platform)\bin\gspawn-win32-helper*.exe $(CopyDir)\bin +copy $(SolutionDir)$(Configuration)\$(Platform)\bin\glib-compile-schemas.exe $(CopyDir)\bin + +copy $(SolutionDir)$(Configuration)\$(Platform)\bin\gsettings.exe $(CopyDir)\bin + mkdir $(CopyDir)\include\glib-$(ApiVersion)\glib @@ -429,6 +433,10 @@ copy $(SolutionDir)$(Configuration)\$(Platform)\bin\*-$(ApiVersion).lib $(CopyDi if exist $(SolutionDir)$(Configuration)_ExtPCRE copy $(SolutionDir)$(Configuration)_ExtPCRE\$(Platform)\bin\*-$(ApiVersion).lib $(CopyDir)\lib + +mkdir $(CopyDir)\share\glib-2.0\schemas +copy ..\..\..\gio\gschema.dtd $(CopyDir)\share\glib-2.0\schemas + echo EXPORTS >"$(DefDir)glib.def" && cl /EP -DG_OS_WIN32 -DINCLUDE_INTERNAL_SYMBOLS -DALL_FILES -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= -DG_GNUC_PRINTF=;G_GNUC_PRINTF -DG_GNUC_FORMAT=;G_GNUC_FORMAT ..\..\..\glib\glib.symbols >>"$(DefDir)glib.def" echo EXPORTS >"$(DefDir)glib.def" && cl /EP -DG_OS_WIN32 -D_WIN64 -DINCLUDE_INTERNAL_SYMBOLS -DALL_FILES -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= -DG_GNUC_PRINTF=;G_GNUC_PRINTF -DG_GNUC_FORMAT=;G_GNUC_FORMAT ..\..\..\glib\glib.symbols >>"$(DefDir)glib.def" diff --git a/build/win32/vs10/glib.sln b/build/win32/vs10/glib.sln index 0460a1591..f82398522 100644 --- a/build/win32/vs10/glib.sln +++ b/build/win32/vs10/glib.sln @@ -18,6 +18,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper-console EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testglib", "testglib.vcxproj", "{64E09909-5599-40C0-B808-27F55F7B823C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-schemas", "glib-compile-schemas.vcxproj", "{015D69D0-8B42-438A-ADAE-052AC036E065}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsettings", "gsettings.vcxproj", "{05041C63-F1C5-49BA-A7DE-61EBB5307EAA}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcxproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}" EndProject Global @@ -176,6 +180,38 @@ Global {64E09909-5599-40C0-B808-27F55F7B823C}.Release|Win32.Build.0 = Release|Win32 {64E09909-5599-40C0-B808-27F55F7B823C}.Release|x64.ActiveCfg = Release|x64 {64E09909-5599-40C0-B808-27F55F7B823C}.Release|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 diff --git a/build/win32/vs10/gsettings.vcxproj b/build/win32/vs10/gsettings.vcxproj new file mode 100644 index 000000000..90ebd21f1 --- /dev/null +++ b/build/win32/vs10/gsettings.vcxproj @@ -0,0 +1,174 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA} + gsettings + Win32Proj + + + + Application + Unicode + true + + + Application + Unicode + + + Application + MultiByte + true + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + true + true + false + false + + + + Disabled + _DEBUG;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + DEBUG;_CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + true + Console + true + true + MachineX86 + + + + + _CRT_NONSTDC_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs10/gsettings.vcxproj.filters b/build/win32/vs10/gsettings.vcxproj.filters new file mode 100644 index 000000000..0c81fc601 --- /dev/null +++ b/build/win32/vs10/gsettings.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file From d8de88e541180edef5a80b8107a383c3bd8522b5 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Mon, 25 Apr 2011 13:47:07 +0800 Subject: [PATCH 58/85] Add VS 2008 compilation support for some utilities -Added projects to compile the glib-compile-schemas and gsettings utilities -Update .vsprops to install these in "install" phase -Distribute these projects also --- build/win32/vs9/Makefile.am | 2 + build/win32/vs9/glib-compile-schemas.vcproj | 152 ++++++++++++++++++++ build/win32/vs9/glib.sln | 48 +++++++ build/win32/vs9/glib.vsprops | 5 + build/win32/vs9/gsettings.vcproj | 152 ++++++++++++++++++++ 5 files changed, 359 insertions(+) create mode 100644 build/win32/vs9/glib-compile-schemas.vcproj create mode 100644 build/win32/vs9/gsettings.vcproj diff --git a/build/win32/vs9/Makefile.am b/build/win32/vs9/Makefile.am index e9b379fcc..da7d8167d 100644 --- a/build/win32/vs9/Makefile.am +++ b/build/win32/vs9/Makefile.am @@ -14,4 +14,6 @@ EXTRA_DIST = \ gio.vcproj \ gio.vcprojin \ testglib.vcproj \ + glib-compile-schemas.vcproj \ + gsettings.vcproj \ install.vcproj diff --git a/build/win32/vs9/glib-compile-schemas.vcproj b/build/win32/vs9/glib-compile-schemas.vcproj new file mode 100644 index 000000000..014787f1d --- /dev/null +++ b/build/win32/vs9/glib-compile-schemas.vcproj @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/glib.sln b/build/win32/vs9/glib.sln index e24d9fbad..6f64a8c5c 100644 --- a/build/win32/vs9/glib.sln +++ b/build/win32/vs9/glib.sln @@ -45,6 +45,20 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testglib", "testglib.vcproj {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-schemas", "glib-compile-schemas.vcproj", "{015D69D0-8B42-438A-ADAE-052AC036E065}" + ProjectSection(ProjectDependencies) = postProject + {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} + {F172EFFC-E30F-4593-809E-DB2024B1E753} = {F172EFFC-E30F-4593-809E-DB2024B1E753} + {F3D1583C-5613-4809-BD98-7CC1C1276F92} = {F3D1583C-5613-4809-BD98-7CC1C1276F92} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsettings", "gsettings.vcproj", "{05041C63-F1C5-49BA-A7DE-61EBB5307EAA}" + ProjectSection(ProjectDependencies) = postProject + {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} + {F172EFFC-E30F-4593-809E-DB2024B1E753} = {F172EFFC-E30F-4593-809E-DB2024B1E753} + {F3D1583C-5613-4809-BD98-7CC1C1276F92} = {F3D1583C-5613-4809-BD98-7CC1C1276F92} + EndProjectSection +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}" ProjectSection(ProjectDependencies) = postProject {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} @@ -56,6 +70,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcproj", {289240E7-E167-47CE-A20C-58D852E520BA} = {289240E7-E167-47CE-A20C-58D852E520BA} {F172EFFC-E30F-4593-809E-DB2024B1E753} = {F172EFFC-E30F-4593-809E-DB2024B1E753} {64E09909-5599-40C0-B808-27F55F7B823C} = {64E09909-5599-40C0-B808-27F55F7B823C} + {015D69D0-8B42-438A-ADAE-052AC036E065} = {015D69D0-8B42-438A-ADAE-052AC036E065} + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA} = {05041C63-F1C5-49BA-A7DE-61EBB5307EAA} EndProjectSection EndProject Global @@ -214,6 +230,38 @@ Global {64E09909-5599-40C0-B808-27F55F7B823C}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 {64E09909-5599-40C0-B808-27F55F7B823C}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 {64E09909-5599-40C0-B808-27F55F7B823C}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.Build.0 = Release|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64 diff --git a/build/win32/vs9/glib.vsprops b/build/win32/vs9/glib.vsprops index 302ce323b..af182358d 100644 --- a/build/win32/vs9/glib.vsprops +++ b/build/win32/vs9/glib.vsprops @@ -42,6 +42,8 @@ copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\*.dll $(OutDir)\bin& if exist $(SolutionDir)$(ConfigurationName)_ExtPCRE copy $(SolutionDir)$(ConfigurationName)_ExtPCRE\$(PlatformName)\bin\*.dll $(OutDir)\bin copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\glib-genmarshal.exe $(OutDir)\bin copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\gspawn-win32-helper*.exe $(OutDir)\bin +copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\glib-compile-schemas.exe $(OutDir)\bin +copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\gsettings.exe $(OutDir)\bin mkdir $(OutDir)\include\glib-2.0\glib copy ..\..\..\msvc_recommended_pragmas.h $(OutDir)\include\glib-2.0 @@ -253,6 +255,9 @@ copy ..\..\..\glib\glibconfig.h $(OutDir)\lib\glib-2.0\include copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\*-2.0.lib $(OutDir)\lib if exist $(SolutionDir)$(ConfigurationName)_ExtPCRE copy $(SolutionDir)$(ConfigurationName)_ExtPCRE\$(PlatformName)\bin\*-2.0.lib $(OutDir)\lib + +mkdir $(OutDir)\share\glib-2.0\schemas +copy ..\..\..\gio\gschema.dtd $(OutDir)\share\glib-2.0\schemas " /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a330c2f19f5086986940e57bdf1e7db651db725c Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Mon, 25 Apr 2011 08:29:35 -0400 Subject: [PATCH 59/85] Don't ignore SUPPORTS_STARTUP_NOTIFICATION for commandline GAppInfos https://bugzilla.gnome.org/show_bug.cgi?id=648416 --- gio/gdesktopappinfo.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index 227bacc41..d9d17b291 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -1932,10 +1932,10 @@ g_app_info_create_from_commandline (const char *commandline, info->filename = NULL; info->desktop_id = NULL; - info->terminal = flags & G_APP_INFO_CREATE_NEEDS_TERMINAL; - info->startup_notify = flags & G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION; + info->terminal = (flags & G_APP_INFO_CREATE_NEEDS_TERMINAL) != 0; + info->startup_notify = (flags & G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION) != 0; info->hidden = FALSE; - if (flags & G_APP_INFO_CREATE_SUPPORTS_URIS) + if ((flags & G_APP_INFO_CREATE_SUPPORTS_URIS) != 0) info->exec = g_strconcat (commandline, " %u", NULL); else info->exec = g_strconcat (commandline, " %f", NULL); From b27f2e051ecf877d7e209b273c0281a7f7f216cb Mon Sep 17 00:00:00 2001 From: Muhammet Kara Date: Tue, 26 Apr 2011 03:04:20 +0300 Subject: [PATCH 60/85] Updated Turkish translation --- po/tr.po | 2853 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 1938 insertions(+), 915 deletions(-) diff --git a/po/tr.po b/po/tr.po index f3a3539b0..87c0d1e5f 100644 --- a/po/tr.po +++ b/po/tr.po @@ -5,352 +5,583 @@ # Arman Aksoy , 2003. # Onur Can ÇAKMAK , 2004, 2006. # Baris Cicek , 2005, 2007, 2008, 2009. +# Muhammet Kara , 2011. +# msgid "" msgstr "" "Project-Id-Version: glib\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-06-07 21:37-0400\n" -"PO-Revision-Date: 2009-08-25 00:32+0300\n" -"Last-Translator: Baris Cicek \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=glib&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-04-13 21:51+0000\n" +"PO-Revision-Date: 2011-04-26 03:02+0300\n" +"Last-Translator: Muhammet Kara \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Plural-Forms: nplurals=1; plural=0;\n" -#: glib/gbookmarkfile.c:737 +#: ../glib/gbookmarkfile.c:780 #, c-format msgid "Unexpected attribute '%s' for element '%s'" msgstr "'%2$s' öğesinde beklenmeyen '%1$s' özniteliği" -#: glib/gbookmarkfile.c:748 glib/gbookmarkfile.c:819 glib/gbookmarkfile.c:829 -#: glib/gbookmarkfile.c:936 +#: ../glib/gbookmarkfile.c:791 ../glib/gbookmarkfile.c:862 +#: ../glib/gbookmarkfile.c:872 ../glib/gbookmarkfile.c:979 #, c-format msgid "Attribute '%s' of element '%s' not found" msgstr "'%2$s' öğesinde '%1$s' özelliği bulunamadı" -#: glib/gbookmarkfile.c:1106 glib/gbookmarkfile.c:1171 -#: glib/gbookmarkfile.c:1235 glib/gbookmarkfile.c:1245 +#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1214 +#: ../glib/gbookmarkfile.c:1278 ../glib/gbookmarkfile.c:1288 #, c-format msgid "Unexpected tag '%s', tag '%s' expected" msgstr "Beklenmeyen etiket '%s', '%s' bekleniyordu" -#: glib/gbookmarkfile.c:1131 glib/gbookmarkfile.c:1145 -#: glib/gbookmarkfile.c:1213 glib/gbookmarkfile.c:1265 +#: ../glib/gbookmarkfile.c:1174 ../glib/gbookmarkfile.c:1188 +#: ../glib/gbookmarkfile.c:1256 ../glib/gbookmarkfile.c:1308 #, c-format msgid "Unexpected tag '%s' inside '%s'" msgstr "'%2$s' içinde beklenmeyen etiket '%1$s'" -#: glib/gbookmarkfile.c:1793 +#: ../glib/gbookmarkfile.c:1834 msgid "No valid bookmark file found in data dirs" msgstr "Veri dizinlerinde geçerli bir yer imi dosyası bulunamadı" -#: glib/gbookmarkfile.c:1994 +#: ../glib/gbookmarkfile.c:2035 #, c-format msgid "A bookmark for URI '%s' already exists" msgstr "URI '%s' için bir yer imi zaten var" -#: glib/gbookmarkfile.c:2040 glib/gbookmarkfile.c:2198 -#: glib/gbookmarkfile.c:2283 glib/gbookmarkfile.c:2363 -#: glib/gbookmarkfile.c:2448 glib/gbookmarkfile.c:2531 -#: glib/gbookmarkfile.c:2609 glib/gbookmarkfile.c:2688 -#: glib/gbookmarkfile.c:2730 glib/gbookmarkfile.c:2827 -#: glib/gbookmarkfile.c:2953 glib/gbookmarkfile.c:3143 -#: glib/gbookmarkfile.c:3219 glib/gbookmarkfile.c:3384 -#: glib/gbookmarkfile.c:3473 glib/gbookmarkfile.c:3563 -#: glib/gbookmarkfile.c:3691 +#: ../glib/gbookmarkfile.c:2081 ../glib/gbookmarkfile.c:2239 +#: ../glib/gbookmarkfile.c:2324 ../glib/gbookmarkfile.c:2404 +#: ../glib/gbookmarkfile.c:2489 ../glib/gbookmarkfile.c:2572 +#: ../glib/gbookmarkfile.c:2650 ../glib/gbookmarkfile.c:2729 +#: ../glib/gbookmarkfile.c:2771 ../glib/gbookmarkfile.c:2868 +#: ../glib/gbookmarkfile.c:2994 ../glib/gbookmarkfile.c:3184 +#: ../glib/gbookmarkfile.c:3260 ../glib/gbookmarkfile.c:3425 +#: ../glib/gbookmarkfile.c:3514 ../glib/gbookmarkfile.c:3604 +#: ../glib/gbookmarkfile.c:3732 #, c-format msgid "No bookmark found for URI '%s'" msgstr "URI '%s' için bir yer imi bulunamadı" -#: glib/gbookmarkfile.c:2372 +#: ../glib/gbookmarkfile.c:2413 #, c-format msgid "No MIME type defined in the bookmark for URI '%s'" msgstr "URI '%s' için yer iminde hiç bir MIME tipi belirtilmedi" -#: glib/gbookmarkfile.c:2457 +#: ../glib/gbookmarkfile.c:2498 #, c-format msgid "No private flag has been defined in bookmark for URI '%s'" msgstr "URI '%s' için yer iminde özel işareti tanımlanmadı" -#: glib/gbookmarkfile.c:2836 +#: ../glib/gbookmarkfile.c:2877 #, c-format msgid "No groups set in bookmark for URI '%s'" msgstr "URI '%s' için yer iminde grup tanımlanmadı" -#: glib/gbookmarkfile.c:3237 glib/gbookmarkfile.c:3394 +#: ../glib/gbookmarkfile.c:3278 ../glib/gbookmarkfile.c:3435 #, c-format msgid "No application with name '%s' registered a bookmark for '%s'" msgstr "'%s' adında hiçbir uygulama '%s' için yer imi kaydetmedi" -#: glib/gbookmarkfile.c:3417 +#: ../glib/gbookmarkfile.c:3458 #, c-format msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Exec satırı '%s' URI %s ile genişletilirken başarısız olundu" -#: glib/gconvert.c:437 glib/gconvert.c:515 glib/giochannel.c:1404 -#: gio/gcharsetconverter.c:459 +#: ../glib/gconvert.c:567 ../glib/gconvert.c:645 ../glib/giochannel.c:1403 +#: ../gio/gcharsetconverter.c:458 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "'%s' karakter kümesinden '%s' karakter kümesine dönüşüm desteklenmiyor" -#: glib/gconvert.c:441 glib/gconvert.c:519 gio/gcharsetconverter.c:463 +#: ../glib/gconvert.c:571 ../glib/gconvert.c:649 +#: ../gio/gcharsetconverter.c:462 #, c-format msgid "Could not open converter from '%s' to '%s'" msgstr "'%s'--'%s' dönüştürücüsü açılamıyor" -#: glib/gconvert.c:638 glib/gconvert.c:1031 glib/giochannel.c:1576 -#: glib/giochannel.c:1618 glib/giochannel.c:2462 glib/gutf8.c:989 -#: glib/gutf8.c:1444 gio/gcharsetconverter.c:346 +#: ../glib/gconvert.c:768 ../glib/gconvert.c:1162 ../glib/giochannel.c:1575 +#: ../glib/giochannel.c:1617 ../glib/giochannel.c:2460 ../glib/gutf8.c:992 +#: ../glib/gutf8.c:1447 ../gio/gcharsetconverter.c:345 msgid "Invalid byte sequence in conversion input" msgstr "Dönüşüm girdisinde geçersiz bayt dizisi" -#: glib/gconvert.c:646 glib/gconvert.c:956 glib/giochannel.c:1583 -#: glib/giochannel.c:2474 gio/gcharsetconverter.c:351 +#: ../glib/gconvert.c:777 ../glib/gconvert.c:1087 ../glib/giochannel.c:1582 +#: ../glib/giochannel.c:2472 ../gio/gcharsetconverter.c:350 #, c-format msgid "Error during conversion: %s" msgstr "Dönüşüm sırasında hata oluştu: %s" -#: glib/gconvert.c:678 glib/gutf8.c:985 glib/gutf8.c:1195 glib/gutf8.c:1336 -#: glib/gutf8.c:1440 +#: ../glib/gconvert.c:809 ../glib/gutf8.c:988 ../glib/gutf8.c:1198 +#: ../glib/gutf8.c:1339 ../glib/gutf8.c:1443 msgid "Partial character sequence at end of input" msgstr "Girdinin sonunda parçalı karakter dizisi" -#: glib/gconvert.c:928 +#: ../glib/gconvert.c:1059 #, c-format msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "" "Geridönüş karakter kümesi '%s', '%s' karakter kümesine dönüştürülemiyor" -#: glib/gconvert.c:1751 +#: ../glib/gconvert.c:1882 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "URI '%s', \"file\" şemasını kullanan kesin bir URI değil" -#: glib/gconvert.c:1761 +#: ../glib/gconvert.c:1892 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "Yerel dosya URI'si '%s', '#' içeremez" -#: glib/gconvert.c:1778 +#: ../glib/gconvert.c:1909 #, c-format msgid "The URI '%s' is invalid" msgstr "URI '%s' geçersiz" -#: glib/gconvert.c:1790 +#: ../glib/gconvert.c:1921 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "URI makine adı '%s' geçersiz" -#: glib/gconvert.c:1806 +#: ../glib/gconvert.c:1937 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "URI '%s' geçersiz olarak çıkış yapılmış karakterler içeriyor" -#: glib/gconvert.c:1901 +#: ../glib/gconvert.c:2032 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "Yol adı '%s', kesin bir yol değil" -#: glib/gconvert.c:1911 +#: ../glib/gconvert.c:2042 msgid "Invalid hostname" msgstr "Geçersiz makine adı" -#: glib/gdir.c:112 glib/gdir.c:135 +#. Translators: 'before midday' indicator +#: ../glib/gdatetime.c:149 +msgctxt "GDateTime" +msgid "am" +msgstr "öö" + +#. Translators: 'before midday' indicator +#: ../glib/gdatetime.c:151 +msgctxt "GDateTime" +msgid "AM" +msgstr "ÖÖ" + +#. Translators: 'after midday' indicator +#: ../glib/gdatetime.c:153 +msgctxt "GDateTime" +msgid "pm" +msgstr "ös" + +#. Translators: 'after midday' indicator +#: ../glib/gdatetime.c:155 +msgctxt "GDateTime" +msgid "PM" +msgstr "ÖS" + +#. Translators: this is the preferred format for expressing the date +#: ../glib/gdatetime.c:164 +msgctxt "GDateTime" +msgid "%m/%d/%y" +msgstr "%d/%m/%y" + +#. Translators: this is the preferred format for expressing the time +#: ../glib/gdatetime.c:167 +msgctxt "GDateTime" +msgid "%H:%M:%S" +msgstr "%H:%M:%S" + +#: ../glib/gdatetime.c:193 +msgctxt "full month name" +msgid "January" +msgstr "Ocak" + +#: ../glib/gdatetime.c:195 +msgctxt "full month name" +msgid "February" +msgstr "Şubat" + +#: ../glib/gdatetime.c:197 +msgctxt "full month name" +msgid "March" +msgstr "Mart" + +#: ../glib/gdatetime.c:199 +msgctxt "full month name" +msgid "April" +msgstr "Nisan" + +#: ../glib/gdatetime.c:201 +msgctxt "full month name" +msgid "May" +msgstr "Mayıs" + +#: ../glib/gdatetime.c:203 +msgctxt "full month name" +msgid "June" +msgstr "Haziran" + +#: ../glib/gdatetime.c:205 +msgctxt "full month name" +msgid "July" +msgstr "Temmuz" + +#: ../glib/gdatetime.c:207 +msgctxt "full month name" +msgid "August" +msgstr "Ağustos" + +#: ../glib/gdatetime.c:209 +msgctxt "full month name" +msgid "September" +msgstr "Eylül" + +#: ../glib/gdatetime.c:211 +msgctxt "full month name" +msgid "October" +msgstr "Ekim" + +#: ../glib/gdatetime.c:213 +msgctxt "full month name" +msgid "November" +msgstr "Kasım" + +#: ../glib/gdatetime.c:215 +msgctxt "full month name" +msgid "December" +msgstr "Aralık" + +#: ../glib/gdatetime.c:230 +msgctxt "abbreviated month name" +msgid "Jan" +msgstr "Oca" + +#: ../glib/gdatetime.c:232 +msgctxt "abbreviated month name" +msgid "Feb" +msgstr "Şub" + +#: ../glib/gdatetime.c:234 +msgctxt "abbreviated month name" +msgid "Mar" +msgstr "Mar" + +#: ../glib/gdatetime.c:236 +msgctxt "abbreviated month name" +msgid "Apr" +msgstr "Nis" + +#: ../glib/gdatetime.c:238 +msgctxt "abbreviated month name" +msgid "May" +msgstr "May" + +#: ../glib/gdatetime.c:240 +msgctxt "abbreviated month name" +msgid "Jun" +msgstr "Haz" + +#: ../glib/gdatetime.c:242 +msgctxt "abbreviated month name" +msgid "Jul" +msgstr "Tem" + +#: ../glib/gdatetime.c:244 +msgctxt "abbreviated month name" +msgid "Aug" +msgstr "Ağu" + +#: ../glib/gdatetime.c:246 +msgctxt "abbreviated month name" +msgid "Sep" +msgstr "Eyl" + +#: ../glib/gdatetime.c:248 +msgctxt "abbreviated month name" +msgid "Oct" +msgstr "Eki" + +#: ../glib/gdatetime.c:250 +msgctxt "abbreviated month name" +msgid "Nov" +msgstr "Kas" + +#: ../glib/gdatetime.c:252 +msgctxt "abbreviated month name" +msgid "Dec" +msgstr "Ara" + +#: ../glib/gdatetime.c:267 +msgctxt "full weekday name" +msgid "Monday" +msgstr "Pazartesi" + +#: ../glib/gdatetime.c:269 +msgctxt "full weekday name" +msgid "Tuesday" +msgstr "Salı" + +#: ../glib/gdatetime.c:271 +msgctxt "full weekday name" +msgid "Wednesday" +msgstr "Çarşamba" + +#: ../glib/gdatetime.c:273 +msgctxt "full weekday name" +msgid "Thursday" +msgstr "Perşembe" + +#: ../glib/gdatetime.c:275 +msgctxt "full weekday name" +msgid "Friday" +msgstr "Cuma" + +#: ../glib/gdatetime.c:277 +msgctxt "full weekday name" +msgid "Saturday" +msgstr "Cumartesi" + +#: ../glib/gdatetime.c:279 +msgctxt "full weekday name" +msgid "Sunday" +msgstr "Pazar" + +#: ../glib/gdatetime.c:294 +msgctxt "abbreviated weekday name" +msgid "Mon" +msgstr "Pzt" + +#: ../glib/gdatetime.c:296 +msgctxt "abbreviated weekday name" +msgid "Tue" +msgstr "Sal" + +#: ../glib/gdatetime.c:298 +msgctxt "abbreviated weekday name" +msgid "Wed" +msgstr "Çar" + +#: ../glib/gdatetime.c:300 +msgctxt "abbreviated weekday name" +msgid "Thu" +msgstr "Per" + +#: ../glib/gdatetime.c:302 +msgctxt "abbreviated weekday name" +msgid "Fri" +msgstr "Cum" + +#: ../glib/gdatetime.c:304 +msgctxt "abbreviated weekday name" +msgid "Sat" +msgstr "Cmt" + +#: ../glib/gdatetime.c:306 +msgctxt "abbreviated weekday name" +msgid "Sun" +msgstr "Paz" + +#: ../glib/gdir.c:115 ../glib/gdir.c:138 #, c-format msgid "Error opening directory '%s': %s" msgstr "'%s' dizini açılamadı: %s" -#: glib/gfileutils.c:536 glib/gfileutils.c:624 +#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628 #, c-format msgid "Could not allocate %lu bytes to read file \"%s\"" msgstr "%lu bayt \"%s\" dosyasını okumak için ayrılamadı" -#: glib/gfileutils.c:551 +#: ../glib/gfileutils.c:555 #, c-format msgid "Error reading file '%s': %s" msgstr "'%s' dosyası okunurken hata: %s" -#: glib/gfileutils.c:565 +#: ../glib/gfileutils.c:569 #, c-format msgid "File \"%s\" is too large" msgstr "Dosya \"%s\" çok büyük" -#: glib/gfileutils.c:648 +#: ../glib/gfileutils.c:652 #, c-format msgid "Failed to read from file '%s': %s" msgstr "'%s' dosyasından okuma başarısız: %s" -#: glib/gfileutils.c:699 glib/gfileutils.c:786 +#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790 #, c-format msgid "Failed to open file '%s': %s" msgstr "'%s' dosyasını açma başarısız: %s" -#: glib/gfileutils.c:716 glib/gmappedfile.c:170 +#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169 #, c-format msgid "Failed to get attributes of file '%s': fstat() failed: %s" msgstr "" "'%s' dosyasının özniteliklerini alma başarısız: fstat() başarısızlığı: %s" -#: glib/gfileutils.c:750 +#: ../glib/gfileutils.c:754 #, c-format msgid "Failed to open file '%s': fdopen() failed: %s" msgstr "'%s' dosyasını açma başarısız: fdopen() başarısızlığı: %s" -#: glib/gfileutils.c:858 +#: ../glib/gfileutils.c:862 #, c-format msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s" msgstr "" "'%s' dosyasının adı '%s' olarak değiştirilirken hata: g_rename() " "başarısızlığı: %s" -#: glib/gfileutils.c:900 glib/gfileutils.c:1366 +#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388 #, c-format msgid "Failed to create file '%s': %s" msgstr "'%s' dosyasını oluşturma başarısız: %s" -#: glib/gfileutils.c:914 +#: ../glib/gfileutils.c:918 #, c-format msgid "Failed to open file '%s' for writing: fdopen() failed: %s" msgstr "'%s' dosyası yazma için açılamadı: fdopen() başarısızlığı: %s" -#: glib/gfileutils.c:939 +#: ../glib/gfileutils.c:943 #, c-format msgid "Failed to write file '%s': fwrite() failed: %s" msgstr "'%s' dosyasına yazılamadı: fwrite() başarısızlığı: %s" -#: glib/gfileutils.c:958 +#: ../glib/gfileutils.c:962 #, c-format msgid "Failed to write file '%s': fflush() failed: %s" msgstr "Dosya '%s' yazılamadı: fflush() başarısız: %s" -#: glib/gfileutils.c:987 +#: ../glib/gfileutils.c:1005 #, c-format msgid "Failed to write file '%s': fsync() failed: %s" msgstr "Dosya '%s' yazılamadı: fsync() başarısız: %s" -#: glib/gfileutils.c:1006 +#: ../glib/gfileutils.c:1025 #, c-format msgid "Failed to close file '%s': fclose() failed: %s" msgstr "'%s' dosyası kapatılamadı: fclose() başarısızlığı: %s" -#: glib/gfileutils.c:1124 +#: ../glib/gfileutils.c:1146 #, c-format msgid "Existing file '%s' could not be removed: g_unlink() failed: %s" msgstr "Varolan dosya '%s' silinemedi: g_unlink() başarısızlığı: %s" -#: glib/gfileutils.c:1328 +#: ../glib/gfileutils.c:1350 #, c-format msgid "Template '%s' invalid, should not contain a '%s'" msgstr "Şablon '%s' geçersiz, '%s' içermemeli" -#: glib/gfileutils.c:1341 +#: ../glib/gfileutils.c:1363 #, c-format msgid "Template '%s' doesn't contain XXXXXX" msgstr "Şablon '%s' XXXXXX içermiyor" -#: glib/gfileutils.c:1774 +#: ../glib/gfileutils.c:1796 #, c-format msgid "%u byte" msgid_plural "%u bytes" -msgstr[0] "" +msgstr[0] "%u bayt" -#: glib/gfileutils.c:1782 +#: ../glib/gfileutils.c:1804 #, c-format msgid "%.1f KB" msgstr "%.1f KB" -#: glib/gfileutils.c:1787 +#: ../glib/gfileutils.c:1809 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: glib/gfileutils.c:1792 +#: ../glib/gfileutils.c:1814 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: glib/gfileutils.c:1797 -#, fuzzy, c-format +#: ../glib/gfileutils.c:1819 +#, c-format msgid "%.1f TB" -msgstr "%.1f KB" +msgstr "%.1f TB" -#: glib/gfileutils.c:1802 -#, fuzzy, c-format +#: ../glib/gfileutils.c:1824 +#, c-format msgid "%.1f PB" -msgstr "%.1f KB" +msgstr "%.1f PB" -#: glib/gfileutils.c:1807 -#, fuzzy, c-format +#: ../glib/gfileutils.c:1829 +#, c-format msgid "%.1f EB" -msgstr "%.1f KB" +msgstr "%.1f EB" -#: glib/gfileutils.c:1850 +#: ../glib/gfileutils.c:1872 #, c-format msgid "Failed to read the symbolic link '%s': %s" msgstr "'%s' sembolik bağını okuma başarısız: %s" -#: glib/gfileutils.c:1871 +#: ../glib/gfileutils.c:1893 msgid "Symbolic links not supported" msgstr "Sembolik bağlar desteklenmiyor" -#: glib/giochannel.c:1408 +#: ../glib/giochannel.c:1407 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "`%s'-`%s' dönüştürücüsü açılamıyor: %s" -#: glib/giochannel.c:1753 +#: ../glib/giochannel.c:1752 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "g_io_channel_read_line_string içinde okuma yapılamıyor" -#: glib/giochannel.c:1800 glib/giochannel.c:2058 glib/giochannel.c:2145 +#: ../glib/giochannel.c:1799 ../glib/giochannel.c:2056 +#: ../glib/giochannel.c:2143 msgid "Leftover unconverted data in read buffer" msgstr "Okuma tampon belleğinde kalıntı çevrilmemiş veri" -#: glib/giochannel.c:1881 glib/giochannel.c:1958 +#: ../glib/giochannel.c:1880 ../glib/giochannel.c:1957 msgid "Channel terminates in a partial character" msgstr "Kanal kısmi bir karakterde sonlanıyor" -#: glib/giochannel.c:1944 +#: ../glib/giochannel.c:1943 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "g_io_channel_read_to_end içinde okuma başarısız" -#: glib/gmappedfile.c:151 +#: ../glib/gmappedfile.c:150 #, c-format msgid "Failed to open file '%s': open() failed: %s" msgstr "'%s' dosyası açılamadı: open() başarısızlığı: %s" -#: glib/gmappedfile.c:230 +#: ../glib/gmappedfile.c:229 #, c-format msgid "Failed to map file '%s': mmap() failed: %s" msgstr "'%s' için eşlem oluşturulamadı: mmap() başarısızlığı: %s" -#: glib/gmarkup.c:303 glib/gmarkup.c:343 +#: ../glib/gmarkup.c:355 ../glib/gmarkup.c:396 #, c-format msgid "Error on line %d char %d: " msgstr "Satır %d karakter %d hatalı: " -#: glib/gmarkup.c:363 glib/gmarkup.c:441 +#: ../glib/gmarkup.c:418 ../glib/gmarkup.c:501 #, c-format msgid "Invalid UTF-8 encoded text in name - not valid '%s'" msgstr "İsimde geçersiz UTF-8 kodlanmış metin - geçerli olmayan '%s'" -#: glib/gmarkup.c:374 +#: ../glib/gmarkup.c:429 #, c-format msgid "'%s' is not a valid name " msgstr "'%s' geçerli bir isim değil " -#: glib/gmarkup.c:390 +#: ../glib/gmarkup.c:445 #, c-format msgid "'%s' is not a valid name: '%c' " msgstr "'%s' geçerli bir isim değil: '% c'" -#: glib/gmarkup.c:494 +#: ../glib/gmarkup.c:554 #, c-format msgid "Error on line %d: %s" msgstr "Satır %d hata içeriyor: %s" -#: glib/gmarkup.c:578 +#: ../glib/gmarkup.c:638 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -359,7 +590,7 @@ msgstr "" "Karakter referansı içinde bir rakam olması gereken '%-.*s' ayrıştırılamadı, " "(örneğin; ê) - rakam çok büyük olabilir" -#: glib/gmarkup.c:590 +#: ../glib/gmarkup.c:650 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -369,23 +600,23 @@ msgstr "" "başlatmak istemeksizin & karakteri kullandınız - & işaretini & olarak " "kullanabilirsiniz" -#: glib/gmarkup.c:616 +#: ../glib/gmarkup.c:676 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Karakter referansı '%-.*s' izin verilen karakteri kodlamıyor" -#: glib/gmarkup.c:654 +#: ../glib/gmarkup.c:714 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Boş özvarlık '&;' görüldü; geçerli öğeler: & " < &qt; '" -#: glib/gmarkup.c:662 +#: ../glib/gmarkup.c:722 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Varlık adı '%-.*s' bilinmiyor" -#: glib/gmarkup.c:667 +#: ../glib/gmarkup.c:727 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -394,11 +625,11 @@ msgstr "" "istemeksizin & karakteri kullandınız - & işaretini & olarak " "kullanabilirsiniz" -#: glib/gmarkup.c:1014 +#: ../glib/gmarkup.c:1078 msgid "Document must begin with an element (e.g. )" msgstr "Belge bir öğe ile başlamalı (örneğin )" -#: glib/gmarkup.c:1054 +#: ../glib/gmarkup.c:1118 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -407,15 +638,15 @@ msgstr "" "'<' karakterinden sonra gelen '%s' geçerli bir karakter değil; bir öğe adı " "başlatmamalı" -#: glib/gmarkup.c:1122 +#: ../glib/gmarkup.c:1186 #, c-format msgid "" -"Odd character '%s', expected a '>' character to end the empty-element tag '%" -"s'" +"Odd character '%s', expected a '>' character to end the empty-element tag " +"'%s'" msgstr "" "Tuhaf karakter '%s', boş öğe '%s' etiketinin sonunda '>' karakteri bekleniyor" -#: glib/gmarkup.c:1206 +#: ../glib/gmarkup.c:1270 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -423,7 +654,7 @@ msgstr "" "Tuhaf karakter '%1$s', '%3$s' öğesinin '%2$s' özniteliğinin sonunda '=' " "karakteri bekleniyor" -#: glib/gmarkup.c:1247 +#: ../glib/gmarkup.c:1311 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -434,7 +665,7 @@ msgstr "" "veya bir öznitelik bekleniyor; öznitelik isminde geçersiz bir karakter " "kullanmış olabilirsiniz" -#: glib/gmarkup.c:1291 +#: ../glib/gmarkup.c:1355 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -443,7 +674,7 @@ msgstr "" "Tuhaf karakter '%s', '%s' özniteliğini '%s' öğesinde değiştirmek için " "eşittir işaretinden sonra tırnak işareti bekleniyor" -#: glib/gmarkup.c:1425 +#: ../glib/gmarkup.c:1488 #, c-format msgid "" "'%s' is not a valid character following the characters ''" -#: glib/gmarkup.c:1472 +#: ../glib/gmarkup.c:1535 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "'%s' öğesi kapatılmış, hiç bir öğe açık değil" -#: glib/gmarkup.c:1481 +#: ../glib/gmarkup.c:1544 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "'%s' öğesi kapatılmış, fakat şu an açık öğe '%s'" -#: glib/gmarkup.c:1648 +#: ../glib/gmarkup.c:1712 msgid "Document was empty or contained only whitespace" msgstr "Belge boş veya sadece boşluk karakteri içeriyor" -#: glib/gmarkup.c:1662 +#: ../glib/gmarkup.c:1726 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "" "Belge açık açı parantezi '<' işaretinden hemen sonra beklenmedik bir şekilde " "bitti" -#: glib/gmarkup.c:1670 glib/gmarkup.c:1715 +#: ../glib/gmarkup.c:1734 ../glib/gmarkup.c:1779 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " "element opened" msgstr "" -"Belge öğeleri hala açıkken beklenmedik bir şekilde bitti - son açılan öğe: '%" -"s'" +"Belge öğeleri hala açıkken beklenmedik bir şekilde bitti - son açılan öğe: " +"'%s'" -#: glib/gmarkup.c:1678 +#: ../glib/gmarkup.c:1742 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -499,19 +730,19 @@ msgstr "" "Belge beklenmedik bir şekilde bitti, etiketi bitiren kapalı açı parantezi " "ile biten <%s/> beklendi" -#: glib/gmarkup.c:1684 +#: ../glib/gmarkup.c:1748 msgid "Document ended unexpectedly inside an element name" msgstr "Belge bir öğe isminin içinde beklenmedik bir şekilde bitti" -#: glib/gmarkup.c:1690 +#: ../glib/gmarkup.c:1754 msgid "Document ended unexpectedly inside an attribute name" msgstr "Belge bir öznitelik ismi içinde beklenmedik bir şekilde bitti" -#: glib/gmarkup.c:1695 +#: ../glib/gmarkup.c:1759 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "Belge bir öğe-açma etiketi içinde beklenmedik bir şekilde bitti." -#: glib/gmarkup.c:1701 +#: ../glib/gmarkup.c:1765 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -519,394 +750,404 @@ msgstr "" "Belge öznitelik adını takip eden eşittir işaretinden sonra beklenmedik bir " "şekilde bitti; öznitelik değeri yok" -#: glib/gmarkup.c:1708 +#: ../glib/gmarkup.c:1772 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Belge bir öznitelik değeri içinde iken beklenmedik bir şekilde bitti" -#: glib/gmarkup.c:1724 +#: ../glib/gmarkup.c:1788 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "Belge, '%s' öğesinin kapatma etiketi içinde beklenmedik bir şekilde bitti" -#: glib/gmarkup.c:1730 +#: ../glib/gmarkup.c:1794 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "Belge bir yorum veya işlem talimatı içindeyken beklenmedik bir şekilde bitti" -#: glib/gregex.c:131 +#: ../glib/gregex.c:188 msgid "corrupted object" msgstr "bozuk nesne" -#: glib/gregex.c:133 +#: ../glib/gregex.c:190 msgid "internal error or corrupted object" msgstr "dahili hata ya da bozuk öğe" -#: glib/gregex.c:135 +#: ../glib/gregex.c:192 msgid "out of memory" msgstr "yetersiz bellek" -#: glib/gregex.c:140 +#: ../glib/gregex.c:197 msgid "backtracking limit reached" msgstr "geri takip sınırına ulaşıldı" -#: glib/gregex.c:152 glib/gregex.c:160 +#: ../glib/gregex.c:209 ../glib/gregex.c:217 msgid "the pattern contains items not supported for partial matching" msgstr "doku (pattern), kısmi eşleme için desteklenmeyen öğeler içeriyor" -#: glib/gregex.c:154 gio/glocalfile.c:2110 +#: ../glib/gregex.c:211 ../gio/glocalfile.c:2111 msgid "internal error" msgstr "dahili hata" -#: glib/gregex.c:162 +#: ../glib/gregex.c:219 msgid "back references as conditions are not supported for partial matching" msgstr "koşul olarak geri referanslar kısmi eşleme için desteklenmiyor" -#: glib/gregex.c:171 +#: ../glib/gregex.c:228 msgid "recursion limit reached" msgstr "iç içe tekrar sınırına ulaşıldı" -#: glib/gregex.c:173 +#: ../glib/gregex.c:230 msgid "workspace limit for empty substrings reached" msgstr "boş alt dizgiler için çalışma alanı sınırına ulaşıldı" -#: glib/gregex.c:175 +#: ../glib/gregex.c:232 msgid "invalid combination of newline flags" msgstr "yeni satır işaretlerinin geçersiz kombinasyonu" -#: glib/gregex.c:179 +#: ../glib/gregex.c:234 +msgid "bad offset" +msgstr "geçersiz ofset" + +#: ../glib/gregex.c:236 +msgid "short utf8" +msgstr "kısa utf8" + +#: ../glib/gregex.c:240 msgid "unknown error" msgstr "bilinmeyen hata" -#: glib/gregex.c:199 +#: ../glib/gregex.c:260 msgid "\\ at end of pattern" msgstr "\\ desenin sonunda" -#: glib/gregex.c:202 +#: ../glib/gregex.c:263 msgid "\\c at end of pattern" msgstr "\\c desenin sonunda" -#: glib/gregex.c:205 +#: ../glib/gregex.c:266 msgid "unrecognized character follows \\" msgstr "anlaşılamayan karakter \\ takip ediyor" -#: glib/gregex.c:212 +#: ../glib/gregex.c:273 msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here" msgstr "" "büyük küçük harf değiştiren kaçış karakterleri (\\l, \\L, \\u, \\U) burada " "kullanılamaz" -#: glib/gregex.c:215 +#: ../glib/gregex.c:276 msgid "numbers out of order in {} quantifier" msgstr "sayılar {} niceliği içerisinde sıra dışı" -#: glib/gregex.c:218 +#: ../glib/gregex.c:279 msgid "number too big in {} quantifier" msgstr "sayılar {} niceliği içerisinde çok büyük" -#: glib/gregex.c:221 +#: ../glib/gregex.c:282 msgid "missing terminating ] for character class" msgstr "karakter sınıfı için eksik sonlanan ]" -#: glib/gregex.c:224 +#: ../glib/gregex.c:285 msgid "invalid escape sequence in character class" msgstr "karakter sınıfında geçersiz dizi" -#: glib/gregex.c:227 +#: ../glib/gregex.c:288 msgid "range out of order in character class" msgstr "karakter sınıfında sıra dışı kapsam" -#: glib/gregex.c:230 +#: ../glib/gregex.c:291 msgid "nothing to repeat" msgstr "tekrarlanacak bir şey yok" -#: glib/gregex.c:233 +#: ../glib/gregex.c:294 msgid "unrecognized character after (?" msgstr "(? sonrası tanımlanmayan karakter" -#: glib/gregex.c:237 +#: ../glib/gregex.c:298 msgid "unrecognized character after (?<" msgstr "(?< sonrası tanımlanmayan karakter" -#: glib/gregex.c:241 +#: ../glib/gregex.c:302 msgid "unrecognized character after (?P" msgstr "(?P sonrası tanımlanmayan karakter" -#: glib/gregex.c:244 +#: ../glib/gregex.c:305 msgid "POSIX named classes are supported only within a class" msgstr "POSIX isimlendirilmiş sınıflar sadece bir sınıf içinde desteklenir" -#: glib/gregex.c:247 +#: ../glib/gregex.c:308 msgid "missing terminating )" msgstr "eksik sonlandıran )" -#: glib/gregex.c:251 +#: ../glib/gregex.c:312 msgid ") without opening (" msgstr "açma ( olmayan )" #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of) #. * sequences here, '(?-54' would be an example for the second group. #. -#: glib/gregex.c:258 +#: ../glib/gregex.c:319 msgid "(?R or (?[+-]digits must be followed by )" msgstr "(?R ya da (?[+-]basamakları ) ile takip etmelidir" -#: glib/gregex.c:261 +#: ../glib/gregex.c:322 msgid "reference to non-existent subpattern" msgstr "mevcut olmayan alt desene referans" -#: glib/gregex.c:264 +#: ../glib/gregex.c:325 msgid "missing ) after comment" msgstr "açıklama sonrası eksik )" -#: glib/gregex.c:267 +#: ../glib/gregex.c:328 msgid "regular expression too large" msgstr "düzenli ifade çok büyük" -#: glib/gregex.c:270 +#: ../glib/gregex.c:331 msgid "failed to get memory" msgstr "hafıza alma başarısız oldu" -#: glib/gregex.c:273 +#: ../glib/gregex.c:334 msgid "lookbehind assertion is not fixed length" msgstr "geribakma iddiası sabit uzunlukta değil" -#: glib/gregex.c:276 +#: ../glib/gregex.c:337 msgid "malformed number or name after (?(" msgstr "(?( sonrası bozuk rakam ya da isim" -#: glib/gregex.c:279 +#: ../glib/gregex.c:340 msgid "conditional group contains more than two branches" msgstr "koşul grubu ikiden daha fazla branç içeriyor" -#: glib/gregex.c:282 +#: ../glib/gregex.c:343 msgid "assertion expected after (?(" msgstr "(?( sonrası iddia bekleniyor" -#: glib/gregex.c:285 +#: ../glib/gregex.c:346 msgid "unknown POSIX class name" msgstr "bilinmeyen POSIX sınıf ismi" -#: glib/gregex.c:288 +#: ../glib/gregex.c:349 msgid "POSIX collating elements are not supported" msgstr "POSIX karşılaştırma öğeleri desteklenmiyor" -#: glib/gregex.c:291 +#: ../glib/gregex.c:352 msgid "character value in \\x{...} sequence is too large" msgstr "\\x{...} dizisi içerisinde karakter değeri çok büyük" -#: glib/gregex.c:294 +#: ../glib/gregex.c:355 msgid "invalid condition (?(0)" msgstr "geçersiz koşul (?(0)" -#: glib/gregex.c:297 +#: ../glib/gregex.c:358 msgid "\\C not allowed in lookbehind assertion" msgstr "\\C geriye bakma iddiası içerisinde izin verilmiyor" -#: glib/gregex.c:300 +#: ../glib/gregex.c:361 msgid "recursive call could loop indefinitely" msgstr "tekrarlı çağrı sonsuz döngü yapamadı" -#: glib/gregex.c:303 +#: ../glib/gregex.c:364 msgid "missing terminator in subpattern name" msgstr "alt desen ismi içerisinde eksik sonlandırıcı" -#: glib/gregex.c:306 +#: ../glib/gregex.c:367 msgid "two named subpatterns have the same name" msgstr "iki isimli alt desenler aynı isme sahip" -#: glib/gregex.c:309 +#: ../glib/gregex.c:370 msgid "malformed \\P or \\p sequence" msgstr "bozulmuş \\P ya da \\p dizisi" -#: glib/gregex.c:312 +#: ../glib/gregex.c:373 msgid "unknown property name after \\P or \\p" msgstr "\\P ya da \\p sonrası bilinmeyen özellik ismi" -#: glib/gregex.c:315 +#: ../glib/gregex.c:376 msgid "subpattern name is too long (maximum 32 characters)" msgstr "alt desen ismi çok uzun (en fazla 32 karakter)" -#: glib/gregex.c:318 +#: ../glib/gregex.c:379 msgid "too many named subpatterns (maximum 10,000)" msgstr "çok fazla isimlendirilmiş alt desen (en fazla 10.000)" -#: glib/gregex.c:321 +#: ../glib/gregex.c:382 msgid "octal value is greater than \\377" msgstr "sekizlik değer \\377'den daha büyük" -#: glib/gregex.c:324 +#: ../glib/gregex.c:385 msgid "DEFINE group contains more than one branch" msgstr "DEFINE grubu birden daha fazla branş içeriyor" -#: glib/gregex.c:327 +#: ../glib/gregex.c:388 msgid "repeating a DEFINE group is not allowed" msgstr "bir DEFINE grubunu tekrarlamaya izin verilmiyor" -#: glib/gregex.c:330 +#: ../glib/gregex.c:391 msgid "inconsistent NEWLINE options" msgstr "kararsız NEWLINE seçenekleri" -#: glib/gregex.c:333 +#: ../glib/gregex.c:394 msgid "" "\\g is not followed by a braced name or an optionally braced non-zero number" msgstr "" "\\g bir parantezli isim ya da tercihten parentezli sıfır olmayan sayı " "tarafından takip edilmiyor" -#: glib/gregex.c:338 +#: ../glib/gregex.c:399 msgid "unexpected repeat" msgstr "beklenmeyen tekrar" -#: glib/gregex.c:342 +#: ../glib/gregex.c:403 msgid "code overflow" msgstr "kod akış taşması" -#: glib/gregex.c:346 +#: ../glib/gregex.c:407 msgid "overran compiling workspace" msgstr "derleme çalışma alanı kaplandı" -#: glib/gregex.c:350 +#: ../glib/gregex.c:411 msgid "previously-checked referenced subpattern not found" msgstr "onceden kontrol edilmiş referanslı alt desen bulunamadı" -#: glib/gregex.c:522 glib/gregex.c:1639 +#: ../glib/gregex.c:591 ../glib/gregex.c:1714 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Düzenli ifade %s eşleşirken hata: %s" -#: glib/gregex.c:1094 +#: ../glib/gregex.c:1167 msgid "PCRE library is compiled without UTF8 support" msgstr "PCRE kütüphanesi UTF8 desteği olmadan derlenmiş" -#: glib/gregex.c:1103 +#: ../glib/gregex.c:1176 msgid "PCRE library is compiled without UTF8 properties support" msgstr "PCRE kütüphanesi UTF8 özellikleri desteği olmadan derlenmiş" -#: glib/gregex.c:1157 +#: ../glib/gregex.c:1232 #, c-format msgid "Error while compiling regular expression %s at char %d: %s" msgstr "Düzenli ifade %s derlenirken karakter %d hatalı: %s" -#: glib/gregex.c:1193 +#: ../glib/gregex.c:1268 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Düzenli ifade %s eniyilemesinde (optimization) hata: %s" -#: glib/gregex.c:2067 +#: ../glib/gregex.c:2144 msgid "hexadecimal digit or '}' expected" msgstr "onaltılı rakam ya da '}' beklendi" -#: glib/gregex.c:2083 +#: ../glib/gregex.c:2160 msgid "hexadecimal digit expected" msgstr "onaltılı rakam beklendi" -#: glib/gregex.c:2123 +#: ../glib/gregex.c:2200 msgid "missing '<' in symbolic reference" msgstr "sembolik referansda eksik '<'" -#: glib/gregex.c:2132 +#: ../glib/gregex.c:2209 msgid "unfinished symbolic reference" msgstr "tamamlanmamış sembolik referans" -#: glib/gregex.c:2139 +#: ../glib/gregex.c:2216 msgid "zero-length symbolic reference" msgstr "sıfır-uzunlukta sembolik referans" -#: glib/gregex.c:2150 +#: ../glib/gregex.c:2227 msgid "digit expected" msgstr "rakam beklendi" -#: glib/gregex.c:2168 +#: ../glib/gregex.c:2245 msgid "illegal symbolic reference" msgstr "geçersiz sembolik referans" -#: glib/gregex.c:2230 +#: ../glib/gregex.c:2307 msgid "stray final '\\'" msgstr "son '\\' kayıp" -#: glib/gregex.c:2234 +#: ../glib/gregex.c:2311 msgid "unknown escape sequence" msgstr "geçersiz çıkış dizisi" -#: glib/gregex.c:2244 +#: ../glib/gregex.c:2321 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Yerine koyma metni \"%s\" işlenirken karakter %lu hatalı: %s" -#: glib/gshell.c:92 +#: ../glib/gshell.c:91 msgid "Quoted text doesn't begin with a quotation mark" msgstr "Alıntılı metin tırnak işareti ile başlamıyor" -#: glib/gshell.c:182 +#: ../glib/gshell.c:181 msgid "Unmatched quotation mark in command line or other shell-quoted text" msgstr "" "Komut satırında veya diğer kabuk alıntısı metinde eşlenmemiş tırnak işareti" -#: glib/gshell.c:560 +#: ../glib/gshell.c:559 #, c-format msgid "Text ended just after a '\\' character. (The text was '%s')" msgstr "Metin '\\' karakterinden hemen sonra bitti. (Metin: '%s')" -#: glib/gshell.c:567 +#: ../glib/gshell.c:566 #, c-format msgid "Text ended before matching quote was found for %c. (The text was '%s')" msgstr "%c için eşleşen tırnak işareti bulunmadan metin bitti. (Metin: '%s')" -#: glib/gshell.c:579 +#: ../glib/gshell.c:578 msgid "Text was empty (or contained only whitespace)" msgstr "Metin boştu (veya sadece boşluk içeriyordu)" -#: glib/gspawn-win32.c:283 +#: ../glib/gspawn-win32.c:282 msgid "Failed to read data from child process" msgstr "Alt süreçten bilgi okuma başarısızlığı" -#: glib/gspawn-win32.c:300 glib/gspawn.c:1480 +#: ../glib/gspawn-win32.c:299 ../glib/gspawn.c:1486 #, c-format msgid "Failed to create pipe for communicating with child process (%s)" msgstr "Alt süreçle haberleşme için boru yaratılamadı (%s)" -#: glib/gspawn-win32.c:339 glib/gspawn-win32.c:347 glib/gspawn.c:1139 +#: ../glib/gspawn-win32.c:338 ../glib/gspawn-win32.c:346 ../glib/gspawn.c:1145 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Alt süreç borusundan okuma başarısızlığı (%s)" -#: glib/gspawn-win32.c:370 glib/gspawn.c:1346 +#: ../glib/gspawn-win32.c:369 ../glib/gspawn.c:1352 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "'%s' dizinine değiştirme başarısızlığı (%s)" -#: glib/gspawn-win32.c:376 glib/gspawn-win32.c:495 +#: ../glib/gspawn-win32.c:375 ../glib/gspawn-win32.c:494 #, c-format msgid "Failed to execute child process (%s)" msgstr "Alt süreç yürütme başarısızlığı (%s)" -#: glib/gspawn-win32.c:445 +#: ../glib/gspawn-win32.c:444 #, c-format msgid "Invalid program name: %s" msgstr "Geçersiz program adı: %s" -#: glib/gspawn-win32.c:455 glib/gspawn-win32.c:723 glib/gspawn-win32.c:1279 +#: ../glib/gspawn-win32.c:454 ../glib/gspawn-win32.c:722 +#: ../glib/gspawn-win32.c:1278 #, c-format msgid "Invalid string in argument vector at %d: %s" msgstr "%d konumunda parametre vektörü içinde geçersiz dizgi: %s" -#: glib/gspawn-win32.c:466 glib/gspawn-win32.c:738 glib/gspawn-win32.c:1312 +#: ../glib/gspawn-win32.c:465 ../glib/gspawn-win32.c:737 +#: ../glib/gspawn-win32.c:1311 #, c-format msgid "Invalid string in environment: %s" msgstr "Çevre içinde geçersiz dizgi: %s" -#: glib/gspawn-win32.c:719 glib/gspawn-win32.c:1260 +#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1259 #, c-format msgid "Invalid working directory: %s" msgstr "Geçersiz çalışma dizini: %s" -#: glib/gspawn-win32.c:784 +#: ../glib/gspawn-win32.c:783 #, c-format msgid "Failed to execute helper program (%s)" msgstr "Yardımcı program (%s) çalıştırılamadı" -#: glib/gspawn-win32.c:998 +#: ../glib/gspawn-win32.c:997 msgid "" "Unexpected error in g_io_channel_win32_poll() reading data from a child " "process" @@ -914,136 +1155,136 @@ msgstr "" "Alt süreçten bilgi okurken g_io_channel_win32_poll() işleminde beklenmeyen " "hata" -#: glib/gspawn.c:190 +#: ../glib/gspawn.c:196 #, c-format msgid "Failed to read data from child process (%s)" msgstr "Alt süreçten bilgi okuma başarısızlığı (%s)" -#: glib/gspawn.c:329 +#: ../glib/gspawn.c:335 #, c-format msgid "Unexpected error in select() reading data from a child process (%s)" msgstr "Alt süreçten bilgi okurken select()'te beklenmeyen hata oluştu (%s)" -#: glib/gspawn.c:414 +#: ../glib/gspawn.c:420 #, c-format msgid "Unexpected error in waitpid() (%s)" msgstr "waitpid()'de beklenmeyen hata (%s)" -#: glib/gspawn.c:1206 +#: ../glib/gspawn.c:1212 #, c-format msgid "Failed to fork (%s)" msgstr "Çatallama başarısızlığı (%s)" -#: glib/gspawn.c:1356 +#: ../glib/gspawn.c:1362 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "\"%s\" alt süreç çalıştırılırken hata oluştu (%s)" -#: glib/gspawn.c:1366 +#: ../glib/gspawn.c:1372 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Alt sürecin girdisi veya çıktısı yönlendirilemedi (%s)" -#: glib/gspawn.c:1375 +#: ../glib/gspawn.c:1381 #, c-format msgid "Failed to fork child process (%s)" msgstr "Alt süreç çatallanamadı (%s)" -#: glib/gspawn.c:1383 +#: ../glib/gspawn.c:1389 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Alt süreç \"%s\" çalıştırılırken bilinmeyen hata oluştu" -#: glib/gspawn.c:1407 +#: ../glib/gspawn.c:1413 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Alt süreç borusundan yeterli bilgi okunamadı (%s)" -#: glib/gutf8.c:1063 +#: ../glib/gutf8.c:1066 msgid "Character out of range for UTF-8" msgstr "Karakter UTF-8 için sınırlarının dışında" -#: glib/gutf8.c:1163 glib/gutf8.c:1172 glib/gutf8.c:1304 glib/gutf8.c:1313 -#: glib/gutf8.c:1454 glib/gutf8.c:1550 +#: ../glib/gutf8.c:1166 ../glib/gutf8.c:1175 ../glib/gutf8.c:1307 +#: ../glib/gutf8.c:1316 ../glib/gutf8.c:1457 ../glib/gutf8.c:1553 msgid "Invalid sequence in conversion input" msgstr "Dönüşüm girdisi içinde geçersiz dizi" -#: glib/gutf8.c:1465 glib/gutf8.c:1561 +#: ../glib/gutf8.c:1468 ../glib/gutf8.c:1564 msgid "Character out of range for UTF-16" msgstr "Karakter UTF-16 sınırlarının dışında" -#: glib/goption.c:755 +#: ../glib/goption.c:760 msgid "Usage:" msgstr "Kullanım:" -#: glib/goption.c:755 +#: ../glib/goption.c:760 msgid "[OPTION...]" msgstr "[SEÇENEK...]" -#: glib/goption.c:861 +#: ../glib/goption.c:866 msgid "Help Options:" msgstr "Yardım Seçenekleri:" -#: glib/goption.c:862 +#: ../glib/goption.c:867 msgid "Show help options" msgstr "Yardım seçeneklerini göster" -#: glib/goption.c:868 +#: ../glib/goption.c:873 msgid "Show all help options" msgstr "Tüm yardım seçeneklerini göster" -#: glib/goption.c:930 +#: ../glib/goption.c:935 msgid "Application Options:" msgstr "Uygulama Seçenekleri:" -#: glib/goption.c:992 glib/goption.c:1062 +#: ../glib/goption.c:997 ../glib/goption.c:1067 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "%2$s için tamsayı değeri '%1$s' ayrıştırılamıyor" -#: glib/goption.c:1002 glib/goption.c:1070 +#: ../glib/goption.c:1007 ../glib/goption.c:1075 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "%2$s için tamsayı değeri '%1$s' aralık dışında" -#: glib/goption.c:1027 +#: ../glib/goption.c:1032 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "'%2$s' için double değeri '%1$s' ayrıştırılamıyor" -#: glib/goption.c:1035 +#: ../glib/goption.c:1040 #, c-format msgid "Double value '%s' for %s out of range" msgstr "%2$s için double değeri '%1$s' aralık dışında" -#: glib/goption.c:1298 glib/goption.c:1377 +#: ../glib/goption.c:1303 ../glib/goption.c:1382 #, c-format msgid "Error parsing option %s" msgstr "%s seçeneği işlenirken hata" -#: glib/goption.c:1408 glib/goption.c:1522 +#: ../glib/goption.c:1413 ../glib/goption.c:1526 #, c-format msgid "Missing argument for %s" msgstr "%s için parametre eksik" -#: glib/goption.c:1917 +#: ../glib/goption.c:1957 #, c-format msgid "Unknown option %s" msgstr "Bilinmeyen seçenek %s" -#: glib/gkeyfile.c:363 +#: ../glib/gkeyfile.c:363 msgid "Valid key file could not be found in search dirs" msgstr "Arama dizinlerinde geçerli anahtar dosyası bulunamadı" -#: glib/gkeyfile.c:398 +#: ../glib/gkeyfile.c:398 msgid "Not a regular file" msgstr "Normal dosya değil" -#: glib/gkeyfile.c:406 +#: ../glib/gkeyfile.c:406 msgid "File is empty" msgstr "Dosya boş" -#: glib/gkeyfile.c:765 +#: ../glib/gkeyfile.c:765 #, c-format msgid "" "Key file contains line '%s' which is not a key-value pair, group, or comment" @@ -1051,54 +1292,54 @@ msgstr "" "Anahtar dosyası anahtar-değer çifti, grup veya yorum olmayan '%s' satırını " "içeriyor" -#: glib/gkeyfile.c:825 +#: ../glib/gkeyfile.c:825 #, c-format msgid "Invalid group name: %s" msgstr "Geçersiz grup adı: %s" -#: glib/gkeyfile.c:847 +#: ../glib/gkeyfile.c:847 msgid "Key file does not start with a group" msgstr "Anahtar dosyası bir grupla başlamıyor" -#: glib/gkeyfile.c:873 +#: ../glib/gkeyfile.c:873 #, c-format msgid "Invalid key name: %s" msgstr "Geçersiz anahtar adı: %s" -#: glib/gkeyfile.c:900 +#: ../glib/gkeyfile.c:900 #, c-format msgid "Key file contains unsupported encoding '%s'" msgstr "Anahtar dosya geçersiz kodlama '%s' içeriyor" -#: glib/gkeyfile.c:1116 glib/gkeyfile.c:1278 glib/gkeyfile.c:2657 -#: glib/gkeyfile.c:2723 glib/gkeyfile.c:2858 glib/gkeyfile.c:2991 -#: glib/gkeyfile.c:3144 glib/gkeyfile.c:3331 glib/gkeyfile.c:3392 +#: ../glib/gkeyfile.c:1118 ../glib/gkeyfile.c:1280 ../glib/gkeyfile.c:2648 +#: ../glib/gkeyfile.c:2714 ../glib/gkeyfile.c:2849 ../glib/gkeyfile.c:2982 +#: ../glib/gkeyfile.c:3135 ../glib/gkeyfile.c:3322 ../glib/gkeyfile.c:3383 #, c-format msgid "Key file does not have group '%s'" msgstr "Anahtar dosyasında '%s' grubu yok" -#: glib/gkeyfile.c:1290 +#: ../glib/gkeyfile.c:1292 #, c-format msgid "Key file does not have key '%s'" msgstr "Anahtar dosyasında '%s' anahtarı yok" -#: glib/gkeyfile.c:1397 glib/gkeyfile.c:1512 +#: ../glib/gkeyfile.c:1399 ../glib/gkeyfile.c:1514 #, c-format msgid "Key file contains key '%s' with value '%s' which is not UTF-8" msgstr "Anahtar dosyası UTF-8 olmayan '%s' anahtarını '%s' değeriyle içeriyor" -#: glib/gkeyfile.c:1417 glib/gkeyfile.c:1911 +#: ../glib/gkeyfile.c:1419 ../glib/gkeyfile.c:1902 #, c-format msgid "Key file contains key '%s' which has value that cannot be interpreted." msgstr "Anahtar dosyası değeri yorumlanamayan '%s' değerini içeriyor." -#: glib/gkeyfile.c:1532 +#: ../glib/gkeyfile.c:1534 #, c-format msgid "" "Key file contains key '%s' which has a value that cannot be interpreted." msgstr "Anahtar dosyası yorumlanamayan bir değere sahip anahtar '%s' içerir." -#: glib/gkeyfile.c:2126 glib/gkeyfile.c:2488 +#: ../glib/gkeyfile.c:2117 ../glib/gkeyfile.c:2479 #, c-format msgid "" "Key file contains key '%s' in group '%s' which has value that cannot be " @@ -1106,526 +1347,702 @@ msgid "" msgstr "" "Anahtar dosyası, yorumlanamayan '%2$s' grubundaki '%1$s' anahtarını içeriyor." -#: glib/gkeyfile.c:2672 glib/gkeyfile.c:2873 glib/gkeyfile.c:3403 +#: ../glib/gkeyfile.c:2663 ../glib/gkeyfile.c:2864 ../glib/gkeyfile.c:3394 #, c-format msgid "Key file does not have key '%s' in group '%s'" msgstr "Anahtar dosyası '%2$s' grubunda '%1$s' anahtarı içermiyor" -#: glib/gkeyfile.c:3637 +#: ../glib/gkeyfile.c:3628 msgid "Key file contains escape character at end of line" msgstr "Anahtar dosyası satır sonunda çıkış karakteri içeriyor" -#: glib/gkeyfile.c:3659 +#: ../glib/gkeyfile.c:3650 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "URI '%s' geçersiz çıkış dizisi içeriyor" -#: glib/gkeyfile.c:3801 +#: ../glib/gkeyfile.c:3792 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "'%s' değeri bir sayı olarak yorumlanamıyor." -#: glib/gkeyfile.c:3815 +#: ../glib/gkeyfile.c:3806 #, c-format msgid "Integer value '%s' out of range" msgstr "Tamsayı değeri '%s' aralık dışında" -#: glib/gkeyfile.c:3848 +#: ../glib/gkeyfile.c:3839 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "'%s' değeri bir gerçel sayı olarak yorumlanamıyor." -#: glib/gkeyfile.c:3872 +#: ../glib/gkeyfile.c:3863 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "'%s' değeri mantıksal değer olarak yorumlanamıyor." -#: gio/gbufferedinputstream.c:415 gio/gbufferedinputstream.c:496 -#: gio/ginputstream.c:186 gio/ginputstream.c:318 gio/ginputstream.c:557 -#: gio/ginputstream.c:682 gio/goutputstream.c:198 gio/goutputstream.c:721 +#: ../gio/gbufferedinputstream.c:411 ../gio/gbufferedinputstream.c:492 +#: ../gio/ginputstream.c:185 ../gio/ginputstream.c:317 +#: ../gio/ginputstream.c:556 ../gio/ginputstream.c:680 +#: ../gio/goutputstream.c:198 ../gio/goutputstream.c:726 #, c-format msgid "Too large count value passed to %s" msgstr "%s için çok büyük sayaç değeri geçildi" -#: gio/gbufferedinputstream.c:883 gio/ginputstream.c:892 gio/giostream.c:305 -#: gio/goutputstream.c:1196 +#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:888 +#: ../gio/giostream.c:306 ../gio/goutputstream.c:1197 msgid "Stream is already closed" msgstr "Akış zaten kapalı" -#: gio/gcancellable.c:433 gio/gdbusconnection.c:1212 -#: gio/gdbusconnection.c:1300 gio/gdbusconnection.c:1472 gio/glocalfile.c:2103 -#: gio/gsimpleasyncresult.c:651 gio/gsimpleasyncresult.c:677 +#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637 +#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912 +#: ../gio/glocalfile.c:2104 ../gio/gsimpleasyncresult.c:810 +#: ../gio/gsimpleasyncresult.c:836 msgid "Operation was cancelled" msgstr "İşlem iptal edildi" -#: gio/gcharsetconverter.c:264 -#, fuzzy +#: ../gio/gcharsetconverter.c:263 msgid "Invalid object, not initialized" -msgstr "Geçersiz soket, başlatılmamış" +msgstr "Geçersiz nesne, ilklendirilmemiş" -#: gio/gcharsetconverter.c:285 gio/gcharsetconverter.c:313 -#, fuzzy +#: ../gio/gcharsetconverter.c:284 ../gio/gcharsetconverter.c:312 msgid "Incomplete multibyte sequence in input" -msgstr "Dönüşüm girdisinde geçersiz bayt dizisi" +msgstr "Girdide tamamlanmamış çokbaytlı dizi" -#: gio/gcharsetconverter.c:319 gio/gcharsetconverter.c:328 -#, fuzzy +#: ../gio/gcharsetconverter.c:318 ../gio/gcharsetconverter.c:327 msgid "Not enough space in destination" -msgstr "Soket adresi için yeterli alan yok" +msgstr "Hedefte yeterli alan yok" -#: gio/gcharsetconverter.c:448 gio/gsocket.c:804 +#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:833 msgid "Cancellable initialization not supported" msgstr "İptal edilebilir başlatma desteklenmiyor" -#: gio/gcontenttype.c:180 +#: ../gio/gcontenttype.c:179 msgid "Unknown type" msgstr "Bilinmeyen tür" -#: gio/gcontenttype.c:181 +#: ../gio/gcontenttype.c:180 #, c-format msgid "%s filetype" msgstr "%s dosya türü" -#: gio/gcontenttype.c:681 +#: ../gio/gcontenttype.c:679 #, c-format msgid "%s type" msgstr "%s türü" -#: gio/gcredentials.c:203 gio/gcredentials.c:338 +#: ../gio/gcredentials.c:246 ../gio/gcredentials.c:441 msgid "GCredentials is not implemented on this OS" -msgstr "" +msgstr "Bu iştetim sisteminde GCredentials gerçeklemesi mevcut değil" -#: gio/gcredentials.c:296 +#: ../gio/gcredentials.c:396 msgid "There is no GCredentials support for your platform" -msgstr "" +msgstr "Platformunuz için GCredentials desteği yok" -#: gio/gdatainputstream.c:311 +#: ../gio/gdatainputstream.c:311 msgid "Unexpected early end-of-stream" msgstr "Beklenmeyen erken akış-sonu" -#: gio/gdbusaddress.c:135 gio/gdbusaddress.c:226 gio/gdbusaddress.c:300 -#, fuzzy, c-format -msgid "Unsupported key `%s' in address entry `%s'" -msgstr "Desteklenmeyen soket adresi" - -#: gio/gdbusaddress.c:165 +#: ../gio/gdbusaddress.c:142 ../gio/gdbusaddress.c:230 +#: ../gio/gdbusaddress.c:311 #, c-format +msgid "Unsupported key `%s' in address entry `%s'" +msgstr "`%2$s' adres girdisinde desteklenmeyen anahtar `%1$s'" + +#: ../gio/gdbusaddress.c:169 +#, fuzzy, c-format msgid "" "Address `%s' is invalid (need exactly one of path, tmpdir or abstract keys)" msgstr "" +"`%s' adresi geçersiz (tam olarak bir yol, tmpdir veya soyut anahtarlar " +"gerekiyor)" -#: gio/gdbusaddress.c:178 -#, c-format +#: ../gio/gdbusaddress.c:182 +#, fuzzy, c-format msgid "Meaningless key/value pair combination in address entry `%s'" -msgstr "" +msgstr "`%s' adres girdisinde anlamsız anahtar/değer kombinasyonu" -#: gio/gdbusaddress.c:241 gio/gdbusaddress.c:315 -#, c-format +#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:326 +#, fuzzy, c-format msgid "Error in address `%s' - the port attribute is malformed" -msgstr "" +msgstr "`%s' adresinde hata - `port' özniteliği kusurlu" -#: gio/gdbusaddress.c:252 gio/gdbusaddress.c:326 -#, c-format +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 +#, fuzzy, c-format msgid "Error in address `%s' - the family attribute is malformed" -msgstr "" +msgstr "`%s' adresinde hata - `family' özniteliği kusurlu" -#: gio/gdbusaddress.c:428 -#, c-format +#: ../gio/gdbusaddress.c:446 +#, fuzzy, c-format msgid "Address element `%s', does not contain a colon (:)" -msgstr "" +msgstr "Adress öğesi `%s', iki nokta (:) içermiyor" -#: gio/gdbusaddress.c:449 -#, c-format +#: ../gio/gdbusaddress.c:467 +#, fuzzy, c-format msgid "" "Key/Value pair %d, `%s', in address element `%s', does not contain an equal " "sign" msgstr "" +"Adres öğesi `%3$s' içerisindeki %1$d, `%2$s' Anahtar/Değer çifti, eşittir " +"işareti içermiyor" -#: gio/gdbusaddress.c:523 -#, c-format +#: ../gio/gdbusaddress.c:481 +#, fuzzy, c-format +msgid "" +"Error unescaping key or value in Key/Value pair %d, `%s', in address element " +"`%s'" +msgstr "" +"Adres öğesi `%3$s' içerisindeki %1$d, `%2$s' Anahtar/Değer çiftindeki " +"anahtar ya da değeri açmada hata" + +#: ../gio/gdbusaddress.c:559 +#, fuzzy, c-format msgid "" "Error in address `%s' - the unix transport requires exactly one of the keys " "`path' or `abstract' to be set" msgstr "" +"`%s' adresinde hata - unix transport, `path' veya `abstract' anahtarlarından " +"tam olarak bir tanesine değer atanmış olmasını gereksinir." -#: gio/gdbusaddress.c:559 -#, c-format -msgid "Error in address `%s' - the host attribute is missing or malformed" -msgstr "" - -#: gio/gdbusaddress.c:573 -#, c-format -msgid "Error in address `%s' - the port attribute is missing or malformed" -msgstr "" - -#: gio/gdbusaddress.c:587 -#, c-format -msgid "Error in address `%s' - the noncefile attribute is missing or malformed" -msgstr "" - -#: gio/gdbusaddress.c:601 -#, c-format -msgid "Unknown or unsupported transport `%s' for address `%s'" -msgstr "" - -#: gio/gdbusaddress.c:635 +#: ../gio/gdbusaddress.c:595 #, fuzzy, c-format -msgid "Error reading nonce file `%s':" -msgstr "'%s' dosyası okunurken hata: %s" +msgid "Error in address `%s' - the host attribute is missing or malformed" +msgstr "`%s' adresinde hata - host özniteliği eksik ya da kusurlu" -#: gio/gdbusaddress.c:646 -msgid "The nonce-file `%s' was %" +#: ../gio/gdbusaddress.c:609 +#, fuzzy, c-format +msgid "Error in address `%s' - the port attribute is missing or malformed" +msgstr "`%s' adresinde hata - port özniteliği eksik ya da kusurlu" + +#: ../gio/gdbusaddress.c:623 +#, fuzzy, c-format +msgid "Error in address `%s' - the noncefile attribute is missing or malformed" +msgstr "`%s' adresinde hata - noncefile özniteliği eksik ya da kusurlu" + +#: ../gio/gdbusaddress.c:644 +#, fuzzy +#| msgid "Error connecting: " +msgid "Error auto-launching: " +msgstr "Kendiliğinden çalışmada hata:" + +#: ../gio/gdbusaddress.c:652 +#, fuzzy, c-format +msgid "Unknown or unsupported transport `%s' for address `%s'" +msgstr "`%2$s' adresi için bilinmeyen ya da desteklenmeyen transport `%1$s'" + +#: ../gio/gdbusaddress.c:688 +#, fuzzy, c-format +#| msgid "Error opening file '%s': %s" +msgid "Error opening nonce file `%s': %s" +msgstr "`%s' nonce dosyası açılırken hata: %s" + +#: ../gio/gdbusaddress.c:706 +#, fuzzy, c-format +msgid "Error reading from nonce file `%s': %s" +msgstr "`%s' nonce dosyası okunurken hata: %s" + +#: ../gio/gdbusaddress.c:715 +#, fuzzy, c-format +msgid "Error reading from nonce file `%s', expected 16 bytes, got %d" +msgstr "`%s' nonce dosyasından okunurken hata, beklenen 16 bayt, alınan %d" + +#: ../gio/gdbusaddress.c:733 +#, fuzzy, c-format +msgid "Error writing contents of nonce file `%s' to stream:" +msgstr "`%s' nonce dosyasının içeriğini akışa yazma hatası:" + +#: ../gio/gdbusaddress.c:951 +#, fuzzy +msgid "The given address is empty" +msgstr "Verilen adres boş" + +#: ../gio/gdbusaddress.c:1020 +#, fuzzy +msgid "Cannot spawn a message bus without a machine-id: " +msgstr "machine-id olmadan mesaj veriyolu meydana getirilemiyor:" + +#: ../gio/gdbusaddress.c:1057 +#, fuzzy, c-format +msgid "Error spawning command line `%s': " +msgstr "`%s' komut satırını meydana getirmede hata:" + +#: ../gio/gdbusaddress.c:1068 +#, fuzzy, c-format +msgid "Abnormal program termination spawning command line `%s': %s" +msgstr "`%s' komut satırın meydana getirirken program olağan dışı sonlandı: %s" + +#: ../gio/gdbusaddress.c:1082 +#, fuzzy, c-format +msgid "Command line `%s' exited with non-zero exit status %d: %s" +msgstr "Komut satırı `%s', sıfır olmayan bir durum ile kapandı %d: %s" + +#: ../gio/gdbusaddress.c:1155 +#, fuzzy, c-format +msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" +"Oturum veriyolu adresi belirlenemiyor (bu işletim sistem için bu işlev " +"gerçeklenmedi)" -#: gio/gdbusaddress.c:662 -#, c-format -msgid "Error write contents of nonce file `%s' to stream:" -msgstr "" - -#: gio/gdbusaddress.c:978 -#, c-format -msgid "" -"Cannot determine session bus address (TODO: run dbus-launch to find out)" -msgstr "" - -#: gio/gdbusaddress.c:1002 gio/gdbusconnection.c:5309 -#, c-format +#: ../gio/gdbusaddress.c:1254 ../gio/gdbusconnection.c:6183 +#, fuzzy, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " "- unknown value `%s'" msgstr "" +"DBUS_STARTER_BUS_TYPE ortam değişkeninden veriyolu adresi belirlenemiyor - " +"bilinmeyen değer `%s'" -#: gio/gdbusaddress.c:1011 gio/gdbusconnection.c:5318 +#: ../gio/gdbusaddress.c:1263 ../gio/gdbusconnection.c:6192 +#, fuzzy msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" msgstr "" +"DBUS_STARTER_BUS_TYPE ortam değişkenine değer atanmadığı için veriyolu " +"adresi belirlenemiyor" -#: gio/gdbusaddress.c:1021 +#: ../gio/gdbusaddress.c:1273 #, fuzzy, c-format msgid "Unknown bus type %d" -msgstr "Bilinmeyen tür" +msgstr "Bilinmeyen veriyolu türü %d" -#: gio/gdbusauth.c:289 +#: ../gio/gdbusauth.c:288 +#, fuzzy msgid "Unexpected lack of content trying to read a line" -msgstr "" +msgstr "Satır okumada beklenmeyen içerik eksikliği" -#: gio/gdbusauth.c:333 +#: ../gio/gdbusauth.c:332 +#, fuzzy msgid "Unexpected lack of content trying to (safely) read a line" -msgstr "" +msgstr "Satır okumada (güvenli), beklenmeyen içerik eksikliği" -#: gio/gdbusauth.c:504 -#, c-format +#: ../gio/gdbusauth.c:503 +#, fuzzy, c-format msgid "" "Exhausted all available authentication mechanisms (tried: %s) (available: %s)" msgstr "" +"Tüm olası kimlik doğrulama yöntemleri tükendi (denenen: %s) (mevcut: %s)" -#: gio/gdbusauth.c:1146 +#: ../gio/gdbusauth.c:1151 +#, fuzzy msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer" -msgstr "" +msgstr "GDBusAuthObserver::authorize-authenticated-peer üzerinden iptal edildi" -#: gio/gdbusauthmechanismsha1.c:264 +#: ../gio/gdbusauthmechanismsha1.c:266 #, fuzzy, c-format msgid "Error statting directory `%s': %s" -msgstr "'%s' dizini açılamadı: %s" +msgstr "`%s' dizininin bilgilerini almada (stat) hata: %s" -#: gio/gdbusauthmechanismsha1.c:276 -#, c-format +#: ../gio/gdbusauthmechanismsha1.c:278 +#, fuzzy, c-format msgid "" "Permissions on directory `%s' are malformed. Expected mode 0700, got 0%o" msgstr "" +"`%s' dizini üzerindeki izinler kusurlu. Beklenen kip 0700, elde edilen 0%o" -#: gio/gdbusauthmechanismsha1.c:295 +#: ../gio/gdbusauthmechanismsha1.c:299 #, fuzzy, c-format msgid "Error creating directory `%s': %s" -msgstr "Dizin oluşturulurken hata: %s" +msgstr "Dizin oluşturmada hata: `%s': %s" -#: gio/gdbusauthmechanismsha1.c:378 +#: ../gio/gdbusauthmechanismsha1.c:382 #, fuzzy, c-format msgid "Error opening keyring `%s' for reading: " -msgstr "'%s' dosyası açılırken hata: %s" +msgstr "`%s' anahtarlığı okuma için açılırken hata: " -#: gio/gdbusauthmechanismsha1.c:402 gio/gdbusauthmechanismsha1.c:711 -#, c-format +#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:717 +#, fuzzy, c-format msgid "Line %d of the keyring at `%s' with content `%s' is malformed" -msgstr "" +msgstr "`%2$s' konumundaki anahtarlığın `%3$s' içerikli %1$d. satırı kusurlu" -#: gio/gdbusauthmechanismsha1.c:416 gio/gdbusauthmechanismsha1.c:725 -#, c-format +#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:731 +#, fuzzy, c-format msgid "" "First token of line %d of the keyring at `%s' with content `%s' is malformed" msgstr "" +"`%2$s' konumundaki anahtarlığın, `%3$s' içerikli %1$d. satırındaki ilk simge " +"kusurlu" -#: gio/gdbusauthmechanismsha1.c:430 gio/gdbusauthmechanismsha1.c:739 -#, c-format +#: ../gio/gdbusauthmechanismsha1.c:435 ../gio/gdbusauthmechanismsha1.c:745 +#, fuzzy, c-format msgid "" "Second token of line %d of the keyring at `%s' with content `%s' is malformed" msgstr "" +"`%2$s' konumundaki anahtarlığın, `%3$s' içerikli %1$d. satırındaki ikinci " +"simge kusurlu" -#: gio/gdbusauthmechanismsha1.c:454 -#, c-format +#: ../gio/gdbusauthmechanismsha1.c:459 +#, fuzzy, c-format msgid "Didn't find cookie with id %d in the keyring at `%s'" -msgstr "" +msgstr "`%2$s konumundaki anahtarlıkta %1$d kimlikli çerez bulunamadı'" -#: gio/gdbusauthmechanismsha1.c:531 +#: ../gio/gdbusauthmechanismsha1.c:536 #, fuzzy, c-format -msgid "Error deleting stale lock-file `%s': %s" -msgstr "'%s' dosyası okunurken hata: %s" +msgid "Error deleting stale lock file `%s': %s" +msgstr "Eskimiş kilit dosyası `%s' silinirken hata: %s" -#: gio/gdbusauthmechanismsha1.c:562 +#: ../gio/gdbusauthmechanismsha1.c:568 #, fuzzy, c-format -msgid "Error creating lock-file `%s': %s" -msgstr "'%s' dosyası okunurken hata: %s" +msgid "Error creating lock file `%s': %s" +msgstr "Kilit dosyası `%s' oluşturulurken hata: %s" -#: gio/gdbusauthmechanismsha1.c:592 +#: ../gio/gdbusauthmechanismsha1.c:598 #, fuzzy, c-format -msgid "Error closing (unlinked) lock-file `%s': %s" -msgstr "Dosya kapatılırken hata: %s" +msgid "Error closing (unlinked) lock file `%s': %s" +msgstr "(Bağı kaldırılmış) kilit dosyası `%s' kapatılırken hata: %s" -#: gio/gdbusauthmechanismsha1.c:602 +#: ../gio/gdbusauthmechanismsha1.c:608 #, fuzzy, c-format -msgid "Error unlinking lock-file `%s': %s" -msgstr "'%s' dosyası açılırken hata: %s" +msgid "Error unlinking lock file `%s': %s" +msgstr "`%s' kilit dosyasının bağı kaldırılırken hata: %s" -#: gio/gdbusauthmechanismsha1.c:678 +#: ../gio/gdbusauthmechanismsha1.c:684 #, fuzzy, c-format msgid "Error opening keyring `%s' for writing: " -msgstr "'%s' dosyası açılırken hata: %s" +msgstr "'%s' anahtarlığını, yazma için açarken hata:" -#: gio/gdbusauthmechanismsha1.c:873 -#, c-format +#: ../gio/gdbusauthmechanismsha1.c:881 +#, fuzzy, c-format msgid "(Additionally, releasing the lock for `%s' also failed: %s) " -msgstr "" +msgstr "(Ayrıca, `%s' kilit dosyasını serbest bırakma da başarısız oldu: %s)" -#: gio/gdbusconnection.c:1001 gio/gdbusconnection.c:1311 +#: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374 +#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737 #, fuzzy msgid "The connection is closed" -msgstr "Eklenen soket kapalı" +msgstr "Bağlantı kapalı" -#: gio/gdbusconnection.c:1256 +#: ../gio/gdbusconnection.c:1681 +#, fuzzy msgid "Timeout was reached" -msgstr "" +msgstr "Zaman aşımı gerçekleşti" -#: gio/gdbusconnection.c:1757 +#: ../gio/gdbusconnection.c:2301 +#, fuzzy msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" +"İstemci taraflı bağlantı kurulurken desteklenmeyen etiketlerle karşılaşıldı" -#: gio/gdbusconnection.c:3158 -#, c-format +#: ../gio/gdbusconnection.c:3761 ../gio/gdbusconnection.c:4078 +#, fuzzy, c-format +msgid "" +"No such interface `org.freedesktop.DBus.Properties' on object at path %s" +msgstr "" +"%s konumundaki nesnede `org.freedesktop.DBus.Properties' gibi bir arayüz yok" + +#: ../gio/gdbusconnection.c:3833 +#, fuzzy, c-format msgid "Error setting property `%s': Expected type `%s' but got `%s'" -msgstr "" +msgstr "`%s' özelliği ayarlanırken hata: Beklenen tür `%s', elde edilen `%s'" -#: gio/gdbusconnection.c:3250 -#, c-format +#: ../gio/gdbusconnection.c:3928 +#, fuzzy, c-format msgid "No such property `%s'" -msgstr "" +msgstr "`%s' gibi bir özellik yok" -#: gio/gdbusconnection.c:3262 +#: ../gio/gdbusconnection.c:3940 #, fuzzy, c-format msgid "Property `%s' is not readable" -msgstr "Tür %s sınıflandırılmış değil" +msgstr "`%s' özelliği okunabilir değil" -#: gio/gdbusconnection.c:3273 +#: ../gio/gdbusconnection.c:3951 #, fuzzy, c-format msgid "Property `%s' is not writable" -msgstr "Tür %s sınıflandırılmış değil" +msgstr "`%s' özelliği yazılabilir değil" -#: gio/gdbusconnection.c:3341 gio/gdbusconnection.c:4768 -#, c-format +#: ../gio/gdbusconnection.c:4021 ../gio/gdbusconnection.c:5627 +#, fuzzy, c-format msgid "No such interface `%s'" -msgstr "" +msgstr "`%s' gibi bir arabirim yok" -#: gio/gdbusconnection.c:3504 +#: ../gio/gdbusconnection.c:4206 +#, fuzzy msgid "No such interface" -msgstr "" +msgstr "Böyle bir arabirim yok" -#: gio/gdbusconnection.c:3748 -#, c-format +#: ../gio/gdbusconnection.c:4425 ../gio/gdbusconnection.c:6133 +#, fuzzy, c-format +msgid "No such interface `%s' on object at path %s" +msgstr "%s yolundaki nesnede `%s' gibi bir arabirim yok" + +#: ../gio/gdbusconnection.c:4477 +#, fuzzy, c-format msgid "No such method `%s'" -msgstr "" +msgstr "%s gibi bir yöntem yok" -#: gio/gdbusconnection.c:3779 -#, c-format +#: ../gio/gdbusconnection.c:4508 +#, fuzzy, c-format msgid "Type of message, `%s', does not match expected type `%s'" -msgstr "" +msgstr "`%s' mesajının türü, beklenen `%s' türü ile örtüşmüyor" -#: gio/gdbusconnection.c:3993 -#, c-format +#: ../gio/gdbusconnection.c:4727 +#, fuzzy, c-format msgid "An object is already exported for the interface %s at %s" -msgstr "" +msgstr "%2$s konumundaki %1$s arabirimi için bir nesne zaten dışa aktarıldı" -#: gio/gdbusconnection.c:4173 -#, c-format +#: ../gio/gdbusconnection.c:4922 +#, fuzzy, c-format msgid "Method `%s' returned type `%s', but expected `%s'" -msgstr "" +msgstr "`%s' yöntemi `%s' türü döndürdü, fakat `%s' bekleniyordu" -#: gio/gdbusconnection.c:4866 -#, c-format +#: ../gio/gdbusconnection.c:5738 +#, fuzzy, c-format msgid "Method `%s' on interface `%s' with signature `%s' does not exist" -msgstr "" +msgstr "`%s' imzalı arayüz `%s' üzerindeki `%s' yöntemi mevcut değil" -#: gio/gdbusconnection.c:4981 +#: ../gio/gdbusconnection.c:5856 #, fuzzy, c-format msgid "A subtree is already exported for %s" -msgstr "Dinleyici zaten kapalı" +msgstr "%s için bir alt ağaç zaten dışa aktarılmış" -#: gio/gdbusconnection.c:5089 -#, c-format -msgid "Unable to load /var/lib/dbus/machine-id: %s" +#: ../gio/gdbusmessage.c:859 +#, fuzzy +msgid "type is INVALID" +msgstr "tür GEÇERSİZ" + +#: ../gio/gdbusmessage.c:870 +#, fuzzy +msgid "METHOD_CALL message: PATH or MEMBER header field is missing" +msgstr "METHOD_CALL mesajı: PATH ya da MEMBER başlık alanı eksik" + +#: ../gio/gdbusmessage.c:881 +#, fuzzy +msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing" +msgstr "METHOD_RETURN mesajı: REPLY_SERIAL başlık alanı eksik " + +#: ../gio/gdbusmessage.c:893 +#, fuzzy +msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing" +msgstr "HATA mesajı: REPLY_SERIAL ya da ERROR_NAME başlık alanı eksik" + +#: ../gio/gdbusmessage.c:906 +#, fuzzy +msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing" +msgstr "SIGNAL mesajı: PATH, INTERFACE ya da MEMBER başlık alanı eksik" + +#: ../gio/gdbusmessage.c:914 +#, fuzzy +msgid "" +"SIGNAL message: The PATH header field is using the reserved value /org/" +"freedesktop/DBus/Local" msgstr "" +"SIGNAL mesajı: PATH başlık alanı, ayrılmış olan /org/freedesktop/DBus/Local " +"değerini kullanıyor" -#: gio/gdbusconnection.c:5259 -#, c-format -msgid "No such interface `%s' on object at path %s" +#: ../gio/gdbusmessage.c:922 +#, fuzzy +msgid "" +"SIGNAL message: The INTERFACE header field is using the reserved value org." +"freedesktop.DBus.Local" msgstr "" +"SIGNAL mesajı: INTERFACE başlık alanı, ayrılmış olan org.freedesktop.DBus." +"Local değerini kullanıyor" -#: gio/gdbusmessage.c:723 -msgid "Wanted to read %" +#: ../gio/gdbusmessage.c:997 +#, fuzzy, c-format +msgid "Wanted to read %lu bytes but got EOF" +msgstr "%lu bayt okumak istendi fakat EOF alındı" + +#: ../gio/gdbusmessage.c:1022 +#, fuzzy, c-format +msgid "" +"Expected valid UTF-8 string but found invalid bytes at byte offset %d " +"(length of string is %d). The valid UTF-8 string up until that point was `%s'" msgstr "" +"Geçerli bir UTF-8 dizgesi bekleniyordu fakat %d bayt ofsetinde " +"geçersizbaytlar bulunda (dizge uzunluğu %d). Bu noktaya kadar geçerli olan " +"dizge `%s'" -#: gio/gdbusmessage.c:744 -#, c-format -msgid "Expected NUL byte after the string `%s' but found `%c' (%d)" -msgstr "" +#: ../gio/gdbusmessage.c:1035 +#, fuzzy, c-format +msgid "Expected NUL byte after the string `%s' but found byte %d" +msgstr "`%s' dizgesinden sonra NUL bayt bekleniyordu, fakat %d baytı bulundu" -#: gio/gdbusmessage.c:927 -#, c-format +#: ../gio/gdbusmessage.c:1234 +#, fuzzy, c-format msgid "Parsed value `%s' is not a valid D-Bus object path" -msgstr "" +msgstr "Ayrıştırılan değer `%s', geçerli bir D-Bus nesne yolu değil" -#: gio/gdbusmessage.c:953 +#: ../gio/gdbusmessage.c:1260 #, fuzzy, c-format msgid "Parsed value `%s' is not a valid D-Bus signature" -msgstr "'%s' geçerli bir isim değil " +msgstr "Ayrıştırılan değer `%s', geçerli bir D-Bus imzası değil" -#: gio/gdbusmessage.c:979 -msgid "Encountered array of length %" +#: ../gio/gdbusmessage.c:1314 +#, fuzzy, c-format +msgid "" +"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)." msgstr "" +"%u bayt uzunluğunda dizi ile karşılaşıldı. Olabilecek en fazla uzunluk 2<<26 " +"bayt (64 MiB)." -#: gio/gdbusmessage.c:1116 -#, c-format +#: ../gio/gdbusmessage.c:1475 +#, fuzzy, c-format msgid "Parsed value `%s' for variant is not a valid D-Bus signature" -msgstr "" +msgstr "Varyant için ayrıştırılmış değer `%s' geçerli bir D-Bus imzası değil" -#: gio/gdbusmessage.c:1141 -#, c-format +#: ../gio/gdbusmessage.c:1502 +#, fuzzy, c-format msgid "" -"Error deserializing GVariant with type-string `%s' from the D-Bus wire format" +"Error deserializing GVariant with type string `%s' from the D-Bus wire format" msgstr "" +"`%s' tür dizgeli GVariant, D-Bus wire biçiminden geri dönüştürülürken hata" -#: gio/gdbusmessage.c:1286 -#, c-format -msgid "Invalid endianness value. Expected 'l' or 'B' but found '%c' (%d)" +#: ../gio/gdbusmessage.c:1688 +#, fuzzy, c-format +msgid "" +"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value " +"0x%02x" msgstr "" +"Geçersiz sonluluk değeri. 0x6c ('l') veya 0x42 ('B') bekleniyordu fakat 0x" +"%02x bulundu" -#: gio/gdbusmessage.c:1300 -#, c-format +#: ../gio/gdbusmessage.c:1702 +#, fuzzy, c-format msgid "Invalid major protocol version. Expected 1 but found %d" -msgstr "" +msgstr "Geçersiz protokol baş sürümü. 1 bekleniyordu, fakat %d bulundu" -#: gio/gdbusmessage.c:1342 -#, c-format +#: ../gio/gdbusmessage.c:1759 +#, fuzzy, c-format msgid "Signature header with signature `%s' found but message body is empty" -msgstr "" +msgstr "`%s' imzalı bir imza başlığı bulundu, fakat mesaj gövdesi boş" -#: gio/gdbusmessage.c:1356 -#, c-format +#: ../gio/gdbusmessage.c:1773 +#, fuzzy, c-format msgid "Parsed value `%s' is not a valid D-Bus signature (for body)" -msgstr "" +msgstr "Ayrıştırılan değer `%s' geçerli bir D-Bus imzası değil (gövde için)" -#: gio/gdbusmessage.c:1385 -msgid "No signature header in message but the message body is %" -msgstr "" +#: ../gio/gdbusmessage.c:1803 +#, fuzzy, c-format +msgid "No signature header in message but the message body is %u bytes" +msgstr "Mesaj içinde imza başlığı yok, fakat mesaj %u bayt" -#: gio/gdbusmessage.c:1694 -#, c-format +#: ../gio/gdbusmessage.c:1811 +#, fuzzy +msgid "Cannot deserialize message: " +msgstr "Mesaj geri dönüştürülemiyor: " + +#: ../gio/gdbusmessage.c:2136 +#, fuzzy, c-format msgid "" -"Error serializing GVariant with type-string `%s' to the D-Bus wire format" -msgstr "" +"Error serializing GVariant with type string `%s' to the D-Bus wire format" +msgstr "`%s' tür dizgeli GVariant, D-Bus wire biçimine dönüştürülürken hata" -#: gio/gdbusmessage.c:1823 -#, c-format +#: ../gio/gdbusmessage.c:2274 +#, fuzzy, c-format msgid "Message has %d fds but the header field indicates %d fds" -msgstr "" +msgstr "Mesaj %d fd'ye sahip, fakat başlık alanı %d fd olduğuna işaret ediyor" -#: gio/gdbusmessage.c:1869 -#, c-format +#: ../gio/gdbusmessage.c:2282 +#, fuzzy +msgid "Cannot serialize message: " +msgstr "Mesaj dönüştürülemiyor: " + +#: ../gio/gdbusmessage.c:2326 +#, fuzzy, c-format msgid "Message body has signature `%s' but there is no signature header" -msgstr "" +msgstr "Mesaj gövdesi `%s' imzasına sahip, fakat imza başlığı bulunmamakta" -#: gio/gdbusmessage.c:1879 -#, c-format +#: ../gio/gdbusmessage.c:2336 +#, fuzzy, c-format msgid "" -"Message body has type signature `%s' but signature in the header field is `%" -"s'" +"Message body has type signature `%s' but signature in the header field is `" +"%s'" msgstr "" +"Mesaj gövdesi `%s' tür imzasına sahip, fakat başlık alanındaki imza `%s'" -#: gio/gdbusmessage.c:1895 -#, c-format +#: ../gio/gdbusmessage.c:2352 +#, fuzzy, c-format msgid "Message body is empty but signature in the header field is `(%s)'" -msgstr "" +msgstr "Mesaj gövdesi boş, fakat başlık alanındaki imza `(%s)'" -#: gio/gdbusmessage.c:2448 +#: ../gio/gdbusmessage.c:2909 #, fuzzy, c-format msgid "Error return with body of type `%s'" -msgstr "Dosyaya yazılırken hata: %s" +msgstr "%s türünden bir gövdeyle dönüş hatası" -#: gio/gdbusmessage.c:2456 +#: ../gio/gdbusmessage.c:2917 +#, fuzzy msgid "Error return with empty body" -msgstr "" +msgstr "Boş bir gövdeyle dönüş hatası" -#: gio/gdbusmethodinvocation.c:357 -#, c-format +#: ../gio/gdbusmethodinvocation.c:376 +#, fuzzy, c-format msgid "Type of return value is incorrect, got `%s', expected `%s'" -msgstr "" +msgstr "Dönüş değerinin türü yanlış, `%s' mevcut, fakat `%s' bekleniyordu" -#: gio/gdbusmethodinvocation.c:371 gio/gsocket.c:2859 gio/gsocket.c:2940 +#: ../gio/gdbusmethodinvocation.c:407 ../gio/gsocket.c:3032 +#: ../gio/gsocket.c:3113 #, c-format msgid "Error sending message: %s" msgstr "Mesaj gönderme hatası: %s" -#: gio/gdbusprivate.c:775 -msgid "Error writing first 16 bytes of message to socket: " -msgstr "" +#: ../gio/gdbusprivate.c:1769 +#, fuzzy +msgid "Unable to load /var/lib/dbus/machine-id: " +msgstr "Yükleme başarısız /var/lib/dbus/machine-id: " -#: gio/gdbusproxy.c:633 -#, c-format +#: ../gio/gdbusproxy.c:717 +#, fuzzy, c-format msgid "" "Trying to set property %s of type %s but according to the expected interface " "the type is %s" msgstr "" +"%2$s türünden %1$s özelliği ayarlanmaya çalışılıyor, fakat beklenen arayüze " +"göre tür %3$s" -#: gio/gdbusserver.c:669 +#: ../gio/gdbusproxy.c:1281 +#, fuzzy, c-format +msgid "Error calling StartServiceByName for %s: " +msgstr "%s için StartServiceByName çağrısında hata: " + +#: ../gio/gdbusproxy.c:1302 +#, fuzzy, c-format +msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" +msgstr "StartServiceByName(\"%2$s\") yönteminden beklenmeyen yanıt %1$d" + +#: ../gio/gdbusproxy.c:2364 ../gio/gdbusproxy.c:2523 +#, fuzzy +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" +msgstr "" +"Yöntem çağırılamıyor; vekil, sahibi olmayan bilindik bir ad için ve vekil " +"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START seçeneği ile oluşturuldu" + +#: ../gio/gdbusserver.c:706 #, fuzzy msgid "Abstract name space not supported" -msgstr "Çöp desteklenmiyor" +msgstr "Soyut ad alanı desteklenmiyor" -#: gio/gdbusserver.c:759 +#: ../gio/gdbusserver.c:793 +#, fuzzy msgid "Cannot specify nonce file when creating a server" -msgstr "" +msgstr "Bir sunucu oluşturulurken nonce dosyası belirtilemez" -#: gio/gdbusserver.c:836 +#: ../gio/gdbusserver.c:870 #, fuzzy, c-format msgid "Error writing nonce file at `%s': %s" -msgstr "Dosyaya yazılırken hata: %s" +msgstr "`%s' konumundaki nonce dosyasına yazma hatası: %s" -#: gio/gdbusserver.c:988 +#: ../gio/gdbusserver.c:1032 #, fuzzy, c-format msgid "The string `%s' is not a valid D-Bus GUID" -msgstr "'%s' geçerli bir isim değil " +msgstr "`%s', geçerli bir D-Bus GUID değil" -#: gio/gdbusserver.c:1028 -#, c-format +#: ../gio/gdbusserver.c:1072 +#, fuzzy, c-format msgid "Cannot listen on unsupported transport `%s'" -msgstr "" +msgstr "Desteklenmeyen transport `%s' üzerinden dinlenemiyor" -#: gio/gdbus-tool.c:87 gio/gsettings-tool.c:38 +#: ../gio/gdbus-tool.c:88 +#, fuzzy msgid "COMMAND" -msgstr "" +msgstr "KOMUT" -#: gio/gdbus-tool.c:92 -#, c-format +#: ../gio/gdbus-tool.c:93 +#, fuzzy, c-format msgid "" "Commands:\n" " help Shows this information\n" @@ -1635,231 +2052,264 @@ msgid "" "\n" "Use \"%s COMMAND --help\" to get help on each command.\n" msgstr "" +"Komutlar:\n" +" help Bu bilgiyi gösterir\n" +" introspect Bir uzak nesyene içgözlem yap\n" +" monitor Bir uzak nesneyi gözlemle\n" +" call Bir uzak nesne üzerinde yöntem çağır\n" +"\n" +"Her bir komut hakkında yardım almak için \"%s KOMUT --help\" kullanın.\n" -#: gio/gdbus-tool.c:160 gio/gdbus-tool.c:216 gio/gdbus-tool.c:288 -#: gio/gdbus-tool.c:312 gio/gdbus-tool.c:814 gio/gdbus-tool.c:1322 +#: ../gio/gdbus-tool.c:161 ../gio/gdbus-tool.c:217 ../gio/gdbus-tool.c:289 +#: ../gio/gdbus-tool.c:313 ../gio/gdbus-tool.c:817 ../gio/gdbus-tool.c:1327 #, fuzzy, c-format msgid "Error: %s\n" -msgstr "Satır %d hata içeriyor: %s" +msgstr "Hata: %s\n" -#: gio/gdbus-tool.c:171 gio/gdbus-tool.c:229 gio/gdbus-tool.c:1332 +#: ../gio/gdbus-tool.c:172 ../gio/gdbus-tool.c:230 ../gio/gdbus-tool.c:1343 #, fuzzy, c-format msgid "Error parsing introspection XML: %s\n" -msgstr "%s seçeneği işlenirken hata" +msgstr "İçgözlem XML'ini ayrıştırmada hata: %s\n" -#: gio/gdbus-tool.c:346 +#: ../gio/gdbus-tool.c:347 +#, fuzzy msgid "Connect to the system bus" -msgstr "" +msgstr "Sistem veriyoluna bağlan" -#: gio/gdbus-tool.c:347 +#: ../gio/gdbus-tool.c:348 +#, fuzzy msgid "Connect to the session bus" -msgstr "" +msgstr "Oturum veriyoluna bağlan" -#: gio/gdbus-tool.c:348 +#: ../gio/gdbus-tool.c:349 #, fuzzy msgid "Connect to given D-Bus address" -msgstr "Bağlantı devam ediyor" +msgstr "Verilen D-Bus adresine bağlan" -#: gio/gdbus-tool.c:358 +#: ../gio/gdbus-tool.c:359 #, fuzzy msgid "Connection Endpoint Options:" -msgstr "Bağlantı devam ediyor" +msgstr "Bağlantı Uç Noktası Seçenekleri" -#: gio/gdbus-tool.c:359 +#: ../gio/gdbus-tool.c:360 +#, fuzzy msgid "Options specifying the connection endpoint" -msgstr "" +msgstr "Bağlantı uç noktasını belirten seçenekler" -#: gio/gdbus-tool.c:379 -#, c-format +#: ../gio/gdbus-tool.c:382 +#, fuzzy, c-format msgid "No connection endpoint specified" -msgstr "" +msgstr "Hiçbir bağlantı uç noktası belirtilmedi" -#: gio/gdbus-tool.c:389 -#, c-format +#: ../gio/gdbus-tool.c:392 +#, fuzzy, c-format msgid "Multiple connection endpoints specified" -msgstr "" +msgstr "Birden fazla bağlantı uç noktası belirtildi" -#: gio/gdbus-tool.c:459 -#, c-format +#: ../gio/gdbus-tool.c:462 +#, fuzzy, c-format msgid "" "Warning: According to introspection data, interface `%s' does not exist\n" -msgstr "" +msgstr "Uyarı: İçgözlem verisine göre, `%s' arayüzü bulunmuyor\n" -#: gio/gdbus-tool.c:468 -#, c-format +#: ../gio/gdbus-tool.c:471 +#, fuzzy, c-format msgid "" "Warning: According to introspection data, method `%s' does not exist on " "interface `%s'\n" msgstr "" +"Uyarı: İçgözlem verisine göre, `%s' yöntemi `%s' arayüzü üzerinde mevcut " +"değil\n" -#: gio/gdbus-tool.c:530 +#: ../gio/gdbus-tool.c:533 +#, fuzzy msgid "Destination name to invoke method on" -msgstr "" +msgstr "Yöntemin üzerinde çağırılacağı hedefin ismi" -#: gio/gdbus-tool.c:531 +#: ../gio/gdbus-tool.c:534 +#, fuzzy msgid "Object path to invoke method on" -msgstr "" +msgstr "Yöntemin üzerinde çağırılacağı nesnenin yolu" -#: gio/gdbus-tool.c:532 +#: ../gio/gdbus-tool.c:535 +#, fuzzy msgid "Method and interface name" -msgstr "" +msgstr "Yönten ve arayüz ismi" -#: gio/gdbus-tool.c:571 +#: ../gio/gdbus-tool.c:574 +#, fuzzy msgid "Invoke a method on a remote object." -msgstr "" +msgstr "Uzak nesne üzerinde bir yöntem çağır" -#: gio/gdbus-tool.c:626 gio/gdbus-tool.c:1243 gio/gdbus-tool.c:1495 +#: ../gio/gdbus-tool.c:629 ../gio/gdbus-tool.c:1248 ../gio/gdbus-tool.c:1508 #, fuzzy, c-format msgid "Error connecting: %s\n" -msgstr "Bağlarken hata: %s" +msgstr "Bağlarken hata: %s\n" -#: gio/gdbus-tool.c:646 gio/gdbus-tool.c:1262 gio/gdbus-tool.c:1514 -#, c-format +#: ../gio/gdbus-tool.c:649 ../gio/gdbus-tool.c:1267 ../gio/gdbus-tool.c:1527 +#, fuzzy, c-format msgid "Error: Destination is not specified\n" -msgstr "" +msgstr "Hata: Varılacak veriyolu adı belirtilmedi\n" -#: gio/gdbus-tool.c:667 gio/gdbus-tool.c:1281 -#, c-format +#: ../gio/gdbus-tool.c:670 ../gio/gdbus-tool.c:1286 +#, fuzzy, c-format msgid "Error: Object path is not specified\n" -msgstr "" +msgstr "Hata: Nesne yolu belirtilmedi\n" -#: gio/gdbus-tool.c:687 gio/gdbus-tool.c:1301 gio/gdbus-tool.c:1554 +#: ../gio/gdbus-tool.c:690 ../gio/gdbus-tool.c:1306 ../gio/gdbus-tool.c:1567 #, fuzzy, c-format msgid "Error: %s is not a valid object path\n" -msgstr "'%s' geçerli bir isim değil " +msgstr "Hata: %s geçerli bir nesne yolu değil\n" -#: gio/gdbus-tool.c:702 -#, c-format +#: ../gio/gdbus-tool.c:705 +#, fuzzy, c-format msgid "Error: Method name is not specified\n" -msgstr "" +msgstr "Hata: Yöntem adı belirtilmedi\n" -#: gio/gdbus-tool.c:713 -#, c-format +#: ../gio/gdbus-tool.c:716 +#, fuzzy, c-format msgid "Error: Method name `%s' is invalid\n" -msgstr "" +msgstr "Hata: Yöntem adı `%s' geçersiz\n" -#: gio/gdbus-tool.c:778 +#: ../gio/gdbus-tool.c:781 #, fuzzy, c-format msgid "Error parsing parameter %d of type `%s': %s\n" -msgstr "'%s' dizini açılamadı: %s" +msgstr "`%2$s' türünden olan %1$d parametresini ayrıştırmada hata: %3$s\n" -#: gio/gdbus-tool.c:786 +#: ../gio/gdbus-tool.c:789 #, fuzzy, c-format msgid "Error parsing parameter %d: %s\n" -msgstr "%s seçeneği işlenirken hata" +msgstr "%d parametresini ayrıştırmada hata: %s\n" -#: gio/gdbus-tool.c:1161 +#: ../gio/gdbus-tool.c:1165 +#, fuzzy msgid "Destination name to introspect" -msgstr "" +msgstr "İçgözlem yapılacak hedefin adı" -#: gio/gdbus-tool.c:1162 +#: ../gio/gdbus-tool.c:1166 +#, fuzzy msgid "Object path to introspect" -msgstr "" +msgstr "İçgözlem yapılacak nesnenin yolu" -#: gio/gdbus-tool.c:1195 +#: ../gio/gdbus-tool.c:1167 +#, fuzzy +msgid "Print XML" +msgstr "XML yazdır" + +#: ../gio/gdbus-tool.c:1200 +#, fuzzy msgid "Introspect a remote object." -msgstr "" +msgstr "Uzak nesneye içgözlem yap." -#: gio/gdbus-tool.c:1413 +#: ../gio/gdbus-tool.c:1426 +#, fuzzy msgid "Destination name to monitor" -msgstr "" +msgstr "Gözlemlenecek hedefin adı" -#: gio/gdbus-tool.c:1414 +#: ../gio/gdbus-tool.c:1427 +#, fuzzy msgid "Object path to monitor" -msgstr "" +msgstr "Gözlemlenecek nesnenin yolu" -#: gio/gdbus-tool.c:1447 +#: ../gio/gdbus-tool.c:1460 #, fuzzy msgid "Monitor a remote object." -msgstr "bozuk nesne" +msgstr "Uzak nesneyi gözlemle." -#: gio/gdesktopappinfo.c:468 gio/gwin32appinfo.c:222 +#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221 msgid "Unnamed" msgstr "İsimlendirilmemiş" -#: gio/gdesktopappinfo.c:742 +#: ../gio/gdesktopappinfo.c:764 msgid "Desktop file didn't specify Exec field" msgstr "Desktop dosyası Exec alanı belirtmemiş" -#: gio/gdesktopappinfo.c:935 +#: ../gio/gdesktopappinfo.c:1045 msgid "Unable to find terminal required for application" msgstr "Uygulama için gerekli uçbirim bulunamadı" -#: gio/gdesktopappinfo.c:1144 +#: ../gio/gdesktopappinfo.c:1344 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "Kullanıcı uygulaması yapılandırma klasörü %s oluşturulamıyor: %s" -#: gio/gdesktopappinfo.c:1148 +#: ../gio/gdesktopappinfo.c:1348 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Kullanıcı MIME yapılandırma klasörü %s oluşturulamıyor: %s" -#: gio/gdesktopappinfo.c:1556 +#: ../gio/gdesktopappinfo.c:1841 #, c-format msgid "Can't create user desktop file %s" msgstr "Kullanıcı masaüstü dosyası %s oluşturulamıyor" -#: gio/gdesktopappinfo.c:1670 +#: ../gio/gdesktopappinfo.c:1957 #, c-format msgid "Custom definition for %s" msgstr "%s için özel tanım" -#: gio/gdrive.c:364 +#: ../gio/gdrive.c:363 msgid "drive doesn't implement eject" msgstr "sürücü çıkartmayı uygulamıyor" #. Translators: This is an error #. * message for drive objects that #. * don't implement any of eject or eject_with_operation. -#: gio/gdrive.c:444 +#: ../gio/gdrive.c:444 msgid "drive doesn't implement eject or eject_with_operation" msgstr "sürücü eject veya eject_with_operation uygulamıyor" -#: gio/gdrive.c:521 +#: ../gio/gdrive.c:521 msgid "drive doesn't implement polling for media" msgstr "sürücü ortam için yoklamayı uygulamıyor" -#: gio/gdrive.c:726 +#: ../gio/gdrive.c:728 msgid "drive doesn't implement start" msgstr "sürücü start uygulamıyor" -#: gio/gdrive.c:828 +#: ../gio/gdrive.c:831 msgid "drive doesn't implement stop" msgstr "sürücü stop uygulamıyor" -#: gio/gemblem.c:325 +#: ../gio/gdummytlsbackend.c:156 ../gio/gdummytlsbackend.c:274 +#, fuzzy +msgid "TLS support is not available" +msgstr "TLS desteği kullanılabilir değil" + +#: ../gio/gemblem.c:324 #, c-format msgid "Can't handle version %d of GEmblem encoding" msgstr "GEmblem kodlamasının %d sürümü işlenemiyor" -#: gio/gemblem.c:335 +#: ../gio/gemblem.c:334 #, c-format msgid "Malformed number of tokens (%d) in GEmblem encoding" msgstr "GEmblem kodlaması içerisinde bozuk sayıda token (%d)" -#: gio/gemblemedicon.c:296 +#: ../gio/gemblemedicon.c:368 #, c-format msgid "Can't handle version %d of GEmblemedIcon encoding" msgstr "GEmblemedIcon kodlaması %d sürümü işlenemiyor" -#: gio/gemblemedicon.c:306 +#: ../gio/gemblemedicon.c:378 #, c-format msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding" msgstr "GEmblemedIcon kodlaması içerisinde bozuk sayıda token (%d)" -#: gio/gemblemedicon.c:329 +#: ../gio/gemblemedicon.c:401 msgid "Expected a GEmblem for GEmblemedIcon" msgstr "GEmblemedIcon için bir Gemblem beklendi" -#: gio/gfile.c:871 gio/gfile.c:1101 gio/gfile.c:1236 gio/gfile.c:1472 -#: gio/gfile.c:1526 gio/gfile.c:1583 gio/gfile.c:1666 gio/gfile.c:1721 -#: gio/gfile.c:1781 gio/gfile.c:1835 gio/gfile.c:3304 gio/gfile.c:3358 -#: gio/gfile.c:3490 gio/gfile.c:3530 gio/gfile.c:3857 gio/gfile.c:4259 -#: gio/gfile.c:4345 gio/gfile.c:4434 gio/gfile.c:4532 gio/gfile.c:4619 -#: gio/gfile.c:4712 gio/gfile.c:5042 gio/gfile.c:5322 gio/gfile.c:5391 -#: gio/gfile.c:6982 gio/gfile.c:7072 gio/gfile.c:7158 -#: gio/win32/gwinhttpfile.c:441 +#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238 +#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586 +#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784 +#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362 +#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862 +#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439 +#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718 +#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371 +#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121 +#: ../gio/win32/gwinhttpfile.c:439 msgid "Operation not supported" msgstr "İşlem desteklenmiyor" @@ -1871,138 +2321,138 @@ msgstr "İşlem desteklenmiyor" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: gio/gfile.c:1357 gio/glocalfile.c:1060 gio/glocalfile.c:1071 -#: gio/glocalfile.c:1084 +#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1061 ../gio/glocalfile.c:1072 +#: ../gio/glocalfile.c:1085 msgid "Containing mount does not exist" msgstr "Bağlama mevcut değil içeriyor" -#: gio/gfile.c:2409 gio/glocalfile.c:2259 +#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2260 msgid "Can't copy over directory" msgstr "Dizin üzerine kopyalanamıyor" -#: gio/gfile.c:2469 +#: ../gio/gfile.c:2473 msgid "Can't copy directory over directory" msgstr "Dizin dizin üzerine kopyalanamıyor" -#: gio/gfile.c:2477 gio/glocalfile.c:2268 +#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2269 msgid "Target file exists" msgstr "Hedef dosya mevcut" -#: gio/gfile.c:2495 +#: ../gio/gfile.c:2499 msgid "Can't recursively copy directory" msgstr "Dizin iç içe kopyalanamıyor" -#: gio/gfile.c:2755 +#: ../gio/gfile.c:2759 #, fuzzy msgid "Splice not supported" -msgstr "Sembolik bağlar desteklenmiyor" +msgstr "Splice ile veri taşıma desteklenmiyor" -#: gio/gfile.c:2759 +#: ../gio/gfile.c:2763 #, fuzzy, c-format msgid "Error splicing file: %s" -msgstr "Dosya açılırken hata: %s" +msgstr "Splice ile veri taşımada hata: %s" -#: gio/gfile.c:2906 +#: ../gio/gfile.c:2910 msgid "Can't copy special file" msgstr "Özel dosya kopyalanamıyor" -#: gio/gfile.c:3480 +#: ../gio/gfile.c:3484 msgid "Invalid symlink value given" msgstr "Geçersiz sembolik bağ değeri verildi" -#: gio/gfile.c:3573 +#: ../gio/gfile.c:3578 msgid "Trash not supported" msgstr "Çöp desteklenmiyor" -#: gio/gfile.c:3622 +#: ../gio/gfile.c:3627 #, c-format msgid "File names cannot contain '%c'" msgstr "Dosy adları '%c' içeremez" -#: gio/gfile.c:6039 gio/gvolume.c:331 +#: ../gio/gfile.c:6004 ../gio/gvolume.c:332 msgid "volume doesn't implement mount" msgstr "sistem bağlama uygulamıyor" -#: gio/gfile.c:6150 +#: ../gio/gfile.c:6115 msgid "No application is registered as handling this file" msgstr "Bu dosyayı işlemek için hiçbir uygulama kayıtlı değil" -#: gio/gfileenumerator.c:206 +#: ../gio/gfileenumerator.c:205 msgid "Enumerator is closed" msgstr "Enumerator kapalı" -#: gio/gfileenumerator.c:213 gio/gfileenumerator.c:272 -#: gio/gfileenumerator.c:372 gio/gfileenumerator.c:481 +#: ../gio/gfileenumerator.c:212 ../gio/gfileenumerator.c:271 +#: ../gio/gfileenumerator.c:371 ../gio/gfileenumerator.c:480 msgid "File enumerator has outstanding operation" msgstr "Dosya numaralandırıcı sıradışı işleme sahip" -#: gio/gfileenumerator.c:362 gio/gfileenumerator.c:471 +#: ../gio/gfileenumerator.c:361 ../gio/gfileenumerator.c:470 msgid "File enumerator is already closed" msgstr "Dosya numaralandırıcı zaten kapalı" -#: gio/gfileicon.c:237 +#: ../gio/gfileicon.c:236 #, c-format msgid "Can't handle version %d of GFileIcon encoding" msgstr "GFileIcon kodlaması %d sürümü işlenemiyor" -#: gio/gfileicon.c:247 +#: ../gio/gfileicon.c:246 msgid "Malformed input data for GFileIcon" msgstr "GFileIcon için bozuk girdi verisi" -#: gio/gfileinputstream.c:155 gio/gfileinputstream.c:422 -#: gio/gfileiostream.c:171 gio/gfileoutputstream.c:170 -#: gio/gfileoutputstream.c:525 +#: ../gio/gfileinputstream.c:154 ../gio/gfileinputstream.c:420 +#: ../gio/gfileiostream.c:170 ../gio/gfileoutputstream.c:169 +#: ../gio/gfileoutputstream.c:523 msgid "Stream doesn't support query_info" msgstr "Akış query_info desteklemiyor" -#: gio/gfileinputstream.c:337 gio/gfileiostream.c:389 -#: gio/gfileoutputstream.c:383 +#: ../gio/gfileinputstream.c:335 ../gio/gfileiostream.c:387 +#: ../gio/gfileoutputstream.c:381 msgid "Seek not supported on stream" msgstr "Atlama akışta desteklenmiyor" -#: gio/gfileinputstream.c:381 +#: ../gio/gfileinputstream.c:379 msgid "Truncate not allowed on input stream" msgstr "Sonunu kesmeye giriş akışında izin verilmiyor" -#: gio/gfileiostream.c:465 gio/gfileoutputstream.c:459 +#: ../gio/gfileiostream.c:463 ../gio/gfileoutputstream.c:457 msgid "Truncate not supported on stream" msgstr "Akış üzerinde sonunun kesilmesi desteklenmiyor" -#: gio/gicon.c:286 +#: ../gio/gicon.c:284 #, c-format msgid "Wrong number of tokens (%d)" msgstr "Yanlış sayıda token (%d)" -#: gio/gicon.c:306 +#: ../gio/gicon.c:304 #, c-format msgid "No type for class name %s" msgstr "Sınıf ismi %s için tür yok" -#: gio/gicon.c:316 +#: ../gio/gicon.c:314 #, c-format msgid "Type %s does not implement the GIcon interface" msgstr "Tür %s GIcon arayüzü uygulamıyor" -#: gio/gicon.c:327 +#: ../gio/gicon.c:325 #, c-format msgid "Type %s is not classed" msgstr "Tür %s sınıflandırılmış değil" -#: gio/gicon.c:341 +#: ../gio/gicon.c:339 #, c-format msgid "Malformed version number: %s" msgstr "Bozuk sürüm numarası: %s" -#: gio/gicon.c:355 +#: ../gio/gicon.c:353 #, c-format msgid "Type %s does not implement from_tokens() on the GIcon interface" msgstr "Tür %s GIcon arayüzü üzerinde from_tokens() uygulamıyor" -#: gio/gicon.c:431 +#: ../gio/gicon.c:430 msgid "Can't handle the supplied version the icon encoding" msgstr "Simge kodlamasının verilen sürümü işlenemiyor" -#: gio/ginputstream.c:195 +#: ../gio/ginputstream.c:194 msgid "Input stream doesn't implement read" msgstr "Giriş akımı okumayı uygulamıyor" @@ -2012,800 +2462,1373 @@ msgstr "Giriş akımı okumayı uygulamıyor" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: gio/ginputstream.c:902 gio/giostream.c:315 gio/goutputstream.c:1206 +#: ../gio/ginputstream.c:898 ../gio/giostream.c:316 +#: ../gio/goutputstream.c:1207 msgid "Stream has outstanding operation" msgstr "Akışın sıradışı işlemi var" -#: gio/ginetsocketaddress.c:182 gio/ginetsocketaddress.c:199 -#: gio/gunixsocketaddress.c:222 +#: ../gio/ginetsocketaddress.c:181 ../gio/ginetsocketaddress.c:198 +#: ../gio/gunixsocketaddress.c:221 msgid "Not enough space for socket address" msgstr "Soket adresi için yeterli alan yok" -#: gio/ginetsocketaddress.c:212 +#: ../gio/ginetsocketaddress.c:211 msgid "Unsupported socket address" msgstr "Desteklenmeyen soket adresi" -#: gio/glocaldirectorymonitor.c:288 +#: ../gio/glib-compile-schemas.c:742 +#, fuzzy +msgid "empty names are not permitted" +msgstr "boş adlara izin verilmiyor" + +#: ../gio/glib-compile-schemas.c:752 +#, fuzzy, c-format +msgid "invalid name '%s': names must begin with a lowercase letter" +msgstr "geçersiz ad '%s': adlar küçük harf ile başlamalıdır" + +#: ../gio/glib-compile-schemas.c:764 +#, fuzzy, c-format +msgid "" +"invalid name '%s': invalid character '%c'; only lowercase letters, numbers " +"and dash ('-') are permitted." +msgstr "" +"geçersiz ad '%s': geçersiz karakter '%c'; sadece küçük harfler, sayılar ve " +"tire ('-') işareti kullanılabilir" + +#: ../gio/glib-compile-schemas.c:773 +#, fuzzy, c-format +msgid "invalid name '%s': two successive dashes ('--') are not permitted." +msgstr "geçersiz ad '%s': birbirini izleyen iki tire ('--') kullanılamaz" + +#: ../gio/glib-compile-schemas.c:782 +#, fuzzy, c-format +msgid "invalid name '%s': the last character may not be a dash ('-')." +msgstr "geçersiz ad '%s': son karakter tire ('-') olamaz." + +#: ../gio/glib-compile-schemas.c:790 +#, fuzzy, c-format +msgid "invalid name '%s': maximum length is 32" +msgstr "geçersiz ad '%s': olabilecek en fazla uzunluk 32" + +#: ../gio/glib-compile-schemas.c:859 +#, fuzzy, c-format +msgid " already specified" +msgstr " zaten belirtilmiş" + +#: ../gio/glib-compile-schemas.c:885 +#, fuzzy +msgid "can not add keys to a 'list-of' schema" +msgstr "'list-of' şemasına anahtarlar eklenemiyor" + +#: ../gio/glib-compile-schemas.c:896 +#, fuzzy, c-format +msgid " already specified" +msgstr " zaten belirtilmiş" + +#: ../gio/glib-compile-schemas.c:914 +#, fuzzy, c-format +msgid "" +" shadows in ; use " +"to modify value" +msgstr "" +", içindeki 'i gölgeliyor; " +" kullanın" + +#: ../gio/glib-compile-schemas.c:925 +#, fuzzy, c-format +msgid "" +"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " +"to " +msgstr "" +"'e öznitelik olarak, 'type', 'enum', ya da 'flags' özniteliklerinden " +"tam olarak bir tanesi belirtilmeli" + +#: ../gio/glib-compile-schemas.c:944 +#, fuzzy, c-format +msgid "<%s id='%s'> not (yet) defined." +msgstr "<%s id='%s'> henüz tanımlanmadı " + +#: ../gio/glib-compile-schemas.c:959 +#, fuzzy, c-format +#| msgid "Invalid attribute type (string expected)" +msgid "invalid GVariant type string '%s'" +msgstr "geçersiz GVariant tür dizgisi '%s'" + +#: ../gio/glib-compile-schemas.c:989 +#, fuzzy +msgid " given but schema isn't extending anything" +msgstr " verildi, fakat şema hiçbir şeyi genişletmedi" + +#: ../gio/glib-compile-schemas.c:1002 +#, fuzzy, c-format +msgid "no to override" +msgstr "üzerine yazılacak hiç yok" + +#: ../gio/glib-compile-schemas.c:1010 +#, fuzzy, c-format +msgid " already specified" +msgstr " zaten belirtildi" + +#: ../gio/glib-compile-schemas.c:1081 +#, fuzzy, c-format +msgid " already specified" +msgstr " zaten belirtildi" + +#: ../gio/glib-compile-schemas.c:1093 +#, fuzzy, c-format +msgid " extends not yet existing schema '%s'" +msgstr ", henüz mevcut olmayan '%s' şemasını genişletiyor" + +#: ../gio/glib-compile-schemas.c:1109 +#, fuzzy, c-format +msgid " is list of not yet existing schema '%s'" +msgstr ", henüz mevcut olmayan '%s' şemasının bir listesi" + +#: ../gio/glib-compile-schemas.c:1117 +#, fuzzy, c-format +msgid "Can not be a list of a schema with a path" +msgstr "Yolu olan bir şemanın bir listesi olamaz" + +#: ../gio/glib-compile-schemas.c:1127 +#, fuzzy, c-format +msgid "Can not extend a schema with a path" +msgstr "Yolu olan bir şemayı genişletemez" + +#: ../gio/glib-compile-schemas.c:1137 +#, fuzzy, c-format +msgid "" +" is a list, extending which is not a list" +msgstr "" +", bir liste olmayan 'i genişleten bir liste" + +#: ../gio/glib-compile-schemas.c:1147 +#, fuzzy, c-format +msgid "" +" extends but '%s' " +"does not extend '%s'" +msgstr "" +", 'i genişletiyor " +"fakat '%s', '%s' 'i genişletmiyor" + +#: ../gio/glib-compile-schemas.c:1164 +#, fuzzy, c-format +msgid "a path, if given, must begin and end with a slash" +msgstr "eğer verilmişse, bir yol, mutlaka bir taksim '/' ile başlayıp bitmeli" + +#: ../gio/glib-compile-schemas.c:1171 +#, fuzzy, c-format +msgid "the path of a list must end with ':/'" +msgstr "bir listenin yoku mutlaka ':/' ile sonlanmalı" + +#: ../gio/glib-compile-schemas.c:1197 +#, fuzzy, c-format +msgid "<%s id='%s'> already specified" +msgstr "<%s id='%s'> zaten belirtilmiş" + +#: ../gio/glib-compile-schemas.c:1417 +#, fuzzy, c-format +msgid "Element <%s> not allowed inside <%s>" +msgstr "<%2$s> içinde <%1$s> öğesine izin verilmiyor" + +#: ../gio/glib-compile-schemas.c:1421 +#, fuzzy, c-format +msgid "Element <%s> not allowed at toplevel" +msgstr "<%s> öğesinin üst seviyede bulunmasına izin verilmiyor" + +#: ../gio/glib-compile-schemas.c:1512 +#, fuzzy, c-format +msgid "text may not appear inside <%s>" +msgstr "<%s> içinde metin bulunamaz" + +#. Translators: Do not translate "--strict". +#: ../gio/glib-compile-schemas.c:1697 ../gio/glib-compile-schemas.c:1768 +#: ../gio/glib-compile-schemas.c:1844 +#, fuzzy, c-format +msgid "--strict was specified; exiting.\n" +msgstr "--strict belirtildi; çıkılıyor.\n" + +#: ../gio/glib-compile-schemas.c:1705 +#, fuzzy, c-format +msgid "This entire file has been ignored.\n" +msgstr "Tüm dosya gözardı edildi.\n" + +#: ../gio/glib-compile-schemas.c:1764 +#, fuzzy, c-format +msgid "Ignoring this file.\n" +msgstr "Bu dosya gözardı ediliyor.\n" + +#: ../gio/glib-compile-schemas.c:1804 +#, fuzzy, c-format +msgid "No such key `%s' in schema `%s' as specified in override file `%s'" +msgstr "" +"`%3$s' üzerine yazma dosyasında belirtilen `%2$s' şemasında `%1$s'anahtarı " +"yok." + +#: ../gio/glib-compile-schemas.c:1810 ../gio/glib-compile-schemas.c:1868 +#: ../gio/glib-compile-schemas.c:1896 +#, fuzzy, c-format +msgid "; ignoring override for this key.\n" +msgstr "; bu anahtar için üzerine yazma gözardı ediliyor.\n" + +#: ../gio/glib-compile-schemas.c:1814 ../gio/glib-compile-schemas.c:1872 +#: ../gio/glib-compile-schemas.c:1900 +#, fuzzy, c-format +msgid " and --strict was specified; exiting.\n" +msgstr "ve --strict belirtildi; çıkılıyor.\n" + +#: ../gio/glib-compile-schemas.c:1830 +#, fuzzy, c-format +msgid "" +"error parsing key `%s' in schema `%s' as specified in override file `%s': " +"%s. " +msgstr "" +"`%3$s' üzerine yazma dosyasında belirtilen `%2$s' şemasındaki `%1$s' " +"anahtarını ayrıştırmada hata: %4$s. " + +#: ../gio/glib-compile-schemas.c:1840 +#, fuzzy, c-format +msgid "Ignoring override for this key.\n" +msgstr "Bu anahtar için üzerine yazma gözardı ediliyor.\n" + +#: ../gio/glib-compile-schemas.c:1858 +#, fuzzy, c-format +msgid "" +"override for key `%s' in schema `%s' in override file `%s' is out of the " +"range given in the schema" +msgstr "" +"`%3$s' üzerine yazma dosyasındaki `%2$s' şemasının `%1$s' anahtarının " +"üzerine yazma, şemada verilen aralığın dışında" + +#: ../gio/glib-compile-schemas.c:1886 +#, fuzzy, c-format +msgid "" +"override for key `%s' in schema `%s' in override file `%s' is not in the " +"list of valid choices" +msgstr "" +"`%3$s' üzerine yazma dosyasındaki `%2$s' şemasının `%1$s' anahtarının " +"üzerine yazma, geçerli seçenekler listesinde değil" + +#: ../gio/glib-compile-schemas.c:1940 +#, fuzzy +msgid "where to store the gschemas.compiled file" +msgstr "gschemas.compiled dosyasının saklanacağı yer" + +#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1966 +#, fuzzy +msgid "DIRECTORY" +msgstr "DİZİN" + +#: ../gio/glib-compile-schemas.c:1941 +#, fuzzy +msgid "Abort on any errors in schemas" +msgstr "Şemalardaki herhangi bir hatada iptal et" + +#: ../gio/glib-compile-schemas.c:1942 +#, fuzzy +msgid "Do not write the gschema.compiled file" +msgstr "gschema.compiled dosyasını yazma" + +#: ../gio/glib-compile-schemas.c:1943 +#, fuzzy +msgid "This option will be removed soon." +msgstr "Bu şeçenek yakında kaldırılacak." + +#: ../gio/glib-compile-schemas.c:1944 +#, fuzzy +msgid "Do not enforce key name restrictions" +msgstr "Anahtar adı kısıtlamalarına zorlama" + +#: ../gio/glib-compile-schemas.c:1969 +#, fuzzy +msgid "" +"Compile all GSettings schema files into a schema cache.\n" +"Schema files are required to have the extension .gschema.xml,\n" +"and the cache file is called gschemas.compiled." +msgstr "" +"Tüm GSettings şema dosyalarını bir şema önbelleği içerisine derle.\n" +"Şema dosyalarının .gschema.xml uzantısına sahip olmaları gerekir,\n" +"ve önbellek dosyası gschemas.compiled olarak anılır." + +#: ../gio/glib-compile-schemas.c:1985 +#, fuzzy, c-format +msgid "You should give exactly one directory name\n" +msgstr "Tam olarak bir dizin adı vermelisiniz\n" + +#: ../gio/glib-compile-schemas.c:2024 +#, fuzzy, c-format +msgid "No schema files found: " +msgstr "Hiç şema dosyası bulunmadı: " + +#: ../gio/glib-compile-schemas.c:2027 +#, fuzzy, c-format +msgid "doing nothing.\n" +msgstr "hiçbir şey yapılmıyor.\n" + +#: ../gio/glib-compile-schemas.c:2030 +#, fuzzy, c-format +msgid "removed existing output file.\n" +msgstr "varolan çıktı dosyası silindi.\n" + +#: ../gio/glocaldirectorymonitor.c:287 msgid "Unable to find default local directory monitor type" msgstr "Öntanımlı yerel dizin izleme tipi bulunamadı" -#: gio/glocalfile.c:594 gio/win32/gwinhttpfile.c:424 +#: ../gio/glocalfile.c:593 ../gio/win32/gwinhttpfile.c:422 #, c-format msgid "Invalid filename %s" msgstr "Geçersiz dosya adı %s" -#: gio/glocalfile.c:968 +#: ../gio/glocalfile.c:969 #, c-format msgid "Error getting filesystem info: %s" msgstr "Dosya sistemi bilgisi alınırken hata: %s" -#: gio/glocalfile.c:1106 +#: ../gio/glocalfile.c:1107 msgid "Can't rename root directory" msgstr "Kök dizini yeniden adlandırılamıyor" -#: gio/glocalfile.c:1126 gio/glocalfile.c:1152 +#: ../gio/glocalfile.c:1127 ../gio/glocalfile.c:1153 #, c-format msgid "Error renaming file: %s" msgstr "Dosya yeniden adlandırılırken hata: %s" -#: gio/glocalfile.c:1135 +#: ../gio/glocalfile.c:1136 msgid "Can't rename file, filename already exist" msgstr "Dosya yeniden adlandırılamıyor, dosya ismi zaten mevcut" -#: gio/glocalfile.c:1148 gio/glocalfile.c:2132 gio/glocalfile.c:2161 -#: gio/glocalfile.c:2321 gio/glocalfileoutputstream.c:570 -#: gio/glocalfileoutputstream.c:623 gio/glocalfileoutputstream.c:668 -#: gio/glocalfileoutputstream.c:1150 +#: ../gio/glocalfile.c:1149 ../gio/glocalfile.c:2133 ../gio/glocalfile.c:2162 +#: ../gio/glocalfile.c:2322 ../gio/glocalfileoutputstream.c:571 +#: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669 +#: ../gio/glocalfileoutputstream.c:1151 msgid "Invalid filename" msgstr "Geçersiz dosya adı" -#: gio/glocalfile.c:1309 +#: ../gio/glocalfile.c:1310 #, c-format msgid "Error opening file: %s" msgstr "Dosya açılırken hata: %s" -#: gio/glocalfile.c:1319 +#: ../gio/glocalfile.c:1320 msgid "Can't open directory" msgstr "Dizin açılamıyor" -#: gio/glocalfile.c:1444 +#: ../gio/glocalfile.c:1445 #, c-format msgid "Error removing file: %s" msgstr "Dosya silinirken hata: %s" -#: gio/glocalfile.c:1811 +#: ../gio/glocalfile.c:1812 #, c-format msgid "Error trashing file: %s" msgstr "Dosya çöpe atılırken hata: %s" -#: gio/glocalfile.c:1834 +#: ../gio/glocalfile.c:1835 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Çöp dizini %s oluşturulamıyor: %s" -#: gio/glocalfile.c:1855 +#: ../gio/glocalfile.c:1856 msgid "Unable to find toplevel directory for trash" msgstr "Çöp için en üst seviye dizin bulunamıyor" -#: gio/glocalfile.c:1934 gio/glocalfile.c:1954 +#: ../gio/glocalfile.c:1935 ../gio/glocalfile.c:1955 msgid "Unable to find or create trash directory" msgstr "Çöp dizini bulunamıyor ya da oluşturulamıyor" -#: gio/glocalfile.c:1988 +#: ../gio/glocalfile.c:1989 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Çöp bilgi dosyası oluşturulamıyor: %s" -#: gio/glocalfile.c:2017 gio/glocalfile.c:2022 gio/glocalfile.c:2102 -#: gio/glocalfile.c:2109 +#: ../gio/glocalfile.c:2018 ../gio/glocalfile.c:2023 ../gio/glocalfile.c:2103 +#: ../gio/glocalfile.c:2110 #, c-format msgid "Unable to trash file: %s" msgstr "Dosya çöpe atılamıyor: %s" -#: gio/glocalfile.c:2136 +#: ../gio/glocalfile.c:2137 #, c-format msgid "Error creating directory: %s" msgstr "Dizin oluşturulurken hata: %s" -#: gio/glocalfile.c:2165 +#: ../gio/glocalfile.c:2166 #, fuzzy, c-format msgid "Filesystem does not support symbolic links" -msgstr "'%s' sembolik bağını okuma başarısız: %s" +msgstr "Dosya sistemi sembolik bağları desteklemiyor" -#: gio/glocalfile.c:2169 +#: ../gio/glocalfile.c:2170 #, c-format msgid "Error making symbolic link: %s" msgstr "Sembolik bağ yaparken hata: %s" -#: gio/glocalfile.c:2231 gio/glocalfile.c:2325 +#: ../gio/glocalfile.c:2232 ../gio/glocalfile.c:2326 #, c-format msgid "Error moving file: %s" msgstr "Dosya taşınırken hata: %s" -#: gio/glocalfile.c:2254 +#: ../gio/glocalfile.c:2255 msgid "Can't move directory over directory" msgstr "Dizin dizin üzerine taşınamıyor" -#: gio/glocalfile.c:2281 gio/glocalfileoutputstream.c:948 -#: gio/glocalfileoutputstream.c:962 gio/glocalfileoutputstream.c:977 -#: gio/glocalfileoutputstream.c:993 gio/glocalfileoutputstream.c:1007 +#: ../gio/glocalfile.c:2282 ../gio/glocalfileoutputstream.c:949 +#: ../gio/glocalfileoutputstream.c:963 ../gio/glocalfileoutputstream.c:978 +#: ../gio/glocalfileoutputstream.c:994 ../gio/glocalfileoutputstream.c:1008 msgid "Backup file creation failed" msgstr "Yedek dosyası oluşturma başarısız oldu" -#: gio/glocalfile.c:2300 +#: ../gio/glocalfile.c:2301 #, c-format msgid "Error removing target file: %s" msgstr "Hedef dosya silerken hata: %s" -#: gio/glocalfile.c:2314 +#: ../gio/glocalfile.c:2315 msgid "Move between mounts not supported" msgstr "Bağlı sistemler arasında taşıma desteklenmiyor" -#: gio/glocalfileinfo.c:721 +#: ../gio/glocalfileinfo.c:720 msgid "Attribute value must be non-NULL" msgstr "Öznitelik değeri NULL olmamalı" -#: gio/glocalfileinfo.c:728 +#: ../gio/glocalfileinfo.c:727 msgid "Invalid attribute type (string expected)" msgstr "Geçersiz öznitelik türü (dizgi beklendi)" -#: gio/glocalfileinfo.c:735 +#: ../gio/glocalfileinfo.c:734 msgid "Invalid extended attribute name" msgstr "Geçersiz genişletilmiş öznitelik ismi" -#: gio/glocalfileinfo.c:775 +#: ../gio/glocalfileinfo.c:774 #, c-format msgid "Error setting extended attribute '%s': %s" msgstr "Genişletilmiş öznitelik '%s' atanırken hata: %s" -#: gio/glocalfileinfo.c:1479 gio/glocalfileoutputstream.c:832 +#: ../gio/glocalfileinfo.c:1483 ../gio/glocalfileoutputstream.c:833 #, c-format msgid "Error stating file '%s': %s" msgstr "'%s' dosyası durumlandırılırken hata: %s" -#: gio/glocalfileinfo.c:1552 +#: ../gio/glocalfileinfo.c:1567 msgid " (invalid encoding)" msgstr " (geçersiz kodlama)" -#: gio/glocalfileinfo.c:1750 +#: ../gio/glocalfileinfo.c:1769 #, c-format msgid "Error stating file descriptor: %s" msgstr "Dosya tanımlayıcı durumlandırılırken hata: %s" -#: gio/glocalfileinfo.c:1795 +#: ../gio/glocalfileinfo.c:1814 msgid "Invalid attribute type (uint32 expected)" msgstr "Geçersiz öznitelik türü (uint32 beklendi)" -#: gio/glocalfileinfo.c:1813 +#: ../gio/glocalfileinfo.c:1832 msgid "Invalid attribute type (uint64 expected)" msgstr "Geçersiz öznitelik türü (uint64 beklendi)" -#: gio/glocalfileinfo.c:1832 gio/glocalfileinfo.c:1851 +#: ../gio/glocalfileinfo.c:1851 ../gio/glocalfileinfo.c:1870 msgid "Invalid attribute type (byte string expected)" msgstr "Geçersiz öznitelik türü (byte dizisi beklendi)" -#: gio/glocalfileinfo.c:1886 +#: ../gio/glocalfileinfo.c:1905 #, fuzzy msgid "Cannot set permissions on symlinks" -msgstr "İzinler atanırken hata: %s" +msgstr "Sembolik bağ uzerindeki yetkiler değiştirilemiyor" -#: gio/glocalfileinfo.c:1902 +#: ../gio/glocalfileinfo.c:1921 #, c-format msgid "Error setting permissions: %s" msgstr "İzinler atanırken hata: %s" -#: gio/glocalfileinfo.c:1953 +#: ../gio/glocalfileinfo.c:1972 #, c-format msgid "Error setting owner: %s" msgstr "Sahip atanırken hata: %s" -#: gio/glocalfileinfo.c:1976 +#: ../gio/glocalfileinfo.c:1995 msgid "symlink must be non-NULL" msgstr "sembolik bağ NULL olmamalı" -#: gio/glocalfileinfo.c:1986 gio/glocalfileinfo.c:2005 -#: gio/glocalfileinfo.c:2016 +#: ../gio/glocalfileinfo.c:2005 ../gio/glocalfileinfo.c:2024 +#: ../gio/glocalfileinfo.c:2035 #, c-format msgid "Error setting symlink: %s" msgstr "Sembolik bağ atanırken hata: %s" -#: gio/glocalfileinfo.c:1995 +#: ../gio/glocalfileinfo.c:2014 msgid "Error setting symlink: file is not a symlink" msgstr "Sembolik bağ atanırken hata: dosya bir sembolik bağ değil" -#: gio/glocalfileinfo.c:2121 +#: ../gio/glocalfileinfo.c:2140 #, c-format msgid "Error setting modification or access time: %s" msgstr "Değiştirme veya erişim süresi atanırken hata: %s" -#: gio/glocalfileinfo.c:2144 +#: ../gio/glocalfileinfo.c:2163 msgid "SELinux context must be non-NULL" msgstr "SELinux bağlamı NULL olmamalı" -#: gio/glocalfileinfo.c:2159 +#: ../gio/glocalfileinfo.c:2178 #, c-format msgid "Error setting SELinux context: %s" msgstr "SELinux bağlamı atanırken hata: %s" -#: gio/glocalfileinfo.c:2166 +#: ../gio/glocalfileinfo.c:2185 msgid "SELinux is not enabled on this system" msgstr "SELinux bu sistede etkin değil" -#: gio/glocalfileinfo.c:2258 +#: ../gio/glocalfileinfo.c:2277 #, c-format msgid "Setting attribute %s not supported" msgstr "Öznitelik %s ataması desteklenmiyor" -#: gio/glocalfileinputstream.c:184 gio/glocalfileoutputstream.c:721 +#: ../gio/glocalfileinputstream.c:185 ../gio/glocalfileoutputstream.c:722 #, c-format msgid "Error reading from file: %s" msgstr "Dosyadan okunurken hata: %s" -#: gio/glocalfileinputstream.c:215 gio/glocalfileinputstream.c:227 -#: gio/glocalfileinputstream.c:339 gio/glocalfileoutputstream.c:469 -#: gio/glocalfileoutputstream.c:1025 +#: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228 +#: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470 +#: ../gio/glocalfileoutputstream.c:1026 #, c-format msgid "Error seeking in file: %s" msgstr "Dosya içinde atlama yapılırken hata: %s" -#: gio/glocalfileinputstream.c:260 gio/glocalfileoutputstream.c:255 -#: gio/glocalfileoutputstream.c:350 +#: ../gio/glocalfileinputstream.c:261 ../gio/glocalfileoutputstream.c:256 +#: ../gio/glocalfileoutputstream.c:351 #, c-format msgid "Error closing file: %s" msgstr "Dosya kapatılırken hata: %s" -#: gio/glocalfilemonitor.c:213 +#: ../gio/glocalfilemonitor.c:212 msgid "Unable to find default local file monitor type" msgstr "Öntanımlı yerel dosya izleme türü bulunamadı" -#: gio/glocalfileoutputstream.c:201 gio/glocalfileoutputstream.c:234 -#: gio/glocalfileoutputstream.c:742 +#: ../gio/glocalfileoutputstream.c:202 ../gio/glocalfileoutputstream.c:235 +#: ../gio/glocalfileoutputstream.c:743 #, c-format msgid "Error writing to file: %s" msgstr "Dosyaya yazılırken hata: %s" -#: gio/glocalfileoutputstream.c:282 +#: ../gio/glocalfileoutputstream.c:283 #, c-format msgid "Error removing old backup link: %s" msgstr "Eski yedek bağı silinirken hata: %s" -#: gio/glocalfileoutputstream.c:296 gio/glocalfileoutputstream.c:309 +#: ../gio/glocalfileoutputstream.c:297 ../gio/glocalfileoutputstream.c:310 #, c-format msgid "Error creating backup copy: %s" msgstr "Yedek kopyası oluşturulurken hata: %s" -#: gio/glocalfileoutputstream.c:327 +#: ../gio/glocalfileoutputstream.c:328 #, c-format msgid "Error renaming temporary file: %s" msgstr "Geçici dosya yeniden adlandırılırken hata: %s" -#: gio/glocalfileoutputstream.c:515 gio/glocalfileoutputstream.c:1076 +#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1077 #, c-format msgid "Error truncating file: %s" msgstr "Dosyanın sonu kesilirken hata: %s" -#: gio/glocalfileoutputstream.c:576 gio/glocalfileoutputstream.c:629 -#: gio/glocalfileoutputstream.c:674 gio/glocalfileoutputstream.c:814 -#: gio/glocalfileoutputstream.c:1057 gio/glocalfileoutputstream.c:1156 +#: ../gio/glocalfileoutputstream.c:577 ../gio/glocalfileoutputstream.c:630 +#: ../gio/glocalfileoutputstream.c:675 ../gio/glocalfileoutputstream.c:815 +#: ../gio/glocalfileoutputstream.c:1058 ../gio/glocalfileoutputstream.c:1157 #, c-format msgid "Error opening file '%s': %s" msgstr "'%s' dosyası açılırken hata: %s" -#: gio/glocalfileoutputstream.c:845 +#: ../gio/glocalfileoutputstream.c:846 msgid "Target file is a directory" msgstr "Hedef dosya bir dizin" -#: gio/glocalfileoutputstream.c:850 +#: ../gio/glocalfileoutputstream.c:851 msgid "Target file is not a regular file" msgstr "Hedef dosya normal dosya değil" -#: gio/glocalfileoutputstream.c:862 +#: ../gio/glocalfileoutputstream.c:863 msgid "The file was externally modified" msgstr "Dosya harici olarak değiştirilmiş" -#: gio/glocalfileoutputstream.c:1041 +#: ../gio/glocalfileoutputstream.c:1042 #, c-format msgid "Error removing old file: %s" msgstr "Eski dosya silinirken hata: %s" -#: gio/gmemoryinputstream.c:487 gio/gmemoryoutputstream.c:718 +#: ../gio/gmemoryinputstream.c:486 ../gio/gmemoryoutputstream.c:746 msgid "Invalid GSeekType supplied" msgstr "Geçersiz GSeekType sağlandı" -#: gio/gmemoryinputstream.c:497 +#: ../gio/gmemoryinputstream.c:496 msgid "Invalid seek request" msgstr "Geçersiz atlama isteği" -#: gio/gmemoryinputstream.c:521 +#: ../gio/gmemoryinputstream.c:520 msgid "Cannot truncate GMemoryInputStream" msgstr "GMemoryInputStream sonu silinemiyor" -#: gio/gmemoryoutputstream.c:468 +#: ../gio/gmemoryoutputstream.c:496 msgid "Memory output stream not resizable" msgstr "Hafıza çıktı akışı yeniden boyutlandırılamaz" -#: gio/gmemoryoutputstream.c:484 +#: ../gio/gmemoryoutputstream.c:512 msgid "Failed to resize memory output stream" msgstr "Hafız çıktı açışı yeniden boyutlandırma başarısız oldu" -#: gio/gmemoryoutputstream.c:572 +#: ../gio/gmemoryoutputstream.c:600 +#, fuzzy msgid "" "Amount of memory required to process the write is larger than available " "address space" msgstr "" +"Yazma işlemi için gereken bellek miktarı, mevcut adres uzayından dahabüyük" -#: gio/gmemoryoutputstream.c:728 +#: ../gio/gmemoryoutputstream.c:756 +#, fuzzy msgid "Requested seek before the beginning of the stream" -msgstr "" +msgstr "Akışın başından öncesine denk düşen bir atlama istendi" -#: gio/gmemoryoutputstream.c:737 +#: ../gio/gmemoryoutputstream.c:765 +#, fuzzy msgid "Requested seek beyond the end of the stream" -msgstr "" +msgstr "Akışın sonundan da ötesine denk düşen bir atlama istendi" #. Translators: This is an error #. * message for mount objects that #. * don't implement unmount. -#: gio/gmount.c:364 +#: ../gio/gmount.c:363 #, fuzzy msgid "mount doesn't implement \"unmount\"" -msgstr "mount unmount uygulamıyor" +msgstr "mount nesnesi için \"unmount\" gerçeklenmemiş" #. Translators: This is an error #. * message for mount objects that #. * don't implement eject. -#: gio/gmount.c:443 +#: ../gio/gmount.c:442 #, fuzzy msgid "mount doesn't implement \"eject\"" -msgstr "mount eject uygulamıyor" +msgstr "mount nesnesi için \"eject\" gerçeklenmemiş" #. Translators: This is an error #. * message for mount objects that #. * don't implement any of unmount or unmount_with_operation. -#: gio/gmount.c:523 +#: ../gio/gmount.c:523 #, fuzzy msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\"" -msgstr "mount, unmount veya unmount_with_operation uygulamıyor" +msgstr "" +"mount nesnesi için \"unmount\" veya \"unmount_with_operation\" gerçeklenmemiş" #. Translators: This is an error #. * message for mount objects that #. * don't implement any of eject or eject_with_operation. -#: gio/gmount.c:610 +#: ../gio/gmount.c:611 #, fuzzy msgid "mount doesn't implement \"eject\" or \"eject_with_operation\"" -msgstr "mount, eject veya eject_with_operation uygulamıyor" +msgstr "" +"mount nesnesi için \"eject\" veya \"eject_with_operation\" gerçeklenmemiş" #. Translators: This is an error #. * message for mount objects that #. * don't implement remount. -#: gio/gmount.c:699 +#: ../gio/gmount.c:701 #, fuzzy msgid "mount doesn't implement \"remount\"" -msgstr "mount remount uygulamıyor" +msgstr "mount nesnesi için \"remount\" gerçeklenmemiş" #. Translators: This is an error #. * message for mount objects that #. * don't implement content type guessing. -#: gio/gmount.c:783 +#: ../gio/gmount.c:785 msgid "mount doesn't implement content type guessing" msgstr "mount içerik türü tahminini uygulamıyor" #. Translators: This is an error #. * message for mount objects that #. * don't implement content type guessing. -#: gio/gmount.c:872 +#: ../gio/gmount.c:874 msgid "mount doesn't implement synchronous content type guessing" msgstr "mount senkron içerik türü tahminini uygulamıyor" -#: gio/gnetworkaddress.c:295 +#: ../gio/gnetworkaddress.c:318 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Makine ismi '%s' içeriyor '[' var ama ']' yok" -#: gio/goutputstream.c:207 gio/goutputstream.c:408 +#: ../gio/goutputstream.c:207 ../gio/goutputstream.c:408 msgid "Output stream doesn't implement write" msgstr "Çıktı akışı write uygulamıyor" -#: gio/goutputstream.c:369 gio/goutputstream.c:845 +#: ../gio/goutputstream.c:369 ../gio/goutputstream.c:849 msgid "Source stream is already closed" msgstr "Kaynak akışı zaten kapalı" -#: gio/gresolver.c:736 +#: ../gio/gresolver.c:738 #, c-format msgid "Error resolving '%s': %s" msgstr "'%s' çözülürken hata: %s" -#: gio/gresolver.c:786 +#: ../gio/gresolver.c:788 #, c-format msgid "Error reverse-resolving '%s': %s" msgstr "'%s' tersine çözülürken hata: %s" -#: gio/gresolver.c:821 gio/gresolver.c:899 +#: ../gio/gresolver.c:823 ../gio/gresolver.c:902 #, c-format msgid "No service record for '%s'" msgstr "'%s' için servis kaydı yok" -#: gio/gresolver.c:826 gio/gresolver.c:904 +#: ../gio/gresolver.c:828 ../gio/gresolver.c:907 #, c-format msgid "Temporarily unable to resolve '%s'" msgstr "Geçici olarak '%s' çözülemiyor" -#: gio/gresolver.c:831 gio/gresolver.c:909 +#: ../gio/gresolver.c:833 ../gio/gresolver.c:912 #, c-format msgid "Error resolving '%s'" msgstr "'%s' çözerken hata" -#: gio/gschema-compile.c:659 -msgid "where to store the gschemas.compiled file" -msgstr "" +#: ../gio/gsettings-tool.c:60 +#, fuzzy, c-format +msgid "Schema '%s' is not relocatable (path must not be specified)\n" +msgstr "'%s' şeması yeniden konumlandırılamaz (yol belirtilmemeli)\n" -#: gio/gschema-compile.c:659 gio/gschema-compile.c:671 -msgid "DIRECTORY" -msgstr "" +#: ../gio/gsettings-tool.c:65 ../gio/gsettings-tool.c:82 +#, fuzzy, c-format +msgid "No such schema '%s'\n" +msgstr "'%s' gibi bir şema yok\n" -#: gio/gschema-compile.c:660 -msgid "Do not write the gschema.compiled file" -msgstr "" +#: ../gio/gsettings-tool.c:77 +#, fuzzy, c-format +msgid "Schema '%s' is relocatable (path must be specified)\n" +msgstr "'%s' şeması konumlandırılabilir (yol mutlaka belirtilmeli)\n" -#: gio/gschema-compile.c:661 +#: ../gio/gsettings-tool.c:92 +#, fuzzy, c-format +msgid "Empty path given.\n" +msgstr "Boş bir yol belirtildi.\n" + +#: ../gio/gsettings-tool.c:98 +#, fuzzy, c-format +msgid "Path must begin with a slash (/)\n" +msgstr "Yol, mutlaka taksim (/) ile başlamalı\n" + +#: ../gio/gsettings-tool.c:104 +#, fuzzy, c-format +msgid "Path must end with a slash (/)\n" +msgstr "Yol, mutlaka bir taksim (/) ile bitmeli\n" + +#: ../gio/gsettings-tool.c:110 +#, fuzzy, c-format +msgid "Path must not contain two adjacent slashes (//)\n" +msgstr "Yol, ardışık olan iki taksim (//) içeremez\n" + +#: ../gio/gsettings-tool.c:131 +#, fuzzy, c-format +msgid "No such key '%s'\n" +msgstr "'%s' gibi bir anahtar yok\n" + +#: ../gio/gsettings-tool.c:493 +#, fuzzy, c-format +msgid "The provided value is outside of the valid range\n" +msgstr "Belirtilen değer geçerli aralığın dışında\n" + +#: ../gio/gsettings-tool.c:503 +#, fuzzy, c-format +#| msgid "failed to get memory" +msgid "Failed to set value\n" +msgstr "ANAHTAR'ın değerini DEĞER'e ata" + +#: ../gio/gsettings-tool.c:529 #, fuzzy -msgid "Do not give error for empty directory" -msgstr "Dizin dizin üzerine taşınamıyor" +msgid "Print help" +msgstr "Yardımı yazdır" -#: gio/gschema-compile.c:662 -msgid "Do not enforce key name restrictions" -msgstr "" +#: ../gio/gsettings-tool.c:535 +#, fuzzy +msgid "List the installed (non-relocatable) schemas" +msgstr "Yükli (yeniden konumlandırılamaz) şemaları listele" -#: gio/gschema-compile.c:674 +#: ../gio/gsettings-tool.c:541 +#, fuzzy +msgid "List the installed relocatable schemas" +msgstr "Yeniden konumlandırılabilir şemaları listele" + +#: ../gio/gsettings-tool.c:547 +#, fuzzy +msgid "List the keys in SCHEMA" +msgstr "ŞEMA içindeki anahtarları listele" + +#: ../gio/gsettings-tool.c:548 ../gio/gsettings-tool.c:554 +#: ../gio/gsettings-tool.c:591 +#, fuzzy +msgid "SCHEMA[:PATH]" +msgstr "ŞEMA[:YOL]" + +#: ../gio/gsettings-tool.c:553 +#, fuzzy +msgid "List the children of SCHEMA" +msgstr "ŞEMA altlarını listele" + +#: ../gio/gsettings-tool.c:559 msgid "" -"Compile all GSettings schema files into a schema cache.\n" -"Schema files are required to have the extension .gschema.xml,\n" -"and the cache file is called gschemas.compiled." +"List keys and values, recursively\n" +"If no SCHEMA is given, list all keys\n" msgstr "" -#: gio/gschema-compile.c:690 -#, c-format -msgid "You should give exactly one directory name\n" -msgstr "" +#: ../gio/gsettings-tool.c:561 +#, fuzzy +msgid "[SCHEMA[:PATH]]" +msgstr "ŞEMA[:YOL]" -#: gio/gschema-compile.c:729 -#, c-format -msgid "No schema files found\n" -msgstr "" - -#: gio/gsettings-tool.c:41 -#, c-format -msgid "" -"Commands:\n" -" help Show this information\n" -" get Get the value of a key\n" -" set Set the value of a key\n" -" monitor Monitor a key for changes\n" -" writable Check if a key is writable\n" -"\n" -"Use '%s COMMAND --help' to get help for individual commands.\n" -msgstr "" - -#: gio/gsettings-tool.c:102 gio/gsettings-tool.c:161 gio/gsettings-tool.c:252 -#: gio/gsettings-tool.c:325 -msgid "Specify the path for the schema" -msgstr "" - -#: gio/gsettings-tool.c:102 gio/gsettings-tool.c:161 gio/gsettings-tool.c:252 -#: gio/gsettings-tool.c:325 -msgid "PATH" -msgstr "" - -#: gio/gsettings-tool.c:110 gio/gsettings-tool.c:260 gio/gsettings-tool.c:333 -msgid "SCHEMA KEY" -msgstr "" - -#: gio/gsettings-tool.c:112 +#: ../gio/gsettings-tool.c:566 +#, fuzzy msgid "Get the value of KEY" +msgstr "ANAHTAR'ın değerini al" + +#: ../gio/gsettings-tool.c:567 ../gio/gsettings-tool.c:573 +#: ../gio/gsettings-tool.c:585 ../gio/gsettings-tool.c:597 +#, fuzzy +msgid "SCHEMA[:PATH] KEY" +msgstr "ŞEMA[:YOL] ANAHTAR" + +#: ../gio/gsettings-tool.c:572 +#, fuzzy +msgid "Query the range of valid values for KEY" +msgstr "ANAHTAR için geçerli değerler aralığını sorgula" + +#: ../gio/gsettings-tool.c:578 +#, fuzzy +msgid "Set the value of KEY to VALUE" +msgstr "ANAHTAR'ın değerini DEĞER'e ata" + +#: ../gio/gsettings-tool.c:579 +#, fuzzy +msgid "SCHEMA[:PATH] KEY VALUE" +msgstr "ŞEMA[:YOL] ANAHTAR DEĞER" + +#: ../gio/gsettings-tool.c:584 +#, fuzzy +msgid "Reset KEY to its default value" +msgstr "ANAHTAR'ı varsayılan değerine döndür" + +#: ../gio/gsettings-tool.c:590 +msgid "Reset all keys in SCHEMA to their defaults" msgstr "" -#: gio/gsettings-tool.c:114 gio/gsettings-tool.c:264 gio/gsettings-tool.c:340 +#: ../gio/gsettings-tool.c:596 +#, fuzzy +msgid "Check if KEY is writable" +msgstr "ANAHTAR'ın yazılabilir olup olmadığını kontrol et" + +#: ../gio/gsettings-tool.c:602 +#, fuzzy msgid "" -"Arguments:\n" -" SCHEMA The id of the schema\n" -" KEY The name of the key\n" +"Monitor KEY for changes.\n" +"If no KEY is specified, monitor all keys in SCHEMA.\n" +"Use ^C to stop monitoring.\n" msgstr "" +"Bir ANAHTAR'daki değişiklikleri gözlemle\n" +"Eğer hiçbir ANAHTAR belirtilmemişse, ŞEMA'daki tüm anahtarları gözlemle.\n" +"Gözlemlemeyi durdurmak için ^C kullanın.\n" -#: gio/gsettings-tool.c:169 -msgid "SCHEMA KEY VALUE" -msgstr "" +#: ../gio/gsettings-tool.c:605 +#, fuzzy +msgid "SCHEMA[:PATH] [KEY]" +msgstr "ŞEMA[:YOL] [ANAHTAR]" -#: gio/gsettings-tool.c:171 -msgid "Set the value of KEY" -msgstr "" - -#: gio/gsettings-tool.c:173 -msgid "" -"Arguments:\n" -" SCHEMA The id of the schema\n" -" KEY The name of the key\n" -" VALUE The value to set key to, as a serialized GVariant\n" -msgstr "" - -#: gio/gsettings-tool.c:212 +#: ../gio/gsettings-tool.c:609 #, fuzzy, c-format -msgid "Key %s is not writable\n" -msgstr "Tür %s sınıflandırılmış değil" - -#: gio/gsettings-tool.c:262 -msgid "Find out whether KEY is writable" -msgstr "" - -#: gio/gsettings-tool.c:336 msgid "" -"Monitor KEY for changes and print the changed values.\n" -"Monitoring will continue until the process is terminated." +"Unknown command %s\n" +"\n" +msgstr "" +"Bilinmeyen komut %s\n" +"\n" + +#: ../gio/gsettings-tool.c:617 +msgid "" +"Usage:\n" +" gsettings COMMAND [ARGS...]\n" +"\n" +"Commands:\n" +" help Show this information\n" +" list-schemas List installed schemas\n" +" list-relocatable-schemas List relocatable schemas\n" +" list-keys List keys in a schema\n" +" list-children List children of a schema\n" +" list-recursively List keys and values, recursively\n" +" range Queries the range of a key\n" +" get Get the value of a key\n" +" set Set the value of a key\n" +" reset Reset the value of a key\n" +" reset-recursively Reset all values in a given schema\n" +" writable Check if a key is writable\n" +" monitor Watch for changes\n" +"\n" +"Use 'gsettings help COMMAND' to get detailed help.\n" +"\n" msgstr "" -#: gio/gsettings-tool.c:399 +#: ../gio/gsettings-tool.c:639 #, fuzzy, c-format -msgid "Unknown command '%s'\n" -msgstr "Bilinmeyen seçenek %s" +msgid "" +"Usage:\n" +" gsettings %s %s\n" +"\n" +"%s\n" +"\n" +msgstr "" +"Kullanım:\n" +" gsettings %s %s\n" +"\n" +"%s\n" +"\n" -#: gio/gsocket.c:275 +#: ../gio/gsettings-tool.c:644 +#, fuzzy +msgid "Arguments:\n" +msgstr "Argümanlar:\n" + +#: ../gio/gsettings-tool.c:648 +#, fuzzy +msgid " COMMAND The (optional) command to explain\n" +msgstr " KOMUT Açıklanacak (isteğe bağlı) komut\n" + +#: ../gio/gsettings-tool.c:652 +#, fuzzy +msgid "" +" SCHEMA The name of the schema\n" +" PATH The path, for relocatable schemas\n" +msgstr "" +" ŞEMA Şemanın adı\n" +" YOL Yol, yeniden konumlandırılabilir şemalar için\n" + +#: ../gio/gsettings-tool.c:657 +#, fuzzy +msgid " KEY The (optional) key within the schema\n" +msgstr " ANAHTAR Şema içinde (isteğe bağlı) anahtar\n" + +#: ../gio/gsettings-tool.c:661 +#, fuzzy +msgid " KEY The key within the schema\n" +msgstr " ANAHTAR Şema içindeki anahtar\n" + +#: ../gio/gsettings-tool.c:665 +#, fuzzy +msgid " VALUE The value to set\n" +msgstr " DEĞER Atanacak değer\n" + +#: ../gio/gsettings-tool.c:757 +#, fuzzy, c-format +msgid "Empty schema name given\n" +msgstr "Boş şema adı verildi" + +#: ../gio/gsocket.c:277 msgid "Invalid socket, not initialized" msgstr "Geçersiz soket, başlatılmamış" -#: gio/gsocket.c:282 +#: ../gio/gsocket.c:284 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Geçersiz soket, başlatma başarısız oldu: %s" -#: gio/gsocket.c:290 +#: ../gio/gsocket.c:292 msgid "Socket is already closed" msgstr "Soket zaten kapalı" -#: gio/gsocket.c:298 gio/gsocket.c:2609 gio/gsocket.c:2653 +#: ../gio/gsocket.c:300 ../gio/gsocket.c:2774 ../gio/gsocket.c:2818 +#, fuzzy msgid "Socket I/O timed out" -msgstr "" +msgstr "Soket Girdi/Çıktı zaman aşımı" -#: gio/gsocket.c:420 +#: ../gio/gsocket.c:443 #, c-format msgid "creating GSocket from fd: %s" msgstr "fd'den GSocket oluşturuluyor: %s" -#: gio/gsocket.c:454 gio/gsocket.c:468 gio/gsocket.c:2020 +#: ../gio/gsocket.c:477 ../gio/gsocket.c:493 ../gio/gsocket.c:2140 #, c-format msgid "Unable to create socket: %s" msgstr "Soket oluşturulamadı: %s" -#: gio/gsocket.c:454 +#: ../gio/gsocket.c:477 msgid "Unknown protocol was specified" msgstr "Bilinmeyen protokol belirtildi" -#: gio/gsocket.c:1218 +#: ../gio/gsocket.c:1247 #, c-format msgid "could not get local address: %s" msgstr "yerel adres alınamadı: %s" -#: gio/gsocket.c:1251 +#: ../gio/gsocket.c:1290 #, c-format msgid "could not get remote address: %s" msgstr "uzaktaki adres alınamadı: %s" -#: gio/gsocket.c:1309 +#: ../gio/gsocket.c:1351 #, c-format msgid "could not listen: %s" msgstr "dinlenemedi: %s" -#: gio/gsocket.c:1383 +#: ../gio/gsocket.c:1425 #, c-format msgid "Error binding to address: %s" msgstr "Adrese bağlarken hata: %s" -#: gio/gsocket.c:1503 +#: ../gio/gsocket.c:1545 #, c-format msgid "Error accepting connection: %s" msgstr "Bağlantı kabul edilirken hata: %s" -#: gio/gsocket.c:1616 +#: ../gio/gsocket.c:1662 msgid "Error connecting: " msgstr "Bağlarken hata:" -#: gio/gsocket.c:1620 +#: ../gio/gsocket.c:1667 msgid "Connection in progress" msgstr "Bağlantı devam ediyor" -#: gio/gsocket.c:1625 +#: ../gio/gsocket.c:1674 #, c-format msgid "Error connecting: %s" msgstr "Bağlarken hata: %s" -#: gio/gsocket.c:1668 +#: ../gio/gsocket.c:1717 ../gio/gsocket.c:3534 #, c-format msgid "Unable to get pending error: %s" msgstr "Bekleyen hata alınamıyor: %s" -#: gio/gsocket.c:1764 +#: ../gio/gsocket.c:1852 #, c-format msgid "Error receiving data: %s" msgstr "Veri alırken hata: %s" -#: gio/gsocket.c:1907 +#: ../gio/gsocket.c:2027 #, c-format msgid "Error sending data: %s" msgstr "Veri gönderirken hata: %s" -#: gio/gsocket.c:2099 +#: ../gio/gsocket.c:2219 #, c-format msgid "Error closing socket: %s" msgstr "Soket kapatılırken hata: %s" -#: gio/gsocket.c:2602 +#: ../gio/gsocket.c:2767 #, c-format msgid "Waiting for socket condition: %s" msgstr "Soket durumu bekleniyor: %s" -#: gio/gsocket.c:2884 +#: ../gio/gsocket.c:3057 msgid "GSocketControlMessage not supported on windows" msgstr "GSocketControlMessage windows'ta desteklenmiyor" -#: gio/gsocket.c:3143 gio/gsocket.c:3284 +#: ../gio/gsocket.c:3318 ../gio/gsocket.c:3454 #, c-format msgid "Error receiving message: %s" msgstr "Mesaj alma hatası: %s" -#: gio/gsocketclient.c:521 gio/gsocketclient.c:770 +#: ../gio/gsocket.c:3549 +#, fuzzy +msgid "g_socket_get_credentials not implemented for this OS" +msgstr "bu işletim sistemi için g_socket_get_credentials gerçeklenmedi" + +#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368 msgid "Unknown error on connect" msgstr "Bağlanırken bilinmeyen bir hata" -#: gio/gsocketlistener.c:192 +#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252 +#, fuzzy +msgid "Trying to proxy over non-TCP connection is not supported." +msgstr "TCP olmayan bağlantılar üzerinden vekillik desteklenmiyor." + +#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277 +#, fuzzy, c-format +msgid "Proxy protocol '%s' is not supported." +msgstr "'%s' vekil protokolü desteklenmiyor" + +#: ../gio/gsocketlistener.c:191 msgid "Listener is already closed" msgstr "Dinleyici zaten kapalı" -#: gio/gsocketlistener.c:233 +#: ../gio/gsocketlistener.c:232 msgid "Added socket is closed" msgstr "Eklenen soket kapalı" -#: gio/gthemedicon.c:499 +#: ../gio/gsocks4aproxy.c:121 +#, fuzzy, c-format +msgid "SOCKSv4 does not support IPv6 address '%s'" +msgstr "SOCKSv4, '%s' IPv6 adresini desteklemiyor" + +#: ../gio/gsocks4aproxy.c:139 +#, fuzzy, c-format +msgid "SOCKSv4 implementation limits username to %i characters" +msgstr "SOCKSv4 gerçeklemesi, kullanıcı adını %i karakterle sınırlandırıyor" + +#: ../gio/gsocks4aproxy.c:157 +#, fuzzy, c-format +msgid "SOCKSv4a implementation limits hostname to %i characters" +msgstr "SOCKSv4 gerçeklemesi, makine adını %i karakterle sınırlandırıyor" + +#: ../gio/gsocks4aproxy.c:183 +#, fuzzy +msgid "The server is not a SOCKSv4 proxy server." +msgstr "Bu sunucu bir SOCKSv4 vekil sunucusu değil." + +#: ../gio/gsocks4aproxy.c:190 +#, fuzzy +msgid "Connection through SOCKSv4 server was rejected" +msgstr "SOCKSv4 sunucusu ile bağlantı, reddedildi" + +#: ../gio/gsocks5proxy.c:155 ../gio/gsocks5proxy.c:328 +#: ../gio/gsocks5proxy.c:338 +#, fuzzy +msgid "The server is not a SOCKSv5 proxy server." +msgstr "Sunucu, bir SOCKSv5 vekil sunucusu değil." + +#: ../gio/gsocks5proxy.c:169 +#, fuzzy +msgid "The SOCKSv5 proxy requires authentication." +msgstr "SOCKSv5 vekil sunucusu kimlik doğrulatma gerektiriyor." + +#: ../gio/gsocks5proxy.c:179 +#, fuzzy +msgid "" +"The SOCKSv5 proxy requires an authentication method that is not supported by " +"GLib." +msgstr "" +"SOCKSv5 vekil sunucusu, Glib tarafından desteklenmeyen bir kimlik doğrulama " +"yöntemini gereksiniyor." + +#: ../gio/gsocks5proxy.c:208 +#, fuzzy, c-format +msgid "Username or password is too long for SOCKSv5 protocol (max. is %i)." +msgstr "Kullanıcı adı veya parola SOCKSv5 protokolü için çok uzun (azami %i)." + +#: ../gio/gsocks5proxy.c:239 +#, fuzzy +msgid "SOCKSv5 authentication failed due to wrong username or password." +msgstr "" +"Yanlış kullanıcı adı veya paroladan dolayı SOCKSv5 kimlik doğrulatma " +"başarısız oldu." + +#: ../gio/gsocks5proxy.c:289 +#, fuzzy, c-format +msgid "Hostname '%s' too long for SOCKSv5 protocol (maximum is %i bytes)" +msgstr "'%s' makine adı SOCKSv5 protokolü için çok uzun (azami %i bayt)" + +#: ../gio/gsocks5proxy.c:352 +#, fuzzy +msgid "The SOCKSv5 proxy server uses unkown address type." +msgstr "SOCKSv5 vekil sunucusu, bilinmeyen bir adres türü kullanıyor." + +#: ../gio/gsocks5proxy.c:359 +#, fuzzy +msgid "Internal SOCKSv5 proxy server error." +msgstr "İçsel SOCKSv5 vekil sunucu hatası." + +#: ../gio/gsocks5proxy.c:365 +#, fuzzy +msgid "SOCKSv5 connection not allowed by ruleset." +msgstr "Kural kümesi tarafından, SOCKSv5 bağlantısına izin verilmiyor." + +#: ../gio/gsocks5proxy.c:372 +#, fuzzy +msgid "Host unreachable through SOCKSv5 server." +msgstr "SOCKSv5 sunucusu ile makineye erişim sağlanamıyor." + +#: ../gio/gsocks5proxy.c:378 +#, fuzzy +msgid "Network unreachable through SOCKSv5 proxy." +msgstr "SOCKSv5 vekili ile ağa erişilemiyor" + +#: ../gio/gsocks5proxy.c:384 +#, fuzzy +msgid "Connection refused through SOCKSv5 proxy." +msgstr "SOCKSv5 ile bağlantı reddedildi." + +#: ../gio/gsocks5proxy.c:390 +#, fuzzy +msgid "SOCKSv5 proxy does not support 'connect' command." +msgstr "SOCKSv5 vekili, 'connect' komutunu desteklemiyor." + +#: ../gio/gsocks5proxy.c:396 +#, fuzzy +msgid "SOCKSv5 proxy does not support provided address type." +msgstr "Sağlanan adres türü SOCKSv5 vekili tarafından desteklenmiyor." + +#: ../gio/gsocks5proxy.c:402 +#, fuzzy +msgid "Unknown SOCKSv5 proxy error." +msgstr "Bilinmeyen SOCKSv5 vekil hatası." + +#: ../gio/gthemedicon.c:498 #, c-format msgid "Can't handle version %d of GThemedIcon encoding" msgstr "GThemedIcon kodlaması %d sürümü işlenemiyor" -#: gio/gunixconnection.c:165 gio/gunixconnection.c:502 +#: ../gio/gtlscertificate.c:228 +#, fuzzy +msgid "No PEM-encoded certificate found" +msgstr "Hiç PEM-encoded sertifika bulunamadı" + +#: ../gio/gtlscertificate.c:237 +#, fuzzy +msgid "Could not parse PEM-encoded certificate" +msgstr "PEM-encoded sertifika ayrıştırılamadı" + +#: ../gio/gtlscertificate.c:258 +#, fuzzy +msgid "Could not parse PEM-encoded private key" +msgstr "PEM-encoded özel anahtar ayrıştırılamadı" + +#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:506 #, c-format msgid "Expecting 1 control message, got %d" msgstr "1 kontrol mesajı bekleniyor, %d alındı" -#: gio/gunixconnection.c:178 gio/gunixconnection.c:512 +#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:516 msgid "Unexpected type of ancillary data" msgstr "Yardımcı veri'nin beklenmeyen türü" -#: gio/gunixconnection.c:196 +#: ../gio/gunixconnection.c:195 #, c-format msgid "Expecting one fd, but got %d\n" msgstr "Bir fd bekleniyordu, ancak %d alındı\n" -#: gio/gunixconnection.c:212 +#: ../gio/gunixconnection.c:211 msgid "Received invalid fd" msgstr "Geçersiz fd alındı" -#: gio/gunixconnection.c:359 +#: ../gio/gunixconnection.c:359 #, fuzzy msgid "Error sending credentials: " -msgstr "Veri gönderirken hata: %s" +msgstr "Kimlik bilgisi göndermede hata:" -#: gio/gunixconnection.c:436 -#, c-format +#: ../gio/gunixconnection.c:439 +#, fuzzy, c-format msgid "Error checking if SO_PASSCRED is enabled for socket: %s" -msgstr "" +msgstr "Soket için SO_PASSCRED'in etkin olup olmadığını kontrol hatası: %s" -#: gio/gunixconnection.c:445 -#, c-format +#: ../gio/gunixconnection.c:448 +#, fuzzy, c-format msgid "" "Unexpected option length while checking if SO_PASSCRED is enabled for " "socket. Expected %d bytes, got %d" msgstr "" +"SO_PASSCRED'in soket için etkin olup olmadığı kontrol edilirken beklenmeyen " +"seçenek uzunluğu. %d bayt bekleniyordu, fakat %d bayt bulundu." -#: gio/gunixconnection.c:462 +#: ../gio/gunixconnection.c:465 #, fuzzy, c-format msgid "Error enabling SO_PASSCRED: %s" -msgstr "Dosya yeniden adlandırılırken hata: %s" +msgstr "SO_PASSCRED etkinleştirmede hata: %s" -#: gio/gunixconnection.c:492 +#: ../gio/gunixconnection.c:496 +#, fuzzy msgid "" "Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" +"Kimlik bilgileri almak için bir bayt okunması bekleniyordu, sıfır bayt okundu" -#: gio/gunixconnection.c:535 -#, c-format +#: ../gio/gunixconnection.c:539 +#, fuzzy, c-format msgid "Error while disabling SO_PASSCRED: %s" -msgstr "" +msgstr "SO_PASSCRED devre dışı bırakılırken hata: %s" -#: gio/gunixinputstream.c:354 gio/gunixinputstream.c:374 -#: gio/gunixinputstream.c:452 gio/gunixoutputstream.c:439 +#: ../gio/gunixinputstream.c:368 ../gio/gunixinputstream.c:388 +#: ../gio/gunixinputstream.c:466 #, c-format msgid "Error reading from unix: %s" msgstr "Unix'den okurken hata: %s" -#: gio/gunixinputstream.c:407 gio/gunixinputstream.c:589 -#: gio/gunixoutputstream.c:394 gio/gunixoutputstream.c:545 +#: ../gio/gunixinputstream.c:421 ../gio/gunixinputstream.c:601 +#: ../gio/gunixoutputstream.c:407 ../gio/gunixoutputstream.c:556 #, c-format msgid "Error closing unix: %s" msgstr "Unix kapatılırken hata: %s" -#: gio/gunixmounts.c:1846 gio/gunixmounts.c:1883 +#: ../gio/gunixmounts.c:1848 ../gio/gunixmounts.c:1885 msgid "Filesystem root" msgstr "Dosya sistemi kök dizini" -#: gio/gunixoutputstream.c:340 gio/gunixoutputstream.c:361 +#: ../gio/gunixoutputstream.c:353 ../gio/gunixoutputstream.c:374 +#: ../gio/gunixoutputstream.c:452 #, c-format msgid "Error writing to unix: %s" msgstr "Unix'e yazılırken hata: %s" -#: gio/gunixsocketaddress.c:245 +#: ../gio/gunixsocketaddress.c:244 msgid "Abstract unix domain socket addresses not supported on this system" msgstr "Soyut unix soket adresleri bu sistemde desteklenmiyor" -#: gio/gvolume.c:407 +#: ../gio/gvolume.c:408 msgid "volume doesn't implement eject" msgstr "volume eject uygulamıyor" #. Translators: This is an error #. * message for volume objects that #. * don't implement any of eject or eject_with_operation. -#: gio/gvolume.c:486 +#: ../gio/gvolume.c:488 msgid "volume doesn't implement eject or eject_with_operation" msgstr "sistem, eject ya da eject_with_operation uygulamıyor" -#: gio/gwin32appinfo.c:277 +#: ../gio/gwin32appinfo.c:276 msgid "Can't find application" msgstr "Uygulama bulunamıyor" -#: gio/gwin32appinfo.c:300 +#: ../gio/gwin32appinfo.c:299 #, c-format msgid "Error launching application: %s" msgstr "Uygulama başlatılırken hata: %s" -#: gio/gwin32appinfo.c:336 +#: ../gio/gwin32appinfo.c:335 msgid "URIs not supported" msgstr "URI'ler desteklenmiyor" -#: gio/gwin32appinfo.c:358 +#: ../gio/gwin32appinfo.c:357 msgid "association changes not supported on win32" msgstr "eşleştirme değişimleri win32 üzerinde desteklenmiyor" -#: gio/gwin32appinfo.c:370 +#: ../gio/gwin32appinfo.c:369 msgid "Association creation not supported on win32" msgstr "Eşleştirme oluşturulması win32 üzerinde desteklenmiyor" -#: gio/gwin32inputstream.c:319 +#: ../gio/gwin32inputstream.c:318 #, fuzzy, c-format msgid "Error reading from handle: %s" -msgstr "Dosyadan okunurken hata: %s" +msgstr "Tutamaçtan okumada hata: %s" -#: gio/gwin32inputstream.c:349 gio/gwin32outputstream.c:349 +#: ../gio/gwin32inputstream.c:348 ../gio/gwin32outputstream.c:348 #, fuzzy, c-format msgid "Error closing handle: %s" -msgstr "Dosya kapatılırken hata: %s" +msgstr "Tutamacı kapatmada hata: %s" -#: gio/gwin32outputstream.c:319 +#: ../gio/gwin32outputstream.c:318 #, fuzzy, c-format msgid "Error writing to handle: %s" -msgstr "Dosyaya yazılırken hata: %s" +msgstr "Tutamaca yazmada hata: %s" -#: gio/gzlibcompressor.c:279 gio/gzlibdecompressor.c:250 -#, fuzzy +#: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349 msgid "Not enough memory" -msgstr "yetersiz bellek" +msgstr "Yeterli bellek yok" -#: gio/gzlibcompressor.c:286 gio/gzlibdecompressor.c:257 -#, fuzzy, c-format +#: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356 +#, c-format msgid "Internal error: %s" -msgstr "dahili hata" +msgstr "İç hata: %s" -#: gio/gzlibcompressor.c:299 gio/gzlibdecompressor.c:271 +#: ../gio/gzlibcompressor.c:416 ../gio/gzlibdecompressor.c:370 msgid "Need more input" -msgstr "" +msgstr "Daha fazla girdi gerekli" -#: gio/gzlibdecompressor.c:243 -#, fuzzy +#: ../gio/gzlibdecompressor.c:342 msgid "Invalid compressed data" -msgstr "Geçersiz makine adı" +msgstr "Geçersiz sıkıştırılmış veri" + +#, fuzzy +#~ msgid "Do not give error for empty directory" +#~ msgstr "Dizin dizin üzerine taşınamıyor" + +#, fuzzy +#~ msgid "Key %s is not writable\n" +#~ msgstr "Tür %s sınıflandırılmış değil" #, fuzzy #~ msgid "Invalid UTF-8 sequence in input" From df45856bba14b93fedcb876fe04e0bbf0d159909 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 20 Apr 2011 11:41:47 -0400 Subject: [PATCH 61/85] GSimpleAsyncResult: push thread context around callback When an old pre-thread-default-context API that takes an explicit GMainContext wants to call a gio API, it must call g_main_context_push_thread_default() before, and g_main_context_pop_thread_default() after the gio call, so that the gio method will return its result to the desired GMainContext. But this fails for methods like g_socket_client_connect_async() that make a chain of multiple async calls, since the pushed/popped context will only affect the initial call. Fix this by having GSimpleAsyncResult itself push/pop the context around the callback invocation, so that if the callback queues another async request, it will stay in the same context as the original one. https://bugzilla.gnome.org/show_bug.cgi?id=646957 --- gio/gsimpleasyncresult.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gio/gsimpleasyncresult.c b/gio/gsimpleasyncresult.c index b58b2e5cd..4fd5da751 100644 --- a/gio/gsimpleasyncresult.c +++ b/gio/gsimpleasyncresult.c @@ -744,9 +744,13 @@ g_simple_async_result_complete (GSimpleAsyncResult *simple) #endif if (simple->callback) - simple->callback (simple->source_object, - G_ASYNC_RESULT (simple), - simple->user_data); + { + g_main_context_push_thread_default (simple->context); + simple->callback (simple->source_object, + G_ASYNC_RESULT (simple), + simple->user_data); + g_main_context_pop_thread_default (simple->context); + } } static gboolean From 1056f2240c46081d8f55fe6f121ddee6a0370d96 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 26 Apr 2011 13:28:17 -0400 Subject: [PATCH 62/85] Squash some uninitialized variable compiler warnings From GCC 4.6. --- gio/glocalfileinfo.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c index 30ea97bab..5e4def74a 100644 --- a/gio/glocalfileinfo.c +++ b/gio/glocalfileinfo.c @@ -1883,7 +1883,7 @@ set_unix_mode (char *filename, const GFileAttributeValue *value, GError **error) { - guint32 val; + guint32 val = 0; int res = 0; if (!get_uint32 (value, &val, error)) @@ -1934,7 +1934,7 @@ set_unix_uid_gid (char *filename, GError **error) { int res; - guint32 val; + guint32 val = 0; uid_t uid; gid_t gid; @@ -2070,8 +2070,8 @@ set_mtime_atime (char *filename, GError **error) { int res; - guint64 val; - guint32 val_usec; + guint64 val = 0; + guint32 val_usec = 0; struct stat statbuf; gboolean got_stat = FALSE; struct timeval times[2] = { {0, 0}, {0, 0} }; From 2a3f7f49b46abdaf2d82e704a3ee044ed57fb61f Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 26 Apr 2011 15:08:54 -0400 Subject: [PATCH 63/85] GDesktopAppInfo: Add "filename" property for bindings GDesktopAppInfo violates the GObject rule that your C constructors should just be thin wrappers around g_object_new(). While GKeyFile isn't introspctable, this patch allows from JavaScript: var app = new Gio.DesktopAppInfo({ filename: '/path/to/foo.desktop' }); https://bugzilla.gnome.org/show_bug.cgi?id=648425 --- gio/gdesktopappinfo.c | 150 ++++++++++++++++++++++++++++++++---------- 1 file changed, 116 insertions(+), 34 deletions(-) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index d9d17b291..1236d3651 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -66,6 +66,11 @@ #define MIME_CACHE_GROUP "MIME Cache" #define FULL_NAME_KEY "X-GNOME-FullName" +enum { + PROP_0, + PROP_FILENAME +}; + static void g_desktop_app_info_iface_init (GAppInfoIface *iface); static GList * get_all_desktop_entries_for_mime_type (const char *base_mime_type, const char **except, @@ -176,12 +181,64 @@ g_desktop_app_info_finalize (GObject *object) G_OBJECT_CLASS (g_desktop_app_info_parent_class)->finalize (object); } +static void +g_desktop_app_info_set_property(GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GDesktopAppInfo *self = G_DESKTOP_APP_INFO (object); + + switch (prop_id) + { + case PROP_FILENAME: + self->filename = g_value_dup_string (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +g_desktop_app_info_get_property(GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GDesktopAppInfo *self = G_DESKTOP_APP_INFO (object); + + switch (prop_id) + { + case PROP_FILENAME: + g_value_set_string (value, self->filename); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + static void g_desktop_app_info_class_init (GDesktopAppInfoClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + gobject_class->get_property = g_desktop_app_info_get_property; + gobject_class->set_property = g_desktop_app_info_set_property; gobject_class->finalize = g_desktop_app_info_finalize; + + /** + * GDesktopAppInfo:filename + * + * The origin filename of this #GDesktopAppInfo + */ + g_object_class_install_property (gobject_class, + PROP_FILENAME, + g_param_spec_string ("filename", "Filename", "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void @@ -205,29 +262,19 @@ binary_from_exec (const char *exec) } -/** - * g_desktop_app_info_new_from_keyfile: - * @key_file: an opened #GKeyFile - * - * Creates a new #GDesktopAppInfo. - * - * Returns: a new #GDesktopAppInfo or %NULL on error. - * - * Since: 2.18 - **/ -GDesktopAppInfo * -g_desktop_app_info_new_from_keyfile (GKeyFile *key_file) +static gboolean +g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info, + GKeyFile *key_file) { - GDesktopAppInfo *info; char *start_group; char *type; char *try_exec; - + start_group = g_key_file_get_start_group (key_file); if (start_group == NULL || strcmp (start_group, G_KEY_FILE_DESKTOP_GROUP) != 0) { g_free (start_group); - return NULL; + return FALSE; } g_free (start_group); @@ -238,7 +285,7 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file) if (type == NULL || strcmp (type, G_KEY_FILE_DESKTOP_TYPE_APPLICATION) != 0) { g_free (type); - return NULL; + return FALSE; } g_free (type); @@ -253,14 +300,11 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file) if (t == NULL) { g_free (try_exec); - return NULL; + return FALSE; } g_free (t); } - info = g_object_new (G_TYPE_DESKTOP_APP_INFO, NULL); - info->filename = NULL; - info->name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NAME, NULL, NULL); info->fullname = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, FULL_NAME_KEY, NULL, NULL); info->comment = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_COMMENT, NULL, NULL); @@ -311,6 +355,53 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file) info->path = NULL; } + return TRUE; +} + +static gboolean +g_desktop_app_info_load_file (GDesktopAppInfo *self) +{ + GKeyFile *key_file; + gboolean retval = FALSE; + + g_return_val_if_fail (self->filename != NULL, FALSE); + + key_file = g_key_file_new (); + + if (g_key_file_load_from_file (key_file, + self->filename, + G_KEY_FILE_NONE, + NULL)) + { + retval = g_desktop_app_info_load_from_keyfile (self, key_file); + } + + g_key_file_free (key_file); + return retval; +} + +/** + * g_desktop_app_info_new_from_keyfile: + * @key_file: an opened #GKeyFile + * + * Creates a new #GDesktopAppInfo. + * + * Returns: a new #GDesktopAppInfo or %NULL on error. + * + * Since: 2.18 + **/ +GDesktopAppInfo * +g_desktop_app_info_new_from_keyfile (GKeyFile *key_file) +{ + GDesktopAppInfo *info; + + info = g_object_new (G_TYPE_DESKTOP_APP_INFO, NULL); + info->filename = NULL; + if (!g_desktop_app_info_load_from_keyfile (info, key_file)) + { + g_object_unref (info); + return NULL; + } return info; } @@ -325,23 +416,14 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file) GDesktopAppInfo * g_desktop_app_info_new_from_filename (const char *filename) { - GKeyFile *key_file; GDesktopAppInfo *info = NULL; - key_file = g_key_file_new (); - - if (g_key_file_load_from_file (key_file, - filename, - G_KEY_FILE_NONE, - NULL)) + info = g_object_new (G_TYPE_DESKTOP_APP_INFO, "filename", filename, NULL); + if (!g_desktop_app_info_load_file (info)) { - info = g_desktop_app_info_new_from_keyfile (key_file); - if (info) - info->filename = g_strdup (filename); - } - - g_key_file_free (key_file); - + g_object_unref (info); + return NULL; + } return info; } From 440bd2a97574e63c39f0c1e2dbf8a17c2635b0e9 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 26 Apr 2011 22:08:24 -0400 Subject: [PATCH 64/85] GSequence: Make g_sequence_iter_move behave as documented As pointed out in bug 658313, moving before the begin iter is supposed to return the begin iter, not the end iter. Also add a test for this behaviour. --- glib/gsequence.c | 8 +++++++- glib/tests/sequence.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/glib/gsequence.c b/glib/gsequence.c index fa8534700..2654f7b4e 100644 --- a/glib/gsequence.c +++ b/glib/gsequence.c @@ -1422,12 +1422,18 @@ g_sequence_iter_move (GSequenceIter *iter, gint delta) { gint new_pos; + gint len; g_return_val_if_fail (iter != NULL, NULL); + len = g_sequence_get_length (get_sequence (iter)); + new_pos = node_get_pos (iter) + delta; - new_pos = clamp_position (get_sequence (iter), new_pos); + if (new_pos < 0) + new_pos = 0; + else if (new_pos > len) + new_pos = len; return node_get_by_pos (iter, new_pos); } diff --git a/glib/tests/sequence.c b/glib/tests/sequence.c index e2a58f333..029f12bc9 100644 --- a/glib/tests/sequence.c +++ b/glib/tests/sequence.c @@ -1210,6 +1210,35 @@ test_out_of_range_jump (void) g_assert (g_sequence_iter_is_begin (iter)); g_assert (g_sequence_iter_is_end (iter)); + + g_sequence_free (seq); +} + +static void +test_iter_move (void) +{ + GSequence *seq = g_sequence_new (NULL); + GSequenceIter *iter; + gint i; + + for (i = 0; i < 10; ++i) + g_sequence_append (seq, GINT_TO_POINTER (i)); + + iter = g_sequence_get_begin_iter (seq); + iter = g_sequence_iter_move (iter, 5); + g_assert_cmpint (GPOINTER_TO_INT (g_sequence_get (iter)), ==, 5); + + iter = g_sequence_iter_move (iter, -10); + g_assert (g_sequence_iter_is_begin (iter)); + + iter = g_sequence_get_end_iter (seq); + iter = g_sequence_iter_move (iter, -5); + g_assert_cmpint (GPOINTER_TO_INT (g_sequence_get (iter)), ==, 5); + + iter = g_sequence_iter_move (iter, 10); + g_assert (g_sequence_iter_is_end (iter)); + + g_sequence_free (seq); } static int @@ -1326,6 +1355,8 @@ test_stable_sort (void) iter = g_sequence_iter_next (iter); g_sequence_check (seq); } + + g_sequence_free (seq); } int @@ -1340,6 +1371,7 @@ main (int argc, /* Standalone tests */ g_test_add_func ("/sequence/out-of-range-jump", test_out_of_range_jump); + g_test_add_func ("/sequence/iter-move", test_iter_move); g_test_add_func ("/sequence/insert-sorted-non-pointer", test_insert_sorted_non_pointer); g_test_add_func ("/sequence/stable-sort", test_stable_sort); From 122a53a9bc546e4705d20b15c703b8ba354e967b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 26 Apr 2011 22:51:54 -0400 Subject: [PATCH 65/85] Fix up some harmless FALSE <> NULL confusions Reported in bug 643134. --- gio/gdbusconnection.c | 2 +- gio/gdbusmessage.c | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c index 999cb8043..6b96ea14f 100644 --- a/gio/gdbusconnection.c +++ b/gio/gdbusconnection.c @@ -1992,7 +1992,7 @@ g_dbus_connection_send_message_with_reply_sync (GDBusConnection *connection, g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); g_return_val_if_fail (G_IS_DBUS_MESSAGE (message), NULL); - g_return_val_if_fail ((flags & G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL) || !g_dbus_message_get_locked (message), FALSE); + g_return_val_if_fail ((flags & G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL) || !g_dbus_message_get_locked (message), NULL); g_return_val_if_fail (timeout_msec >= 0 || timeout_msec == -1, NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c index 94a1de339..5fc67e7f1 100644 --- a/gio/gdbusmessage.c +++ b/gio/gdbusmessage.c @@ -3197,8 +3197,8 @@ g_dbus_message_lock (GDBusMessage *message) * This operation can fail if e.g. @message contains file descriptors * and the per-process or system-wide open files limit is reached. * - * Returns: (transfer full): A new #GDBusMessage or %NULL if @error is set. Free with - * g_object_unref(). + * Returns: (transfer full): A new #GDBusMessage or %NULL if @error is set. + * Free with g_object_unref(). * * Since: 2.26 */ @@ -3212,7 +3212,7 @@ g_dbus_message_copy (GDBusMessage *message, GVariant *header_value; g_return_val_if_fail (G_IS_DBUS_MESSAGE (message), NULL); - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); ret = g_dbus_message_new (); ret->type = message->type; @@ -3255,4 +3255,3 @@ g_dbus_message_copy (GDBusMessage *message, out: return ret; } - From 71c7e49058c226cd3b34e85c1b25428c1eb80b84 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Fri, 4 Mar 2011 18:21:51 +0100 Subject: [PATCH 66/85] Use G_SIGNAL_MUST_COLLECT for VARIANT signals Bug #643624. --- gio/gactiongroup.c | 4 +++- gio/gdbusproxy.c | 10 ++++------ gio/gsimpleaction.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gio/gactiongroup.c b/gio/gactiongroup.c index 735f016be..00e14846f 100644 --- a/gio/gactiongroup.c +++ b/gio/gactiongroup.c @@ -141,7 +141,9 @@ g_action_group_default_init (GActionGroupInterface *class) g_action_group_signals[SIGNAL_ACTION_STATE_CHANGED] = g_signal_new (I_("action-state-changed"), G_TYPE_ACTION_GROUP, - G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + G_SIGNAL_RUN_LAST | + G_SIGNAL_DETAILED | + G_SIGNAL_MUST_COLLECT, G_STRUCT_OFFSET (GActionGroupInterface, action_state_changed), NULL, NULL, diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c index e9e7ecf4c..215992875 100644 --- a/gio/gdbusproxy.c +++ b/gio/gdbusproxy.c @@ -497,7 +497,7 @@ g_dbus_proxy_class_init (GDBusProxyClass *klass) */ signals[PROPERTIES_CHANGED_SIGNAL] = g_signal_new ("g-properties-changed", G_TYPE_DBUS_PROXY, - G_SIGNAL_RUN_LAST, + G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT, G_STRUCT_OFFSET (GDBusProxyClass, g_properties_changed), NULL, NULL, @@ -520,7 +520,7 @@ g_dbus_proxy_class_init (GDBusProxyClass *klass) */ signals[SIGNAL_SIGNAL] = g_signal_new ("g-signal", G_TYPE_DBUS_PROXY, - G_SIGNAL_RUN_LAST, + G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT, G_STRUCT_OFFSET (GDBusProxyClass, g_signal), NULL, NULL, @@ -1029,14 +1029,13 @@ on_name_owner_changed (GDBusConnection *connection, g_hash_table_size (proxy->priv->properties) > 0) { GVariantBuilder builder; - GVariant *changed_properties; GPtrArray *invalidated_properties; GHashTableIter iter; const gchar *key; /* Build changed_properties (always empty) and invalidated_properties ... */ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); - changed_properties = g_variant_builder_end (&builder); + invalidated_properties = g_ptr_array_new_with_free_func (g_free); g_hash_table_iter_init (&iter, proxy->priv->properties); while (g_hash_table_iter_next (&iter, (gpointer) &key, NULL)) @@ -1049,9 +1048,8 @@ on_name_owner_changed (GDBusConnection *connection, /* ... and finally emit the ::g-properties-changed signal */ g_signal_emit (proxy, signals[PROPERTIES_CHANGED_SIGNAL], 0, - changed_properties, + g_variant_builder_end (&builder) /* consumed */, (const gchar* const *) invalidated_properties->pdata); - g_variant_unref (changed_properties); g_ptr_array_unref (invalidated_properties); } g_object_notify (G_OBJECT (proxy), "g-name-owner"); diff --git a/gio/gsimpleaction.c b/gio/gsimpleaction.c index 388ead3de..2b06f2df8 100644 --- a/gio/gsimpleaction.c +++ b/gio/gsimpleaction.c @@ -323,7 +323,7 @@ g_simple_action_class_init (GSimpleActionClass *class) g_simple_action_signals[SIGNAL_ACTIVATE] = g_signal_new (I_("activate"), G_TYPE_SIMPLE_ACTION, - G_SIGNAL_RUN_LAST, + G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT, G_STRUCT_OFFSET (GSimpleActionClass, activate), NULL, NULL, g_cclosure_marshal_VOID__VARIANT, From 6dcf505346adcfaac639f0be074b5aec7f67f3f8 Mon Sep 17 00:00:00 2001 From: Murray Cumming Date: Mon, 4 Apr 2011 10:01:51 +0200 Subject: [PATCH 67/85] GDBusServer: Documentation: Improvements. Provide a fuller description and lead people away if they arrived here just looking for a way to provide a regular D-Bus service. https://bugzilla.gnome.org/show_bug.cgi?id=646425 --- gio/gdbusserver.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gio/gdbusserver.c b/gio/gdbusserver.c index 964abe77f..ab0bad0f6 100644 --- a/gio/gdbusserver.c +++ b/gio/gdbusserver.c @@ -63,7 +63,13 @@ * @include: gio/gio.h * * #GDBusServer is a helper for listening to and accepting D-Bus - * connections. + * connections. This can be used to create a new D-Bus server, allowing two + * peers to use the D-Bus protocol for their own specialized communication. + * A server instance provided in this way will not perform message routing or + * implement the org.freedesktop.DBus interface. + * + * To just export an object on a well-known name on a message bus, such as the + * session or system bus, you should instead use g_bus_own_name(). * * D-Bus peer-to-peer exampleFIXME: MISSING XINCLUDE CONTENT */ From fdf83b5108f03aed1b1fa0f5e6b23a5a83c149cd Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 26 Apr 2011 23:26:58 -0400 Subject: [PATCH 68/85] Fix mailing list link in README Patch by Thomas Andersen, bug 647594 --- README.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.in b/README.in index 7a5bf9977..c0f6a8a18 100644 --- a/README.in +++ b/README.in @@ -14,7 +14,7 @@ The official web site is: http://www.gtk.org/ Information about mailing lists can be found at - http://www.gtk.org/mailinglists.html + http://www.gtk.org/mailing-lists.html To subscribe: mail -s subscribe gtk-list-request@gnome.org < /dev/null (Send mail to gtk-list-request@gnome.org with the subject "subscribe") From 70a19815326d7e76657848aeaa58ee61db34df58 Mon Sep 17 00:00:00 2001 From: Maciej Piechotka Date: Thu, 31 Mar 2011 09:00:27 +0200 Subject: [PATCH 69/85] Allow caching have_qsort_r which re-enables cross-compiling https://bugzilla.gnome.org/show_bug.cgi?id=646309 --- configure.ac | 6 +++--- docs/reference/glib/cross.sgml | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 73690f4c6..e122418d2 100644 --- a/configure.ac +++ b/configure.ac @@ -574,7 +574,7 @@ AC_FUNC_ALLOCA AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2) AC_CHECK_FUNCS(atexit on_exit timegm gmtime_r) # BSD has a qsort_r with wrong argument order -AC_MSG_CHECKING([for qsort_r]) +AC_CACHE_CHECK([for qsort_r], glib_cv_have_qsort_r, [ AC_RUN_IFELSE([[ #define _GNU_SOURCE #include @@ -605,9 +605,9 @@ main (int argc, char **argv) return 0; else return 1; -}]],[have_qsort_r=yes],[have_qsort_r=no]) +}]],[glib_cv_have_qsort_r=yes],[glib_cv_have_qsort_r=no])]) -if test $have_qsort_r = yes ; then +if test $glib_cv_have_qsort_r = yes ; then AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_QSORT_R, 1, [Define to 1 if you have the 'qsort_r' function]) else diff --git a/docs/reference/glib/cross.sgml b/docs/reference/glib/cross.sgml index 40c0a1f54..f31ae6047 100644 --- a/docs/reference/glib/cross.sgml +++ b/docs/reference/glib/cross.sgml @@ -109,6 +109,15 @@ chmod a-w win32.cache # prevent configure from changing it built-in version in that case. + + glib_cv_have_qsort_r=[yes/no] + + + Whether you have qsort_r() that matches + BSD. Defaults to "no", which is safe, since GLib uses a + built-in version in that case. + + glib_cv_va_val_copy=[yes/no] From 4832289bc0c2a40a9dbc7259db9be914195ea5f4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 26 Apr 2011 23:57:17 -0400 Subject: [PATCH 70/85] Whitespace cleanup --- glib/tests/hash.c | 360 +++++++++++++++++++++++----------------------- 1 file changed, 184 insertions(+), 176 deletions(-) diff --git a/glib/tests/hash.c b/glib/tests/hash.c index 9b56d3af8..661859afd 100644 --- a/glib/tests/hash.c +++ b/glib/tests/hash.c @@ -169,56 +169,60 @@ static guint CrcTable[128]; */ static void crcinit(void) { - int i, j; - guint sum; + int i, j; + guint sum; - for (i = 0; i < 128; ++i) { - sum = 0L; - for (j = 7 - 1; j >= 0; --j) - if (i & (1 << j)) - sum ^= POLY >> j; - CrcTable[i] = sum; - } + for (i = 0; i < 128; ++i) + { + sum = 0L; + for (j = 7 - 1; j >= 0; --j) + if (i & (1 << j)) + sum ^= POLY >> j; + CrcTable[i] = sum; + } } /* - hash - Honeyman's nice hashing function */ -static guint honeyman_hash(gconstpointer key) +static guint +honeyman_hash (gconstpointer key) { - const gchar *name = (const gchar *) key; - gint size; - guint sum = 0; + const gchar *name = (const gchar *) key; + gint size; + guint sum = 0; - g_assert (name != NULL); - g_assert (*name != 0); + g_assert (name != NULL); + g_assert (*name != 0); - size = strlen(name); + size = strlen (name); - while (size--) { - sum = (sum >> 7) ^ CrcTable[(sum ^ (*name++)) & 0x7f]; - } + while (size--) + sum = (sum >> 7) ^ CrcTable[(sum ^ (*name++)) & 0x7f]; - return(sum); + return sum; } -static gboolean second_hash_cmp (gconstpointer a, gconstpointer b) +static gboolean +second_hash_cmp (gconstpointer a, gconstpointer b) { - return (strcmp (a, b) == 0); + return strcmp (a, b) == 0; } -static guint one_hash(gconstpointer key) +static guint +one_hash (gconstpointer key) { return 1; } -static void not_even_foreach (gpointer key, - gpointer value, - gpointer user_data) +static void +not_even_foreach (gpointer key, + gpointer value, + gpointer user_data) { const char *_key = (const char *) key; const char *_value = (const char *) value; @@ -240,9 +244,10 @@ static void not_even_foreach (gpointer key, } -static gboolean remove_even_foreach (gpointer key, - gpointer value, - gpointer user_data) +static gboolean +remove_even_foreach (gpointer key, + gpointer value, + gpointer user_data) { const char *_key = (const char *) key; const char *_value = (const char *) value; @@ -265,174 +270,176 @@ static gboolean remove_even_foreach (gpointer key, -static void second_hash_test (gconstpointer d) +static void +second_hash_test (gconstpointer d) { - gboolean simple_hash = GPOINTER_TO_INT (d); + gboolean simple_hash = GPOINTER_TO_INT (d); - int i; - char key[20] = "", val[20]="", *v, *orig_key, *orig_val; - GHashTable *h; - gboolean found; + int i; + char key[20] = "", val[20]="", *v, *orig_key, *orig_val; + GHashTable *h; + gboolean found; - crcinit (); + crcinit (); - h = g_hash_table_new_full (simple_hash ? one_hash : honeyman_hash, - second_hash_cmp, - g_free, g_free); - g_assert (h != NULL); - for (i=0; i<20; i++) - { - sprintf (key, "%d", i); - g_assert (atoi (key) == i); + h = g_hash_table_new_full (simple_hash ? one_hash : honeyman_hash, + second_hash_cmp, + g_free, g_free); + g_assert (h != NULL); + for (i = 0; i < 20; i++) + { + sprintf (key, "%d", i); + g_assert (atoi (key) == i); - sprintf (val, "%d value", i); - g_assert (atoi (val) == i); + sprintf (val, "%d value", i); + g_assert (atoi (val) == i); - g_hash_table_insert (h, g_strdup (key), g_strdup (val)); - } + g_hash_table_insert (h, g_strdup (key), g_strdup (val)); + } - g_assert (g_hash_table_size (h) == 20); + g_assert (g_hash_table_size (h) == 20); - for (i=0; i<20; i++) - { - sprintf (key, "%d", i); - g_assert (atoi(key) == i); + for (i = 0; i < 20; i++) + { + sprintf (key, "%d", i); + g_assert (atoi(key) == i); - v = (char *) g_hash_table_lookup (h, key); + v = (char *) g_hash_table_lookup (h, key); - g_assert (v != NULL); - g_assert (*v != 0); - g_assert (atoi (v) == i); - } + g_assert (v != NULL); + g_assert (*v != 0); + g_assert (atoi (v) == i); + } - sprintf (key, "%d", 3); - g_hash_table_remove (h, key); - g_assert (g_hash_table_size (h) == 19); - g_hash_table_foreach_remove (h, remove_even_foreach, NULL); - g_assert (g_hash_table_size (h) == 9); - g_hash_table_foreach (h, not_even_foreach, NULL); + sprintf (key, "%d", 3); + g_hash_table_remove (h, key); + g_assert (g_hash_table_size (h) == 19); + g_hash_table_foreach_remove (h, remove_even_foreach, NULL); + g_assert (g_hash_table_size (h) == 9); + g_hash_table_foreach (h, not_even_foreach, NULL); - for (i=0; i<20; i++) - { - sprintf (key, "%d", i); - g_assert (atoi(key) == i); + for (i = 0; i < 20; i++) + { + sprintf (key, "%d", i); + g_assert (atoi(key) == i); - sprintf (val, "%d value", i); - g_assert (atoi (val) == i); + sprintf (val, "%d value", i); + g_assert (atoi (val) == i); - orig_key = orig_val = NULL; - found = g_hash_table_lookup_extended (h, key, - (gpointer)&orig_key, - (gpointer)&orig_val); - if ((i % 2) == 0 || i == 3) - { - g_assert (!found); - continue; - } + orig_key = orig_val = NULL; + found = g_hash_table_lookup_extended (h, key, + (gpointer)&orig_key, + (gpointer)&orig_val); + if ((i % 2) == 0 || i == 3) + { + g_assert (!found); + continue; + } - g_assert (found); + g_assert (found); - g_assert (orig_key != NULL); - g_assert (strcmp (key, orig_key) == 0); + g_assert (orig_key != NULL); + g_assert (strcmp (key, orig_key) == 0); - g_assert (orig_val != NULL); - g_assert (strcmp (val, orig_val) == 0); - } + g_assert (orig_val != NULL); + g_assert (strcmp (val, orig_val) == 0); + } - g_hash_table_destroy (h); + g_hash_table_destroy (h); } -static gboolean find_first (gpointer key, - gpointer value, - gpointer user_data) +static gboolean +find_first (gpointer key, + gpointer value, + gpointer user_data) { - gint *v = value; + gint *v = value; gint *test = user_data; return (*v == *test); } -static void direct_hash_test (void) +static void +direct_hash_test (void) { - gint i, rc; - GHashTable *h; + gint i, rc; + GHashTable *h; - h = g_hash_table_new (NULL, NULL); - g_assert (h != NULL); - for (i=1; i<=20; i++) - { - g_hash_table_insert (h, GINT_TO_POINTER (i), - GINT_TO_POINTER (i + 42)); - } + h = g_hash_table_new (NULL, NULL); + g_assert (h != NULL); + for (i = 1; i <= 20; i++) + g_hash_table_insert (h, GINT_TO_POINTER (i), + GINT_TO_POINTER (i + 42)); - g_assert (g_hash_table_size (h) == 20); + g_assert (g_hash_table_size (h) == 20); - for (i=1; i<=20; i++) - { - rc = GPOINTER_TO_INT ( - g_hash_table_lookup (h, GINT_TO_POINTER (i))); + for (i = 1; i <= 20; i++) + { + rc = GPOINTER_TO_INT (g_hash_table_lookup (h, GINT_TO_POINTER (i))); - g_assert (rc != 0); - g_assert ((rc - 42) == i); - } + g_assert (rc != 0); + g_assert ((rc - 42) == i); + } - g_hash_table_destroy (h); + g_hash_table_destroy (h); } -static void int64_hash_test (void) +static void +int64_hash_test (void) { - gint i, rc; - GHashTable *h; - gint64 values[20]; - gint64 key; + gint i, rc; + GHashTable *h; + gint64 values[20]; + gint64 key; - h = g_hash_table_new (g_int64_hash, g_int64_equal); - g_assert (h != NULL); - for (i=0; i<20; i++) - { - values[i] = i + 42; - g_hash_table_insert (h, &values[i], GINT_TO_POINTER (i + 42)); - } + h = g_hash_table_new (g_int64_hash, g_int64_equal); + g_assert (h != NULL); + for (i = 0; i < 20; i++) + { + values[i] = i + 42; + g_hash_table_insert (h, &values[i], GINT_TO_POINTER (i + 42)); + } - g_assert (g_hash_table_size (h) == 20); + g_assert (g_hash_table_size (h) == 20); - for (i=0; i<20; i++) - { - key = i + 42; - rc = GPOINTER_TO_INT (g_hash_table_lookup (h, &key)); + for (i = 0; i < 20; i++) + { + key = i + 42; + rc = GPOINTER_TO_INT (g_hash_table_lookup (h, &key)); - g_assert_cmpint (rc, ==, i + 42); - } + g_assert_cmpint (rc, ==, i + 42); + } - g_hash_table_destroy (h); + g_hash_table_destroy (h); } -static void double_hash_test (void) +static void +double_hash_test (void) { - gint i, rc; - GHashTable *h; - gdouble values[20]; - gdouble key; + gint i, rc; + GHashTable *h; + gdouble values[20]; + gdouble key; - h = g_hash_table_new (g_double_hash, g_double_equal); - g_assert (h != NULL); - for (i=0; i<20; i++) - { - values[i] = i + 42.5; - g_hash_table_insert (h, &values[i], GINT_TO_POINTER (i + 42)); - } + h = g_hash_table_new (g_double_hash, g_double_equal); + g_assert (h != NULL); + for (i = 0; i < 20; i++) + { + values[i] = i + 42.5; + g_hash_table_insert (h, &values[i], GINT_TO_POINTER (i + 42)); + } - g_assert (g_hash_table_size (h) == 20); + g_assert (g_hash_table_size (h) == 20); - for (i=0; i<20; i++) - { - key = i + 42.5; - rc = GPOINTER_TO_INT (g_hash_table_lookup (h, &key)); + for (i = 0; i < 20; i++) + { + key = i + 42.5; + rc = GPOINTER_TO_INT (g_hash_table_lookup (h, &key)); - g_assert_cmpint (rc, ==, i + 42); - } + g_assert_cmpint (rc, ==, i + 42); + } - g_hash_table_destroy (h); + g_hash_table_destroy (h); } static void @@ -443,39 +450,40 @@ string_free (gpointer data) g_string_free (s, TRUE); } -static void string_hash_test (void) +static void +string_hash_test (void) { - gint i, rc; - GHashTable *h; - GString *s; + gint i, rc; + GHashTable *h; + GString *s; - h = g_hash_table_new_full ((GHashFunc)g_string_hash, (GEqualFunc)g_string_equal, string_free, NULL); - g_assert (h != NULL); - for (i=0; i<20; i++) - { - s = g_string_new (""); - g_string_append_printf (s, "%d", i + 42); - g_string_append_c (s, '.'); - g_string_prepend_unichar (s, 0x2301); - g_hash_table_insert (h, s, GINT_TO_POINTER (i + 42)); - } + h = g_hash_table_new_full ((GHashFunc)g_string_hash, (GEqualFunc)g_string_equal, string_free, NULL); + g_assert (h != NULL); + for (i = 0; i < 20; i++) + { + s = g_string_new (""); + g_string_append_printf (s, "%d", i + 42); + g_string_append_c (s, '.'); + g_string_prepend_unichar (s, 0x2301); + g_hash_table_insert (h, s, GINT_TO_POINTER (i + 42)); + } - g_assert (g_hash_table_size (h) == 20); + g_assert (g_hash_table_size (h) == 20); - s = g_string_new (""); - for (i=0; i<20; i++) - { - g_string_assign (s, ""); - g_string_append_printf (s, "%d", i + 42); - g_string_append_c (s, '.'); - g_string_prepend_unichar (s, 0x2301); - rc = GPOINTER_TO_INT (g_hash_table_lookup (h, s)); + s = g_string_new (""); + for (i = 0; i < 20; i++) + { + g_string_assign (s, ""); + g_string_append_printf (s, "%d", i + 42); + g_string_append_c (s, '.'); + g_string_prepend_unichar (s, 0x2301); + rc = GPOINTER_TO_INT (g_hash_table_lookup (h, s)); - g_assert_cmpint (rc, ==, i + 42); - } + g_assert_cmpint (rc, ==, i + 42); + } - g_string_free (s, TRUE); - g_hash_table_destroy (h); + g_string_free (s, TRUE); + g_hash_table_destroy (h); } static void From fc7403b675d29574568a79401c864298e8730413 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 27 Apr 2011 00:03:28 -0400 Subject: [PATCH 71/85] GHashTable: Add a test for remove-all functionality --- glib/tests/hash.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/glib/tests/hash.c b/glib/tests/hash.c index 661859afd..9e61d6597 100644 --- a/glib/tests/hash.c +++ b/glib/tests/hash.c @@ -656,6 +656,42 @@ test_lookup_null_key (void) g_hash_table_unref (h); } +static gint destroy_key_counter; + +static void +key_destroy (gpointer key) +{ + destroy_key_counter++; +} + +static void +test_remove_all (void) +{ + GHashTable *h; + + h = g_hash_table_new_full (g_str_hash, g_str_equal, key_destroy, value_destroy); + g_hash_table_insert (h, "abc", "ABC"); + g_hash_table_insert (h, "cde", "CDE"); + g_hash_table_insert (h, "xyz", "XYZ"); + + destroy_counter = 0; + destroy_key_counter = 0; + + g_hash_table_steal_all (h); + g_assert_cmpint (destroy_counter, ==, 0); + g_assert_cmpint (destroy_key_counter, ==, 0); + + g_hash_table_insert (h, "abc", "ABC"); + g_hash_table_insert (h, "cde", "CDE"); + g_hash_table_insert (h, "xyz", "XYZ"); + + g_hash_table_remove_all (h); + g_assert_cmpint (destroy_counter, ==, 3); + g_assert_cmpint (destroy_key_counter, ==, 3); + + g_hash_table_unref (h); +} + int main (int argc, char *argv[]) { @@ -671,6 +707,7 @@ main (int argc, char *argv[]) g_test_add_func ("/hash/double", double_hash_test); g_test_add_func ("/hash/string", string_hash_test); g_test_add_func ("/hash/ref", test_hash_ref); + g_test_add_func ("/hash/remove-all", test_remove_all); /* tests for individual bugs */ g_test_add_func ("/hash/lookup-null-key", test_lookup_null_key); From d3b80c49ea257d02838099e05e315a2407e664b9 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 27 Apr 2011 00:03:59 -0400 Subject: [PATCH 72/85] GHashTable: Small optimization of remove-all Don't enter the loop if we are not going to notify anyway. Pointed out in bug 646013. --- glib/ghash.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/glib/ghash.c b/glib/ghash.c index 4323068b7..d62db574d 100644 --- a/glib/ghash.c +++ b/glib/ghash.c @@ -479,22 +479,28 @@ g_hash_table_remove_all_nodes (GHashTable *hash_table, { int i; - for (i = 0; i < hash_table->size; i++) + if (notify && + (hash_table->key_destroy_func != NULL || + hash_table->value_destroy_func != NULL)) { - GHashNode *node = &hash_table->nodes [i]; - - if (node->key_hash > 1) + for (i = 0; i < hash_table->size; i++) { - if (notify && hash_table->key_destroy_func) - hash_table->key_destroy_func (node->key); + GHashNode *node = &hash_table->nodes [i]; - if (notify && hash_table->value_destroy_func) - hash_table->value_destroy_func (node->value); + if (node->key_hash > 1) + { + if (hash_table->key_destroy_func != NULL) + hash_table->key_destroy_func (node->key); + + if (hash_table->value_destroy_func != NULL) + hash_table->value_destroy_func (node->value); + } } } /* We need to set node->key_hash = 0 for all nodes - might as well be GC - * friendly and clear everything */ + * friendly and clear everything + */ memset (hash_table->nodes, 0, hash_table->size * sizeof (GHashNode)); hash_table->nnodes = 0; From 0dc5d456926257bd68702a4a1c989d132324d460 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Mon, 21 Feb 2011 18:58:09 -0800 Subject: [PATCH 73/85] Fix %z in g_date_time_format() https://bugzilla.gnome.org/show_bug.cgi?id=642935 --- glib/gdatetime.c | 5 ++--- glib/tests/gdatetime.c | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/glib/gdatetime.c b/glib/gdatetime.c index f76c44274..a8a29329c 100644 --- a/glib/gdatetime.c +++ b/glib/gdatetime.c @@ -2385,10 +2385,9 @@ g_date_time_format (GDateTime *datetime, gint64 offset = g_date_time_get_utc_offset (datetime) / USEC_PER_SECOND; - g_string_append_printf (outstr, "%c%02d%02d", - offset >= 0 ? '+' : '-', + g_string_append_printf (outstr, "%+03d%02d", (int) offset / 3600, - (int) offset / 60 % 60); + (int) abs(offset) / 60 % 60); } else g_string_append (outstr, "+0000"); diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c index e381b9d72..e38ff9d27 100644 --- a/glib/tests/gdatetime.c +++ b/glib/tests/gdatetime.c @@ -1023,11 +1023,29 @@ test_all_dates (void) g_time_zone_unref (timezone); } +static void +test_z (void) +{ + GTimeZone *tz; + GDateTime *dt; + + g_test_bug ("642935"); + + tz = g_time_zone_new ("-08:00"); + dt = g_date_time_new (tz, 0, 0, 0, 0, 0, 0); + gchar *p = g_date_time_format (dt, "%z"); + g_assert_cmpstr (p, ==, "-0800"); + g_date_time_unref (dt); + g_free (p); +} + + gint main (gint argc, gchar *argv[]) { g_test_init (&argc, &argv, NULL); + g_test_bug_base ("http://bugzilla.gnome.org/"); /* GDateTime Tests */ @@ -1065,6 +1083,7 @@ main (gint argc, g_test_add_func ("/GDateTime/to_utc", test_GDateTime_to_utc); g_test_add_func ("/GDateTime/now_utc", test_GDateTime_now_utc); g_test_add_func ("/GDateTime/dst", test_GDateTime_dst); + g_test_add_func ("/GDateTime/test_z", test_z); g_test_add_func ("/GDateTime/test-all-dates", test_all_dates); return g_test_run (); From 276e6a7be8a2d31bd67cac7c571f65dfd8b2fd88 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 15 Apr 2011 15:52:33 -0400 Subject: [PATCH 74/85] GDesktopAppInfo: Add g_desktop_app_info_get_categories() This is needed to rebase gnome-menus on top of GDesktopAppInfo. https://bugzilla.gnome.org/show_bug.cgi?id=647903 --- gio/gdesktopappinfo.c | 16 ++++++++++++++++ gio/gdesktopappinfo.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index 1236d3651..a65ef31f5 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -104,6 +104,7 @@ struct _GDesktopAppInfo char *exec; char *binary; char *path; + char *categories; guint nodisplay : 1; guint hidden : 1; @@ -177,6 +178,7 @@ g_desktop_app_info_finalize (GObject *object) g_free (info->exec); g_free (info->binary); g_free (info->path); + g_free (info->categories); G_OBJECT_CLASS (g_desktop_app_info_parent_class)->finalize (object); } @@ -319,6 +321,7 @@ g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info, info->startup_notify = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY, NULL) != FALSE; info->no_fuse = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, "X-GIO-NoFuse", NULL) != FALSE; info->hidden = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_HIDDEN, NULL) != FALSE; + info->categories = g_key_file_get_string (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_CATEGORIES, NULL); info->icon = NULL; if (info->icon_name) @@ -637,6 +640,19 @@ g_desktop_app_info_get_icon (GAppInfo *appinfo) return info->icon; } +/** + * g_desktop_app_info_get_categories: + * @info: a #GDesktopAppInfo + * + * Returns: The unparsed Categories key from the file; i.e. no attempt + * is made to split it by ';' or validate it. + */ +const char * +g_desktop_app_info_get_categories (GDesktopAppInfo *info) +{ + return info->categories; +} + static char * expand_macro_single (char macro, char *uri) { diff --git a/gio/gdesktopappinfo.h b/gio/gdesktopappinfo.h index 162cbb6d6..cb9e685c4 100644 --- a/gio/gdesktopappinfo.h +++ b/gio/gdesktopappinfo.h @@ -50,6 +50,8 @@ GDesktopAppInfo *g_desktop_app_info_new_from_keyfile (GKeyFile *key_file const char * g_desktop_app_info_get_filename (GDesktopAppInfo *info); +const char * g_desktop_app_info_get_categories (GDesktopAppInfo *info); + GDesktopAppInfo *g_desktop_app_info_new (const char *desktop_id); gboolean g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info); From 4098ddcb066f40bf9563973753bbb7867a553700 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 27 Apr 2011 11:34:23 -0400 Subject: [PATCH 75/85] GDesktopAppInfo: Add g_desktop_app_info_get_generic_name Necessary for rebasing gnome-menus on top of GDesktopAppInfo. https://bugzilla.gnome.org/show_bug.cgi?id=647967 --- gio/gdesktopappinfo.c | 22 +++++++++++++++++++++- gio/gdesktopappinfo.h | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index a65ef31f5..f72de34fd 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -64,6 +64,7 @@ #define ADDED_ASSOCIATIONS_GROUP "Added Associations" #define REMOVED_ASSOCIATIONS_GROUP "Removed Associations" #define MIME_CACHE_GROUP "MIME Cache" +#define GENERIC_NAME_KEY "GenericName" #define FULL_NAME_KEY "X-GNOME-FullName" enum { @@ -93,7 +94,7 @@ struct _GDesktopAppInfo char *filename; char *name; - /* FIXME: what about GenericName ? */ + char *generic_name; char *fullname; char *comment; char *icon_name; @@ -167,6 +168,7 @@ g_desktop_app_info_finalize (GObject *object) g_free (info->desktop_id); g_free (info->filename); g_free (info->name); + g_free (info->generic_name); g_free (info->fullname); g_free (info->comment); g_free (info->icon_name); @@ -308,6 +310,7 @@ g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info, } info->name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NAME, NULL, NULL); + info->generic_name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, GENERIC_NAME_KEY, NULL, NULL); info->fullname = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, FULL_NAME_KEY, NULL, NULL); info->comment = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_COMMENT, NULL, NULL); info->nodisplay = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, NULL) != FALSE; @@ -515,6 +518,7 @@ g_desktop_app_info_dup (GAppInfo *appinfo) new_info->desktop_id = g_strdup (info->desktop_id); new_info->name = g_strdup (info->name); + new_info->generic_name = g_strdup (info->generic_name); new_info->fullname = g_strdup (info->fullname); new_info->comment = g_strdup (info->comment); new_info->nodisplay = info->nodisplay; @@ -653,6 +657,18 @@ g_desktop_app_info_get_categories (GDesktopAppInfo *info) return info->categories; } +/** + * g_desktop_app_info_get_generic_name: + * @info: a #GDesktopAppInfo + * + * Returns: The value of the GenericName key + */ +const char * +g_desktop_app_info_get_generic_name (GDesktopAppInfo *info) +{ + return info->generic_name; +} + static char * expand_macro_single (char macro, char *uri) { @@ -1911,6 +1927,10 @@ g_desktop_app_info_ensure_saved (GDesktopAppInfo *info, g_key_file_set_string (key_file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_NAME, info->name); + if (info->generic_name != NULL) + g_key_file_set_string (key_file, G_KEY_FILE_DESKTOP_GROUP, + GENERIC_NAME_KEY, info->generic_name); + if (info->fullname != NULL) g_key_file_set_string (key_file, G_KEY_FILE_DESKTOP_GROUP, FULL_NAME_KEY, info->fullname); diff --git a/gio/gdesktopappinfo.h b/gio/gdesktopappinfo.h index cb9e685c4..f44acad77 100644 --- a/gio/gdesktopappinfo.h +++ b/gio/gdesktopappinfo.h @@ -50,6 +50,7 @@ GDesktopAppInfo *g_desktop_app_info_new_from_keyfile (GKeyFile *key_file const char * g_desktop_app_info_get_filename (GDesktopAppInfo *info); +const char * g_desktop_app_info_get_generic_name (GDesktopAppInfo *info); const char * g_desktop_app_info_get_categories (GDesktopAppInfo *info); GDesktopAppInfo *g_desktop_app_info_new (const char *desktop_id); From 27246c615df66ee869c2174aa6609601ff9d1f64 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 27 Apr 2011 13:29:07 -0400 Subject: [PATCH 76/85] Update gio.symbols for previous two commits --- gio/gio.symbols | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gio/gio.symbols b/gio/gio.symbols index 68ed9a3f3..1dd4229db 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -132,7 +132,9 @@ g_app_info_reset_type_associations g_desktop_app_info_new_from_filename g_desktop_app_info_new_from_keyfile g_desktop_app_info_new +g_desktop_app_info_get_categories g_desktop_app_info_get_filename +g_desktop_app_info_get_generic_name g_desktop_app_info_get_is_hidden g_desktop_app_info_get_type G_GNUC_CONST g_desktop_app_info_launch_uris_as_manager From 0ff211f520c18550454289e7265061d7e8ac41c0 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 16 Mar 2011 13:54:28 -0400 Subject: [PATCH 77/85] glib-unix: New Unix-specific API GLib historically has been designed to be "mostly" portable; there are some functions only available on Unix like g_io_channel_unix_new(), but these are typically paired with obvious counterparts for Win32. However, as GLib is used not only by portable software, but components targeting Unix (or even just Linux), there are a few cases where it would be very convenient if GLib shipped built-in functionality. This initial patch is a basic wrapper around pipe2(), including fallbacks for older kernels. This pairs well with the existing g_spawn_*() API and its child_setup functionality. However, in the future, I want to add a signal() wrapper here, complete with proxying the signal to a mainloop. I have initial code for this, but doing it sanely (including factoring out gmain.c's private worker thread), is a complex task, and I don't want to block on that. See also gwin32.h for Win32 specific functionality. https://bugzilla.gnome.org/show_bug.cgi?id=644941 --- docs/reference/glib/glib-sections.txt | 8 ++ glib/Makefile.am | 7 ++ glib/glib-unix.c | 135 ++++++++++++++++++++++++++ glib/glib-unix.h | 70 +++++++++++++ glib/glib.symbols | 9 ++ glib/gmain.c | 30 ++---- glib/tests/Makefile.am | 3 + glib/tests/unix.c | 60 ++++++++++++ 8 files changed, 302 insertions(+), 20 deletions(-) create mode 100644 glib/glib-unix.c create mode 100644 glib/glib-unix.h create mode 100644 glib/tests/unix.c diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index 037f577e4..987339386 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -1924,6 +1924,14 @@ g_win32_ftruncate +
+UNIX Compatibility Functions +gunix +G_UNIX_ERROR +g_unix_pipe_flags + +
+ # Data Structures
diff --git a/glib/Makefile.am b/glib/Makefile.am index 6c53e176b..ba76729c9 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -206,6 +206,9 @@ libglib_2_0_la_SOURCES = \ gprintf.c \ gprintfint.h +if OS_UNIX +libglib_2_0_la_SOURCES += glib-unix.c +endif EXTRA_libglib_2_0_la_SOURCES = \ giounix.c \ @@ -219,6 +222,10 @@ glibinclude_HEADERS = \ glib-object.h \ glib.h +if OS_UNIX +glibinclude_HEADERS += glib-unix.h +endif + glibsubincludedir=$(includedir)/glib-2.0/glib glibsubinclude_HEADERS = \ galloca.h \ diff --git a/glib/glib-unix.c b/glib/glib-unix.c new file mode 100644 index 000000000..4006a0d4a --- /dev/null +++ b/glib/glib-unix.c @@ -0,0 +1,135 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 2011 Red Hat, Inc. + * + * glib-unix.c: Unix specific API wrappers and convenience functions + * + * 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. + * + * Authors: Colin Walters + */ + +#include "config.h" + +#include "glib-unix.h" + +#include + +/** + * SECTION:gunix + * @short_description: Unix-specific utilities and integration + * @include: glib-unix.h + * + * Most of GLib is intended to be portable; in constrast, this set of + * functions is designed for programs which explicitly target UNIX, or + * are using it to build higher level abstractions which would be + * conditionally compiled if the platform matches G_OS_UNIX. + * + * To use these functions, you must explicitly include the + * "glib-unix.h" header. + */ + +GQuark +g_unix_error_quark (void) +{ + return g_quark_from_static_string ("g-unix-error-quark"); +} + +static gboolean +g_unix_set_error_from_errno (GError **error) +{ + int saved_errno = errno; + g_set_error_literal (error, + G_UNIX_ERROR, + 0, + g_strerror (errno)); + errno = saved_errno; + return FALSE; +} + +static gboolean +g_unix_set_error_from_errno_saved (GError **error, + int saved_errno) +{ + g_set_error_literal (error, + G_UNIX_ERROR, + 0, + g_strerror (saved_errno)); + errno = saved_errno; + return FALSE; +} + +/** + * g_unix_pipe_flags: + * @fds: Array of two integers + * @flags: Bitfield of file descriptor flags, see "man 2 fcntl" + * @error: a #GError + * + * Similar to the Unix pipe() call, but on modern systems like + * Linux uses the pipe2 system call, which atomically creates + * a pipe with the configured flags. The only supported flag + * currently is FD_CLOEXEC. If for example you want to configure + * O_NONBLOCK, that must still be done separately with fcntl(). + * + * Note in particular this function does *not* take O_CLOEXEC, it + * takes FD_CLOEXEC as if for fcntl(); these are different on + * Linux/glibc. + * + * Returns: %TRUE on success, %FALSE if not (and errno will be set). + * + * Since: 2.30 + */ +gboolean +g_unix_pipe_flags (int *fds, + int flags, + GError **error) +{ + int ecode; + + /* We only support FD_CLOEXEC */ + g_return_val_if_fail ((flags & (FD_CLOEXEC)) == flags, FALSE); + +#ifdef HAVE_PIPE2 + { + int pipe2_flags = 0; + if (flags & FD_CLOEXEC) + pipe2_flags |= O_CLOEXEC; + /* Atomic */ + ecode = pipe2 (fds, pipe2_flags); + if (ecode == -1 && errno != ENOSYS) + return g_unix_set_error_from_errno (error); + /* Fall through on -ENOSYS, we must be running on an old kernel */ + } +#endif + ecode = pipe (fds); + if (ecode == -1) + return g_unix_set_error_from_errno (error); + ecode = fcntl (fds[0], flags); + if (ecode == -1) + { + int saved_errno = errno; + close (fds[0]); + return g_unix_set_error_from_errno_saved (error, saved_errno); + } + ecode = fcntl (fds[0], flags); + if (ecode == -1) + { + int saved_errno = errno; + close (fds[0]); + close (fds[1]); + return g_unix_set_error_from_errno_saved (error, saved_errno); + } + return TRUE; +} diff --git a/glib/glib-unix.h b/glib/glib-unix.h new file mode 100644 index 000000000..f2f784d2a --- /dev/null +++ b/glib/glib-unix.h @@ -0,0 +1,70 @@ +/* glib-unix.h - Unix specific integration + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library 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_UNIX_H__ +#define __G_UNIX_H__ + +/* We need to include the UNIX headers needed to use the APIs below, + * but we also take this opportunity to include a wide selection of + * other UNIX headers. If one of the headers below is broken on some + * system, work around it here (or better, fix the system or tell + * people to use a better one). + */ +#ifndef _GNU_SOURCE +#define _G_GNU_SOURCE_TEMPORARILY_DEFINED +#define _GNU_SOURCE +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +#ifdef _G_GNU_SOURCE_TEMPORARILY_DEFINED +#undef _GNU_SOURCE +#undef _G_GNU_SOURCE_TEMPORARILY_DEFINED +#endif + +#include + +/** + * G_UNIX_ERROR: + * + * Error domain for API in the "g_unix_" namespace. Note that there + * is no exported enumeration mapping "errno". Instead, all functions + * ensure that "errno" is relevant. The code for all G_UNIX_ERROR is + * always 0, and the error message is always generated via + * g_strerror(). + * + * It is expected that most code will not look at "errno" from these + * APIs. Important cases where one would want to differentiate between + * errors are already covered by existing cross-platform GLib API, + * such as e.g. GFile wrapping "ENOENT". However, it is provided for + * completeness, at least. + */ +#define G_UNIX_ERROR (g_unix_error_quark()) + +GQuark g_unix_error_quark (void); + +gboolean g_unix_pipe_flags (int *fds, + int flags, + GError **error); + +#endif diff --git a/glib/glib.symbols b/glib/glib.symbols index 6c8666721..be3acfa00 100644 --- a/glib/glib.symbols +++ b/glib/glib.symbols @@ -1978,6 +1978,15 @@ g_hostname_to_unicode #endif #endif +#if IN_HEADER(__G_UNIX_H__) +#if IN_FILE(__G_UNIX_C__) +#ifdef G_OS_UNIX +g_unix_pipe_flags +g_unix_error_quark +#endif +#endif +#endif + #ifdef INCLUDE_VARIABLES g_ascii_table g_utf8_skip diff --git a/glib/gmain.c b/glib/gmain.c index 718c36c88..c045e1cc8 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -62,6 +62,10 @@ #define G_MAIN_POLL_DEBUG #endif +#ifdef G_OS_UNIX +#include "glib-unix.h" +#endif + #include #include #include @@ -84,11 +88,6 @@ #include #endif /* G_OS_BEOS */ -#ifdef G_OS_UNIX -#include -#include -#endif - #include "gmain.h" #include "garray.h" @@ -515,23 +514,14 @@ g_main_context_unref (GMainContext *context) static void g_main_context_init_pipe (GMainContext *context) { + GError *error = NULL; + # ifndef G_OS_WIN32 if (context->wake_up_pipe[0] != -1) return; -#ifdef HAVE_PIPE2 - /* if this fails, we fall through and try pipe */ - pipe2 (context->wake_up_pipe, O_CLOEXEC); -#endif - if (context->wake_up_pipe[0] == -1) - { - if (pipe (context->wake_up_pipe) < 0) - g_error ("Cannot create pipe main loop wake-up: %s\n", - g_strerror (errno)); - - fcntl (context->wake_up_pipe[0], F_SETFD, FD_CLOEXEC); - fcntl (context->wake_up_pipe[1], F_SETFD, FD_CLOEXEC); - } + if (!g_unix_pipe_flags (context->wake_up_pipe, FD_CLOEXEC, &error)) + g_error ("Cannot create pipe main loop wake-up: %s", error->message); context->wake_up_rec.fd = context->wake_up_pipe[0]; context->wake_up_rec.events = G_IO_IN; @@ -4334,8 +4324,8 @@ g_child_watch_source_init_multi_threaded (void) g_assert (g_thread_supported()); - if (pipe (child_watch_wake_up_pipe) < 0) - g_error ("Cannot create wake up pipe: %s\n", g_strerror (errno)); + if (!g_unix_pipe_flags (child_watch_wake_up_pipe, FD_CLOEXEC, &error)) + g_error ("Cannot create wake up pipe: %s\n", error->message); fcntl (child_watch_wake_up_pipe[1], F_SETFL, O_NONBLOCK | fcntl (child_watch_wake_up_pipe[1], F_GETFL)); /* We create a helper thread that polls on the wakeup pipe indefinitely */ diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am index ea7da1ff4..ca42eb4f8 100644 --- a/glib/tests/Makefile.am +++ b/glib/tests/Makefile.am @@ -170,6 +170,9 @@ sort_LDADD = $(progs_ldadd) if OS_UNIX +TEST_PROGS += unix +unix_LDADD = $(progs_ldadd) + # some testing of gtester funcitonality XMLLINT=xmllint gtester-xmllint-check: # check testreport xml with xmllint if present diff --git a/glib/tests/unix.c b/glib/tests/unix.c new file mode 100644 index 000000000..2dc23646d --- /dev/null +++ b/glib/tests/unix.c @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2011 Red Hat, Inc. + * + * This work is provided "as is"; redistribution and modification + * in whole or in part, in any medium, physical or electronic is + * permitted without restriction. + * + * This work is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * In no event shall the authors or contributors be liable for any + * direct, indirect, incidental, special, exemplary, or consequential + * damages (including, but not limited to, procurement of substitute + * goods or services; loss of use, data, or profits; or business + * interruption) however caused and on any theory of liability, whether + * in contract, strict liability, or tort (including negligence or + * otherwise) arising in any way out of the use of this software, even + * if advised of the possibility of such damage. + * + * Author: Colin Walters + */ + +#include "config.h" + +#include "glib-unix.h" +#include + +static void +test_pipe (void) +{ + GError *error = NULL; + int pipefd[2]; + char buf[1024]; + ssize_t bytes_read; + + g_unix_pipe_flags (pipefd, FD_CLOEXEC, NULL); + g_assert_no_error (error); + + write (pipefd[1], "hello", sizeof ("hello")); + memset (buf, 0, sizeof (buf)); + bytes_read = read (pipefd[0], buf, sizeof(buf) - 1); + g_assert_cmpint (bytes_read, >, 0); + + close (pipefd[0]); + close (pipefd[1]); + + g_assert (g_str_has_prefix (buf, "hello")); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/glib-unix/pipe", test_pipe); + + return g_test_run(); +} From 920899d78fbed7f014dc1549f1b54a3bd708eb4b Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 16 Mar 2011 19:02:15 -0400 Subject: [PATCH 78/85] gmain: Prepare child watch handling for more generic signal handling In preparation for supporting more Unix signals such as SIGHUP, SIGTERM etc., https://bugzilla.gnome.org/show_bug.cgi?id=644941 --- glib/glib-unix.c | 19 +++---- glib/gmain.c | 142 ++++++++++++++++++++++++++++++++++++----------- 2 files changed, 118 insertions(+), 43 deletions(-) diff --git a/glib/glib-unix.c b/glib/glib-unix.c index 4006a0d4a..e26419e6c 100644 --- a/glib/glib-unix.c +++ b/glib/glib-unix.c @@ -1,7 +1,7 @@ /* GLIB - Library of useful routines for C programming * Copyright (C) 2011 Red Hat, Inc. * - * glib-unix.c: Unix specific API wrappers and convenience functions + * glib-unix.c: UNIX specific API wrappers and convenience functions * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -29,7 +29,7 @@ /** * SECTION:gunix - * @short_description: Unix-specific utilities and integration + * @short_description: UNIX-specific utilities and integration * @include: glib-unix.h * * Most of GLib is intended to be portable; in constrast, this set of @@ -77,15 +77,14 @@ g_unix_set_error_from_errno_saved (GError **error, * @flags: Bitfield of file descriptor flags, see "man 2 fcntl" * @error: a #GError * - * Similar to the Unix pipe() call, but on modern systems like - * Linux uses the pipe2 system call, which atomically creates - * a pipe with the configured flags. The only supported flag - * currently is FD_CLOEXEC. If for example you want to configure - * O_NONBLOCK, that must still be done separately with fcntl(). + * Similar to the UNIX pipe() call, but on modern systems like Linux + * uses the pipe2 system call, which atomically creates a pipe with + * the configured flags. The only supported flag currently is + * FD_CLOEXEC. If for example you want to configure O_NONBLOCK, that + * must still be done separately with fcntl(). * - * Note in particular this function does *not* take O_CLOEXEC, it - * takes FD_CLOEXEC as if for fcntl(); these are different on - * Linux/glibc. + * This function does *not* take O_CLOEXEC, it takes FD_CLOEXEC as if + * for fcntl(); these are different on Linux/glibc. * * Returns: %TRUE on success, %FALSE if not (and errno will be set). * diff --git a/glib/gmain.c b/glib/gmain.c index c045e1cc8..82cf81073 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -77,6 +77,7 @@ #include #endif /* HAVE_UNISTD_H */ #include +#include #ifdef G_OS_WIN32 #define STRICT @@ -364,6 +365,8 @@ static void g_main_context_remove_poll_unlocked (GMainContext *context, GPollFD *fd); static void g_main_context_wakeup_unlocked (GMainContext *context); +static void _g_main_wake_up_all_contexts (void); + static gboolean g_timeout_prepare (GSource *source, gint *timeout); static gboolean g_timeout_check (GSource *source); @@ -388,6 +391,15 @@ static GMainContext *default_main_context; static GSList *main_contexts_without_pipe = NULL; #ifndef G_OS_WIN32 + +/* The UNIX signal pipe contains a single byte specifying which + * signal was received. + */ +#define _UNIX_SIGNAL_PIPE_SIGCHLD_CHAR 'C' +/* Guards unix_signal_wake_up_pipe */ +G_LOCK_DEFINE_STATIC (unix_signal_lock); +static gint unix_signal_wake_up_pipe[2] = {-1, -1}; + /* Child status monitoring code */ enum { CHILD_WATCH_UNINITIALIZED, @@ -396,7 +408,6 @@ enum { }; static gint child_watch_init_state = CHILD_WATCH_UNINITIALIZED; static gint child_watch_count = 1; -static gint child_watch_wake_up_pipe[2] = {0, 0}; #endif /* !G_OS_WIN32 */ G_LOCK_DEFINE_STATIC (main_context_list); static GSList *main_context_list = NULL; @@ -3717,6 +3728,30 @@ g_main_context_get_poll_func (GMainContext *context) return result; } +static void +_g_main_wake_up_all_contexts (void) +{ + GSList *list; + + /* We were woken up. Wake up all other contexts in all other threads */ + G_LOCK (main_context_list); + for (list = main_context_list; list; list = list->next) + { + GMainContext *context; + + context = list->data; + if (g_atomic_int_get (&context->ref_count) > 0) + /* Due to racing conditions we can find ref_count == 0, in + * that case, however, the context is still not destroyed + * and no poll can be active, otherwise the ref_count + * wouldn't be 0 + */ + g_main_context_wakeup (context); + } + G_UNLOCK (main_context_list); +} + + /* HOLDS: context's lock */ /* Wake the main loop up from a poll() */ static void @@ -4263,7 +4298,8 @@ g_child_watch_signal_handler (int signum) if (child_watch_init_state == CHILD_WATCH_INITIALIZED_THREADED) { - write (child_watch_wake_up_pipe[1], "B", 1); + char buf[1] = { _UNIX_SIGNAL_PIPE_SIGCHLD_CHAR }; + write (unix_signal_wake_up_pipe[1], buf, 1); } else { @@ -4288,52 +4324,92 @@ g_child_watch_source_init_single (void) sigaction (SIGCHLD, &action, NULL); } -G_GNUC_NORETURN static gpointer -child_watch_helper_thread (gpointer data) +static gpointer unix_signal_helper_thread (gpointer data) G_GNUC_NORETURN; + +/* + * This thread is created whenever anything in GLib needs + * to deal with UNIX signals; at present, just SIGCHLD + * from g_child_watch_source_new(). + * + * Note: We could eventually make this thread a more public interface + * and allow e.g. GDBus to use it instead of its own worker thread. + */ +static gpointer +unix_signal_helper_thread (gpointer data) { while (1) { - gchar b[20]; - GSList *list; + gchar b[128]; + ssize_t i, bytes_read; - read (child_watch_wake_up_pipe[0], b, 20); - - /* We were woken up. Wake up all other contexts in all other threads */ - G_LOCK (main_context_list); - for (list = main_context_list; list; list = list->next) + bytes_read = read (unix_signal_wake_up_pipe[0], b, sizeof (b)); + if (bytes_read < 0) { - GMainContext *context; - - context = list->data; - if (g_atomic_int_get (&context->ref_count) > 0) - /* Due to racing conditions we can find ref_count == 0, in - * that case, however, the context is still not destroyed - * and no poll can be active, otherwise the ref_count - * wouldn't be 0 */ - g_main_context_wakeup (context); + g_warning ("Failed to read from child watch wake up pipe: %s", + strerror (errno)); + /* Not much we can do here sanely; just wait a second and hope + * it was transient. + */ + g_usleep (G_USEC_PER_SEC); + continue; + } + for (i = 0; i < bytes_read; i++) + { + switch (b[i]) + { + case _UNIX_SIGNAL_PIPE_SIGCHLD_CHAR: + /* The child watch source will call waitpid() in its + * prepare() and check() methods; however, we don't + * know which pid exited, so we need to wake up + * all contexts. Note: actually we could get the pid + * from the "siginfo_t" via the handler, but to pass + * that info down the pipe would require a more structured + * data stream (as opposed to a single byte). + */ + _g_main_wake_up_all_contexts (); + break; + default: + g_warning ("Invalid char '%c' read from child watch pipe", b[i]); + break; + } } - G_UNLOCK (main_context_list); } } +static void +_g_main_init_unix_signal_wakeup_pipe (void) +{ + GError *error = NULL; + + G_LOCK (unix_signal_lock); + + if (unix_signal_wake_up_pipe[0] >= 0) + goto out; + + g_assert (g_thread_supported()); + + if (!g_unix_pipe_flags (unix_signal_wake_up_pipe, FD_CLOEXEC, &error)) + g_error ("Cannot create UNIX signal wake up pipe: %s\n", error->message); + fcntl (unix_signal_wake_up_pipe[1], F_SETFL, O_NONBLOCK | fcntl (unix_signal_wake_up_pipe[1], F_GETFL)); + + /* We create a helper thread that polls on the wakeup pipe indefinitely */ + /* FIXME: Think this through for races */ + if (g_thread_create (unix_signal_helper_thread, NULL, FALSE, &error) == NULL) + g_error ("Cannot create a thread to monitor UNIX signals: %s\n", error->message); + + out: + G_UNLOCK (unix_signal_lock); +} + static void g_child_watch_source_init_multi_threaded (void) { - GError *error = NULL; struct sigaction action; + + _g_main_init_unix_signal_wakeup_pipe (); - g_assert (g_thread_supported()); - - if (!g_unix_pipe_flags (child_watch_wake_up_pipe, FD_CLOEXEC, &error)) - g_error ("Cannot create wake up pipe: %s\n", error->message); - fcntl (child_watch_wake_up_pipe[1], F_SETFL, O_NONBLOCK | fcntl (child_watch_wake_up_pipe[1], F_GETFL)); - - /* We create a helper thread that polls on the wakeup pipe indefinitely */ - /* FIXME: Think this through for races */ - if (g_thread_create (child_watch_helper_thread, NULL, FALSE, &error) == NULL) - g_error ("Cannot create a thread to monitor child exit status: %s\n", error->message); child_watch_init_state = CHILD_WATCH_INITIALIZED_THREADED; - + action.sa_handler = g_child_watch_signal_handler; sigemptyset (&action.sa_mask); action.sa_flags = SA_RESTART | SA_NOCLDSTOP; From 549d895fa4e9c4b5a35c5d9da4db39ca11dc71cc Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 17 Mar 2011 10:11:41 -0400 Subject: [PATCH 79/85] glib-unix: New API to watch some Unix signals This new API allows watching a few select Unix signals; looking through the list on my system, I didn't see anything else that I think it'd reasonable to watch. We build on the previous patch to make the child watch helper thread that existed on Unix handle these signals in the threaded case. In the non-threaded case, they're just global variables. https://bugzilla.gnome.org/show_bug.cgi?id=644941 --- docs/reference/glib/glib-docs.sgml | 1 + docs/reference/glib/glib-sections.txt | 4 +- glib/glib-unix.c | 88 +++++- glib/glib-unix.h | 22 +- glib/glib.symbols | 2 + glib/gmain-internal.h | 35 +++ glib/gmain.c | 381 +++++++++++++++++++++----- glib/tests/Makefile.am | 6 +- glib/tests/unix.c | 81 ++++++ gthread/tests/Makefile.am | 5 + 10 files changed, 549 insertions(+), 76 deletions(-) create mode 100644 glib/gmain-internal.h diff --git a/docs/reference/glib/glib-docs.sgml b/docs/reference/glib/glib-docs.sgml index cb864ce99..208c49b3f 100644 --- a/docs/reference/glib/glib-docs.sgml +++ b/docs/reference/glib/glib-docs.sgml @@ -96,6 +96,7 @@ synchronize their operation. + diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index 987339386..6bf859370 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -1925,10 +1925,12 @@ g_win32_ftruncate
-UNIX Compatibility Functions +UNIX-specific utilities and integration gunix G_UNIX_ERROR g_unix_pipe_flags +g_unix_signal_source_new +g_unix_signal_add_watch_full
diff --git a/glib/glib-unix.c b/glib/glib-unix.c index e26419e6c..cf4748bd5 100644 --- a/glib/glib-unix.c +++ b/glib/glib-unix.c @@ -24,12 +24,14 @@ #include "config.h" #include "glib-unix.h" +#include "gmain-internal.h" #include /** * SECTION:gunix - * @short_description: UNIX-specific utilities and integration + * @title: UNIX-specific utilities and integration + * @short_description: pipes, signal handling * @include: glib-unix.h * * Most of GLib is intended to be portable; in constrast, this set of @@ -78,12 +80,12 @@ g_unix_set_error_from_errno_saved (GError **error, * @error: a #GError * * Similar to the UNIX pipe() call, but on modern systems like Linux - * uses the pipe2 system call, which atomically creates a pipe with + * uses the pipe2() system call, which atomically creates a pipe with * the configured flags. The only supported flag currently is - * FD_CLOEXEC. If for example you want to configure O_NONBLOCK, that + * %FD_CLOEXEC. If for example you want to configure %O_NONBLOCK, that * must still be done separately with fcntl(). * - * This function does *not* take O_CLOEXEC, it takes FD_CLOEXEC as if + * This function does *not* take %O_CLOEXEC, it takes %FD_CLOEXEC as if * for fcntl(); these are different on Linux/glibc. * * Returns: %TRUE on success, %FALSE if not (and errno will be set). @@ -132,3 +134,81 @@ g_unix_pipe_flags (int *fds, } return TRUE; } + +/** + * g_unix_signal_source_new: + * @signum: A signal number + * + * Create a #GSource that will be dispatched upon delivery of the UNIX + * signal @signum. Currently only %SIGHUP, %SIGINT, and %SIGTERM can + * be monitored. Note that unlike the UNIX default, all sources which + * have created a watch will be dispatched, regardless of which + * underlying thread invoked g_unix_signal_create_watch(). + * + * For example, an effective use of this function is to handle SIGTERM + * cleanly; flushing any outstanding files, and then calling + * g_main_loop_quit (). It is not safe to do any of this a regular + * UNIX signal handler; your handler may be invoked while malloc() or + * another library function is running, causing reentrancy if you + * attempt to use it from the handler. None of the GLib/GObject API + * is safe against this kind of reentrancy. + * + * The interaction of this source when combined with native UNIX + * functions like sigprocmask() is not defined. + * + * For reliable behavior, if your program links to gthread + * (either directly or indirectly via GObject, GIO, or a higher level + * library), you should ensure g_thread_init() is called before using + * this function. For example, if your program uses GObject, call + * g_type_init(). + * + * The source will not initially be associated with any #GMainContext + * and must be added to one with g_source_attach() before it will be + * executed. + * + * Returns: A newly created #GSource + */ +GSource * +g_unix_signal_source_new (int signum) +{ + g_return_val_if_fail (signum == SIGHUP || signum == SIGINT || signum == SIGTERM, NULL); + + return _g_main_create_unix_signal_watch (signum); +} + +/** + * g_unix_signal_add_watch_full: + * @signum: Signal number + * @priority: the priority of the signal source. Typically this will be in + * the range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH. + * @handler: Callback + * @user_data: Data for @handler + * @notify: #GDestroyNotify for @handler + * + * A convenience function for g_unix_signal_source_new(), which + * attaches to the default #GMainContext. You can remove the watch + * using g_source_remove(). + * + * Returns: An ID (greater than 0) for the event source + */ +guint +g_unix_signal_add_watch_full (int signum, + int priority, + GSourceFunc handler, + gpointer user_data, + GDestroyNotify notify) +{ + guint id; + GSource *source; + + source = g_unix_signal_source_new (signum); + + if (priority != G_PRIORITY_DEFAULT) + g_source_set_priority (source, priority); + + g_source_set_callback (source, handler, user_data, notify); + id = g_source_attach (source, NULL); + g_source_unref (source); + + return id; +} diff --git a/glib/glib-unix.h b/glib/glib-unix.h index f2f784d2a..e72477852 100644 --- a/glib/glib-unix.h +++ b/glib/glib-unix.h @@ -44,19 +44,23 @@ #include +#ifndef G_OS_UNIX +#error "This header may only be used on UNIX" +#endif + /** * G_UNIX_ERROR: * * Error domain for API in the "g_unix_" namespace. Note that there - * is no exported enumeration mapping "errno". Instead, all functions - * ensure that "errno" is relevant. The code for all G_UNIX_ERROR is - * always 0, and the error message is always generated via + * is no exported enumeration mapping %errno. Instead, all functions + * ensure that %errno is relevant. The code for all #G_UNIX_ERROR is + * always %0, and the error message is always generated via * g_strerror(). * - * It is expected that most code will not look at "errno" from these + * It is expected that most code will not look at %errno from these * APIs. Important cases where one would want to differentiate between * errors are already covered by existing cross-platform GLib API, - * such as e.g. GFile wrapping "ENOENT". However, it is provided for + * such as e.g. #GFile wrapping %ENOENT. However, it is provided for * completeness, at least. */ #define G_UNIX_ERROR (g_unix_error_quark()) @@ -67,4 +71,12 @@ gboolean g_unix_pipe_flags (int *fds, int flags, GError **error); +GSource *g_unix_signal_source_new (int signum); + +guint g_unix_signal_add_watch_full (int signum, + int priority, + GSourceFunc handler, + gpointer user_data, + GDestroyNotify notify); + #endif diff --git a/glib/glib.symbols b/glib/glib.symbols index be3acfa00..bc1c32395 100644 --- a/glib/glib.symbols +++ b/glib/glib.symbols @@ -1983,6 +1983,8 @@ g_hostname_to_unicode #ifdef G_OS_UNIX g_unix_pipe_flags g_unix_error_quark +g_unix_signal_source_new +g_unix_signal_add_watch_full #endif #endif #endif diff --git a/glib/gmain-internal.h b/glib/gmain-internal.h new file mode 100644 index 000000000..648aff3e6 --- /dev/null +++ b/glib/gmain-internal.h @@ -0,0 +1,35 @@ +/* gmain-internal.h - GLib-internal mainloop API + * Copyright (C) 2011 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library 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. + */ + +#if !defined (GLIB_COMPILATION) +#error "This is a private header" +#endif + +#ifndef __G_MAIN_INTERNAL_H__ +#define __G_MAIN_INTERNAL_H__ + +#include "gmain.h" + +G_BEGIN_DECLS + +GSource *_g_main_create_unix_signal_watch (int signum); + +G_END_DECLS + +#endif /* __G_MAIN_H__ */ diff --git a/glib/gmain.c b/glib/gmain.c index 82cf81073..0be3733db 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -188,6 +188,7 @@ typedef struct _GTimeoutSource GTimeoutSource; typedef struct _GChildWatchSource GChildWatchSource; +typedef struct _GUnixSignalWatchSource GUnixSignalWatchSource; typedef struct _GPollRec GPollRec; typedef struct _GSourceCallback GSourceCallback; @@ -306,6 +307,13 @@ struct _GChildWatchSource #endif /* G_OS_WIN32 */ }; +struct _GUnixSignalWatchSource +{ + GSource source; + int signum; + gboolean pending; +}; + struct _GPollRec { GPollFD *fd; @@ -379,6 +387,18 @@ static gboolean g_child_watch_check (GSource *source); static gboolean g_child_watch_dispatch (GSource *source, GSourceFunc callback, gpointer user_data); +#ifdef G_OS_UNIX +static void g_unix_signal_handler (int signum); +static void init_unix_signal_wakeup_state_unlocked (void); +static void init_unix_signal_wakeup_state (void); +static gboolean g_unix_signal_watch_prepare (GSource *source, + gint *timeout); +static gboolean g_unix_signal_watch_check (GSource *source); +static gboolean g_unix_signal_watch_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data); +static void g_unix_signal_watch_finalize (GSource *source); +#endif static gboolean g_idle_prepare (GSource *source, gint *timeout); static gboolean g_idle_check (GSource *source); @@ -396,18 +416,42 @@ static GSList *main_contexts_without_pipe = NULL; * signal was received. */ #define _UNIX_SIGNAL_PIPE_SIGCHLD_CHAR 'C' -/* Guards unix_signal_wake_up_pipe */ +#define _UNIX_SIGNAL_PIPE_SIGHUP_CHAR 'H' +#define _UNIX_SIGNAL_PIPE_SIGINT_CHAR 'I' +#define _UNIX_SIGNAL_PIPE_SIGTERM_CHAR 'T' +/* Guards all the data below */ G_LOCK_DEFINE_STATIC (unix_signal_lock); -static gint unix_signal_wake_up_pipe[2] = {-1, -1}; - -/* Child status monitoring code */ enum { - CHILD_WATCH_UNINITIALIZED, - CHILD_WATCH_INITIALIZED_SINGLE, - CHILD_WATCH_INITIALIZED_THREADED + UNIX_SIGNAL_UNINITIALIZED = 0, + UNIX_SIGNAL_INITIALIZED_SINGLE, + UNIX_SIGNAL_INITIALIZED_THREADED }; -static gint child_watch_init_state = CHILD_WATCH_UNINITIALIZED; +static gint unix_signal_init_state = UNIX_SIGNAL_UNINITIALIZED; +typedef struct { + gboolean sigchld_handler_installed : 1; + gboolean sighup_handler_installed : 1; + gboolean sigint_handler_installed : 1; + gboolean sigterm_handler_installed : 1; + + /* These are only used in the UNIX_SIGNAL_INITIALIZED_SINGLE case */ + gboolean sighup_delivered : 1; + gboolean sigint_delivered : 1; + gboolean sigterm_delivered : 1; +} UnixSignalState; +static UnixSignalState unix_signal_state; +static gint unix_signal_wake_up_pipe[2]; +GSList *unix_signal_watches; + +/* Not guarded ( FIXME should it be? ) */ static gint child_watch_count = 1; + +static GSourceFuncs g_unix_signal_funcs = +{ + g_unix_signal_watch_prepare, + g_unix_signal_watch_check, + g_unix_signal_watch_dispatch, + g_unix_signal_watch_finalize +}; #endif /* !G_OS_WIN32 */ G_LOCK_DEFINE_STATIC (main_context_list); static GSList *main_context_list = NULL; @@ -4257,13 +4301,169 @@ g_child_watch_prepare (GSource *source, return check_for_child_exited (source); } - static gboolean g_child_watch_check (GSource *source) { return check_for_child_exited (source); } +static gboolean +check_for_signal_delivery (GSource *source) +{ + GUnixSignalWatchSource *unix_signal_source = (GUnixSignalWatchSource*) source; + gboolean delivered; + + G_LOCK (unix_signal_lock); + if (unix_signal_init_state == UNIX_SIGNAL_INITIALIZED_SINGLE) + { + switch (unix_signal_source->signum) + { + case SIGHUP: + delivered = unix_signal_state.sighup_delivered; + break; + case SIGINT: + delivered = unix_signal_state.sigint_delivered; + break; + case SIGTERM: + delivered = unix_signal_state.sigterm_delivered; + break; + default: + g_assert_not_reached (); + delivered = FALSE; + break; + } + } + else + { + g_assert (unix_signal_init_state == UNIX_SIGNAL_INITIALIZED_THREADED); + delivered = unix_signal_source->pending; + } + G_UNLOCK (unix_signal_lock); + + return delivered; +} + +static gboolean +g_unix_signal_watch_prepare (GSource *source, + gint *timeout) +{ + *timeout = -1; + + return check_for_signal_delivery (source); +} + +static gboolean +g_unix_signal_watch_check (GSource *source) +{ + return check_for_signal_delivery (source); +} + +static gboolean +g_unix_signal_watch_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data) +{ + GUnixSignalWatchSource *unix_signal_source; + + unix_signal_source = (GUnixSignalWatchSource *) source; + + if (!callback) + { + g_warning ("Unix signal source dispatched without callback\n" + "You must call g_source_set_callback()."); + return FALSE; + } + + (callback) (user_data); + + G_LOCK (unix_signal_lock); + if (unix_signal_init_state == UNIX_SIGNAL_INITIALIZED_SINGLE) + { + switch (unix_signal_source->signum) + { + case SIGHUP: + unix_signal_state.sighup_delivered = FALSE; + break; + case SIGINT: + unix_signal_state.sigint_delivered = FALSE; + break; + case SIGTERM: + unix_signal_state.sigterm_delivered = FALSE; + break; + } + } + else + { + g_assert (unix_signal_init_state == UNIX_SIGNAL_INITIALIZED_THREADED); + unix_signal_source->pending = FALSE; + } + G_UNLOCK (unix_signal_lock); + + return TRUE; +} + +static void +ensure_unix_signal_handler_installed_unlocked (int signum) +{ + struct sigaction action; + + switch (signum) + { + case SIGHUP: + if (unix_signal_state.sighup_handler_installed) + return; + unix_signal_state.sighup_handler_installed = TRUE; + break; + case SIGINT: + if (unix_signal_state.sigint_handler_installed) + return; + unix_signal_state.sigint_handler_installed = TRUE; + break; + case SIGTERM: + if (unix_signal_state.sigterm_handler_installed) + return; + unix_signal_state.sigterm_handler_installed = TRUE; + break; + } + + init_unix_signal_wakeup_state_unlocked (); + + action.sa_handler = g_unix_signal_handler; + sigemptyset (&action.sa_mask); + action.sa_flags = 0; + sigaction (signum, &action, NULL); +} + +GSource * +_g_main_create_unix_signal_watch (int signum) +{ + GSource *source; + GUnixSignalWatchSource *unix_signal_source; + + init_unix_signal_wakeup_state (); + + source = g_source_new (&g_unix_signal_funcs, sizeof (GUnixSignalWatchSource)); + unix_signal_source = (GUnixSignalWatchSource *) source; + + unix_signal_source->signum = signum; + unix_signal_source->pending = FALSE; + + G_LOCK (unix_signal_lock); + ensure_unix_signal_handler_installed_unlocked (signum); + unix_signal_watches = g_slist_prepend (unix_signal_watches, unix_signal_source); + G_UNLOCK (unix_signal_lock); + + return source; +} + +static void +g_unix_signal_watch_finalize (GSource *source) +{ + G_LOCK (unix_signal_lock); + unix_signal_watches = g_slist_remove (unix_signal_watches, source); + G_UNLOCK (unix_signal_lock); +} + #endif /* G_OS_WIN32 */ static gboolean @@ -4292,36 +4492,75 @@ g_child_watch_dispatch (GSource *source, #ifndef G_OS_WIN32 static void -g_child_watch_signal_handler (int signum) +g_unix_signal_handler (int signum) { - child_watch_count ++; + if (signum == SIGCHLD) + child_watch_count ++; - if (child_watch_init_state == CHILD_WATCH_INITIALIZED_THREADED) + if (unix_signal_init_state == UNIX_SIGNAL_INITIALIZED_THREADED) { - char buf[1] = { _UNIX_SIGNAL_PIPE_SIGCHLD_CHAR }; + char buf[1]; + switch (signum) + { + case SIGCHLD: + buf[0] = _UNIX_SIGNAL_PIPE_SIGCHLD_CHAR; + break; + case SIGHUP: + buf[0] = _UNIX_SIGNAL_PIPE_SIGHUP_CHAR; + break; + case SIGINT: + buf[0] = _UNIX_SIGNAL_PIPE_SIGINT_CHAR; + break; + case SIGTERM: + buf[0] = _UNIX_SIGNAL_PIPE_SIGTERM_CHAR; + break; + default: + /* Shouldn't happen */ + return; + } write (unix_signal_wake_up_pipe[1], buf, 1); } else { - /* We count on the signal interrupting the poll in the same thread. - */ + /* We count on the signal interrupting the poll in the same thread. */ + switch (signum) + { + case SIGCHLD: + /* Nothing to do - the handler will call waitpid() */ + break; + case SIGHUP: + unix_signal_state.sighup_delivered = TRUE; + break; + case SIGINT: + unix_signal_state.sigint_delivered = TRUE; + break; + case SIGTERM: + unix_signal_state.sigterm_delivered = TRUE; + break; + default: + g_assert_not_reached (); + break; + } } } static void -g_child_watch_source_init_single (void) +deliver_unix_signal (int signum) { - struct sigaction action; + GSList *iter; + g_assert (signum == SIGHUP || signum == SIGINT || signum == SIGTERM); - g_assert (! g_thread_supported()); - g_assert (child_watch_init_state == CHILD_WATCH_UNINITIALIZED); + G_LOCK (unix_signal_lock); + for (iter = unix_signal_watches; iter; iter = iter->next) + { + GUnixSignalWatchSource *source = iter->data; - child_watch_init_state = CHILD_WATCH_INITIALIZED_SINGLE; - - action.sa_handler = g_child_watch_signal_handler; - sigemptyset (&action.sa_mask); - action.sa_flags = SA_NOCLDSTOP; - sigaction (SIGCHLD, &action, NULL); + if (source->signum != signum) + continue; + + source->pending = TRUE; + } + G_UNLOCK (unix_signal_lock); } static gpointer unix_signal_helper_thread (gpointer data) G_GNUC_NORETURN; @@ -4341,6 +4580,9 @@ unix_signal_helper_thread (gpointer data) { gchar b[128]; ssize_t i, bytes_read; + gboolean sigterm_received = FALSE; + gboolean sigint_received = FALSE; + gboolean sighup_received = FALSE; bytes_read = read (unix_signal_wake_up_pipe[0], b, sizeof (b)); if (bytes_read < 0) @@ -4366,77 +4608,86 @@ unix_signal_helper_thread (gpointer data) * that info down the pipe would require a more structured * data stream (as opposed to a single byte). */ - _g_main_wake_up_all_contexts (); + break; + case _UNIX_SIGNAL_PIPE_SIGTERM_CHAR: + sigterm_received = TRUE; + break; + case _UNIX_SIGNAL_PIPE_SIGHUP_CHAR: + sighup_received = TRUE; + break; + case _UNIX_SIGNAL_PIPE_SIGINT_CHAR: + sigint_received = TRUE; break; default: g_warning ("Invalid char '%c' read from child watch pipe", b[i]); break; } + if (sigterm_received) + deliver_unix_signal (SIGTERM); + if (sigint_received) + deliver_unix_signal (SIGINT); + if (sighup_received) + deliver_unix_signal (SIGHUP); + _g_main_wake_up_all_contexts (); } } } static void -_g_main_init_unix_signal_wakeup_pipe (void) +init_unix_signal_wakeup_state_unlocked (void) { GError *error = NULL; - G_LOCK (unix_signal_lock); + if (!g_thread_supported ()) + { + /* There is nothing to do for initializing in the non-threaded + * case. + */ + if (unix_signal_init_state == UNIX_SIGNAL_UNINITIALIZED) + unix_signal_init_state = UNIX_SIGNAL_INITIALIZED_SINGLE; + return; + } - if (unix_signal_wake_up_pipe[0] >= 0) - goto out; - - g_assert (g_thread_supported()); + if (unix_signal_init_state == UNIX_SIGNAL_INITIALIZED_THREADED) + return; if (!g_unix_pipe_flags (unix_signal_wake_up_pipe, FD_CLOEXEC, &error)) g_error ("Cannot create UNIX signal wake up pipe: %s\n", error->message); fcntl (unix_signal_wake_up_pipe[1], F_SETFL, O_NONBLOCK | fcntl (unix_signal_wake_up_pipe[1], F_GETFL)); /* We create a helper thread that polls on the wakeup pipe indefinitely */ - /* FIXME: Think this through for races */ if (g_thread_create (unix_signal_helper_thread, NULL, FALSE, &error) == NULL) g_error ("Cannot create a thread to monitor UNIX signals: %s\n", error->message); - out: + unix_signal_init_state = UNIX_SIGNAL_INITIALIZED_THREADED; +} + +static void +init_unix_signal_wakeup_state (void) +{ + G_LOCK (unix_signal_lock); + + init_unix_signal_wakeup_state_unlocked (); + G_UNLOCK (unix_signal_lock); } -static void -g_child_watch_source_init_multi_threaded (void) -{ - struct sigaction action; - - _g_main_init_unix_signal_wakeup_pipe (); - - child_watch_init_state = CHILD_WATCH_INITIALIZED_THREADED; - - action.sa_handler = g_child_watch_signal_handler; - sigemptyset (&action.sa_mask); - action.sa_flags = SA_RESTART | SA_NOCLDSTOP; - sigaction (SIGCHLD, &action, NULL); -} - -static void -g_child_watch_source_init_promote_single_to_threaded (void) -{ - g_child_watch_source_init_multi_threaded (); -} - static void g_child_watch_source_init (void) { - if (g_thread_supported()) + init_unix_signal_wakeup_state (); + + G_LOCK (unix_signal_lock); + if (!unix_signal_state.sigchld_handler_installed) { - if (child_watch_init_state == CHILD_WATCH_UNINITIALIZED) - g_child_watch_source_init_multi_threaded (); - else if (child_watch_init_state == CHILD_WATCH_INITIALIZED_SINGLE) - g_child_watch_source_init_promote_single_to_threaded (); - } - else - { - if (child_watch_init_state == CHILD_WATCH_UNINITIALIZED) - g_child_watch_source_init_single (); + struct sigaction action; + action.sa_handler = g_unix_signal_handler; + sigemptyset (&action.sa_mask); + action.sa_flags = SA_RESTART | SA_NOCLDSTOP; + sigaction (SIGCHLD, &action, NULL); + unix_signal_state.sigchld_handler_installed = TRUE; } + G_UNLOCK (unix_signal_lock); } #endif /* !G_OS_WIN32 */ diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am index ca42eb4f8..34cae6453 100644 --- a/glib/tests/Makefile.am +++ b/glib/tests/Makefile.am @@ -171,7 +171,11 @@ sort_LDADD = $(progs_ldadd) if OS_UNIX TEST_PROGS += unix -unix_LDADD = $(progs_ldadd) +unix_LDADD = $(progs_ldadd) $(top_builddir)/gthread/libgthread-2.0.la + +TEST_PROGS += unix-nothreads +unix_nothreads_SOURCES = unix.c +unix_nothreads_LDADD = $(progs_ldadd) # some testing of gtester funcitonality XMLLINT=xmllint diff --git a/glib/tests/unix.c b/glib/tests/unix.c index 2dc23646d..065deb1e1 100644 --- a/glib/tests/unix.c +++ b/glib/tests/unix.c @@ -48,13 +48,94 @@ test_pipe (void) g_assert (g_str_has_prefix (buf, "hello")); } +static gboolean sighup_received = FALSE; + +static gboolean +on_sighup_received (gpointer user_data) +{ + GMainLoop *loop = user_data; + g_main_loop_quit (loop); + sighup_received = TRUE; + return FALSE; +} + +static gboolean +sighup_not_received (gpointer data) +{ + GMainLoop *loop = data; + (void) loop; + g_error ("Timed out waiting for SIGHUP"); + return FALSE; +} + +static gboolean +exit_mainloop (gpointer data) +{ + GMainLoop *loop = data; + g_main_loop_quit (loop); + return FALSE; +} + +static void +test_sighup (void) +{ + GMainLoop *mainloop; + + mainloop = g_main_loop_new (NULL, FALSE); + + sighup_received = FALSE; + g_unix_signal_add_watch_full (SIGHUP, + G_PRIORITY_DEFAULT, + on_sighup_received, + mainloop, + NULL); + kill (getpid (), SIGHUP); + g_assert (!sighup_received); + g_timeout_add (5000, sighup_not_received, mainloop); + g_main_loop_run (mainloop); + g_assert (sighup_received); + sighup_received = FALSE; + + /* Ensure we don't get double delivery */ + g_timeout_add (500, exit_mainloop, mainloop); + g_main_loop_run (mainloop); + g_assert (!sighup_received); +} + +static void +test_sighup_add_remove (void) +{ + GMainLoop *mainloop; + guint id; + + mainloop = g_main_loop_new (NULL, FALSE); + + sighup_received = FALSE; + id = g_unix_signal_add_watch_full (SIGHUP, + G_PRIORITY_DEFAULT, + on_sighup_received, + mainloop, + NULL); + g_source_remove (id); + kill (getpid (), SIGHUP); + g_assert (!sighup_received); + +} + int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); +#ifdef TEST_THREADED + g_thread_init (NULL); +#endif + g_test_add_func ("/glib-unix/pipe", test_pipe); + g_test_add_func ("/glib-unix/sighup", test_sighup); + g_test_add_func ("/glib-unix/sighup_again", test_sighup); + g_test_add_func ("/glib-unix/sighup_add_remove", test_sighup_add_remove); return g_test_run(); } diff --git a/gthread/tests/Makefile.am b/gthread/tests/Makefile.am index 387098ad8..436498a25 100644 --- a/gthread/tests/Makefile.am +++ b/gthread/tests/Makefile.am @@ -13,3 +13,8 @@ TEST_PROGS += 1bit-emufutex 1bit_emufutex_SOURCES = 1bit-mutex.c 1bit_emufutex_CFLAGS = -DTEST_EMULATED_FUTEX 1bit_emufutex_LDADD = $(progs_ldadd) $(top_builddir)/gthread/libgthread-2.0.la + +TEST_PROGS += unix-multithreaded +unix_multithreaded_SOURCES = $(top_srcdir)/glib/tests/unix.c +unix_multithreaded_CFLAGS = -DTEST_THREADED +unix_multithreaded_LDADD = $(progs_ldadd) $(top_builddir)/gthread/libgthread-2.0.la From 7b04bbc8e05f8d22309990599820eeb2438b3cbd Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 27 Apr 2011 18:42:29 -0400 Subject: [PATCH 80/85] glib/Makefile.am: Remove stray tab --- glib/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glib/Makefile.am b/glib/Makefile.am index ba76729c9..5a9ab53a6 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -459,7 +459,7 @@ dist-hook: $(BUILT_EXTRA_DIST) ../build/win32/vs9/glib.vcproj ../build/win32/vs1 done >libglib.vs10.sourcefiles $(CPP) -P - <$(top_srcdir)/build/win32/vs10/glib.vcxprojin >$@ rm libglib.vs10.sourcefiles - + ../build/win32/vs10/glib.vcxproj.filters: $(top_srcdir)/build/win32/vs10/glib.vcxproj.filtersin for F in $(libglib_2_0_la_SOURCES); do \ case $$F in \ From a1fbe7ae8402c18fc5ebae1d07a90342f79621f3 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 27 Apr 2011 19:09:38 -0400 Subject: [PATCH 81/85] Drop stray reference to gthread.la We now build this test multithreaded in gthread/tests. --- glib/tests/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am index 34cae6453..4c8008486 100644 --- a/glib/tests/Makefile.am +++ b/glib/tests/Makefile.am @@ -171,7 +171,7 @@ sort_LDADD = $(progs_ldadd) if OS_UNIX TEST_PROGS += unix -unix_LDADD = $(progs_ldadd) $(top_builddir)/gthread/libgthread-2.0.la +unix_LDADD = $(progs_ldadd) TEST_PROGS += unix-nothreads unix_nothreads_SOURCES = unix.c From e585059514714b7bc191fa3467cb15e86dcc7e09 Mon Sep 17 00:00:00 2001 From: Shaun McCance Date: Thu, 28 Apr 2011 12:41:41 -0400 Subject: [PATCH 82/85] glib/gvariant.c: Fix variable name in example code --- glib/gvariant.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glib/gvariant.c b/glib/gvariant.c index b77e60d5e..52a63495b 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -2693,7 +2693,7 @@ g_variant_iter_free (GVariantIter *iter) * GVariantIter iter; * GVariant *child; * - * g_variant_iter_init (&iter, dictionary); + * g_variant_iter_init (&iter, container); * while ((child = g_variant_iter_next_value (&iter))) * { * g_print ("type '%s'\n", g_variant_get_type_string (child)); From 1763c2a575a959efa96795fc8d9d2cff60dd70cc Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Thu, 28 Apr 2011 20:45:34 +0200 Subject: [PATCH 83/85] Updated Spanish translation --- po/es.po | 458 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 241 insertions(+), 217 deletions(-) diff --git a/po/es.po b/po/es.po index bf4619995..a861d0dfd 100644 --- a/po/es.po +++ b/po/es.po @@ -13,8 +13,8 @@ msgstr "" "Project-Id-Version: glib.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-04-09 16:54+0000\n" -"PO-Revision-Date: 2011-04-11 19:21+0200\n" +"POT-Creation-Date: 2011-04-26 00:04+0000\n" +"PO-Revision-Date: 2011-04-28 10:22+0200\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -559,32 +559,32 @@ msgstr "Falló al abrir el archivo «%s»: open() falló: %s" msgid "Failed to map file '%s': mmap() failed: %s" msgstr "Falló al mapear el archivo «%s»: mmap() falló: %s" -#: ../glib/gmarkup.c:354 ../glib/gmarkup.c:395 +#: ../glib/gmarkup.c:355 ../glib/gmarkup.c:396 #, c-format msgid "Error on line %d char %d: " msgstr "Error en la línea %d, carácter %d: " -#: ../glib/gmarkup.c:417 ../glib/gmarkup.c:500 +#: ../glib/gmarkup.c:418 ../glib/gmarkup.c:501 #, c-format msgid "Invalid UTF-8 encoded text in name - not valid '%s'" msgstr "Texto codificado como UTF-8 en el nombre no válido; «%s» no es válido" -#: ../glib/gmarkup.c:428 +#: ../glib/gmarkup.c:429 #, c-format msgid "'%s' is not a valid name " msgstr "«%s» no es un nombre válido " -#: ../glib/gmarkup.c:444 +#: ../glib/gmarkup.c:445 #, c-format msgid "'%s' is not a valid name: '%c' " msgstr "«%s» no es un nombre válido: «%c» " -#: ../glib/gmarkup.c:553 +#: ../glib/gmarkup.c:554 #, c-format msgid "Error on line %d: %s" msgstr "Error en la línea %d: %s" -#: ../glib/gmarkup.c:637 +#: ../glib/gmarkup.c:638 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -594,7 +594,7 @@ msgstr "" "carácter de referencia( por ejemplo ê) - tal vez el dígito es demasiado " "grande" -#: ../glib/gmarkup.c:649 +#: ../glib/gmarkup.c:650 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -604,24 +604,24 @@ msgstr "" "un carácter «&» sin pretender iniciar una entidad, escape el carácter \"&\" " "como &" -#: ../glib/gmarkup.c:675 +#: ../glib/gmarkup.c:676 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "El carácter de referencia «%-.*s» no codifica un carácter permitido" -#: ../glib/gmarkup.c:713 +#: ../glib/gmarkup.c:714 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "La entidad '&;' está vacía; las entidades válidas son: & " < " "> '" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:722 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "El nombre de la entidad «%-.*s» es desconocido" -#: ../glib/gmarkup.c:726 +#: ../glib/gmarkup.c:727 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -630,11 +630,11 @@ msgstr "" "\"&\" sin la intención de indicar una entidad, escape el signo \"&\" como " "&" -#: ../glib/gmarkup.c:1077 +#: ../glib/gmarkup.c:1078 msgid "Document must begin with an element (e.g. )" msgstr "El documento debe comenzar con un elemento (por ejemplo: )" -#: ../glib/gmarkup.c:1117 +#: ../glib/gmarkup.c:1118 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -643,7 +643,7 @@ msgstr "" "«%s» no es un carácter válido a continuación del carácter '<'; no debe " "iniciar un nombre de elemento" -#: ../glib/gmarkup.c:1185 +#: ../glib/gmarkup.c:1186 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag '%" @@ -652,7 +652,7 @@ msgstr "" "Carácter «%s» impropio, se esperaba un carácter «>» para terminar la etiqueta " "vacía del elemento «%s»" -#: ../glib/gmarkup.c:1269 +#: ../glib/gmarkup.c:1270 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -660,7 +660,7 @@ msgstr "" "Carácter «%s» impropio, se esperaba el carácter '=' después del nombre de " "atributo «%s» del elemento «%s»" -#: ../glib/gmarkup.c:1310 +#: ../glib/gmarkup.c:1311 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -671,7 +671,7 @@ msgstr "" "etiqueta de inicio del elemento «%s» u opcionalmente un atributo; tal vez " "utilizó un carácter que no es válido en un nombre de atributo" -#: ../glib/gmarkup.c:1354 +#: ../glib/gmarkup.c:1355 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -680,7 +680,7 @@ msgstr "" "Carácter «%s» impropio, se esperaba una marca de apertura de comillas después " "del signo igual al darle valor al atributo «%s» del elemento «%s»" -#: ../glib/gmarkup.c:1487 +#: ../glib/gmarkup.c:1488 #, c-format msgid "" "'%s' is not a valid character following the characters ''" -#: ../glib/gmarkup.c:1534 +#: ../glib/gmarkup.c:1535 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "El elemento «%s» fue cerrado, no existe ningún elemento abierto" -#: ../glib/gmarkup.c:1543 +#: ../glib/gmarkup.c:1544 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "" "Se cerró el elemento «%s», pero el elemento que está abierto actualmente es «%" "s»" -#: ../glib/gmarkup.c:1711 +#: ../glib/gmarkup.c:1712 msgid "Document was empty or contained only whitespace" msgstr "El documento estaba vacío o sólo contenía espacios en blanco" -#: ../glib/gmarkup.c:1725 +#: ../glib/gmarkup.c:1726 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "El documento termina inesperadamente justo después de un '<'" -#: ../glib/gmarkup.c:1733 ../glib/gmarkup.c:1778 +#: ../glib/gmarkup.c:1734 ../glib/gmarkup.c:1779 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -727,7 +727,7 @@ msgstr "" "El documento termina inesperadamente con elementos todavía abiertos - «%s» " "fue el último elemento abierto" -#: ../glib/gmarkup.c:1741 +#: ../glib/gmarkup.c:1742 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -736,21 +736,21 @@ msgstr "" "El documento termina inesperadamente, se esperaba un carácter '>' " "finalizando la etiqueta <%s/>" -#: ../glib/gmarkup.c:1747 +#: ../glib/gmarkup.c:1748 msgid "Document ended unexpectedly inside an element name" msgstr "El documento termina inesperadamente dentro de un nombre de elemento" -#: ../glib/gmarkup.c:1753 +#: ../glib/gmarkup.c:1754 msgid "Document ended unexpectedly inside an attribute name" msgstr "El documento termina inesperadamente dentro de un nombre de atributo" -#: ../glib/gmarkup.c:1758 +#: ../glib/gmarkup.c:1759 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "" "El documento terminó inesperadamente dentro de una etiqueta de apertura de " "elemento." -#: ../glib/gmarkup.c:1764 +#: ../glib/gmarkup.c:1765 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -758,18 +758,18 @@ msgstr "" "El documento termina inesperadamente después de los signos igual que siguen " "al nombre de atributo; sin valor de atributo" -#: ../glib/gmarkup.c:1771 +#: ../glib/gmarkup.c:1772 msgid "Document ended unexpectedly while inside an attribute value" msgstr "El documento termina inesperadamente dentro del valor de un atributo" -#: ../glib/gmarkup.c:1787 +#: ../glib/gmarkup.c:1788 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "El documento termina inesperadamente dentro de la etiqueta de cierre del " "elemento «%s»" -#: ../glib/gmarkup.c:1793 +#: ../glib/gmarkup.c:1794 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "El documento termina inesperadamente dentro de un comentario o instrucción " @@ -796,7 +796,7 @@ msgid "the pattern contains items not supported for partial matching" msgstr "" "el patrón contiene elementos no soportados para una coincidencia parcial" -#: ../glib/gregex.c:211 ../gio/glocalfile.c:2111 +#: ../glib/gregex.c:211 ../gio/glocalfile.c:2117 msgid "internal error" msgstr "error interno" @@ -1425,7 +1425,7 @@ msgstr "El flujo ya se cerró" #: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637 #: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912 -#: ../gio/glocalfile.c:2104 ../gio/gsimpleasyncresult.c:810 +#: ../gio/glocalfile.c:2110 ../gio/gsimpleasyncresult.c:810 #: ../gio/gsimpleasyncresult.c:836 msgid "Operation was cancelled" msgstr "Se canceló la operación" @@ -1473,7 +1473,7 @@ msgid "Unexpected early end-of-stream" msgstr "Final de flujo inesperadamente prematuro" #: ../gio/gdbusaddress.c:142 ../gio/gdbusaddress.c:230 -#: ../gio/gdbusaddress.c:323 +#: ../gio/gdbusaddress.c:311 #, c-format msgid "Unsupported key `%s' in address entry `%s'" msgstr "Clave «%s» no soportada en la entrada de dirección «%s»" @@ -1492,37 +1492,22 @@ msgid "Meaningless key/value pair combination in address entry `%s'" msgstr "" "Combinación del par clave/valor sin sentido en la entrada de dirección «%s»" -#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:338 +#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:326 #, c-format msgid "Error in address `%s' - the port attribute is malformed" msgstr "Error en la dirección «%s»; el atributo de puerto está mal formado" -#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:349 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address `%s' - the family attribute is malformed" msgstr "Error en la dirección «%s»; el atributo de familia está mal formado" -#: ../gio/gdbusaddress.c:266 -#, c-format -#| msgid "" -#| "Error in address `%s' - the noncefile attribute is missing or malformed" -msgid "Error in address `%s' - missing noncefile attribute" -msgstr "" -"Error en la dirección «%s»: falta el atributo para el archivo de número usado " -"una sola vez" - -#: ../gio/gdbusaddress.c:275 ../gio/gdbusaddress.c:359 -#, c-format -#| msgid "Error in address `%s' - the port attribute is malformed" -msgid "Error in address `%s' - missing host attribute" -msgstr "Error en la dirección «%s»; falta el atributo para el servidor" - -#: ../gio/gdbusaddress.c:463 +#: ../gio/gdbusaddress.c:446 #, c-format msgid "Address element `%s', does not contain a colon (:)" msgstr "El elemento de dirección «%s» no contiene dos puntos (:)" -#: ../gio/gdbusaddress.c:484 +#: ../gio/gdbusaddress.c:467 #, c-format msgid "" "Key/Value pair %d, `%s', in address element `%s', does not contain an equal " @@ -1531,7 +1516,7 @@ msgstr "" "El par clave/valor %d, «%s», en el elemento de dirección «%s», no contiene un " "signo de igual" -#: ../gio/gdbusaddress.c:498 +#: ../gio/gdbusaddress.c:481 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, `%s', in address element " @@ -1540,7 +1525,7 @@ msgstr "" "Error al desescapar la clave o el valor en el par clave/valor %d, «%s», en el " "elemento de dirección «%s»" -#: ../gio/gdbusaddress.c:576 +#: ../gio/gdbusaddress.c:559 #, c-format msgid "" "Error in address `%s' - the unix transport requires exactly one of the keys " @@ -1549,93 +1534,93 @@ msgstr "" "Error en la dirección «%s»: el transporte UNIX requiere exactamente que una " "de las claves «path» o «abstract» esté establecida" -#: ../gio/gdbusaddress.c:612 +#: ../gio/gdbusaddress.c:595 #, c-format msgid "Error in address `%s' - the host attribute is missing or malformed" msgstr "" "Error en la dirección «%s»: falta o está mal formado el atributo para el " "servidor" -#: ../gio/gdbusaddress.c:626 +#: ../gio/gdbusaddress.c:609 #, c-format msgid "Error in address `%s' - the port attribute is missing or malformed" msgstr "" "Error en la dirección «%s»: falta o está mal formado el atributo para el " "puerto" -#: ../gio/gdbusaddress.c:640 +#: ../gio/gdbusaddress.c:623 #, c-format msgid "Error in address `%s' - the noncefile attribute is missing or malformed" msgstr "" "Error en la dirección «%s»: falta o está mal formado el atributo para el " "archivo de número usado una sola vez" -#: ../gio/gdbusaddress.c:661 +#: ../gio/gdbusaddress.c:644 msgid "Error auto-launching: " msgstr "Error al autolanzar: " -#: ../gio/gdbusaddress.c:669 +#: ../gio/gdbusaddress.c:652 #, c-format msgid "Unknown or unsupported transport `%s' for address `%s'" msgstr "Transporte «%s» desconocido o no soportado para la dirección «%s»" -#: ../gio/gdbusaddress.c:705 +#: ../gio/gdbusaddress.c:688 #, c-format msgid "Error opening nonce file `%s': %s" msgstr "Error al abrir el archivo de número usado una sola vez «%s»: %s" -#: ../gio/gdbusaddress.c:723 +#: ../gio/gdbusaddress.c:706 #, c-format msgid "Error reading from nonce file `%s': %s" msgstr "Error al leer el archivo de número usado una sola vez «%s»: %s" -#: ../gio/gdbusaddress.c:732 +#: ../gio/gdbusaddress.c:715 #, c-format msgid "Error reading from nonce file `%s', expected 16 bytes, got %d" msgstr "" "Error al leer el archivo de número usado una sola vez «%s», se esperaban 16 " "bytes, se obtuvieron %d" -#: ../gio/gdbusaddress.c:750 +#: ../gio/gdbusaddress.c:733 #, c-format msgid "Error writing contents of nonce file `%s' to stream:" msgstr "" "Error al escribir el contenido del archivo de número usado una sola vez «%s» " "al flujo:" -#: ../gio/gdbusaddress.c:968 +#: ../gio/gdbusaddress.c:951 msgid "The given address is empty" msgstr "La dirección proporcionada está vacía" -#: ../gio/gdbusaddress.c:1037 +#: ../gio/gdbusaddress.c:1020 msgid "Cannot spawn a message bus without a machine-id: " msgstr "No se puede lanzar («spawn») un mensaje al bus sin un ID de máquina: " -#: ../gio/gdbusaddress.c:1074 +#: ../gio/gdbusaddress.c:1057 #, c-format msgid "Error spawning command line `%s': " msgstr "Error al lanzar («spawn») el comando «%s»: " -#: ../gio/gdbusaddress.c:1085 +#: ../gio/gdbusaddress.c:1068 #, c-format msgid "Abnormal program termination spawning command line `%s': %s" msgstr "Terminación anómala de programa al lanzar («spawn») el comando «%s»: %s" -#: ../gio/gdbusaddress.c:1099 +#: ../gio/gdbusaddress.c:1082 #, c-format msgid "Command line `%s' exited with non-zero exit status %d: %s" msgstr "" "El comando de línea «%s» finalizó con un estado de salida distinto de cero %" "d: %s" -#: ../gio/gdbusaddress.c:1172 +#: ../gio/gdbusaddress.c:1155 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "No se puede determinar la dirección del bus de sesión (no implementado para " "este SO)" -#: ../gio/gdbusaddress.c:1271 ../gio/gdbusconnection.c:6178 +#: ../gio/gdbusaddress.c:1254 ../gio/gdbusconnection.c:6183 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -1644,7 +1629,7 @@ msgstr "" "No se puede determinar la dirección del bus desde la variable de entorno " "DBUS_STARTER_BUS_TYPE; variable «%s» desconocida" -#: ../gio/gdbusaddress.c:1280 ../gio/gdbusconnection.c:6187 +#: ../gio/gdbusaddress.c:1263 ../gio/gdbusconnection.c:6192 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -1652,7 +1637,7 @@ msgstr "" "No se puede determinar la dirección del bus porque la variable de entorno " "DBUS_STARTER_BUS_TYPE no está establecida" -#: ../gio/gdbusaddress.c:1290 +#: ../gio/gdbusaddress.c:1273 #, c-format msgid "Unknown bus type %d" msgstr "Tipo de bus %d desconocido" @@ -1674,7 +1659,7 @@ msgstr "" "Se agotaron todos los mecanismos de autenticación (intentados: %s) " "(disponibles: %s)" -#: ../gio/gdbusauth.c:1151 +#: ../gio/gdbusauth.c:1159 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer" msgstr "Cancelado a través de GDBusAuthObserver::authorize-authenticated-peer" @@ -1701,13 +1686,13 @@ msgstr "Error al crear el directorio «%s»: %s" msgid "Error opening keyring `%s' for reading: " msgstr "Error al abrir el depósito de claves «%s» para su lectura: " -#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:717 +#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:718 #, c-format msgid "Line %d of the keyring at `%s' with content `%s' is malformed" msgstr "" "La línea %d del depósito de claves en «%s» con contenido «%s» está mal formada" -#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:731 +#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:732 #, c-format msgid "" "First token of line %d of the keyring at `%s' with content `%s' is malformed" @@ -1715,7 +1700,7 @@ msgstr "" "El primer token de la línea %d del depósito de claves en «%s» con contenido «%" "s» está mal formado" -#: ../gio/gdbusauthmechanismsha1.c:435 ../gio/gdbusauthmechanismsha1.c:745 +#: ../gio/gdbusauthmechanismsha1.c:435 ../gio/gdbusauthmechanismsha1.c:746 #, c-format msgid "" "Second token of line %d of the keyring at `%s' with content `%s' is malformed" @@ -1748,12 +1733,12 @@ msgstr "Error al cerrar (desenlazar) el archivo de bloqueo «%s»: %s" msgid "Error unlinking lock file `%s': %s" msgstr "Error al desenlazar el archivo de bloqueo «%s»: %s" -#: ../gio/gdbusauthmechanismsha1.c:684 +#: ../gio/gdbusauthmechanismsha1.c:685 #, c-format msgid "Error opening keyring `%s' for writing: " msgstr "Error al abrir el depósito de claves «%s» para su escritura:" -#: ../gio/gdbusauthmechanismsha1.c:881 +#: ../gio/gdbusauthmechanismsha1.c:882 #, c-format msgid "(Additionally, releasing the lock for `%s' also failed: %s) " msgstr "(Adicionalmente, también falló la liberación del bloqueo para «%s»: %s)" @@ -1767,14 +1752,14 @@ msgstr "La conexión está cerrada" msgid "Timeout was reached" msgstr "Se alcanzó el tiempo de expiración" -#: ../gio/gdbusconnection.c:2296 +#: ../gio/gdbusconnection.c:2301 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Se encontraron opciones no soportadas al construir la conexión del lado del " "cliente" -#: ../gio/gdbusconnection.c:3756 ../gio/gdbusconnection.c:4073 +#: ../gio/gdbusconnection.c:3761 ../gio/gdbusconnection.c:4078 #, c-format msgid "" "No such interface `org.freedesktop.DBus.Properties' on object at path %s" @@ -1782,68 +1767,68 @@ msgstr "" "No existe la interfaz «org.freedesktop.DBus.Properties» en el objeto en la " "ruta %s" -#: ../gio/gdbusconnection.c:3828 +#: ../gio/gdbusconnection.c:3833 #, c-format msgid "Error setting property `%s': Expected type `%s' but got `%s'" msgstr "" "Error al establecer la propiedad «%s». Se esperaba el tipo «%s» pero se obtuvo " "«%s»." -#: ../gio/gdbusconnection.c:3923 +#: ../gio/gdbusconnection.c:3928 #, c-format msgid "No such property `%s'" msgstr "No existe la propiedad «%s»" -#: ../gio/gdbusconnection.c:3935 +#: ../gio/gdbusconnection.c:3940 #, c-format msgid "Property `%s' is not readable" msgstr "No se puede leer la clave «%s»" -#: ../gio/gdbusconnection.c:3946 +#: ../gio/gdbusconnection.c:3951 #, c-format msgid "Property `%s' is not writable" msgstr "No se puede escribir la clave «%s»" -#: ../gio/gdbusconnection.c:4016 ../gio/gdbusconnection.c:5622 +#: ../gio/gdbusconnection.c:4021 ../gio/gdbusconnection.c:5627 #, c-format msgid "No such interface `%s'" msgstr "La interfaz «%s» no existe" -#: ../gio/gdbusconnection.c:4201 +#: ../gio/gdbusconnection.c:4206 msgid "No such interface" msgstr "No existe tal interfaz" -#: ../gio/gdbusconnection.c:4420 ../gio/gdbusconnection.c:6128 +#: ../gio/gdbusconnection.c:4425 ../gio/gdbusconnection.c:6133 #, c-format msgid "No such interface `%s' on object at path %s" msgstr "No existe la interfaz «%s» en el objeto en la ruta %s" -#: ../gio/gdbusconnection.c:4472 +#: ../gio/gdbusconnection.c:4477 #, c-format msgid "No such method `%s'" msgstr "No existe el método «%s»" -#: ../gio/gdbusconnection.c:4503 +#: ../gio/gdbusconnection.c:4508 #, c-format msgid "Type of message, `%s', does not match expected type `%s'" msgstr "El tipo de mensaje, «%s», no concide con el tipo esperado «%s»" -#: ../gio/gdbusconnection.c:4722 +#: ../gio/gdbusconnection.c:4727 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Ya existe un objeto exportado para la interfaz %s en %s" -#: ../gio/gdbusconnection.c:4917 +#: ../gio/gdbusconnection.c:4922 #, c-format msgid "Method `%s' returned type `%s', but expected `%s'" msgstr "El método «%s» devolvió el tipo «%s» pero se esperaba «%s»" -#: ../gio/gdbusconnection.c:5733 +#: ../gio/gdbusconnection.c:5738 #, c-format msgid "Method `%s' on interface `%s' with signature `%s' does not exist" msgstr "El método «%s» con interfaz «%s» y firma «%s» no existe" -#: ../gio/gdbusconnection.c:5851 +#: ../gio/gdbusconnection.c:5856 #, c-format msgid "A subtree is already exported for %s" msgstr "Ya se ha exportado un subárbol para %s" @@ -2085,12 +2070,12 @@ msgstr "" msgid "Error writing nonce file at `%s': %s" msgstr "Error al escribir el archivo de número usado una sola vez en «%s»: %s" -#: ../gio/gdbusserver.c:1032 +#: ../gio/gdbusserver.c:1037 #, c-format msgid "The string `%s' is not a valid D-Bus GUID" msgstr "La cadena «%s» no es un GUID válido de D-Bus" -#: ../gio/gdbusserver.c:1072 +#: ../gio/gdbusserver.c:1077 #, c-format msgid "Cannot listen on unsupported transport `%s'" msgstr "No se puede escuchar en un transporte no soportado «%s»" @@ -2370,7 +2355,7 @@ msgstr "Operación no soportada" msgid "Containing mount does not exist" msgstr "El punto de montaje contenido no existe" -#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2260 +#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2266 msgid "Can't copy over directory" msgstr "No se puede copiar sobre el directorio" @@ -2378,7 +2363,7 @@ msgstr "No se puede copiar sobre el directorio" msgid "Can't copy directory over directory" msgstr "No se puede copiar directorio sobre directorio" -#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2269 +#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2275 msgid "Target file exists" msgstr "El archivo destino ya existe" @@ -2520,17 +2505,17 @@ msgstr "No hay suficiente espacio para la dirección del socket" msgid "Unsupported socket address" msgstr "Dirección del socket no soportada" -#: ../gio/glib-compile-schemas.c:739 +#: ../gio/glib-compile-schemas.c:742 msgid "empty names are not permitted" msgstr "no se permiten nombres vacíos" -#: ../gio/glib-compile-schemas.c:749 +#: ../gio/glib-compile-schemas.c:752 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "" "nombre «%s» no válido: los nombres deben comenzar por una letra minúscula" -#: ../gio/glib-compile-schemas.c:761 +#: ../gio/glib-compile-schemas.c:764 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -2539,36 +2524,36 @@ msgstr "" "nombre «%s» no válido: el carácter «%c» no es válido; sólo se permiten nombres " "en minúscula, números y guión («-»)." -#: ../gio/glib-compile-schemas.c:770 +#: ../gio/glib-compile-schemas.c:773 #, c-format msgid "invalid name '%s': two successive dashes ('--') are not permitted." msgstr "nombre «%s» no válido: no se permiten dos guiones seguidos («--»)." -#: ../gio/glib-compile-schemas.c:779 +#: ../gio/glib-compile-schemas.c:782 #, c-format msgid "invalid name '%s': the last character may not be a dash ('-')." msgstr "nombre «%s» no válido: el último caracter no puede ser un guión («-»)." -#: ../gio/glib-compile-schemas.c:787 +#: ../gio/glib-compile-schemas.c:790 #, c-format msgid "invalid name '%s': maximum length is 32" msgstr "nombre «%s» no válido: la longitud máxima es 32" -#: ../gio/glib-compile-schemas.c:856 +#: ../gio/glib-compile-schemas.c:859 #, c-format msgid " already specified" msgstr " ya especificado" -#: ../gio/glib-compile-schemas.c:882 +#: ../gio/glib-compile-schemas.c:885 msgid "can not add keys to a 'list-of' schema" msgstr "no se pueden añadir claves a un esquema de «lista-de»" -#: ../gio/glib-compile-schemas.c:893 +#: ../gio/glib-compile-schemas.c:896 #, c-format msgid " already specified" msgstr " ya especificada" -#: ../gio/glib-compile-schemas.c:911 +#: ../gio/glib-compile-schemas.c:914 #, c-format msgid "" " shadows in ; use " @@ -2577,7 +2562,7 @@ msgstr "" " eclipsa a en ; use " " para modificar el valor" -#: ../gio/glib-compile-schemas.c:922 +#: ../gio/glib-compile-schemas.c:925 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -2586,56 +2571,56 @@ msgstr "" "se debe especificar exactamente uno de «type», «enum» o «flags» como atributo " "para " -#: ../gio/glib-compile-schemas.c:941 +#: ../gio/glib-compile-schemas.c:944 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> aún no especificado." -#: ../gio/glib-compile-schemas.c:956 +#: ../gio/glib-compile-schemas.c:959 #, c-format msgid "invalid GVariant type string '%s'" msgstr "tipo de cadena GVarian «%s» no válida" -#: ../gio/glib-compile-schemas.c:986 +#: ../gio/glib-compile-schemas.c:989 msgid " given but schema isn't extending anything" msgstr "Se proporcionó pero el esquema no está extendiendo nada" -#: ../gio/glib-compile-schemas.c:999 +#: ../gio/glib-compile-schemas.c:1002 #, c-format msgid "no to override" msgstr "no existe para sobreescribir" -#: ../gio/glib-compile-schemas.c:1007 +#: ../gio/glib-compile-schemas.c:1010 #, c-format msgid " already specified" msgstr " ya especificada" -#: ../gio/glib-compile-schemas.c:1078 +#: ../gio/glib-compile-schemas.c:1081 #, c-format msgid " already specified" msgstr " ya especificado" -#: ../gio/glib-compile-schemas.c:1090 +#: ../gio/glib-compile-schemas.c:1093 #, c-format msgid " extends not yet existing schema '%s'" msgstr " extiende el esquema «%s» que aún no existe" -#: ../gio/glib-compile-schemas.c:1106 +#: ../gio/glib-compile-schemas.c:1109 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " es una lista del esquema «%s» que aún no existe" -#: ../gio/glib-compile-schemas.c:1114 +#: ../gio/glib-compile-schemas.c:1117 #, c-format msgid "Can not be a list of a schema with a path" msgstr "No puede ser una lista de un esquema con una ruta" -#: ../gio/glib-compile-schemas.c:1124 +#: ../gio/glib-compile-schemas.c:1127 #, c-format msgid "Can not extend a schema with a path" msgstr "No se puede extender un esquema con una ruta" -#: ../gio/glib-compile-schemas.c:1134 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid "" " is a list, extending which is not a list" @@ -2643,7 +2628,7 @@ msgstr "" " es una lista, extendiendo que no es una " "lista" -#: ../gio/glib-compile-schemas.c:1144 +#: ../gio/glib-compile-schemas.c:1147 #, c-format msgid "" " extends but '%s' " @@ -2652,73 +2637,73 @@ msgstr "" " extiende pero «%" "s» no extiende «%s»" -#: ../gio/glib-compile-schemas.c:1161 +#: ../gio/glib-compile-schemas.c:1164 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "si se especifica una ruta, debe comenzar y terminar con una barra" -#: ../gio/glib-compile-schemas.c:1168 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "the path of a list must end with ':/'" msgstr "la ruta de la lista debe terminar con «:/»" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1197 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> ya especificado" -#: ../gio/glib-compile-schemas.c:1414 +#: ../gio/glib-compile-schemas.c:1417 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "No se permite el elemento <%s> dentro de <%s>" -#: ../gio/glib-compile-schemas.c:1418 +#: ../gio/glib-compile-schemas.c:1421 #, c-format msgid "Element <%s> not allowed at toplevel" msgstr "No se permite el elemento <%s> en el nivel superior" -#: ../gio/glib-compile-schemas.c:1509 +#: ../gio/glib-compile-schemas.c:1512 #, c-format msgid "text may not appear inside <%s>" msgstr "El texto no debe aparecer dentro de <%s>" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1694 ../gio/glib-compile-schemas.c:1765 -#: ../gio/glib-compile-schemas.c:1841 +#: ../gio/glib-compile-schemas.c:1697 ../gio/glib-compile-schemas.c:1768 +#: ../gio/glib-compile-schemas.c:1844 #, c-format msgid "--strict was specified; exiting.\n" msgstr "se especificó --strict; saliendo.\n" -#: ../gio/glib-compile-schemas.c:1702 +#: ../gio/glib-compile-schemas.c:1705 #, c-format msgid "This entire file has been ignored.\n" msgstr "Se ha ignorado este archivo completamente.\n" -#: ../gio/glib-compile-schemas.c:1761 +#: ../gio/glib-compile-schemas.c:1764 #, c-format msgid "Ignoring this file.\n" msgstr "Ignorando este archivo.\n" -#: ../gio/glib-compile-schemas.c:1801 +#: ../gio/glib-compile-schemas.c:1804 #, c-format msgid "No such key `%s' in schema `%s' as specified in override file `%s'" msgstr "" "No existe la clave «%s» en el esquema «%s» como se especificó en el archivo de " "sobreescitura «%s»" -#: ../gio/glib-compile-schemas.c:1807 ../gio/glib-compile-schemas.c:1865 -#: ../gio/glib-compile-schemas.c:1893 +#: ../gio/glib-compile-schemas.c:1810 ../gio/glib-compile-schemas.c:1868 +#: ../gio/glib-compile-schemas.c:1896 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignorando la sobreescritura para esta clave.\n" -#: ../gio/glib-compile-schemas.c:1811 ../gio/glib-compile-schemas.c:1869 -#: ../gio/glib-compile-schemas.c:1897 +#: ../gio/glib-compile-schemas.c:1814 ../gio/glib-compile-schemas.c:1872 +#: ../gio/glib-compile-schemas.c:1900 #, c-format msgid " and --strict was specified; exiting.\n" msgstr "y se especificó --strict; saliendo.\n" -#: ../gio/glib-compile-schemas.c:1827 +#: ../gio/glib-compile-schemas.c:1830 #, c-format msgid "" "error parsing key `%s' in schema `%s' as specified in override file `%s': %" @@ -2727,12 +2712,12 @@ msgstr "" "error al analizar la clave «%s» en el esquema «%s» como se especificó en el " "archivo de sobreescritura «%s»: %s." -#: ../gio/glib-compile-schemas.c:1837 +#: ../gio/glib-compile-schemas.c:1840 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignorando la sobreescritura para esta clave.\n" -#: ../gio/glib-compile-schemas.c:1855 +#: ../gio/glib-compile-schemas.c:1858 #, c-format msgid "" "override for key `%s' in schema `%s' in override file `%s' is out of the " @@ -2741,7 +2726,7 @@ msgstr "" "la clave de sobreescritura «%s» en el esquema «%s» en el archivo de " "sobreescritura «%s» está fuera del rango proporcionado en el esquema" -#: ../gio/glib-compile-schemas.c:1883 +#: ../gio/glib-compile-schemas.c:1886 #, c-format msgid "" "override for key `%s' in schema `%s' in override file `%s' is not in the " @@ -2750,31 +2735,31 @@ msgstr "" "la clave de sobreescritura «%s» en el esquema «%s» en el archivo de " "sobreescritura «%s» no está en la lista de opciones válidas" -#: ../gio/glib-compile-schemas.c:1937 +#: ../gio/glib-compile-schemas.c:1940 msgid "where to store the gschemas.compiled file" msgstr "dónde almacenar el archivo gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1937 ../gio/glib-compile-schemas.c:1963 +#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1966 msgid "DIRECTORY" msgstr "DIRECTORIO" -#: ../gio/glib-compile-schemas.c:1938 +#: ../gio/glib-compile-schemas.c:1941 msgid "Abort on any errors in schemas" msgstr "Abortar ante cualquier error en los esquemas" -#: ../gio/glib-compile-schemas.c:1939 +#: ../gio/glib-compile-schemas.c:1942 msgid "Do not write the gschema.compiled file" msgstr "No escribir el archivo gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1940 +#: ../gio/glib-compile-schemas.c:1943 msgid "This option will be removed soon." msgstr "Pronto se quitará esta opción." -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1944 msgid "Do not enforce key name restrictions" msgstr "No forzar las restricciones de nombre de las claves" -#: ../gio/glib-compile-schemas.c:1966 +#: ../gio/glib-compile-schemas.c:1969 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -2785,22 +2770,22 @@ msgstr "" "Los archivos de esquema deben tener la extensión .gschema.xml,\n" "y el archivo de caché se llama gschemas.compiled." -#: ../gio/glib-compile-schemas.c:1982 +#: ../gio/glib-compile-schemas.c:1985 #, c-format msgid "You should give exactly one directory name\n" msgstr "Deberá proporcionar exactamente un nombre de directorio\n" -#: ../gio/glib-compile-schemas.c:2021 +#: ../gio/glib-compile-schemas.c:2024 #, c-format msgid "No schema files found: " msgstr "No se encontró ningún archivo de esquemas: " -#: ../gio/glib-compile-schemas.c:2024 +#: ../gio/glib-compile-schemas.c:2027 #, c-format msgid "doing nothing.\n" msgstr "sin hacer nada.\n" -#: ../gio/glib-compile-schemas.c:2027 +#: ../gio/glib-compile-schemas.c:2030 #, c-format msgid "removed existing output file.\n" msgstr "se quitó el archivo de salida existente.\n" @@ -2834,10 +2819,10 @@ msgstr "Error al renombrar el archivo: %s" msgid "Can't rename file, filename already exist" msgstr "No se puede renombrar el archivo, el nombre ya existe" -#: ../gio/glocalfile.c:1149 ../gio/glocalfile.c:2133 ../gio/glocalfile.c:2162 -#: ../gio/glocalfile.c:2322 ../gio/glocalfileoutputstream.c:571 +#: ../gio/glocalfile.c:1149 ../gio/glocalfile.c:2139 ../gio/glocalfile.c:2168 +#: ../gio/glocalfile.c:2328 ../gio/glocalfileoutputstream.c:571 #: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669 -#: ../gio/glocalfileoutputstream.c:1151 +#: ../gio/glocalfileoutputstream.c:1157 msgid "Invalid filename" msgstr "Nombre de archivo inválido" @@ -2846,81 +2831,81 @@ msgstr "Nombre de archivo inválido" msgid "Error opening file: %s" msgstr "Error al abrir el archivo: %s" -#: ../gio/glocalfile.c:1320 +#: ../gio/glocalfile.c:1326 msgid "Can't open directory" msgstr "No se puede abrir el directorio" -#: ../gio/glocalfile.c:1445 +#: ../gio/glocalfile.c:1451 #, c-format msgid "Error removing file: %s" msgstr "Error al eliminar el archivo: %s" -#: ../gio/glocalfile.c:1812 +#: ../gio/glocalfile.c:1818 #, c-format msgid "Error trashing file: %s" msgstr "Error al mover a la papelera el archivo: %s" -#: ../gio/glocalfile.c:1835 +#: ../gio/glocalfile.c:1841 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "No se pudo crear el directorio papelera %s: %s" -#: ../gio/glocalfile.c:1856 +#: ../gio/glocalfile.c:1862 msgid "Unable to find toplevel directory for trash" msgstr "" "No se pudo encontrar el directorio de nivel superior para mover a la papelera" -#: ../gio/glocalfile.c:1935 ../gio/glocalfile.c:1955 +#: ../gio/glocalfile.c:1941 ../gio/glocalfile.c:1961 msgid "Unable to find or create trash directory" msgstr "No se pudo encontrar o crear el directorio de la papelera" -#: ../gio/glocalfile.c:1989 +#: ../gio/glocalfile.c:1995 #, c-format msgid "Unable to create trashing info file: %s" msgstr "No se pudo crear la información de papelera para el archivo: %s" -#: ../gio/glocalfile.c:2018 ../gio/glocalfile.c:2023 ../gio/glocalfile.c:2103 -#: ../gio/glocalfile.c:2110 +#: ../gio/glocalfile.c:2024 ../gio/glocalfile.c:2029 ../gio/glocalfile.c:2109 +#: ../gio/glocalfile.c:2116 #, c-format msgid "Unable to trash file: %s" msgstr "No se pudo enviar a la papelera el archivo: %s" -#: ../gio/glocalfile.c:2137 +#: ../gio/glocalfile.c:2143 #, c-format msgid "Error creating directory: %s" msgstr "Error al crear el directorio: %s" -#: ../gio/glocalfile.c:2166 +#: ../gio/glocalfile.c:2172 #, c-format msgid "Filesystem does not support symbolic links" msgstr "El sistema de archivos no soporta enlaces simbólicos" -#: ../gio/glocalfile.c:2170 +#: ../gio/glocalfile.c:2176 #, c-format msgid "Error making symbolic link: %s" msgstr "Error al crear el enlace simbólico: %s" -#: ../gio/glocalfile.c:2232 ../gio/glocalfile.c:2326 +#: ../gio/glocalfile.c:2238 ../gio/glocalfile.c:2332 #, c-format msgid "Error moving file: %s" msgstr "Error al mover el archivo: %s" -#: ../gio/glocalfile.c:2255 +#: ../gio/glocalfile.c:2261 msgid "Can't move directory over directory" msgstr "No se puede mover un directorio sobre un directoro" -#: ../gio/glocalfile.c:2282 ../gio/glocalfileoutputstream.c:949 -#: ../gio/glocalfileoutputstream.c:963 ../gio/glocalfileoutputstream.c:978 -#: ../gio/glocalfileoutputstream.c:994 ../gio/glocalfileoutputstream.c:1008 +#: ../gio/glocalfile.c:2288 ../gio/glocalfileoutputstream.c:955 +#: ../gio/glocalfileoutputstream.c:969 ../gio/glocalfileoutputstream.c:984 +#: ../gio/glocalfileoutputstream.c:1000 ../gio/glocalfileoutputstream.c:1014 msgid "Backup file creation failed" msgstr "Falló la creación del archivo de respaldo" -#: ../gio/glocalfile.c:2301 +#: ../gio/glocalfile.c:2307 #, c-format msgid "Error removing target file: %s" msgstr "Error al eliminar el archivo destino: %s" -#: ../gio/glocalfile.c:2315 +#: ../gio/glocalfile.c:2321 msgid "Move between mounts not supported" msgstr "No se soporta mover archivos entre puntos de montaje" @@ -3027,7 +3012,7 @@ msgstr "Error al leer del archivo: %s" #: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228 #: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470 -#: ../gio/glocalfileoutputstream.c:1026 +#: ../gio/glocalfileoutputstream.c:1032 #, c-format msgid "Error seeking in file: %s" msgstr "Error al buscar en el archivo: %s" @@ -3065,14 +3050,14 @@ msgstr "Error al crear una copia de respaldo: %s" msgid "Error renaming temporary file: %s" msgstr "Error al renombrar el archivo temporal: %s" -#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1077 +#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1083 #, c-format msgid "Error truncating file: %s" msgstr "Error al truncar el archivo: %s" #: ../gio/glocalfileoutputstream.c:577 ../gio/glocalfileoutputstream.c:630 #: ../gio/glocalfileoutputstream.c:675 ../gio/glocalfileoutputstream.c:815 -#: ../gio/glocalfileoutputstream.c:1058 ../gio/glocalfileoutputstream.c:1157 +#: ../gio/glocalfileoutputstream.c:1064 ../gio/glocalfileoutputstream.c:1163 #, c-format msgid "Error opening file '%s': %s" msgstr "Error al abrir el archivo «%s»: %s" @@ -3089,7 +3074,7 @@ msgstr "El archivo destino no es un archivo regular" msgid "The file was externally modified" msgstr "El archivo se modificó externamente" -#: ../gio/glocalfileoutputstream.c:1042 +#: ../gio/glocalfileoutputstream.c:1048 #, c-format msgid "Error removing old file: %s" msgstr "Error al eliminar el archivo antiguo: %s" @@ -3197,27 +3182,27 @@ msgstr "El flujo de salida no implementa la escritura" msgid "Source stream is already closed" msgstr "El flujo de origen ya está cerrado" -#: ../gio/gresolver.c:738 +#: ../gio/gresolver.c:779 #, c-format msgid "Error resolving '%s': %s" msgstr "Error al resolver «%s»: %s" -#: ../gio/gresolver.c:788 +#: ../gio/gresolver.c:829 #, c-format msgid "Error reverse-resolving '%s': %s" msgstr "Error al resolver «%s» de forma invertida: %s" -#: ../gio/gresolver.c:823 ../gio/gresolver.c:902 +#: ../gio/gresolver.c:864 ../gio/gresolver.c:943 #, c-format msgid "No service record for '%s'" msgstr "No hay registro de servicio para «%s»" -#: ../gio/gresolver.c:828 ../gio/gresolver.c:907 +#: ../gio/gresolver.c:869 ../gio/gresolver.c:948 #, c-format msgid "Temporarily unable to resolve '%s'" msgstr "No se puede resolver «%s» temporalmente" -#: ../gio/gresolver.c:833 ../gio/gresolver.c:912 +#: ../gio/gresolver.c:874 ../gio/gresolver.c:953 #, c-format msgid "Error resolving '%s'" msgstr "Error al resolver «%s»" @@ -3262,42 +3247,42 @@ msgstr "La ruta no debe contener dos barras adyacentes (//)\n" msgid "No such key '%s'\n" msgstr "No existe la clave «%s»\n" -#: ../gio/gsettings-tool.c:445 +#: ../gio/gsettings-tool.c:493 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "El valor proporcionado está fuera del rango válido\n" -#: ../gio/gsettings-tool.c:455 +#: ../gio/gsettings-tool.c:503 #, c-format -#| msgid "failed to get memory" msgid "Failed to set value\n" msgstr "Falló al establecer el valor\n" -#: ../gio/gsettings-tool.c:481 +#: ../gio/gsettings-tool.c:529 msgid "Print help" msgstr "Imprimir ayuda" -#: ../gio/gsettings-tool.c:487 +#: ../gio/gsettings-tool.c:535 msgid "List the installed (non-relocatable) schemas" msgstr "Listar los esquemas instalados (no reubicables)" -#: ../gio/gsettings-tool.c:493 +#: ../gio/gsettings-tool.c:541 msgid "List the installed relocatable schemas" msgstr "Listar los esquemas reubicables instalados" -#: ../gio/gsettings-tool.c:499 +#: ../gio/gsettings-tool.c:547 msgid "List the keys in SCHEMA" msgstr "Listar las claves en el ESQUEMA" -#: ../gio/gsettings-tool.c:500 ../gio/gsettings-tool.c:506 +#: ../gio/gsettings-tool.c:548 ../gio/gsettings-tool.c:554 +#: ../gio/gsettings-tool.c:591 msgid "SCHEMA[:PATH]" msgstr "ESQUEMA[:RUTA]" -#: ../gio/gsettings-tool.c:505 +#: ../gio/gsettings-tool.c:553 msgid "List the children of SCHEMA" msgstr "Listar los hijos del ESQUEMA" -#: ../gio/gsettings-tool.c:511 +#: ../gio/gsettings-tool.c:559 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -3305,40 +3290,45 @@ msgstr "" "Listar las claves y valores recursivamente\n" "Si no se proporciona un ESQUEMA, listar todas las claves\n" -#: ../gio/gsettings-tool.c:513 +#: ../gio/gsettings-tool.c:561 msgid "[SCHEMA[:PATH]]" msgstr "[ESQUEMA[:RUTA]]" -#: ../gio/gsettings-tool.c:518 +#: ../gio/gsettings-tool.c:566 msgid "Get the value of KEY" msgstr "Obtener el valor de la CLAVE" -#: ../gio/gsettings-tool.c:519 ../gio/gsettings-tool.c:525 -#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:567 ../gio/gsettings-tool.c:573 +#: ../gio/gsettings-tool.c:585 ../gio/gsettings-tool.c:597 msgid "SCHEMA[:PATH] KEY" msgstr "ESQUEMA[:RUTA] CLAVE" -#: ../gio/gsettings-tool.c:524 +#: ../gio/gsettings-tool.c:572 msgid "Query the range of valid values for KEY" msgstr "Consultar el rango de valores válidos para la CLAVE" -#: ../gio/gsettings-tool.c:530 +#: ../gio/gsettings-tool.c:578 msgid "Set the value of KEY to VALUE" msgstr "Establecer el valor de la CLAVE a VALOR" -#: ../gio/gsettings-tool.c:531 +#: ../gio/gsettings-tool.c:579 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "ESQUEMA[:RUTA] CLAVE VALOR" -#: ../gio/gsettings-tool.c:536 +#: ../gio/gsettings-tool.c:584 msgid "Reset KEY to its default value" msgstr "Restablecer la CLAVE a su valor predeterminado" -#: ../gio/gsettings-tool.c:542 +#: ../gio/gsettings-tool.c:590 +msgid "Reset all keys in SCHEMA to their defaults" +msgstr "" +"Restablecer todas las claves en un ESQUEMA a sus valores predeterminados" + +#: ../gio/gsettings-tool.c:596 msgid "Check if KEY is writable" msgstr "Comprobar si la CLAVE se puede escribir" -#: ../gio/gsettings-tool.c:548 +#: ../gio/gsettings-tool.c:602 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -3348,11 +3338,11 @@ msgstr "" "Si no se especifica una CLAVE, monitorizar todas las claves en el ESQUEMA.\n" "Use ^C para detener la monitorización.\n" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:605 msgid "SCHEMA[:PATH] [KEY]" msgstr "ESQUEMA[:RUTA] [CLAVE]" -#: ../gio/gsettings-tool.c:555 +#: ../gio/gsettings-tool.c:609 #, c-format msgid "" "Unknown command %s\n" @@ -3361,7 +3351,27 @@ msgstr "" "Comando «%s» desconocido\n" "\n" -#: ../gio/gsettings-tool.c:563 +#: ../gio/gsettings-tool.c:617 +#| msgid "" +#| "Usage:\n" +#| " gsettings COMMAND [ARGS...]\n" +#| "\n" +#| "Commands:\n" +#| " help Show this information\n" +#| " list-schemas List installed schemas\n" +#| " list-relocatable-schemas List relocatable schemas\n" +#| " list-keys List keys in a schema\n" +#| " list-children List children of a schema\n" +#| " list-recursively List keys and values, recursively\n" +#| " range Queries the range of a key\n" +#| " get Get the value of a key\n" +#| " set Set the value of a key\n" +#| " reset Reset the value of a key\n" +#| " writable Check if a key is writable\n" +#| " monitor Watch for changes\n" +#| "\n" +#| "Use 'gsettings help COMMAND' to get detailed help.\n" +#| "\n" msgid "" "Usage:\n" " gsettings COMMAND [ARGS...]\n" @@ -3377,6 +3387,7 @@ msgid "" " get Get the value of a key\n" " set Set the value of a key\n" " reset Reset the value of a key\n" +" reset-recursively Reset all values in a given schema\n" " writable Check if a key is writable\n" " monitor Watch for changes\n" "\n" @@ -3393,17 +3404,19 @@ msgstr "" " list-keys Listar las claves en un esquema\n" " list-children Listar los hijos de un esquema\n" " list-recursively Listar claves y valores recursivamente\n" -" range Consulta el rango de una clave\n" +" range Consultar el rango de una clave\n" " get Obtener el valor de una clave\n" " set Establecer el valor de una clave\n" " reset Restablecer el valor de una clave\n" +" reset-recursively Restablecer todos los valores en un esquema " +"dado\n" " writable Comprobar si una clave se puede escribir\n" " monitor Monitorizar cambios\n" "\n" "Use «gsettings help COMANDO» para obtener una ayuda detallada.\n" "\n" -#: ../gio/gsettings-tool.c:584 +#: ../gio/gsettings-tool.c:639 #, c-format msgid "" "Usage:\n" @@ -3418,15 +3431,15 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:644 msgid "Arguments:\n" msgstr "Argumentos:\n" -#: ../gio/gsettings-tool.c:593 +#: ../gio/gsettings-tool.c:648 msgid " COMMAND The (optional) command to explain\n" msgstr " COMANDO El comando (opcional) que explicar\n" -#: ../gio/gsettings-tool.c:597 +#: ../gio/gsettings-tool.c:652 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -3434,19 +3447,19 @@ msgstr "" " SCHEMA El nombre del esquema\n" " RUTA La ruta, para esquemas reubicables\n" -#: ../gio/gsettings-tool.c:602 +#: ../gio/gsettings-tool.c:657 msgid " KEY The (optional) key within the schema\n" msgstr " CLAVE La clave (opcional) para el esquema\n" -#: ../gio/gsettings-tool.c:606 +#: ../gio/gsettings-tool.c:661 msgid " KEY The key within the schema\n" msgstr " CLAVE La clave para el esquema\n" -#: ../gio/gsettings-tool.c:610 +#: ../gio/gsettings-tool.c:665 msgid " VALUE The value to set\n" msgstr " VALOR El valor para establecer\n" -#: ../gio/gsettings-tool.c:699 +#: ../gio/gsettings-tool.c:757 #, c-format msgid "Empty schema name given\n" msgstr "Se proporcionó un nombre de esquema vacío\n" @@ -3838,6 +3851,17 @@ msgstr "Se necesita más entrada" msgid "Invalid compressed data" msgstr "Datos comprimidos no válidos" +#~| msgid "" +#~| "Error in address `%s' - the noncefile attribute is missing or malformed" +#~ msgid "Error in address `%s' - missing noncefile attribute" +#~ msgstr "" +#~ "Error en la dirección «%s»: falta el atributo para el archivo de número " +#~ "usado una sola vez" + +#~| msgid "Error in address `%s' - the port attribute is malformed" +#~ msgid "Error in address `%s' - missing host attribute" +#~ msgstr "Error en la dirección «%s»; falta el atributo para el servidor" + #~ msgid "No such schema `%s' specified in override file `%s'" #~ msgstr "" #~ "No existe el esquema «%s» especificado en el archivo de sobreescritura «%s»" From a04efe6afb63d54e12ff8f329cbaf458a2e31b26 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 26 Apr 2011 13:04:25 -0400 Subject: [PATCH 84/85] Use SIGTRAP (via G_BREAKPOINT()) if G_DEBUG=fatal-warnings On Linux with gdb, it's much more convenient to debug programs using G_DEBUG=fatal-warnings if we send SIGTRAP instead of abort() by default. The default handler for both is to terminate the process. In particular this makes it more easily possible to debug a warning that's not the first in a program; you can skip past it and go to the warning you care about. The "aborting..." message is removed since it's no longer accurate, and anyways was never very useful; crashes should show up in ABRT/apport type crash catching systems. https://bugzilla.gnome.org/show_bug.cgi?id=648423 --- glib/gmessages.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/glib/gmessages.c b/glib/gmessages.c index 60330d413..337d19a50 100644 --- a/glib/gmessages.c +++ b/glib/gmessages.c @@ -548,14 +548,10 @@ g_logv (const gchar *log_domain, else abort (); #else -#if defined (G_ENABLE_DEBUG) && defined (SIGTRAP) if (!(test_level & G_LOG_FLAG_RECURSION)) G_BREAKPOINT (); else abort (); -#else /* !G_ENABLE_DEBUG || !SIGTRAP */ - abort (); -#endif /* !G_ENABLE_DEBUG || !SIGTRAP */ #endif /* !G_OS_WIN32 */ } @@ -818,7 +814,6 @@ _g_log_fallback_handler (const gchar *log_domain, #ifndef G_OS_WIN32 gchar pid_string[FORMAT_UNSIGNED_BUFSIZE]; #endif - gboolean is_fatal = (log_level & G_LOG_FLAG_FATAL) != 0; int fd; /* we cannot call _any_ GLib functions in this fallback handler, @@ -855,10 +850,6 @@ _g_log_fallback_handler (const gchar *log_domain, write_string (fd, level_prefix); write_string (fd, ": "); write_string (fd, message); - if (is_fatal) - write_string (fd, "\naborting...\n"); - else - write_string (fd, "\n"); } static void @@ -927,7 +918,6 @@ g_log_default_handler (const gchar *log_domain, const gchar *message, gpointer unused_data) { - gboolean is_fatal = (log_level & G_LOG_FLAG_FATAL) != 0; gchar level_prefix[STRING_BUFFER_SIZE], *string; GString *gstring; int fd; @@ -988,10 +978,7 @@ g_log_default_handler (const gchar *log_domain, g_string_free (msg, TRUE); } - if (is_fatal) - g_string_append (gstring, "\naborting...\n"); - else - g_string_append (gstring, "\n"); + g_string_append (gstring, "\n"); string = g_string_free (gstring, FALSE); From 9eba49a982e94196f90c79c5eac4a00cc437b12e Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 29 Apr 2011 16:14:17 +0200 Subject: [PATCH 85/85] GFilterInputStream: close-base-stream should not be construct-only This is a runtime changable property (by the methods for it), must be a cut and paste error. --- gio/gfilterinputstream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gio/gfilterinputstream.c b/gio/gfilterinputstream.c index ec8472c4e..c39076c36 100644 --- a/gio/gfilterinputstream.c +++ b/gio/gfilterinputstream.c @@ -113,7 +113,7 @@ g_filter_input_stream_class_init (GFilterInputStreamClass *klass) g_param_spec_boolean ("close-base-stream", P_("Close Base Stream"), P_("If the base stream should be closed when the filter stream is closed."), - TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | + TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); }