Savers: Centralize file open/close

As done for the loaders a while back.
This commit is contained in:
Kim Woelders 2023-02-04 07:43:16 +01:00
parent a81078e204
commit c3d524924e
13 changed files with 23 additions and 60 deletions

View File

@ -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 */

View File

@ -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;

View File

@ -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 */

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}