Mercurial > hg > dmlib
changeset 15:feec43a3497c
Fix input file reading of mod2wav utility.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 28 Sep 2012 11:11:15 +0300 |
parents | a40c266a71a2 |
children | d9251dd496ce |
files | mod2wav.c |
diffstat | 1 files changed, 26 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/mod2wav.c Fri Sep 28 10:48:57 2012 +0300 +++ b/mod2wav.c Fri Sep 28 11:11:15 2012 +0300 @@ -210,7 +210,8 @@ int main(int argc, char *argv[]) { - FILE *inFile = NULL, *outFile = NULL; + DMResource *inFile = NULL; + FILE *outFile = NULL; JSSModule *m = NULL; JSSMixer *d = NULL; JSSPlayer *p = NULL; @@ -236,33 +237,41 @@ jssInit(); // Open the source file - if ((inFile = fopen(srcFilename, "rb")) == NULL) { - dmError("Error opening input file '%s'. (%s)\n", srcFilename, strerror(errno)); - return 2; + if ((inFile = dmf_create_stdio(srcFilename)) == NULL) + { + fprintf(stderr, "Error opening input file '%s'. (%s)\n", srcFilename, strerror(errno)); + return 1; } // Read module file + fprintf(stderr, "Reading file: %s\n", srcFilename); #ifdef JSS_SUP_XM + fprintf(stderr, "* Trying XM...\n"); result = jssLoadXM(inFile, &m); #endif - if (result != 0) { #ifdef JSS_SUP_JSSMOD - Uint8 *buf; - size_t bufsize; - fseek(inFile, 0L, SEEK_END); - bufsize = ftell(inFile); - fseek(inFile, 0L, SEEK_SET); - buf = dmMalloc(bufsize); - if (fread(buf, 1, bufsize, inFile) != bufsize) { - dmError("Error reading file!\n"); + if (result != 0) + { + size_t bufgot, bufsize = dmfsize(inFile); + Uint8 *buf = dmMalloc(bufsize); + dmfseek(inFile, 0L, SEEK_SET); + fprintf(stderr, "* Trying JSSMOD (%d bytes, %p)...\n", bufsize, buf); + if ((bufgot = dmfread(buf, 1, bufsize, inFile)) != bufsize) + { + fprintf(stderr, "Error reading file (not enough data %d), #%d: %s\n", + bufgot, dmferror(inFile), dmErrorStr(dmferror(inFile))); return 2; } result = jssLoadJSSMOD(buf, bufsize, &m); + dmFree(buf); + } #endif - if (result != 0) { - dmError("Error loading module file: %d\n", result); - return 3; - } + dmf_close(inFile); + if (result != DMERR_OK) + { + fprintf(stderr, "Error loading module file, %d: %s\n", + result, dmErrorStr(result)); + return 3; } // Open mixer