diff options
author | Reuben Thomas <rrt@sc3d.org> | 2020-11-10 18:22:08 +0000 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-12-02 08:51:55 +0100 |
commit | cfb1bbc2467ab8007fc394d7b2682be8e80a0720 (patch) | |
tree | a6e0ef7a59c89115fee0c592e95554c712f3c7ce | |
parent | b05dcfbfac23c22ff96640dd4d1f4a777c5301a9 (diff) | |
download | vala-wip/gnu.tar.gz |
vapi: Add gnu.vapi with binding for getopt_long() and some other GNU APIswip/gnu
-rw-r--r-- | vapi/Makefile.am | 2 | ||||
-rw-r--r-- | vapi/gnu.deps | 1 | ||||
-rw-r--r-- | vapi/gnu.vapi | 61 |
3 files changed, 64 insertions, 0 deletions
diff --git a/vapi/Makefile.am b/vapi/Makefile.am index 06ddf3db1..0f1bb0a3d 100644 --- a/vapi/Makefile.am +++ b/vapi/Makefile.am @@ -86,6 +86,8 @@ dist_vapi_DATA = \ gnome-desktop-3.0.deps \ gnome-desktop-3.0.vapi \ gnome-vfs-2.0.vapi \ + gnu.deps \ + gnu.vapi \ gnutls.vapi \ gobject-2.0.deps \ gobject-2.0.vapi \ diff --git a/vapi/gnu.deps b/vapi/gnu.deps new file mode 100644 index 000000000..b3188f742 --- /dev/null +++ b/vapi/gnu.deps @@ -0,0 +1 @@ +posix diff --git a/vapi/gnu.vapi b/vapi/gnu.vapi new file mode 100644 index 000000000..5da463e36 --- /dev/null +++ b/vapi/gnu.vapi @@ -0,0 +1,61 @@ +/* gnu.vapi + * + * Copyright (C) 2020 Reuben Thomas + * + * 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.1 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: + * Reuben Thomas <rrt@sc3d.org> + */ + +[CCode (cprefix = "", lower_case_cprefix = "")] +namespace Gnu { + /** + * Provides the values for the 'has_arg' field of 'GetoptOption'. + */ + [CCode (cname = "int", cprefix = "", cheader_filename = "getopt.h", has_type_id = false)] + public enum GetoptArgument { + [CCode (cname = "no_argument")] + NONE, + [CCode (cname = "required_argument")] + REQUIRED, + [CCode (cname = "optional_argument")] + OPTIONAL + } + + [CCode (cname = "struct option", cheader_filename = "getopt.h", has_type_id = false)] + public struct GetoptOption { + public unowned string name; + public int has_arg; + public int *flag; + public int val; + } + + [CCode (cheader_filename = "getopt.h")] + public int getopt_long ([CCode (array_length_pos = 0.1)] string[] args, string shortopts, [CCode (array_length = false, array_null_terminated = true)] GetoptOption[] longopts, out int longind); + [CCode (cheader_filename = "getopt.h")] + public int getopt_long_only ([CCode (array_length_pos = 0.1)] string[] args, string shortopts, [CCode (array_length = false, array_null_terminated = true)] GetoptOption[] longopts, out int longind); + + + [CCode (cheader_filename = "string.h", feature_test_macro = "_GNU_SOURCE")] + public string memmem (string haystack, size_t haystack_len, string needle, size_t needle_len); + + [CCode (cheader_filename = "error.h")] + [PrintfFormat] + public void error (int status, int errnum, string format, ...); + + [CCode (cheader_filename = "quote.h")] + public string quote (string arg); +} |