Darwin: Really add launcher this time
This commit is contained in:
parent
bcbaf2a0ce
commit
7f2972d47a
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>X11</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>2.0, Copyright © 2003-2007, Apple Inc.</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>X11.icns</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.x.X11_launcher</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>X11</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>2.0</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>x11l</string>
|
||||||
|
<key>LSUIElement</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>Copyright © 2007, Apple Inc.</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
Binary file not shown.
|
@ -0,0 +1,290 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 42;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
527F241B0B5D938C007840A7 /* X11.icns in Resources */ = {isa = PBXBuildFile; fileRef = 50459C5F038587C60ECA21EC /* X11.icns */; };
|
||||||
|
527F241D0B5D938C007840A7 /* bundle-main.c in Sources */ = {isa = PBXBuildFile; fileRef = 50EE2AB703849F0B0ECA21EC /* bundle-main.c */; };
|
||||||
|
527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */; };
|
||||||
|
527F24370B5D9D89007840A7 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 527F24260B5D938C007840A7 /* Info.plist */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
50459C5F038587C60ECA21EC /* X11.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = X11.icns; sourceTree = "<group>"; };
|
||||||
|
50EE2AB703849F0B0ECA21EC /* bundle-main.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = "bundle-main.c"; sourceTree = "<group>"; };
|
||||||
|
50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
|
||||||
|
527F24260B5D938C007840A7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
527F24270B5D938C007840A7 /* X11.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = X11.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
527F241E0B5D938C007840A7 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
527F241F0B5D938C007840A7 /* CoreFoundation.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
195DF8CFFE9D517E11CA2CBB /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
527F24270B5D938C007840A7 /* X11.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
20286C29FDCF999611CA2CEA /* X11 */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
20286C2AFDCF999611CA2CEA /* Sources */,
|
||||||
|
20286C2CFDCF999611CA2CEA /* Resources */,
|
||||||
|
20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
|
||||||
|
195DF8CFFE9D517E11CA2CBB /* Products */,
|
||||||
|
527F24260B5D938C007840A7 /* Info.plist */,
|
||||||
|
);
|
||||||
|
name = X11;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
20286C2AFDCF999611CA2CEA /* Sources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
50EE2AB703849F0B0ECA21EC /* bundle-main.c */,
|
||||||
|
);
|
||||||
|
name = Sources;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
20286C2CFDCF999611CA2CEA /* Resources */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
50459C5F038587C60ECA21EC /* X11.icns */,
|
||||||
|
);
|
||||||
|
name = Resources;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
50F4F0A7039D6ACA0E82C0CB /* CoreFoundation.framework */,
|
||||||
|
);
|
||||||
|
name = "External Frameworks and Libraries";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXHeadersBuildPhase section */
|
||||||
|
527F24170B5D938C007840A7 /* Headers */ = {
|
||||||
|
isa = PBXHeadersBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXHeadersBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
527F24160B5D938C007840A7 /* X11 */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */;
|
||||||
|
buildPhases = (
|
||||||
|
527F24170B5D938C007840A7 /* Headers */,
|
||||||
|
527F24180B5D938C007840A7 /* Resources */,
|
||||||
|
527F241C0B5D938C007840A7 /* Sources */,
|
||||||
|
527F241E0B5D938C007840A7 /* Frameworks */,
|
||||||
|
527F24210B5D938C007840A7 /* Rez */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = X11;
|
||||||
|
productName = X11;
|
||||||
|
productReference = 527F24270B5D938C007840A7 /* X11.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
20286C28FDCF999611CA2CEA /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
buildConfigurationList = 527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */;
|
||||||
|
compatibilityVersion = "Xcode 2.4";
|
||||||
|
hasScannedForEncodings = 1;
|
||||||
|
mainGroup = 20286C29FDCF999611CA2CEA /* X11 */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
shouldCheckCompatibility = 1;
|
||||||
|
targets = (
|
||||||
|
527F24160B5D938C007840A7 /* X11 */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
527F24180B5D938C007840A7 /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
527F24370B5D9D89007840A7 /* Info.plist in Resources */,
|
||||||
|
527F241B0B5D938C007840A7 /* X11.icns in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXRezBuildPhase section */
|
||||||
|
527F24210B5D938C007840A7 /* Rez */ = {
|
||||||
|
isa = PBXRezBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXRezBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
527F241C0B5D938C007840A7 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
527F241D0B5D938C007840A7 /* bundle-main.c in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
527F24090B5D8FFC007840A7 /* Development */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
INSTALL_MODE_FLAG = "a+rX";
|
||||||
|
};
|
||||||
|
name = Development;
|
||||||
|
};
|
||||||
|
527F240A0B5D8FFC007840A7 /* Deployment */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
INSTALL_MODE_FLAG = "a+rX";
|
||||||
|
};
|
||||||
|
name = Deployment;
|
||||||
|
};
|
||||||
|
527F240B0B5D8FFC007840A7 /* Default */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
INSTALL_MODE_FLAG = "a+rX";
|
||||||
|
};
|
||||||
|
name = Default;
|
||||||
|
};
|
||||||
|
527F24230B5D938C007840A7 /* Development */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
FRAMEWORK_SEARCH_PATHS = "";
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
HEADER_SEARCH_PATHS = /usr/X11/include;
|
||||||
|
INFOPLIST_FILE = Info.plist;
|
||||||
|
INSTALL_PATH = $DSTROOT/Applications/Utilties;
|
||||||
|
LIBRARY_SEARCH_PATHS = /usr/X11/lib;
|
||||||
|
OTHER_CFLAGS = "";
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-lXau",
|
||||||
|
"-lxcb",
|
||||||
|
"-lX11",
|
||||||
|
);
|
||||||
|
OTHER_REZFLAGS = "";
|
||||||
|
PRODUCT_NAME = X11;
|
||||||
|
SECTORDER_FLAGS = "";
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"-Wmost",
|
||||||
|
"-Wno-four-char-constants",
|
||||||
|
"-Wno-unknown-pragmas",
|
||||||
|
);
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Development;
|
||||||
|
};
|
||||||
|
527F24240B5D938C007840A7 /* Deployment */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
COPY_PHASE_STRIP = YES;
|
||||||
|
FRAMEWORK_SEARCH_PATHS = "";
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
HEADER_SEARCH_PATHS = /usr/X11/include;
|
||||||
|
INFOPLIST_FILE = Info.plist;
|
||||||
|
INSTALL_PATH = /Applications/Utilties;
|
||||||
|
LIBRARY_SEARCH_PATHS = /usr/X11/lib;
|
||||||
|
OTHER_CFLAGS = "";
|
||||||
|
OTHER_LDFLAGS = "";
|
||||||
|
OTHER_REZFLAGS = "";
|
||||||
|
PRODUCT_NAME = X11;
|
||||||
|
SECTORDER_FLAGS = "";
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"-Wmost",
|
||||||
|
"-Wno-four-char-constants",
|
||||||
|
"-Wno-unknown-pragmas",
|
||||||
|
);
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Deployment;
|
||||||
|
};
|
||||||
|
527F24250B5D938C007840A7 /* Default */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
FRAMEWORK_SEARCH_PATHS = "";
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
HEADER_SEARCH_PATHS = /usr/X11/include;
|
||||||
|
INFOPLIST_FILE = Info.plist;
|
||||||
|
INSTALL_PATH = /Applications/Utilties;
|
||||||
|
LIBRARY_SEARCH_PATHS = /usr/X11/lib;
|
||||||
|
OTHER_CFLAGS = "";
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-lXau",
|
||||||
|
"-lxcb",
|
||||||
|
"-lX11",
|
||||||
|
);
|
||||||
|
OTHER_REZFLAGS = "";
|
||||||
|
PRODUCT_NAME = X11;
|
||||||
|
SECTORDER_FLAGS = "";
|
||||||
|
WARNING_CFLAGS = (
|
||||||
|
"-Wmost",
|
||||||
|
"-Wno-four-char-constants",
|
||||||
|
"-Wno-unknown-pragmas",
|
||||||
|
);
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = Default;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
527F24080B5D8FFC007840A7 /* Build configuration list for PBXProject "X11" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
527F24090B5D8FFC007840A7 /* Development */,
|
||||||
|
527F240A0B5D8FFC007840A7 /* Deployment */,
|
||||||
|
527F240B0B5D8FFC007840A7 /* Default */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Default;
|
||||||
|
};
|
||||||
|
527F24220B5D938C007840A7 /* Build configuration list for PBXNativeTarget "X11" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
527F24230B5D938C007840A7 /* Development */,
|
||||||
|
527F24240B5D938C007840A7 /* Deployment */,
|
||||||
|
527F24250B5D938C007840A7 /* Default */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Default;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
/* main.c -- X application launcher
|
||||||
|
|
||||||
|
Copyright (c) 2007 Apple Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation files
|
||||||
|
(the "Software"), to deal in the Software without restriction,
|
||||||
|
including without limitation the rights to use, copy, modify, merge,
|
||||||
|
publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
|
||||||
|
HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name(s) of the above
|
||||||
|
copyright holders shall not be used in advertising or otherwise to
|
||||||
|
promote the sale, use or other dealings in this Software without
|
||||||
|
prior written authorization. */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
|
||||||
|
#define DEFAULT_APP "/usr/X11/bin/xterm"
|
||||||
|
|
||||||
|
int main (int argc, char **argv) {
|
||||||
|
char *command = DEFAULT_APP;
|
||||||
|
const char *newargv[7];
|
||||||
|
int child;
|
||||||
|
|
||||||
|
|
||||||
|
CFPropertyListRef PlistRef = CFPreferencesCopyAppValue(CFSTR("app_to_run"),
|
||||||
|
kCFPreferencesCurrentApplication);
|
||||||
|
|
||||||
|
if ((PlistRef == NULL) || (CFGetTypeID(PlistRef) != CFStringGetTypeID())) {
|
||||||
|
CFPreferencesSetAppValue(CFSTR("app_to_run"), CFSTR(DEFAULT_APP),
|
||||||
|
kCFPreferencesCurrentApplication);
|
||||||
|
CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
|
||||||
|
} else {
|
||||||
|
int len = CFStringGetLength((CFStringRef)PlistRef)+1;
|
||||||
|
command = (char *) malloc(len);
|
||||||
|
CFStringGetCString((CFStringRef)PlistRef, command, len, kCFStringEncodingASCII);
|
||||||
|
fprintf(stderr, "command=%s\n", command);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PlistRef) CFRelease(PlistRef);
|
||||||
|
|
||||||
|
newargv[0] = "/usr/bin/login";
|
||||||
|
newargv[1] = "-fp";
|
||||||
|
newargv[2] = getlogin();
|
||||||
|
newargv[3] = "/bin/sh";
|
||||||
|
newargv[4] = "-c";
|
||||||
|
newargv[5] = command;
|
||||||
|
newargv[6] = NULL;
|
||||||
|
|
||||||
|
child = fork();
|
||||||
|
|
||||||
|
switch (child) {
|
||||||
|
case -1: /* error */
|
||||||
|
perror ("fork");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
case 0: /* child */
|
||||||
|
execvp (newargv[0], (char **const) newargv);
|
||||||
|
perror ("Couldn't exec");
|
||||||
|
_exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue