/* Case Insensitive fopen */ FILE *ci_fopen(char *file_name, const char *mode) { FILE *fd; char *fullpath = ci_find_file(NULL, file_name); /* If I didn't find a file, this could be writing a new file, so use whatever file_name they passed */ if (fullpath == NULL) { return fopen(file_name, mode); } else { fd = fopen(fullpath, mode); free(fullpath); } return fd; }
PACKFILE *pack_fopen(const char *filnam1, const char *modd1) { #else PACKFILE *pack_fopen(char *filnam1, char *modd1) { #endif char msg[2000]; sprintf(msg, "pack_fopen: %s - %s\n", filnam1, modd1); write_log_debug(msg); char *filnam = (char *)filnam1; char *modd = (char *)modd1; int needsetback = 0; if (filnam[0] == '~') { // ~ signals load from specific data file, not the main default one char gfname[80]; int ii = 0; filnam++; while (filnam[0]!='~') { gfname[ii] = filnam[0]; filnam++; ii++; } filnam++; // MACPORT FIX 9/6/5: changed from NULL TO '\0' gfname[ii] = '\0'; /* char useloc[250]; #ifdef LINUX_VERSION sprintf(useloc,"%s/%s",usetup.data_files_dir,gfname); #else sprintf(useloc,"%s\\%s",usetup.data_files_dir,gfname); #endif csetlib(useloc,"");*/ char *libname = ci_find_file(usetup.data_files_dir, gfname); if (csetlib(libname,"")) { // Hack for running in Debugger free(libname); libname = ci_find_file("Compiled", gfname); csetlib(libname,""); } free(libname); needsetback = 1; } // if the file exists, override the internal file FILE *testf = fopen(filnam, "rb"); if (testf != NULL) fclose(testf); if ((cliboffset(filnam)<1) || (testf != NULL)) { if (needsetback) csetlib(game_file_name,""); return __old_pack_fopen(filnam, modd); } else { _my_temppack=__old_pack_fopen(clibgetdatafile(filnam), modd); if (_my_temppack == NULL) quitprintf("pack_fopen: unable to change datafile: not found: %s", clibgetdatafile(filnam)); pack_fseek(_my_temppack,cliboffset(filnam)); #if ALLEGRO_DATE < 20050101 _my_temppack->todo=clibfilesize(filnam); #else _my_temppack->normal.todo = clibfilesize(filnam); #endif if (needsetback) csetlib(game_file_name,""); return _my_temppack; } }