loader: `MModule::load` cause build_module_importation
[nit.git] / c_src / file_nit.c
index 02b725e..f6a6987 100644 (file)
 #include <sys/types.h>
 #include <string.h>
 #include <dirent.h>
+#include <poll.h>
 
 #include "file_nit.h"
 
-
-/*
-C implementation of file::String::files
-
-Imported methods signatures:
-       HashSet new_HashSet(  ) for hash_collection::HashSet::init
-       void HashSet_add( HashSet recv, Object item ) for hash_collection::HashSet::(abstract_collection::SimpleCollection::add)
-       String new_String_from_cstring( char * str ) for string::String::from_cstring
-       int HashSet_is_a_Set( HashSet value ) to check if a HashSet[String] is a Set[String]
-       Set HashSet_as_Set( HashSet value ) to cast from HashSet[String] to Set[String]
-*/
-Set String_files___impl( String recv )
-{
-       char *dir_path;
-       DIR *dir;
-
-       dir_path = String_to_cstring( recv );
-       if ((dir = opendir(dir_path)) == NULL)
-       {
-               perror( dir_path );
-               exit( 1 );
-       }
-       else
-       {
-               HashSet results;
-               String file_name;
-               struct dirent *de;
-
-               results = new_HashSet();
-
-               while ( ( de = readdir( dir ) ) != NULL )
-                       if ( strcmp( de->d_name, ".." ) != 0 &&
-                               strcmp( de->d_name, "." ) != 0 )
-                       {
-                               file_name = new_String_from_cstring( strdup( de->d_name ) );
-                               HashSet_add( results, String_as_Object( file_name ) );
-                       }
-
-               closedir( dir );
-               return HashSet_as_Set( results );
-       }
-}
-
 int string_NativeString_NativeString_file_exists_0(char *f){
        FILE *hdl = fopen(f,"r");
        if(hdl != NULL){
@@ -97,3 +55,21 @@ void *file_NativeFile_NativeFile_file_stat_0(FILE *f){
 extern int string_NativeString_NativeString_file_delete_0(char *f){
   return (remove(f) == 0);
 }
+
+int file_stdin_poll_in_(void) {
+       struct pollfd fd = {0, POLLIN, 0};
+       int res = poll(&fd, 1, 0);
+       if (res == -1) {
+               perror("Error poll stdin");
+               exit(EXIT_FAILURE);
+       }
+       return res > 0;
+}
+
+FILE* file_int_fdtostream(int fd, char* mode){
+       return fdopen(fd, mode);
+}
+
+int file_NativeFile_NativeFile_set_buffering_type_0(FILE* f, int buf_sz, int mode){
+       return setvbuf(f, NULL, mode, buf_sz);
+}