Changes to allow for command line execution of Stella on the Macintosh

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@450 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
markgrebe 2005-05-28 21:06:41 +00:00
parent 6706fb41f7
commit ce294522a7
2 changed files with 28 additions and 42 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: OSystemMACOSX.cxx,v 1.1 2005-05-28 01:28:36 markgrebe Exp $
// $Id: OSystemMACOSX.cxx,v 1.2 2005-05-28 21:06:41 markgrebe Exp $
//============================================================================
#include <cstdlib>
@ -24,6 +24,7 @@
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/param.h> /* for MAXPATHLEN */
#include "bspf.hxx"
#include "OSystem.hxx"
@ -40,8 +41,7 @@ void macOpenConsole(char *romname);
// Pointer to the main parent osystem object or the null pointer
extern OSystem* theOSystem;
static double Atari_time(void);
extern char parentdir[MAXPATHLEN];
// Allow the SDL main object to pass request to open cartridges from
// the OS into the application.
@ -74,7 +74,8 @@ OSystemMACOSX::OSystemMACOSX()
setStateDir(statedir);
string userPropertiesFile = basedir + "/stella.pro";
string systemPropertiesFile = "/etc/stella.pro";
strcat(parentdir,"/../../../stella.pro");
string systemPropertiesFile = parentdir;
setPropertiesFiles(userPropertiesFile, systemPropertiesFile);
string userConfigFile = basedir + "/stellarc";
@ -173,11 +174,3 @@ uInt32 OSystemMACOSX::getTicks()
return (uInt32) SDL_GetTicks() * 1000;
#endif
}
static double Atari_time(void)
{
struct timeval tp;
gettimeofday(&tp, NULL);
return tp.tv_sec + 1e-6 * tp.tv_usec;
}

View File

@ -4,7 +4,7 @@
Feel free to customize this file to suit your needs
*/
/* $Id: SDLMain.m,v 1.3 2005-05-28 01:29:29 markgrebe Exp $ */
/* $Id: SDLMain.m,v 1.4 2005-05-28 21:06:41 markgrebe Exp $ */
#import "SDL.h"
#import "SDLMain.h"
@ -17,10 +17,11 @@ void macOpenConsole(char *romname);
static int gArgc;
static char **gArgv;
static BOOL gFinderLaunch;
BOOL gFinderLaunch;
static BOOL started=NO;
static char startupFile[FILENAME_MAX];
int fileToLoad = FALSE;
char parentdir[MAXPATHLEN];
/* A helper category for NSString */
@interface NSString (ReplaceSubString)
@ -51,30 +52,6 @@ static SDLMain *sharedInstance = nil;
return sharedInstance;
}
/* Set the working directory to the .app's parent directory */
- (void) setupWorkingDirectory:(BOOL)shouldChdir
{
char parentdir[MAXPATHLEN];
char *c;
strncpy ( parentdir, gArgv[0], sizeof(parentdir) );
c = (char*) parentdir;
while (*c != '\0') /* go to end */
c++;
while (*c != '/') /* back up to parent */
c--;
*c++ = '\0'; /* cut off last part (binary name) */
if (shouldChdir)
{
assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */
assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */
}
}
/* Fix menu to contain the real app name instead of "SDL App" */
- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName
{
@ -109,9 +86,6 @@ char fileName[FILENAME_MAX];
started = YES;
/* Set the working directory to the .app's parent directory */
[self setupWorkingDirectory:gFinderLaunch];
/* Set the main menu to contain the real app name instead of "SDL App" */
[self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]];
@ -202,6 +176,23 @@ char fileName[FILENAME_MAX];
# undef main
#endif
void setupParentDirectory(void)
{
char *c;
strncpy ( parentdir, gArgv[0], sizeof(parentdir) );
c = (char*) parentdir;
while (*c != '\0') /* go to end */
c++;
while (*c != '/') /* back up to parent */
c--;
*c++ = '\0'; /* cut off last part (binary name) */
}
/* Main entry point to executable - should *not* be SDL_main! */
int main (int argc, char **argv)
{
@ -224,7 +215,9 @@ int main (int argc, char **argv)
gArgv[i] = NULL;
myPrefs = [Preferences sharedInstance];
setupParentDirectory();
[SDLApplication poseAsClass:[NSApplication class]];
NSApplicationMain (argc, argv);
return 0;