# HG changeset patch # User Matti Hamalainen # Date 1525993189 -10800 # Node ID 6b1f41ca300a194ff295cd97aa333aabe015aa24 # Parent c543f5ae92d5a5dacbb45a1a4d3b1d3c6f01f885 Add dmWriteDataFile() helper function. diff -r c543f5ae92d5 -r 6b1f41ca300a src/dmfile.c --- a/src/dmfile.c Fri May 11 01:59:37 2018 +0300 +++ b/src/dmfile.c Fri May 11 01:59:49 2018 +0300 @@ -58,6 +58,42 @@ #undef DM_DEFINE_FFUNC +int dmWriteDataFile(FILE *fh, const char *filename, const Uint8 *buf, const size_t bufSize) +{ + int res; + + if (fh == NULL && filename != NULL) + { + if ((fh = fopen(filename, "wb")) == NULL) + { + res = dmGetErrno(); + return dmError(res, + "Could not open '%s' for writing: %s.\n", + filename, dmErrorStr(res)); + } + } + + if (fh == NULL) + { + return dmError(DMERR_NULLPTR, + "NULL filename and stream pointers.\n"); + } + + if (fwrite(buf, bufSize, 1, fh) != 1) + { + res = dmGetErrno(); + dmError(res, + "Error writing data to '%s': %s\n", + filename, dmErrorStr(res)); + } + + if (fh != NULL) + fclose(fh); + + return res; +} + + #define BUF_SIZE_INITIAL (16*1024) #define BUF_SIZE_GROW (4*1024) diff -r c543f5ae92d5 -r 6b1f41ca300a src/dmfile.h --- a/src/dmfile.h Fri May 11 01:59:37 2018 +0300 +++ b/src/dmfile.h Fri May 11 01:59:49 2018 +0300 @@ -31,6 +31,7 @@ BOOL dm_fwrite_byte(FILE *f, const Uint8); +int dmWriteDataFile(FILE *outFile, const char *filename, const Uint8 *buf, const size_t bufSize); int dmReadDataFile(FILE *inFile, const char *filename, Uint8 **pbuf, size_t *pbufSize);