aboutgitcodelistschat:MatrixIRC
path: root/cooker/cooker.h
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2023-03-20 07:54:51 +0100
committerStefano Brivio <sbrivio@redhat.com>2023-03-20 07:54:51 +0100
commitcbc17d2fcafe2e432f704d2dd2e0ff5c85118356 (patch)
treed52fd0269e474a2face81f6044293d1536aa8d0d /cooker/cooker.h
parentac8209922a79de4d6108128244c9133f5591fd8b (diff)
downloadseitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.gz
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.bz2
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.lz
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.xz
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.tar.zst
seitan-cbc17d2fcafe2e432f704d2dd2e0ff5c85118356.zip
cooker: Initial import of new implementation
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'cooker/cooker.h')
-rw-r--r--cooker/cooker.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/cooker/cooker.h b/cooker/cooker.h
new file mode 100644
index 0000000..53aa0db
--- /dev/null
+++ b/cooker/cooker.h
@@ -0,0 +1,99 @@
+/* SPDX-License-Identifier: GPL-3.0-or-later
+ * Copyright 2023 Red Hat GmbH
+ * Author: Stefano Brivio <sbrivio@redhat.com>
+ */
+
+#ifndef COOKER_H
+#define COOKER_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define REFS_MAX 256
+#define CALL_ARGS 6
+
+struct arg_num;
+struct arg_struct;
+struct arg_select;
+
+union arg_value {
+ struct arg_num *d_num;
+ struct arg_struct *d_struct;
+ struct arg_select *d_select;
+};
+
+enum arg_type {
+ ARG_INT,
+ ARG_INTMASK,
+ ARG_INTFLAGS,
+
+ ARG_U32,
+ ARG_U32MASK,
+ ARG_U32FLAGS,
+
+ ARG_LONG,
+ ARG_LONGMASK,
+ ARG_LONGFLAGS,
+
+ ARG_STRING,
+
+ ARG_STRUCT,
+ ARG_SELECT,
+
+ ARG_PID,
+
+ ARG_PORT,
+ ARG_IPV4,
+ ARG_IPV6,
+
+ ARG_FDPATH,
+
+ ARG_TYPE_END,
+};
+
+#define ARG_TYPE_COUNT (ARG_TYPE_END - 1)
+
+struct arg_num {
+ char *name;
+ long long value;
+};
+
+struct arg_struct {
+ char *name;
+ enum arg_type type;
+ size_t offset;
+
+ size_t strlen;
+
+ union arg_value desc;
+};
+
+struct arg_select_num {
+ long long value;
+
+ enum arg_type type;
+ union arg_value desc;
+};
+
+struct arg_select {
+ struct arg_struct *field;
+
+ union {
+ struct arg_select_num *d_num;
+ } desc;
+};
+
+struct arg {
+ int pos;
+ char *name;
+
+ enum arg_type type;
+ size_t size;
+
+ union arg_value desc;
+};
+
+#endif /* COOKER_H */