An alternative to fmemopen using a temporary file on the disk.

Still needs to be called for the OSes that lacks it
This commit is contained in:
Pere Pujal i Carabantes 2010-06-01 22:12:53 +00:00
parent cc1c5ffc54
commit 9643a8df1c

View file

@ -499,6 +499,49 @@ extern WrapperData macosx;
)
#endif
/* #define fmemopen_alternative */ /* Uncomment this to test the fmemopen alternative in systems were fmemopen exists */
#ifdef fmemopen_alternative
#undef fmemopen
FILE * my_fmemopen(unsigned char * data, size_t size, const char * mode);
FILE * my_fmemopen(unsigned char * data, size_t size, const char * mode)
{
unsigned int i;
char *fname;
FILE * fi;
#ifndef WIN32
fname = get_fname("tmpfile", DIR_SAVE);
#else
fname = get_temp_fname("tmpfile");
#endif
fi = fopen(fname, "w");
if (fi == NULL)
{
free(fname);
return(NULL);
}
for (i = 0; i < size; i++)
{
fwrite(data, 1, 1, fi);
data ++;
}
fclose(fi);
fi = fopen(fname, mode);
free(fname);
return(fi);
}
#define fmemopen my_fmemopen
#endif
enum
{