home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
600-699
/
ff631.lha
/
KeyBang
/
Source
/
Startup.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-06
|
2KB
|
97 lines
#include <workbench/workbench.h>
#include <workbench/startup.h>
#include <workbench/icon.h>
#include <functions.h>
/******************************************************************************\
* Startup *
* ------- *
* by Mike Stark *
* GetOptions is a routine to parse arguments from the command line or *
* from the Tooltypes array if the program was called from the workbench. This *
* is designed to be compiled with Aztec C 3.6 which passes the Workbench *
* startup message as argv. The main routine should call GetOptions with *
* GetOptions(argc, argv);. *
\******************************************************************************/
extern int Depth;
extern BOOL OneShape;
extern struct Library *IconBase;
GetOptions(Count, Args)
int Count;
char **Args;
{
struct WBStartup *WBenchMsg;
struct DiskObject *DiskObject;
int Colors, Length, i;
BOOL Match;
char *TempString;
Colors = 16;
OneShape = FALSE;
if (Count)
{
for (i = 1; i < Count; i++)
{
Length = strlen(Args[i]);
if ((Args[i][0] == '-') && (Length > 1))
{
Match = FALSE;
if (!strncmp("oneshape", &Args[i][1], Length < 9 ? Length - 1 : 8))
{
Match = TRUE;
OneShape = TRUE;
}
if (!strncmp("colors", &Args[i][1], Length < 7 ? Length - 1 : 6))
{
if (Count == i + 1) CleanUp(TRUE);
Match = TRUE;
Colors = atoi(Args[++i]);
}
if (!Match) CleanUp(TRUE);
}
else
{
CleanUp(TRUE);
}
}
}
else
{
if (IconBase = OpenLibrary(ICONNAME, 0))
{
WBenchMsg = (struct WBenchMsg *)Args;
if (DiskObject = GetDiskObject(WBenchMsg->sm_ArgList->wa_Name))
{
if (TempString = FindToolType(DiskObject->do_ToolTypes, "COLORS"))
Colors = atoi(TempString);
if (FindToolType(DiskObject->do_ToolTypes, "ONESHAPE"))
OneShape = TRUE;
FreeDiskObject(DiskObject);
}
CloseLibrary(IconBase);
}
}
switch (Colors)
{
case 2:
Depth = 1;
break;
case 4:
Depth = 2;
break;
case 8:
Depth = 3;
break;
case 16:
Depth = 4;
break;
default:
CleanUp(Count);
break;
}
}