summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Tupone <tupone@gentoo.org>2024-05-31 20:31:11 +0200
committerAlfredo Tupone <tupone@gentoo.org>2024-05-31 20:32:06 +0200
commit357e185e7cbd85d89fb8baa0d56f043d48edd89f (patch)
tree9afb44a0239adc16a75de788945724399d8cc121 /dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch
parentnet-analyzer/gr-fosphor: Add Python 3.12 support (diff)
downloadgentoo-357e185e7cbd85d89fb8baa0d56f043d48edd89f.tar.gz
gentoo-357e185e7cbd85d89fb8baa0d56f043d48edd89f.tar.bz2
gentoo-357e185e7cbd85d89fb8baa0d56f043d48edd89f.zip
dev-ml/ocamlfuse: different fix for Wint
Closes: https://bugs.gentoo.org/933214 Signed-off-by: Alfredo Tupone <tupone@gentoo.org>
Diffstat (limited to 'dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch')
-rw-r--r--dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch74
1 files changed, 65 insertions, 9 deletions
diff --git a/dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch b/dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch
index 94df1c01546a..8f1e7f405bf6 100644
--- a/dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch
+++ b/dev-ml/ocamlfuse/files/ocamlfuse-2.7.1_p7-Wint.patch
@@ -1,11 +1,67 @@
---- a/lib/Fuse_util.c 2024-05-30 14:46:19.594917120 +0200
-+++ b/lib/Fuse_util.c 2024-05-30 14:46:39.870690546 +0200
-@@ -354,7 +354,7 @@
+--- a/lib/Fuse_util.c 2024-05-31 19:58:34.910818884 +0200
++++ b/lib/Fuse_util.c 2024-05-31 20:25:27.021700407 +0200
+@@ -293,7 +293,6 @@
+ }
+
+ #define FOR_ALL_OPS(MACRO) \
+- MACRO(init) \
+ MACRO(getattr) \
+ MACRO(readlink) \
+ MACRO(readdir) \
+@@ -344,12 +343,14 @@
+ #define SET_NULL_OP(OPNAME) .OPNAME = NULL,
+
+ static struct fuse_operations ops = {
++ SET_NULL_OP(init)
+ FOR_ALL_OPS(SET_NULL_OP)
+ };
+
+ static value * ocaml_list_length=NULL;
+
+ #define DECLARE_OP_CLOSURE(OPNAME) static value * OPNAME##_closure=NULL;
++DECLARE_OP_CLOSURE(init)
+ FOR_ALL_OPS(DECLARE_OP_CLOSURE)
#define init_ARGS (struct fuse_conn_info *conn)
- #define init_CALL_ARGS (conn)
--#define init_RTYPE void *
-+#define init_RTYPE int
- #define init_CB vres=callback(*init_closure,Val_unit);
- /* TODO: the result from init is wrong, it should return unit */
- #define init_RES
+@@ -593,6 +594,33 @@
+ #define removexattr_CB vpath = copy_string(path); vres=callback2(*removexattr_closure,vpath,copy_string(name));
+ #define removexattr_RES
+
++static void *gm281_ops_init(struct fuse_conn_info *conn)
++{
++ CAMLparam0();
++ CAMLlocal4(vstring, vpath, vres, vtmp);
++ intptr_t res = -1;
++ vres=callback(*init_closure,Val_unit);
++ if (Tag_val(vres)==1) /* Result is not Bad */
++ {
++ res=0;
++ }
++ else
++ {
++ if (Is_block(Field(vres,0))) /* This is EUNKNOWNERR of int in ocaml */
++ res=-Int_val(Field(Field(vres,0),0));
++ else res=-ml2c_unix_error(Int_val(Field(vres,0)));
++ }
++ CAMLreturnT(void *, (void *)res);
++}
++
++static void *ops_init(struct fuse_conn_info *conn)
++{
++ leave_blocking_section();
++ void *ret = gm281_ops_init(conn);
++ enter_blocking_section();
++ return ret;
++}
++
+ #define CALLBACK(OPNAME) \
+ static OPNAME##_RTYPE gm281_ops_##OPNAME OPNAME##_ARGS \
+ {\
+@@ -634,6 +662,7 @@
+
+ void set_fuse_operations(struct fuse_operation_names const *op)
+ {
++ SET_OPERATION(init)
+ FOR_ALL_OPS(SET_OPERATION)
+ }
+