diff --git a/dlls/src/file/build.sh b/dlls/src/file/build.sh new file mode 100755 index 0000000..4461f0c --- /dev/null +++ b/dlls/src/file/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash +NAME="file" +CCOPTS="-I. -I/usr/local/include -I../include" + +FILES="file" + +OBJECTS="" + +for FILE in $FILES; do + gcc -c $FILE.c $CCOPTS -o $FILE.o + OBJECTS+="$FILE.o " +done + +gcc $OBJECTS -shared -o ../../bin/${NAME}.so -L/usr/local/lib -lSDL + +rm $OBJECTS diff --git a/dlls/src/file/file.c b/dlls/src/file/file.c index 7ebf530..2e0d2e1 100644 --- a/dlls/src/file/file.c +++ b/dlls/src/file/file.c @@ -2,9 +2,29 @@ #include #include -#include +#include "export.h" #include "file.h" +FILE *fichero[0xFF] ; +int existe[0xFF] ; + +static void _cierratodo() +{ + int i = 0; + + for (; i < 0xFF ; i++ ) + if ( existe[i] == 0 ) + fclose(fichero[i]); +} + +static void _limpiatodo() +{ + int i = 0; + + for (; i < 0xFF ; i++ ) + if ( existe[i] == 0 ) + fflush(fichero[i]); +} int ExportaFuncs(EXPORTAFUNCS_PARAMS) { @@ -30,9 +50,6 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS) } -FILE *fichero[0xFF] ; -int existe[0xFF] ; - /* * POR HACER: * Los handles deben ser IMPARES @@ -148,19 +165,18 @@ int eDiv_Fseek(FUNCTION_PARAMS) int eDiv_Flush(FUNCTION_PARAMS) { - return flushall() ; /* flushall()-numfiles */ + _limpiatodo(); + return TRUE; } int eDiv_Fclose(FUNCTION_PARAMS) { int handle=getparm(), num ; - if ( handle == 0 ) - if ( ( num = fcloseall() ) == EOF ) - return 0 ; - else - return num ; - else + if ( handle == 0 ) { + _cierratodo(); + return 0; + } else if ( !existe[handle] ) { fp->Runtime_Error(170); return 0 ;