Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package glib2 for openSUSE:Factory checked in at 2023-01-24 19:42:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/glib2 (Old) and /work/SRC/openSUSE:Factory/.glib2.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glib2" Tue Jan 24 19:42:34 2023 rev:262 rq:1060499 version:2.74.5 Changes: -------- --- /work/SRC/openSUSE:Factory/glib2/glib2.changes 2022-12-24 14:51:16.479275612 +0100 +++ /work/SRC/openSUSE:Factory/.glib2.new.32243/glib2.changes 2023-01-24 20:22:06.993022609 +0100 @@ -1,0 +2,12 @@ +Thu Jan 19 14:50:06 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 2.74.5: + + Bugs fixed: glgo#GNOME/GLib#2843, glgo#GNOME/GLib#2881, + glgo#GNOME/GLib#2883, glgo#GNOME/GLib!3165, + glgo#GNOME/GLib!3166, glgo#GNOME/GLib!3182, + glgo#GNOME/GLib!3197, glgo#GNOME/GLib!3204, + glgo#GNOME/GLib!3214. + + Updated translations. +- Drop 1539540.patch: Fixed upstream. + +------------------------------------------------------------------- Old: ---- 1539540.patch glib-2.74.4.tar.xz New: ---- glib-2.74.5.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glib2.spec ++++++ --- /var/tmp/diff_new_pack.DO7eVM/_old 2023-01-24 20:22:07.869026999 +0100 +++ /var/tmp/diff_new_pack.DO7eVM/_new 2023-01-24 20:22:07.873027019 +0100 @@ -1,7 +1,7 @@ # # spec file # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -30,7 +30,7 @@ %define libgthread libgthread-%{libver} %bcond_without systemtap Name: glib2%{psuffix} -Version: 2.74.4 +Version: 2.74.5 Release: 0 Summary: General-Purpose Utility Library License: LGPL-2.1-or-later @@ -58,8 +58,6 @@ Patch3: glib2-dbus-socket-path.patch # PATCH-FIX-OPENSUSE glib2-gdbus-codegen-version.patch o...@aepfle.de -- Remove version string from files generated by gdbus-codegen Patch4: glib2-gdbus-codegen-version.patch -# PATCH-FIX-UPSTREAM 1539540.patch -- gthread-posix: need to #include <errno.h> -Patch5: https://gitlab.gnome.org/GNOME/glib/-/commit/1539540.patch BuildRequires: docbook-xsl-stylesheets BuildRequires: fdupes @@ -263,7 +261,7 @@ %patch2 -p1 %patch3 -p1 %patch4 -p1 -%patch5 -p1 + cp -a %{SOURCE1} %{SOURCE2} %{SOURCE5} . cp -a %{SOURCE4} gnome_defaults.conf # replace /usr/bin/env shebangs ++++++ glib-2.74.4.tar.xz -> glib-2.74.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/NEWS new/glib-2.74.5/NEWS --- old/glib-2.74.4/NEWS 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/NEWS 2023-01-19 14:44:30.000000000 +0100 @@ -1,3 +1,28 @@ +Overview of changes in GLib 2.74.5 +================================== + +* Bugs fixed: + - #2843 gtk_show_uri can't open browser on MSYS2 on Windows (Luca Bacci) + - #2881 Invalid read of size 4 in get_matched_substring_number (Philip + Withnall) + - #2883 g_file_set_contents fails on mingw64 with "no error" if file size > + INT_MAX (CCode) + - !3165 gthread-posix: need to #include <errno.h> + - !3166 Backport !3160 âGWin32AppInfo: Check for local file path firstâ to + glib-2-74 + - !3182 Backport !3178 âglocalfileinfo: Don't reset mtime tv_sec when setting + tv_usecâ to glib-2-74 + - !3197 Backport !3194 âgregex: Prevent invalid memory access for unmatched + subpatternsâ to glib-2-74 + - !3204 Backport !3200 âgfileutils: Use 'write' with 'count' <= max value of + its return typeâ to glib-2-74 + - !3214 Backport !3213 âgvariant: Optimise g_variant_print() for nested + maybesâ to glib-2-74 + +* Translation updates: + - Abkhazian (Nart Tlisha) + + Overview of changes in GLib 2.74.4 ================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/gio/glocalfileinfo.c new/glib-2.74.5/gio/glocalfileinfo.c --- old/glib-2.74.4/gio/glocalfileinfo.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/gio/glocalfileinfo.c 2023-01-19 14:44:30.000000000 +0100 @@ -2759,6 +2759,7 @@ { if (lazy_stat (filename, &statbuf, &got_stat) == 0) { + times_n[1].tv_sec = statbuf.st_mtime; #if defined (HAVE_STRUCT_STAT_ST_MTIMENSEC) times_n[1].tv_nsec = statbuf.st_mtimensec; #elif defined (HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/gio/gwin32appinfo.c new/glib-2.74.5/gio/gwin32appinfo.c --- old/glib-2.74.4/gio/gwin32appinfo.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/gio/gwin32appinfo.c 2023-01-19 14:44:30.000000000 +0100 @@ -4334,10 +4334,25 @@ case '8': case '9': /* TODO: handle 'l' and 'd' differently (longname and desktop name) */ - if (obj->uri) - result = g_strdup (obj->uri); - else if (obj->file) - result = g_strdup (obj->file); + if (obj->file) + { + result = g_strdup (obj->file); + } + else if (obj->uri) + { + const char *prefix = "file:///"; + const size_t prefix_len = strlen (prefix); + + if (g_str_has_prefix (obj->uri, prefix) == 0 && obj->uri[prefix_len] != 0) + { + GFile *file = g_file_new_for_uri (obj->uri); + result = g_file_get_path (file); + g_object_unref (file); + } + + if (!result) + result = g_strdup (obj->uri); + } break; case 'u': case 'U': @@ -5283,14 +5298,18 @@ } hr = SHParseDisplayName (file_or_uri_utf16, NULL, &item_ids[i], 0, NULL); - g_free (file_or_uri_utf16); if (FAILED (hr)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "File or URI `%S' cannot be parsed by SHParseDisplayName: 0x%lx", file_or_uri_utf16, hr); + "File or URI `%S' cannot be parsed by SHParseDisplayName: 0x%lx", + file_or_uri_utf16, hr); + + g_free (file_or_uri_utf16); break; } + + g_free (file_or_uri_utf16); } if (i == count) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/gfileutils.c new/glib-2.74.5/glib/gfileutils.c --- old/glib-2.74.4/glib/gfileutils.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/gfileutils.c 2023-01-19 14:44:30.000000000 +0100 @@ -1143,7 +1143,13 @@ { gssize s; - s = write (fd, contents, MIN (length, G_MAXSSIZE)); +#ifdef G_OS_WIN32 + /* 'write' on windows uses int types, so limit count to G_MAXINT */ + s = write (fd, contents, MIN (length, (gsize) G_MAXINT)); +#else + /* Limit count to G_MAXSSIZE to fit into the return value. */ + s = write (fd, contents, MIN (length, (gsize) G_MAXSSIZE)); +#endif if (s < 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/gregex.c new/glib-2.74.5/glib/gregex.c --- old/glib-2.74.4/glib/gregex.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/gregex.c 2023-01-19 14:44:30.000000000 +0100 @@ -1492,8 +1492,8 @@ for (entry = (guchar*) first; entry <= (guchar*) last; entry += entrysize) { - gint n = (entry[0] << 8) + entry[1]; - if (match_info->offsets[n*2] >= 0) + guint n = (entry[0] << 8) + entry[1]; + if (n * 2 < match_info->n_offsets && match_info->offsets[n * 2] >= 0) return n; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/gthreadprivate.h new/glib-2.74.5/glib/gthreadprivate.h --- old/glib-2.74.4/glib/gthreadprivate.h 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/gthreadprivate.h 2023-01-19 14:44:30.000000000 +0100 @@ -41,6 +41,7 @@ /* system thread implementation (gthread-posix.c, gthread-win32.c) */ #if defined(HAVE_FUTEX) || defined(HAVE_FUTEX_TIME64) +#include <errno.h> #include <linux/futex.h> #include <sys/syscall.h> #include <unistd.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/gvariant-core.c new/glib-2.74.5/glib/gvariant-core.c --- old/glib-2.74.4/glib/gvariant-core.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/gvariant-core.c 2023-01-19 14:44:30.000000000 +0100 @@ -1138,11 +1138,13 @@ g_variant_get_child_value (GVariant *value, gsize index_) { - g_return_val_if_fail (index_ < g_variant_n_children (value), NULL); g_return_val_if_fail (value->depth < G_MAXSIZE, NULL); if (~g_atomic_int_get (&value->state) & STATE_SERIALISED) { + /* g_variant_serialised_get_child() does its own checks on index_ */ + g_return_val_if_fail (index_ < g_variant_n_children (value), NULL); + g_variant_lock (value); if (~value->state & STATE_SERIALISED) @@ -1233,11 +1235,13 @@ g_variant_maybe_get_child_value (GVariant *value, gsize index_) { - g_return_val_if_fail (index_ < g_variant_n_children (value), NULL); g_return_val_if_fail (value->depth < G_MAXSIZE, NULL); if (~g_atomic_int_get (&value->state) & STATE_SERIALISED) { + /* g_variant_serialised_get_child() does its own checks on index_ */ + g_return_val_if_fail (index_ < g_variant_n_children (value), NULL); + g_variant_lock (value); if (~value->state & STATE_SERIALISED) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/gvariant.c new/glib-2.74.5/glib/gvariant.c --- old/glib-2.74.4/glib/gvariant.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/gvariant.c 2023-01-19 14:44:30.000000000 +0100 @@ -2213,20 +2213,22 @@ GString *string, gboolean type_annotate) { + const gchar *value_type_string = g_variant_get_type_string (value); + if G_UNLIKELY (string == NULL) string = g_string_new (NULL); - switch (g_variant_classify (value)) + switch (value_type_string[0]) { case G_VARIANT_CLASS_MAYBE: if (type_annotate) - g_string_append_printf (string, "@%s ", - g_variant_get_type_string (value)); + g_string_append_printf (string, "@%s ", value_type_string); if (g_variant_n_children (value)) { - gchar *printed_child; - GVariant *element; + const GVariantType *base_type; + guint i, depth; + GVariant *element = NULL; /* Nested maybes: * @@ -2240,19 +2242,36 @@ * "just" is actually exactly the case where we have a nested * Nothing. * - * Instead of searching for that nested Nothing, we just print - * the contained value into a separate string and see if we - * end up with "nothing" at the end of it. If so, we need to - * add "just" at our level. + * Search for the nested Nothing, to save a lot of recursion if there + * are multiple levels of maybes. */ - element = g_variant_get_child_value (value, 0); - printed_child = g_variant_print (element, FALSE); - g_variant_unref (element); - - if (g_str_has_suffix (printed_child, "nothing")) - g_string_append (string, "just "); - g_string_append (string, printed_child); - g_free (printed_child); + for (depth = 0, base_type = g_variant_get_type (value); + g_variant_type_is_maybe (base_type); + depth++, base_type = g_variant_type_element (base_type)); + + element = g_variant_ref (value); + for (i = 0; i < depth && element != NULL; i++) + { + GVariant *new_element = g_variant_n_children (element) ? g_variant_get_child_value (element, 0) : NULL; + g_variant_unref (element); + element = g_steal_pointer (&new_element); + } + + if (element == NULL) + { + /* One of the maybes was Nothing, so print out the right number of + * justs. */ + for (; i > 1; i--) + g_string_append (string, "just "); + g_string_append (string, "nothing"); + } + else + { + /* There are no Nothings, so print out the child with no prefixes. */ + g_variant_print_string (element, string, FALSE); + } + + g_clear_pointer (&element, g_variant_unref); } else g_string_append (string, "nothing"); @@ -2265,7 +2284,7 @@ * if the first two characters are 'ay' then it's a bytestring. * under certain conditions we print those as strings. */ - if (g_variant_get_type_string (value)[1] == 'y') + if (value_type_string[1] == 'y') { const gchar *str; gsize size; @@ -2307,7 +2326,7 @@ * dictionary entries (ie: a dictionary) so we print that * differently. */ - if (g_variant_get_type_string (value)[1] == '{') + if (value_type_string[1] == '{') /* dictionary */ { const gchar *comma = ""; @@ -2316,8 +2335,7 @@ if ((n = g_variant_n_children (value)) == 0) { if (type_annotate) - g_string_append_printf (string, "@%s ", - g_variant_get_type_string (value)); + g_string_append_printf (string, "@%s ", value_type_string); g_string_append (string, "{}"); break; } @@ -2353,8 +2371,7 @@ if ((n = g_variant_n_children (value)) == 0) { if (type_annotate) - g_string_append_printf (string, "@%s ", - g_variant_get_type_string (value)); + g_string_append_printf (string, "@%s ", value_type_string); g_string_append (string, "[]"); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/gvarianttypeinfo.c new/glib-2.74.5/glib/gvarianttypeinfo.c --- old/glib-2.74.4/glib/gvarianttypeinfo.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/gvarianttypeinfo.c 2023-01-19 14:44:30.000000000 +0100 @@ -247,8 +247,6 @@ guint *alignment, gsize *fixed_size) { - g_variant_type_info_check (info, 0); - if (alignment) *alignment = info->alignment; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/glib/tests/regex.c new/glib-2.74.5/glib/tests/regex.c --- old/glib-2.74.4/glib/tests/regex.c 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/glib/tests/regex.c 2023-01-19 14:44:30.000000000 +0100 @@ -2480,6 +2480,39 @@ g_regex_unref (regex); } +static void +test_unmatched_named_subpattern (void) +{ + GRegex *regex = NULL; + GMatchInfo *match_info = NULL; + const char *string = "Test"; + + g_test_summary ("Test that unmatched subpatterns can still be queried"); + g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2881"); + + regex = g_regex_new ("((?<Key>[^\\s\"'\\=]+)|\"(?<Key>[^\"]*)\"|'(?<Key>[^']*)')" + "(?:\\=((?<Value>[^\\s\"']+)|\"(?<Value>[^\"]*)\"|'(?<Value>[^']*)'))?", + G_REGEX_DUPNAMES, 0, NULL); + + g_assert_true (g_regex_match (regex, string, 0, &match_info)); + + while (g_match_info_matches (match_info)) + { + char *key = g_match_info_fetch_named (match_info, "Key"); + char *value = g_match_info_fetch_named (match_info, "Value"); + + g_assert_cmpstr (key, ==, "Test"); + g_assert_cmpstr (value, ==, ""); + + g_free (key); + g_free (value); + g_match_info_next (match_info, NULL); + } + + g_match_info_unref (match_info); + g_regex_unref (regex); +} + int main (int argc, char *argv[]) { @@ -2499,6 +2532,7 @@ g_test_add_func ("/regex/max-lookbehind", test_max_lookbehind); g_test_add_func ("/regex/compile-errors", test_compile_errors); g_test_add_func ("/regex/jit-unsupported-matching", test_jit_unsupported_matching_options); + g_test_add_func ("/regex/unmatched-named-subpattern", test_unmatched_named_subpattern); /* TEST_NEW(pattern, compile_opts, match_opts) */ TEST_NEW("[A-Z]+", G_REGEX_CASELESS | G_REGEX_EXTENDED | G_REGEX_OPTIMIZE, G_REGEX_MATCH_NOTBOL | G_REGEX_MATCH_PARTIAL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/meson.build new/glib-2.74.5/meson.build --- old/glib-2.74.4/meson.build 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/meson.build 2023-01-19 14:44:30.000000000 +0100 @@ -1,5 +1,5 @@ project('glib', 'c', - version : '2.74.4', + version : '2.74.5', # NOTE: See the policy in docs/meson-version.md before changing the Meson dependency meson_version : '>= 0.60.0', default_options : [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glib-2.74.4/po/ab.po new/glib-2.74.5/po/ab.po --- old/glib-2.74.4/po/ab.po 2022-12-21 22:16:58.000000000 +0100 +++ new/glib-2.74.5/po/ab.po 2023-01-19 14:44:30.000000000 +0100 @@ -1,7 +1,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n" -"POT-Creation-Date: 2022-11-24 12:35+0000\n" +"POT-Creation-Date: 2022-12-12 00:16+0000\n" "Last-Translator: Ðанба Ðаала <naala-na...@rambler.ru>\n" "Language-Team: Abkhazian <daniel.abz...@gmail.com>\n" "Language: ab\n" @@ -64,7 +64,7 @@ #: gio/gapplication-tool.c:52 gio/gsettings-tool.c:592 msgid "Print version information and exit" -msgstr "" +msgstr "ÐвеÑиÑиа Ð¸Ð°Ð·ÐºÐ½Ñ Ð°Ð¸Ð½ÑоÑмаÑиа ааÑÔ¥ÑÐ½Ñ Ð°ÒÑÒµÑа" #: gio/gapplication-tool.c:55 msgid "List applications" @@ -164,7 +164,7 @@ #: gio/gapplication-tool.c:118 gio/gresource-tool.c:559 #: gio/gsettings-tool.c:713 msgid "Arguments:\n" -msgstr "" +msgstr "ÐҵаҵӷÓÒÓа:\n" #: gio/gapplication-tool.c:137 gio/gio-tool.c:226 msgid "[ARGSâ¦]" @@ -1756,7 +1756,7 @@ #: gio/gio-tool-info.c:105 msgid "attributes:\n" -msgstr "" +msgstr "ÐÒазÑÑаÑбагаÒÓа:\n" #: gio/gio-tool-info.c:165 gio/gio-tool-info.c:174 #, c-format @@ -3092,29 +3092,29 @@ #: gio/glocalfileinfo.c:2896 #, c-format msgid "Error setting SELinux context: %s" -msgstr "" +msgstr "ÐконÑекÑÑа SELinux: %s аÒÓÑÑгÑлаÑаан иÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð°" #: gio/glocalfileinfo.c:2993 #, c-format msgid "Setting attribute %s not supported" -msgstr "" +msgstr "ÐÒазÑÑаÑбага %s аÒÓÑÑгÑлаÑа аднакÑлаӡом" #: gio/glocalfileinputstream.c:165 gio/glocalfileoutputstream.c:803 #, c-format msgid "Error reading from file: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑаил аÒÑнÑÓ Ð°Ò§Ñ ÑаÑааан: %s" #: gio/glocalfileinputstream.c:196 gio/glocalfileoutputstream.c:355 #: gio/glocalfileoutputstream.c:449 #, c-format msgid "Error closing file: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑаил аÑкÑаан: %s" #: gio/glocalfileinputstream.c:274 gio/glocalfileoutputstream.c:565 #: gio/glocalfileoutputstream.c:1188 #, c-format msgid "Error seeking in file: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑаил ала аиаÑÑаан: %s" #: gio/glocalfilemonitor.c:882 msgid "Unable to find default local file monitor type" @@ -3124,41 +3124,41 @@ #: gio/glocalfileoutputstream.c:336 gio/glocalfileoutputstream.c:824 #, c-format msgid "Error writing to file: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑаил Ð°Ñ Ñ Ð°Ð½ÒµÐ°Ñаан: %s" #: gio/glocalfileoutputstream.c:382 #, c-format msgid "Error removing old backup link: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° ижÓÑÑÓÑ Ð°ÑезеÑвÑÓ Ð·Ñ ÑаÑÒ§ÑÑа анÑÑ Ñаан: %s" #: gio/glocalfileoutputstream.c:396 gio/glocalfileoutputstream.c:409 #, c-format msgid "Error creating backup copy: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑезеÑвÑÓ ÐºÐ¾Ð¿Ð¸Ð° аҧҵаÑаан: %s" #: gio/glocalfileoutputstream.c:427 #, c-format msgid "Error renaming temporary file: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аамÒалаÑÓи аÑаил Ð°Ñ ÑÓ¡ аҧÑÐ°Ñ Ñаан: %s" #: gio/glocalfileoutputstream.c:611 gio/glocalfileoutputstream.c:1242 #, c-format msgid "Error truncating file: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑаил авÑÑÑÑаÑаан: %s" #: gio/glocalfileoutputstream.c:664 gio/glocalfileoutputstream.c:909 #: gio/glocalfileoutputstream.c:1223 gio/gsubprocess.c:231 #, c-format msgid "Error opening file â%sâ: %s" -msgstr "" +msgstr "ÐÒÐ°Ð»ÐµÐ¸Ñ Ð°Ð³Ñ Ð° аÑаил ааÑÑÑаан «%s»: %s" #: gio/glocalfileoutputstream.c:959 msgid "Target file is a directory" -msgstr "" +msgstr "ÐÑ ÑÒÓкÑÑаÑÓ Ñаил Ñ ÑÓ¡Ñнҵаӡам" #: gio/glocalfileoutputstream.c:973 msgid "Target file is not a regular file" -msgstr "" +msgstr "ÐÑ ÑÒÓкÑÑаÑÓ Ñаил Ð¸Ð¼Ð°Ð¾Ð¸Ð¾Ñ Ñаилӡам" #: gio/glocalfileoutputstream.c:1015 msgid "The file was externally modified"