on master help sign in
Add idris_chdir to stdfgn
8c66955Edwin Brady
libs/prelude/Prelude/File.idr+1−1
@@ -326,5 +326,5 @@ createDir d
326export
326export
327changeDir : String -> IO Bool
327changeDir : String -> IO Bool
328changeDir dir
328changeDir dir
329− = do ok <- foreign FFI_C "chdir" (String -> IO Int) dir
329+ = do ok <- foreign FFI_C "idris_chdir" (String -> IO Int) dir
330 pure (ok == 0)
330 pure (ok == 0)
rts/idris_stdfgn.c+5
@@ -9,6 +9,7 @@
9#include <stdio.h>
9#include <stdio.h>
10#include <time.h>
10#include <time.h>
11#include <dirent.h>
11#include <dirent.h>
12+#include <unistd.h>
12
13
13#ifdef _WIN32
14#ifdef _WIN32
14int win_fpoll(void* h);
15int win_fpoll(void* h);
@@ -104,6 +105,10 @@ int idris_mkdir(char* dname) {
104#endif
105#endif
105}
106}
106
107
108+int idris_chdir(char* dname) {
109+ return chdir(dname);
110+}
111+
107int idris_dirError(void *dptr) {
112int idris_dirError(void *dptr) {
108 return ((DirInfo*)dptr)->error;
113 return ((DirInfo*)dptr)->error;
109}
114}
rts/idris_stdfgn.h+1
@@ -21,6 +21,7 @@ char* idris_nextDirEntry(void* h);
21
21
22// Create a directory; return 0 on success or -1 on failure
22// Create a directory; return 0 on success or -1 on failure
23int idris_mkdir(char* dname);
23int idris_mkdir(char* dname);
24+int idris_chdir(char* dname);
24
25
25// Return 0 if ok, or -1 if there was an error with the given directory
26// Return 0 if ok, or -1 if there was an error with the given directory
26// (like ferror)
27// (like ferror)