X-Git-Url: http://nitlanguage.org diff --git a/c_src/file_nit.c b/c_src/file_nit.c index 02b725e..f6a6987 100644 --- a/c_src/file_nit.c +++ b/c_src/file_nit.c @@ -20,52 +20,10 @@ #include #include #include +#include #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); +}