This is Save.m in view mode; [Download] [Up]
/* File: Save.m - (Interactive) Unix shell version of SavePanel
*
* By: Christopher Lane (lane@sumex-aim.stanford.edu)
*
* Date: 10 November 1992
*
* Modified:
* [17-Feb-96 TRH] Fix for Application option munching (like -NXHost).
* [12-Mar-96 TRH] add -V -H -A options; add EditMenu keyEquiv support.
*
* Copyright: 1990, 1991 & 1992 by The Leland Stanford Junior University.
*/
#define USES_APPICON
#define USES_KEYEQUIV
#import "ShellPanel.h"
#define USAGE "\
usage: %s [-f file] [-d directory] [-e type] [-p prompt] [-t title] [-i icon] [-u] [-V] [-H]\n"
#define HELP "\
options:\n\
-f file initial filename to display in the name field\n\
-d directory initial directory to display in the browser\n\
-e type type (extension) of files to accept; multiple allowed\n\
-p prompt set prompt (default \"Name:\")\n\
-t title set title (default \"%s\")\n\
-i iconfile pathname of application icon to use (default none)\n\
-u travel inside file packages (e.g. app wrappers)\n\
-V print version string and exit\n\
-H this help\n\
"
void main(int argc, char *argv[])
{
const char *prompt = NULL;
const char *title = NULL;
const char *iconFile = NULL;
const char *type = NULL;
BOOL transparent = NO;
const char *name = NULL, *path = NULL;
int option, status = EXIT_SUCCESS;
NXApp = [Application new];
argc = NXArgc, argv = NXArgv; // Application may munch options.
while ((option = getopt(argc, argv, "f:d:e:p:t:i:uVH")) != EOF)
switch (option) {
case 'f': name = optarg; break;
case 'd': path = optarg; break;
case 'e': type = optarg; break;
case 'p': prompt = optarg; break;
case 't': title = optarg; break;
case 'i': iconFile = optarg; break;
case 'u': transparent = YES; 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();
{
SavePanel *panel = [SavePanel new];
int context = [NXApp activateSelf:YES];
if (type) [panel setRequiredFileType:type];
if (prompt) [panel setPrompt:prompt];
if (title) [panel setTitle:title];
[panel setTreatsFilePackagesAsDirectories:transparent];
if ([panel runModalForDirectory:path file:name]) (void) puts([panel filename]);
else status = EXIT_FAILURE;
if (context) (void) [NXApp activate:context];
[panel free];
}
[NXApp free];
exit(status);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.