This is Launch_main.m in view mode; [Download] [Up]
/*
* Generated by the NeXT Interface Builder.
*/
#import <stdlib.h>
#import <appkit/Application.h>
#import <appkit/Panel.h>
#import <defaults.h>
#import "Main.h"
#import <sys/param.h>
#import <string.h>
#import <libc.h>
#define APPNAME "Launch"
char loginScript[MAXPATHLEN];
char logoutScript[MAXPATHLEN];
// Load the interface if it isn't already loaded.
void loadnib(void)
{
static loaded=0;
if (loaded==0)
{
NXApp = [Application new];
[NXApp loadNibSection:"Launch.nib" owner:NXApp];
}
}
// Execute the script by overlaying our own image.
void doLaunch(void)
{
execl(loginScript, ".Launch", 0);
// If we ever get to here, then something went wrong with the execution.
loadnib();
NXRunAlertPanel(APPNAME, "Cannot execute script %s",
"OK", NULL, NULL, loginScript);
}
void main(int argc, char *argv[])
{
char const *def;
static NXDefaultsVector Defaults = {
{"NXAutoLaunch", "NO"},
{"OnAutoLaunch", "Execute"},
{"OnLogout", "Execute"},
{NULL}
};
// Register our defaults.
NXRegisterDefaults(APPNAME, Defaults);
// Form the pathname of the scripts to be executed.
sprintf(loginScript, "%s/.Launch", getenv("HOME"));
sprintf(logoutScript, "%s/.Logout", getenv("HOME"));
// Check the defaults to see if the app was auto-launched.
def = NXGetDefaultValue(APPNAME, "NXAutoLaunch");
if (strcmp(def, "YES")==0)
{
def = NXGetDefaultValue(APPNAME, "OnAutoLaunch");
if (strcmp(def, "ExecuteAndQuit")==0)
doLaunch();
loadnib();
if (strcmp(def, "Ask")==0)
{
int reply;
loadnib();
reply = NXRunAlertPanel(APPNAME, "Execute Launch script?",
"OK", "NO", NULL);
if (reply == NX_ALERTDEFAULT)
[[NXApp delegate] executeLogin:NXApp];
}
if (strcmp(def, "Execute")==0)
{
[[NXApp delegate] executeLogin:NXApp];
}
}
else
loadnib();
// If not autolaunched or if execution fails, run the application as normal
[NXApp run];
[NXApp free];
exit(0);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.