From: Rico Tzschichholz Date: Wed, 13 Mar 2024 07:46:56 +0000 (+0100) Subject: girparser: Recognize usage of off_t and don't rely on given GIR type X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=277ecab616703f59eb0e50263e1f506ead1bff5e;p=thirdparty%2Fvala.git girparser: Recognize usage of off_t and don't rely on given GIR type --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 528b3774f..806443855 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -909,6 +909,7 @@ TESTS = \ gir/method-array-return.gir \ gir/method-class.gir \ gir/method-nowrapper.gir \ + gir/off_t.gir \ gir/parameter-array-length-type.gir \ gir/parameter-array-out.gir \ gir/parameter-nullable-out-simple-type.gir \ diff --git a/tests/gir/off_t.gir b/tests/gir/off_t.gir new file mode 100644 index 000000000..f295b99eb --- /dev/null +++ b/tests/gir/off_t.gir @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/gir/off_t.vapi-expected b/tests/gir/off_t.vapi-expected new file mode 100644 index 000000000..d147585fb --- /dev/null +++ b/tests/gir/off_t.vapi-expected @@ -0,0 +1,5 @@ +[CCode (cprefix = "Test", gir_namespace = "Test", gir_version = "1.0", lower_case_cprefix = "test_")] +namespace Test { + [CCode (cheader_filename = "test.h")] + public static off_t function (off_t time); +} diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index bf4dfd3c5..7118864d9 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -2935,7 +2935,11 @@ public class Vala.GirParser : CodeVisitor { } else if (type_name == "GLib.offset") { type_name = "int64"; } else if (type_name == "gsize") { - type_name = "size_t"; + if (ctype != null && ctype.has_prefix ("off_t")) { + type_name = "off_t"; + } else { + type_name = "size_t"; + } } else if (type_name == "gssize") { type_name = "ssize_t"; } else if (type_name == "guintptr") { diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi index 8f5f57fda..0863d7a67 100644 --- a/vapi/glib-2.0.vapi +++ b/vapi/glib-2.0.vapi @@ -1018,6 +1018,13 @@ public struct double { } } +//FIXME [GIR (name = "off_t")] +[GIR (name = "gsize")] +[CCode (cheader_filename = "sys/types.h", has_type_id = false, default_value = "0")] +[IntegerType (rank = 9)] +public struct off_t { +} + //FIXME [GIR (name = "time_t")] [GIR (name = "glong")] [CCode (cheader_filename = "time.h", has_type_id = false, default_value = "0")]