#include #include #include #include /******************************************************************************\ * 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; } }