# HG changeset patch # User Matti Hamalainen # Date 1348819875 -10800 # Node ID feec43a3497c5de4ff9a3592db622c9730ee5a05 # Parent a40c266a71a2bd5f5af694e7a17d7eee974f7878 Fix input file reading of mod2wav utility. diff -r a40c266a71a2 -r feec43a3497c mod2wav.c --- 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