X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fbitio.c;h=17d92939f6badf583053ac0b4f3d27658be01ad0;hp=bd549359daac3a1bec7914cbaef29db1f4f25c2e;hb=131881aa4c31c77d8ad1b915dbe267760b429573;hpb=2b7d856ec993650ff4f685ba35c352d92f013122 diff --git a/lib/bitio.c b/lib/bitio.c index bd54935..17d9293 100644 --- a/lib/bitio.c +++ b/lib/bitio.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "../config.h" @@ -68,15 +69,33 @@ static int reader_fileread(reader_t*reader, void* data, int len) reader->pos += ret; return ret; } +static void reader_fileread_dealloc(reader_t*r) +{ + if(r->type == READER_TYPE_FILE2) { + close((ptroff_t)r->internal); + } + memset(r, 0, sizeof(reader_t)); +} void reader_init_filereader(reader_t*r, int handle) { r->read = reader_fileread; + r->dealloc = reader_fileread_dealloc; r->internal = (void*)handle; r->type = READER_TYPE_FILE; r->mybyte = 0; r->bitpos = 8; r->pos = 0; } +void reader_init_filereader2(reader_t*r, const char*filename) +{ + int fi = open(filename, +#ifdef O_BINARY + O_BINARY| +#endif + O_RDONLY); + reader_init_filereader(r, fi); + r->type = READER_TYPE_FILE2; +} /* ---------------------------- mem reader ------------------------------- */ @@ -288,7 +307,7 @@ void writer_init_filewriter(writer_t*w, int handle) } void writer_init_filewriter2(writer_t*w, char*filename) { - int fi = open("movie.swf", + int fi = open(filename, #ifdef O_BINARY O_BINARY| #endif @@ -338,7 +357,7 @@ static void zlib_error(int ret, char* msg, z_stream*zs) msg, ret, zs->msg?zs->msg:"unknown"); - perror("errno:"); + if(errno) perror("errno:"); exit(1); } #endif