diff options
author | Andrew Niefer | 2006-12-05 21:56:56 +0000 |
---|---|---|
committer | Andrew Niefer | 2006-12-05 21:56:56 +0000 |
commit | df79a8d6117a5778bf28b6f468b0f42c0b026dc8 (patch) | |
tree | 7e45edf17164e808735cb059de0992a28014133c /bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbonCommon.c | |
parent | 234f2e8893c4de279f7ebc545b01e249d05335f3 (diff) | |
download | rt.equinox.framework-df79a8d6117a5778bf28b6f468b0f42c0b026dc8.tar.gz rt.equinox.framework-df79a8d6117a5778bf28b6f468b0f42c0b026dc8.tar.xz rt.equinox.framework-df79a8d6117a5778bf28b6f468b0f42c0b026dc8.zip |
Moving launcher code from equinox-incubator/org.eclipse.equinox.launcher
(formely from platform-launcher)
Diffstat (limited to 'bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbonCommon.c')
-rw-r--r-- | bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbonCommon.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbonCommon.c b/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbonCommon.c new file mode 100644 index 000000000..6c04631a8 --- /dev/null +++ b/bundles/org.eclipse.equinox.executable/library/carbon/eclipseCarbonCommon.c @@ -0,0 +1,125 @@ +/******************************************************************************* + * Copyright (c) 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * Andrew Niefer + *******************************************************************************/ + +#include "eclipseCommon.h" +#include "eclipseOS.h" + +#include <locale.h> +#include <dlfcn.h> +#include <unistd.h> +#include <CoreServices/CoreServices.h> +#include <Carbon/Carbon.h> +#include <mach-o/dyld.h> + +char dirSeparator = '/'; +char pathSeparator = ':'; + +void initWindowSystem( int* pArgc, _TCHAR* argv[], int showSplash ); + +int initialized = 0; + +static void init() { + if (!initialized) { + ProcessSerialNumber psn; + if (GetCurrentProcess(&psn) == noErr) { + TransformProcessType(&psn, kProcessTransformToForegroundApplication); + SetFrontProcess(&psn); + } + ClearMenuBar(); + initialized= true; + } +} + + +/* Initialize Window System + * + * Initialize Carbon. + */ +void initWindowSystem( int* pArgc, char* argv[], int showSplash ) +{ + char *homeDir = getProgramDir(); + /*debug("install dir: %s\n", homeDir);*/ + if (homeDir != NULL) + chdir(homeDir); + + if (showSplash) + init(); +} + +/* Display a Message */ +void displayMessage(char *title, char *message) +{ + CFStringRef inError, inDescription= NULL; + + /* try to break the message into a first sentence and the rest */ + char *pos= strstr(message, ". "); + if (pos != NULL) { + char *to, *from, *buffer= calloc(pos-message+2, sizeof(char)); + /* copy and replace line separators with blanks */ + for (to= buffer, from= message; from <= pos; from++, to++) { + char c= *from; + if (c == '\n') c= ' '; + *to= c; + } + inError= CFStringCreateWithCString(kCFAllocatorDefault, buffer, kCFStringEncodingASCII); + free(buffer); + inDescription= CFStringCreateWithCString(kCFAllocatorDefault, pos+2, kCFStringEncodingASCII); + } else { + inError= CFStringCreateWithCString(kCFAllocatorDefault, message, kCFStringEncodingASCII); + } + + init(); + + DialogRef outAlert; + OSStatus status= CreateStandardAlert(kAlertStopAlert, inError, inDescription, NULL, &outAlert); + if (status == noErr) { + DialogItemIndex outItemHit; + RunStandardAlert(outAlert, NULL, &outItemHit); + } else { + /*debug("%s: displayMessage: %s\n", title, message);*/ + } + CFRelease(inError); + if (inDescription != NULL) + CFRelease(inDescription); +} + +/* Load the specified shared library + */ +void * loadLibrary( char * library ){ + void * result= dlopen(library, RTLD_NOW); + if(result == 0) + printf("%s\n",dlerror()); + return result; +/* NSObjectFileImage *fileImage; + NSModule handle; + if(NSCreateObjectFileImageFromFile(library, &fileImage) == NSObjectFileImageSuccess) { + handle = NSLinkModule(fileImage,filename, NSLINKMODULE_OPTION_RETURN_ON_ERROR | NSLINKMODULE_OPTION_PRIVATE); + NSDestroyObjectFileImage(fileImage); + } + + return handle; +*/} + +/* Unload the shared library + */ +void unloadLibrary( void * handle ){ + dlclose(handle); +/* NSUnlinkModule(handle, 0);*/ +} + +/* Find the given symbol in the shared library + */ +void * findSymbol( void * handle, char * symbol ){ + return dlsym(handle, symbol); + /*NSSymbol sym = NSLookupSymbolInModule(handle, symbol); + return NSAddressOfSymbol(sym);*/ +} |