This is NILogin.m in view mode; [Download] [Up]
/* File: NILogin.m - (Interactive) Unix shell version of NILoginPanel
*
* By: Christopher Lane (lane@sumex-aim.stanford.edu)
*
* Date: 10 November 1992
*
* Modified:
* [17-Feb-96 TRH] Fix for Application option munching (like -NXHost).
* [15-Mar-96 TRH] add -V -H -i options; add EditMenu keyEquiv support.
*
* Copyright: 1991 & 1992 by The Leland Stanford Junior University.
* This program may be distributed without restriction for non-commercial use.
*
* Warning: This code doesn't work, NILoginPanel doesn't perform as advertised.
*/
#define USES_APPICON
#define USES_KEYEQUIV
#import "ShellPanel.h"
#import <nikit/NIDomain.h>
#import <nikit/NILoginPanel.h>
#define DOMAIN "."
#define INSTRUCTION "This change to the NetInfo database requires privilege, please log in as an authorized user."
#define USER "root"
#define USAGE "\
usage: %s [-d domain] [-u user] [-p prompt] [-b] [-i icon] [-V] [-H]\n"
#define HELP "\
options:\n\
-d domain set netinfo domain (default \""DOMAIN"\")\n\
-u user set user (default \""USER"\")\n\
-p prompt set prompt\n\
-b allow user to be edited\n\
-i iconfile pathname of application icon to use (default none)\n\
-V print version string and exit\n\
-H this help\n\
"
void main(int argc, char *argv[])
{
const char *iconFile = NULL;
ni_status nstatus;
id panel, domain;
BOOL enableUser = YES;
ni_name domainName = DOMAIN;
int context, option, status = EXIT_SUCCESS;
const char *userName = USER, *instruction = INSTRUCTION;
context = [(NXApp = [Application new]) activateSelf:YES];
argc = NXArgc, argv = NXArgv; // Application may munch options.
while ((option = getopt(argc, argv, "d:u:p:bi:VH")) != EOF)
switch (option) {
case 'd': domainName = (ni_name) optarg; break;
case 'u': userName = optarg; break;
case 'p': instruction = optarg; break;
case 'b': enableUser = NO; break;
case 'i': iconFile = optarg; break;
case 'V': status = EXIT_VERSION; break;
case 'H': status = EXIT_HELP; break;
default : status = EXIT_USAGE;
}
if (optind < argc) status = EXIT_USAGE;
HandleUsageHelpVersion(status, USAGE, HELP);
SetAppIconToFile(iconFile);
ProvideKeyEquivalents();
panel = [NILoginPanel new];
domain = [[NIDomain alloc] init];
if ((nstatus = [domain setConnection:domainName]) != NI_OK) {
(void) fprintf(stderr, "%s\n", ni_error(nstatus));
status = EXIT_FAILURE;
}
// else if ([panel runModal:NXApp inDomain:[domain getDomainHandle]])
else if ([panel runModal:NXApp inDomain:[domain getDomainHandle] withUser:userName withInstruction:instruction allowChange:enableUser])
status = ([panel isValidLogin:NXApp]) ? EXIT_SUCCESS : EXIT_FAILURE;
else status = EXIT_FAILURE;
[panel free];
[[domain disconnectFromCurrent] free];
if (context) (void) [NXApp activate:context];
[NXApp free];
exit(status);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.