Savers: Centralize file open/close
As done for the loaders a while back.
This commit is contained in:
parent
a81078e204
commit
c3d524924e
|
@ -195,7 +195,7 @@ int __imlib_LoadProgressRows(ImlibImage * im,
|
|||
|
||||
/* loader.h */
|
||||
|
||||
#define IMLIB2_LOADER_VERSION 1
|
||||
#define IMLIB2_LOADER_VERSION 2
|
||||
|
||||
typedef struct {
|
||||
unsigned char ldr_version; /* Module ABI version */
|
||||
|
|
|
@ -866,6 +866,7 @@ __imlib_SaveImage(ImlibImage * im, const char *file, ImlibLoadArgs * ila)
|
|||
{
|
||||
ImlibLoader *l;
|
||||
ImlibLoaderCtx ilc;
|
||||
FILE *fp;
|
||||
int loader_ret;
|
||||
|
||||
if (!file)
|
||||
|
@ -883,14 +884,24 @@ __imlib_SaveImage(ImlibImage * im, const char *file, ImlibLoadArgs * ila)
|
|||
return;
|
||||
}
|
||||
|
||||
fp = fopen(file, "wb");
|
||||
if (!fp)
|
||||
{
|
||||
ila->err = errno;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ila->pfunc)
|
||||
__imlib_LoadCtxInit(im, &ilc, ila->pfunc, ila->pgran);
|
||||
|
||||
__imlib_ImageFileContextPush(im, strdup(file));
|
||||
im->fi->fp = fp;
|
||||
|
||||
/* call the saver */
|
||||
loader_ret = l->module->save(im);
|
||||
|
||||
fclose(fp);
|
||||
|
||||
__imlib_ImageFileContextPop(im);
|
||||
|
||||
im->lc = NULL;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "types.h"
|
||||
|
||||
#define IMLIB2_LOADER_VERSION 1
|
||||
#define IMLIB2_LOADER_VERSION 2
|
||||
|
||||
typedef struct {
|
||||
unsigned char ldr_version; /* Module ABI version */
|
||||
|
|
|
@ -109,14 +109,10 @@ static int
|
|||
_save(ImlibImage * im)
|
||||
{
|
||||
int rc;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
uint32_t *ptr;
|
||||
int y, alpha = 0;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
uint32_t *buf = (uint32_t *) malloc(im->w * 4);
|
||||
#endif
|
||||
|
@ -153,7 +149,6 @@ _save(ImlibImage * im)
|
|||
#ifdef WORDS_BIGENDIAN
|
||||
free(buf);
|
||||
#endif
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -761,14 +761,10 @@ static int
|
|||
_save(ImlibImage * im)
|
||||
{
|
||||
int rc;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
int i, j, pad;
|
||||
uint32_t pixel;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_SUCCESS;
|
||||
|
||||
/* calculate number of bytes to pad on end of each row */
|
||||
|
@ -806,8 +802,6 @@ _save(ImlibImage * im)
|
|||
WriteleByte(f, 0);
|
||||
}
|
||||
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,16 +84,12 @@ static int
|
|||
_save(ImlibImage * im)
|
||||
{
|
||||
int rc;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
size_t rowlen, i, j;
|
||||
uint32_t tmp32;
|
||||
uint16_t *row;
|
||||
uint8_t *dat;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_FAIL;
|
||||
row = NULL;
|
||||
|
||||
|
@ -139,7 +135,6 @@ _save(ImlibImage * im)
|
|||
|
||||
quit:
|
||||
free(row);
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -256,7 +256,7 @@ _save(ImlibImage * im)
|
|||
int rc;
|
||||
struct jpeg_compress_struct jcs;
|
||||
ImLib_JPEG_data jdata;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
uint8_t *buf;
|
||||
uint32_t *ptr;
|
||||
JSAMPROW *jbuf;
|
||||
|
@ -271,10 +271,6 @@ _save(ImlibImage * im)
|
|||
|
||||
rc = LOAD_FAIL;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
goto quit;
|
||||
|
||||
/* set up error handling */
|
||||
jcs.err = _jdata_init(&jdata);
|
||||
if (sigsetjmp(jdata.setjmp_buffer, 1))
|
||||
|
@ -353,7 +349,6 @@ _save(ImlibImage * im)
|
|||
jpeg_finish_compress(&jcs);
|
||||
jpeg_destroy_compress(&jcs);
|
||||
free(buf);
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -595,7 +595,7 @@ static int
|
|||
_save(ImlibImage * im)
|
||||
{
|
||||
int rc;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
png_structp png_ptr;
|
||||
png_infop info_ptr;
|
||||
uint32_t *ptr;
|
||||
|
@ -607,10 +607,6 @@ _save(ImlibImage * im)
|
|||
int pass, n_passes = 1;
|
||||
int has_alpha;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_FAIL;
|
||||
info_ptr = NULL;
|
||||
data = NULL;
|
||||
|
@ -750,8 +746,6 @@ _save(ImlibImage * im)
|
|||
if (png_ptr)
|
||||
png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
|
||||
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -615,15 +615,11 @@ static int
|
|||
_save(ImlibImage * im)
|
||||
{
|
||||
int rc;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
uint8_t *buf, *bptr;
|
||||
uint32_t *ptr;
|
||||
int x, y;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_FAIL;
|
||||
|
||||
/* allocate a small buffer to convert image data */
|
||||
|
@ -683,7 +679,6 @@ _save(ImlibImage * im)
|
|||
quit:
|
||||
/* finish off */
|
||||
free(buf);
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
|
||||
|
|
|
@ -498,16 +498,12 @@ static int
|
|||
_save(ImlibImage * im)
|
||||
{
|
||||
int rc;
|
||||
FILE *f;
|
||||
FILE *f = im->fi->fp;
|
||||
uint32_t *dataptr;
|
||||
unsigned char *buf, *bufptr;
|
||||
int y;
|
||||
tga_header header;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_FAIL;
|
||||
|
||||
/* assemble the TGA header information */
|
||||
|
@ -577,7 +573,6 @@ _save(ImlibImage * im)
|
|||
|
||||
quit:
|
||||
free(buf);
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -466,7 +466,7 @@ _save(ImlibImage * im)
|
|||
int i;
|
||||
ImlibImageTag *tag;
|
||||
|
||||
tif = TIFFOpen(im->fi->name, "w");
|
||||
tif = TIFFFdOpen(fileno(im->fi->fp), im->fi->name, "w");
|
||||
if (!tif)
|
||||
return LOAD_FAIL;
|
||||
|
||||
|
|
|
@ -117,17 +117,13 @@ _load(ImlibImage * im, int load_data)
|
|||
static int
|
||||
_save(ImlibImage * im)
|
||||
{
|
||||
FILE *f;
|
||||
int rc;
|
||||
FILE *f = im->fi->fp;
|
||||
ImlibImageTag *quality_tag;
|
||||
float quality;
|
||||
uint8_t *fdata;
|
||||
size_t encoded_size;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_FAIL;
|
||||
fdata = NULL;
|
||||
|
||||
|
@ -164,7 +160,6 @@ _save(ImlibImage * im)
|
|||
quit:
|
||||
if (fdata)
|
||||
WebPFree(fdata);
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -211,17 +211,13 @@ _load(ImlibImage * im, int load_data)
|
|||
static int
|
||||
_save(ImlibImage * im)
|
||||
{
|
||||
FILE *f;
|
||||
int rc;
|
||||
FILE *f = im->fi->fp;
|
||||
const char *s, *name;
|
||||
char *bname;
|
||||
int i, k, x, y, bits, nval, val;
|
||||
uint32_t *ptr;
|
||||
|
||||
f = fopen(im->fi->name, "wb");
|
||||
if (!f)
|
||||
return LOAD_FAIL;
|
||||
|
||||
rc = LOAD_SUCCESS;
|
||||
|
||||
name = im->fi->name;
|
||||
|
@ -261,8 +257,6 @@ _save(ImlibImage * im)
|
|||
|
||||
fprintf(f, "};\n");
|
||||
|
||||
fclose(f);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue