diff options
Diffstat (limited to 'games/colem/rom_path.diff')
-rw-r--r-- | games/colem/rom_path.diff | 158 |
1 files changed, 79 insertions, 79 deletions
diff --git a/games/colem/rom_path.diff b/games/colem/rom_path.diff index b2353f2190..e788b8272d 100644 --- a/games/colem/rom_path.diff +++ b/games/colem/rom_path.diff @@ -2,86 +2,86 @@ diff -Naur a/ColEm/Coleco.c b/ColEm/Coleco.c --- a/ColEm/Coleco.c 2008-03-30 12:53:24.000000000 -0400 +++ b/ColEm/Coleco.c 2009-09-29 17:49:32.000000000 -0400 @@ -19,6 +19,9 @@ - #include <stdlib.h>
- #include <ctype.h>
- #include <unistd.h>
-+#include <sys/types.h>
-+#include <limits.h>
-+#include <pwd.h>
-
- #ifdef __WATCOMC__
- #include <direct.h>
+ #include <stdlib.h> + #include <ctype.h> + #include <unistd.h> ++#include <sys/types.h> ++#include <limits.h> ++#include <pwd.h> + + #ifdef __WATCOMC__ + #include <direct.h> @@ -69,6 +72,46 @@ - #define fwrite(B,N,L,F) gzwrite(F,B,(L)*(N))
- #endif
-
-+/* 20090929 bkw: smart_fopen() searches for ROMs in various places
-+ you might expect them to live, on a UNIXey system. Also searches
-+ for both upper- and lower-case filenames. */
-+static FILE *smart_fopen(const char *path, const char *mode) {
-+ FILE *fp;
-+ char lowercase_path[20], filename[PATH_MAX + 1];
-+ const char *p = path;
-+ char *lp = lowercase_path;
-+ struct passwd *ent;
-+
-+ while(*p) *lp++ = tolower(*p++);
-+ *lp = '\0';
-+
-+ if( (fp = fopen(path, mode)) )
-+ return fp;
-+
-+ if( (fp = fopen(lowercase_path, mode)) )
-+ return fp;
-+
-+ sprintf(filename, "/usr/share/colem/%s", path);
-+ if( (fp = fopen(filename, mode)) )
-+ return fp;
-+
-+ sprintf(filename, "/usr/share/colem/%s", lowercase_path);
-+ if( (fp = fopen(filename, mode)) )
-+ return fp;
-+
-+ if( (ent = getpwuid(getuid())) && (ent->pw_dir) ) {
-+ sprintf(filename, "%s/.colem/%s", ent->pw_dir, path);
-+ if( (fp = fopen(filename, mode)) )
-+ return fp;
-+
-+ sprintf(filename, "%s/.colem/%s", ent->pw_dir, lowercase_path);
-+ if( (fp = fopen(filename, mode)) )
-+ return fp;
-+ }
-+
-+ return NULL;
-+}
-+
- /** StartColeco() ********************************************/
- /** Allocate memory, load ROM image, initialize hardware, **/
- /** CPU and start the emulation. This function returns 0 in **/
+ #define fwrite(B,N,L,F) gzwrite(F,B,(L)*(N)) + #endif + ++/* 20090929 bkw: smart_fopen() searches for ROMs in various places ++ you might expect them to live, on a UNIXey system. Also searches ++ for both upper- and lower-case filenames. */ ++static FILE *smart_fopen(const char *path, const char *mode) { ++ FILE *fp; ++ char lowercase_path[20], filename[PATH_MAX + 1]; ++ const char *p = path; ++ char *lp = lowercase_path; ++ struct passwd *ent; ++ ++ while(*p) *lp++ = tolower(*p++); ++ *lp = '\0'; ++ ++ if( (fp = fopen(path, mode)) ) ++ return fp; ++ ++ if( (fp = fopen(lowercase_path, mode)) ) ++ return fp; ++ ++ sprintf(filename, "/usr/share/colem/%s", path); ++ if( (fp = fopen(filename, mode)) ) ++ return fp; ++ ++ sprintf(filename, "/usr/share/colem/%s", lowercase_path); ++ if( (fp = fopen(filename, mode)) ) ++ return fp; ++ ++ if( (ent = getpwuid(getuid())) && (ent->pw_dir) ) { ++ sprintf(filename, "%s/.colem/%s", ent->pw_dir, path); ++ if( (fp = fopen(filename, mode)) ) ++ return fp; ++ ++ sprintf(filename, "%s/.colem/%s", ent->pw_dir, lowercase_path); ++ if( (fp = fopen(filename, mode)) ) ++ return fp; ++ } ++ ++ return NULL; ++} ++ + /** StartColeco() ********************************************/ + /** Allocate memory, load ROM image, initialize hardware, **/ + /** CPU and start the emulation. This function returns 0 in **/ @@ -134,7 +177,7 @@ -
- /* COLECO.ROM: OS7 (ColecoVision BIOS) */
- if(Verbose) printf(" Opening COLECO.ROM...");
-- if(!(F=fopen("COLECO.ROM","rb"))) P="NOT FOUND";
-+ if(!(F=smart_fopen("COLECO.ROM","rb"))) P="NOT FOUND";
- else
- {
- if(fread(ROM_BIOS,1,0x2000,F)!=0x2000) P="SHORT FILE";
+ + /* COLECO.ROM: OS7 (ColecoVision BIOS) */ + if(Verbose) printf(" Opening COLECO.ROM..."); +- if(!(F=fopen("COLECO.ROM","rb"))) P="NOT FOUND"; ++ if(!(F=smart_fopen("COLECO.ROM","rb"))) P="NOT FOUND"; + else + { + if(fread(ROM_BIOS,1,0x2000,F)!=0x2000) P="SHORT FILE"; @@ -145,7 +188,7 @@ - if(!P)
- {
- if(Verbose) printf("OK\n Opening WRITER.ROM...");
-- if(F=fopen("WRITER.ROM","rb"))
-+ if(F=smart_fopen("WRITER.ROM","rb"))
- {
- if(fread(ROM_WRITER,1,0x8000,F)==0x8000) ++AdamROMs;
- fclose(F);
+ if(!P) + { + if(Verbose) printf("OK\n Opening WRITER.ROM..."); +- if(F=fopen("WRITER.ROM","rb")) ++ if(F=smart_fopen("WRITER.ROM","rb")) + { + if(fread(ROM_WRITER,1,0x8000,F)==0x8000) ++AdamROMs; + fclose(F); @@ -157,7 +200,7 @@ - if(!P&&AdamROMs)
- {
- if(Verbose) printf(" Opening EOS.ROM...");
-- if(F=fopen("EOS.ROM","rb"))
-+ if(F=smart_fopen("EOS.ROM","rb"))
- {
- if(fread(ROM_EOS,1,0x2000,F)==0x2000) ++AdamROMs;
- fclose(F);
+ if(!P&&AdamROMs) + { + if(Verbose) printf(" Opening EOS.ROM..."); +- if(F=fopen("EOS.ROM","rb")) ++ if(F=smart_fopen("EOS.ROM","rb")) + { + if(fread(ROM_EOS,1,0x2000,F)==0x2000) ++AdamROMs; + fclose(F); |