/* Listing #15 */ #include #include #include #include #define ARG_FILE 0 #define ARG_QUICK 1 #define ARG_BUFFER 2 #define TEMPLATE "FILE/K,QUICK/S,BUFFER=BUF/K/N" LONG buf=10; LONG args[]={(LONG)"plik-domyôlny", FALSE, (LONG)&buf}; int main(int argc, char *argv[]) { struct RDArgs *rda=NULL; struct DiskObject *dob=NULL; BPTR out; if (argc) { if (!(rda=ReadArgs(TEMPLATE, args, NULL))) { PrintFault(IoErr(), argv[0]); return 10; } out=Output(); } else { /* Zakîadamy, ûe kompilator sam otworzy "icon.library". */ struct WBStartup *wbs=(struct WBStartup*)argv; struct WBArg *wba=&wbs->sm_ArgList[wbs->sm_NumArgs-1]; BPTR oldcd; if (!(*wba->wa_Name)) return 10; oldcd=CurrentDir(wba->wa_Lock); if (dob=GetDiskObjectNew(wba->wa_Name)) { char *str; LONG num; if (str=FindToolType(dob->do_ToolTypes, "FILE")) args[ARG_FILE]=(LONG)str; if (str=FindToolType(dob->do_ToolTypes, "QUICK")) { if (MatchToolValue(str,"YES")) args[ARG_QUICK]=TRUE; if (MatchToolValue(str,"NO")) args[ARG_QUICK]=FALSE; } if ((str=FindToolType(dob->do_ToolTypes, "BUFFER")) && StrToLong(str, &num)>0) *(LONG*)args[ARG_BUFFER]=num; } CurrentDir(oldcd); out=Open("CON:////Okienko/AUTO/CLOSE/WAIT", MODE_NEWFILE); } if (out) { FPrintf(out,"FILE\t: %s\n", args[ARG_FILE]); FPrintf(out,"QUICK\t: %s\n", (args[ARG_QUICK] ? "YES" : "NO")); FPrintf(out,"BUFFER\t: %ld\n", *(LONG*)args[ARG_BUFFER]); } if (rda) FreeArgs(rda); if (dob) FreeDiskObject(dob); return 0; } #ifdef _DCC int wbmain(struct WBStartup* wbs) { return main(0, (char**)wbs); } #endif