shithub: MicroHs

Download patch

ref: cd75b6537aced08663b6dc4885bea01f974a1475
parent: 03194fff9769bbca6991e8ab92ed70d6eacc06d0
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Thu Mar 28 05:30:23 EDT 2024

Add mkdir()

--- a/src/MicroHs/FFI.hs
+++ b/src/MicroHs/FFI.hs
@@ -171,5 +171,5 @@
   "peek_ullong", "poke_ullong", "peek_llong", "poke_llong",
   "peek_flt", "poke_flt",
   "sizeof_int", "sizeof_long", "sizeof_llong",
-  "opendir", "closedir", "readdir", "c_d_name", "chdir"
+  "opendir", "closedir", "readdir", "c_d_name", "chdir", "mkdir"
   ]
--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -16,6 +16,8 @@
 #if WANT_DIR
 #include <dirent.h>
 #include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
 #endif  /* WANT_DIR */
 
 #if WANT_MD5
@@ -3639,6 +3641,7 @@
 void mhs_readdir(int s) { mhs_from_Ptr(s, 1, readdir(mhs_to_Ptr(s, 0))); }
 void mhs_c_d_name(int s) { mhs_from_Ptr(s, 1, ((struct dirent *)(mhs_to_Ptr(s, 0)))->d_name); }
 void mhs_chdir(int s) { mhs_from_Int(s, 1, chdir(mhs_to_Ptr(s, 0))); }
+void mhs_mkdir(int s) { mhs_from_Int(s, 2, mkdir(mhs_to_Ptr(s, 0), mhs_to_Int(s, 1))); }
 #endif  /* WANT_DIR */
 
 struct ffi_entry ffi_table[] = {
@@ -3745,6 +3748,7 @@
 { "opendir", mhs_opendir},
 { "readdir", mhs_readdir},
 { "chdir", mhs_chdir},
+{ "mkdir", mhs_mkdir},
 #endif  /* WANT_DIR */
 { 0,0 }
 };
--