@@ -351,6 +351,10 @@ const char *I_DoomExeDir(void)
351
351
352
352
if (!base) // cache multiple requests
353
353
{
354
+ #ifdef __PS2__
355
+ base = malloc (strlen (prboom_dir) + 1 );
356
+ strcpy (base, prboom_dir);
357
+ #else
354
358
char *home = M_getenv (" HOME" );
355
359
char *p_home = strdup (home);
356
360
size_t len = strlen (home);
@@ -362,7 +366,7 @@ const char *I_DoomExeDir(void)
362
366
base = malloc (p_len);
363
367
snprintf (base, p_len, " %s/.%s" , p_home, prboom_dir);
364
368
free (p_home);
365
-
369
+ # endif
366
370
// if ~/.$prboom_dir doesn't exist,
367
371
// create and use directory in XDG_DATA_HOME
368
372
if (M_stat (base, &data_dir) || !S_ISDIR (data_dir.st_mode ))
@@ -552,6 +556,82 @@ const char* I_FindFile2(const char* wfname, const char* ext)
552
556
return (const char *) I_FindFileInternal (wfname, ext, true );
553
557
}
554
558
559
+ #elif defined(_EE)
560
+ char * I_FindFileInternal (const char * wfname, const char * ext, dboolean isStatic)
561
+ {
562
+ (void ) isStatic;
563
+ int i;
564
+ /* Precalculate a length we will need in the loop */
565
+ size_t pl = strlen (wfname) + strlen (ext) + 4 ;
566
+
567
+ for (i = 0 ; i < 5 ; i++)
568
+ {
569
+ char * p;
570
+ const char * d = NULL ;
571
+ const char * s = NULL ;
572
+
573
+ /* Each entry in the switch sets d to directory to look in
574
+ * and optionally s to a subdirectory of d*/
575
+ switch (i)
576
+ {
577
+ case 0 :
578
+ d = " " ;
579
+ break ;
580
+
581
+ case 1 :
582
+ d = " host:"
583
+ break ;
584
+
585
+ case 2 :
586
+ d = " hdd0:/+DOOM/"
587
+ break ;
588
+
589
+ case 3 :
590
+ d = " mass:/"
591
+ break ;
592
+
593
+ case 4 :
594
+ d = " cdrom:\\ " ;
595
+ break ;
596
+
597
+ case 5 :
598
+ d = I_DoomExeDir ();
599
+ break ;
600
+
601
+ }
602
+
603
+ p = malloc ((d ? strlen (d) : 0 ) + ( s ? strlen (s) : 0 + pl);
604
+ sprintf (p, " %s%s%s%s%s" , d ? d : " " , (d && !HasTrailingSlash (d)) ? " /" : " " ),
605
+ s ? s : " " , (s && !HasTrailingSlash (s)) ? " /" : " " ,
606
+ wfname);
607
+
608
+ if (access (p, F_OK))
609
+ strcat (p, ext);
610
+
611
+ if (!access (p, F_OK))
612
+ {
613
+ lprintf (LO_INFO, " found %s\n " , p);
614
+ return p;
615
+ }
616
+
617
+ free (p);
618
+
619
+ }
620
+
621
+ return NULL ;
622
+ }
623
+
624
+ char * I_FindFile (const char * wfname, const char * ext)
625
+ {
626
+ return I_FindFileInternal (wfname, ext, false );
627
+ }
628
+
629
+ const char * I_FindFile2 (const char * wfname, const char * ext)
630
+ {
631
+ return (const char *) I_FindFileInternal (wfname, ext, true );
632
+ }
633
+
634
+
555
635
#endif
556
636
557
637
#endif // PRBOOM_SERVER
0 commit comments