14 enum{NONE,BYTE,WORD,DWORD,STRING,SW_ON,SW_OFF,FILES,MAINWAD};
18 void F_mainwad(char *);
27 {"file",NULL,NULL,FILES,0},
28 {"mainwad","main_wad",NULL,MAINWAD,0},
29 {"waitrr","wait_retrace",&vp_waitrr,SW_ON,0},
30 {"nowaitrr",NULL,&vp_waitrr,SW_OFF,0},
31 {"gamma","gamma",&gamma,WORD,0},
32 {"config",NULL,cfg_file,STRING,0},
36 char cfg_file[128]="EDITOR.CFG";
45 logo("CFG_args: проверка командной строки\n");
46 for(s=strtok(getcmd(buf)," \r\n\t");s;s=strtok(NULL," \r\n\t")) {
48 if(*s=='/' || *s=='-') ++s;
49 for(j=0;cfg[j].t;++j) if(cfg[j].par) if(stricmp(s,cfg[j].par)==0) {
52 n=strtol(s=strtok(NULL," \r\n\t"),NULL,0);
53 *((byte *)cfg[j].p)=(byte)n;
56 n=strtol(s=strtok(NULL," \r\n\t"),NULL,0);
57 *((word *)cfg[j].p)=(word)n;
60 n=strtol(s=strtok(NULL," \r\n\t"),NULL,0);
61 *((dword *)cfg[j].p)=n;
64 strcpy((char *)cfg[j].p,s=strtok(NULL," \r\n\t"));
67 *((byte *)cfg[j].p)=ON;
68 if(cfg[j+1].t==SW_OFF && cfg[j+1].p==cfg[j].p) cfg[j+1].o=1;
69 if(j>0) if(cfg[j-1].t==SW_OFF && cfg[j-1].p==cfg[j].p) cfg[j-1].o=1;
72 *((byte *)cfg[j].p)=OFF;
73 if(cfg[j+1].t==SW_ON && cfg[j+1].p==cfg[j].p) cfg[j+1].o=1;
74 if(j>0) if(cfg[j-1].t==SW_ON && cfg[j-1].p==cfg[j].p) cfg[j-1].o=1;
77 for(s=strtok(NULL," \r\n\t");s;s=strtok(NULL," \r\n\t")) {
78 if(*s=='/' || *s=='-') goto next;
82 F_mainwad(s=strtok(NULL," \r\n\t"));
85 ERR_failinit("Неизвестный тип в cfg!");
98 logo("CFG_load: загрузка конфигурации из %s\n",cfg_file);
99 if((h=open(cfg_file,O_RDONLY|O_BINARY))==-1) {
100 perror("Cannot open file");return;
104 if(*s==';' || s[1]==';') continue; // comment
105 if(!(p1=strtok(s,"\r\n\t =;"))) continue;
106 if(!(p2=strtok(NULL,"\r\n\t =;"))) continue;
107 for(j=0;cfg[j].t;++j) if(cfg[j].cfg && !cfg[j].o)
108 if(stricmp(p1,cfg[j].cfg)==0) {
112 *((byte *)cfg[j].p)=(byte)n;
116 *((word *)cfg[j].p)=(word)n;
120 *((dword *)cfg[j].p)=n;
123 strcpy((char *)cfg[j].p,p2);
127 if(stricmp(p2,"ON")==0) {*((byte *)cfg[j].p)=ON;break;}
128 if(stricmp(p2,"OFF")==0) {*((byte *)cfg[j].p)=OFF;break;}
129 *((byte *)cfg[j].p)=strtol(p2,NULL,0);
137 ERR_failinit("Неизвестный тип в cfg!");