From 1eae9216314493408d419b8ef1234f041644991d Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Thu, 12 Jul 2018 11:25:00 +0200 Subject: [PATCH] gio-2.0: Add custom IOError.from_errno() to make it work as expected Fixes https://gitlab.gnome.org/GNOME/vala/issues/253 --- vapi/gio-2.0.vapi | 8 ++++++-- vapi/metadata/Gio-2.0-custom.vala | 7 +++++++ vapi/metadata/Gio-2.0.metadata | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/vapi/gio-2.0.vapi b/vapi/gio-2.0.vapi index 441b220c6..48709338f 100644 --- a/vapi/gio-2.0.vapi +++ b/vapi/gio-2.0.vapi @@ -4649,8 +4649,12 @@ namespace GLib { CONNECTION_CLOSED, NOT_CONNECTED, MESSAGE_TOO_LARGE; - [CCode (cheader_filename = "gio/gio.h")] - public static unowned GLib.IOError from_errno (int err_no); + [CCode (cname = "vala_g_io_error_from_errno")] + public static GLib.IOError from_errno (int err_no) { + return (GLib.IOError) new GLib.Error (GLib.IOError.quark (), GLib.IOError._from_errno (err_no), "%s", GLib.strerror (err_no)); + } + [CCode (cheader_filename = "gio/gio.h", cname = "g_io_error_from_errno")] + public static int _from_errno (int err_no); [CCode (cheader_filename = "gio/gio.h")] public static GLib.Quark quark (); } diff --git a/vapi/metadata/Gio-2.0-custom.vala b/vapi/metadata/Gio-2.0-custom.vala index 35379b695..9f64bf372 100644 --- a/vapi/metadata/Gio-2.0-custom.vala +++ b/vapi/metadata/Gio-2.0-custom.vala @@ -176,6 +176,13 @@ namespace GLib { public virtual GLib.Icon? from_tokens (string[] tokens, int version) throws GLib.Error; } + public errordomain IOError { + [CCode (cname = "vala_g_io_error_from_errno")] + public static GLib.IOError from_errno (int err_no) { + return (GLib.IOError) new GLib.Error (GLib.IOError.quark (), GLib.IOError._from_errno (err_no), "%s", GLib.strerror (err_no)); + } + } + public delegate void SimpleActionActivateCallback (SimpleAction action, Variant? parameter); public delegate void SimpleActionChangeStateCallback (SimpleAction action, Variant value); [CCode (cheader_filename = "gio/gio.h", cname = "GAsyncReadyCallback", instance_pos = 2.9)] diff --git a/vapi/metadata/Gio-2.0.metadata b/vapi/metadata/Gio-2.0.metadata index 106380453..1be074f95 100644 --- a/vapi/metadata/Gio-2.0.metadata +++ b/vapi/metadata/Gio-2.0.metadata @@ -136,6 +136,7 @@ FileInfo .list_attributes nullable FileEnumerator .next_file nullable +io_error_from_errno type="int" name="io_error__from_errno" IOStream .close virtual vfunc_name="close_fn" throws="GLib.IOError" .close_finish throws="GLib.IOError" -- 2.47.2