diff --git a/src/config.c b/src/config.c
index bc498c63b92ba5ea58a93404095ccce80805b520..2bf7f731dfac80c223640c4cbb8faa794be4ba6d 100644 (file)
--- a/src/config.c
+++ b/src/config.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-//#include <process.h>
-//#include <dos.h>
#include "config.h"
#include "vga.h"
#include "error.h"
#include "sound.h"
-#include "keyb.h"
#include "files.h"
-#include "memory.h"
#include "view.h"
#include "player.h"
+#include "my.h"
#include <SDL_keyboard.h>
{NULL,"pl2_prev", &pl2.kwl,KEY,0},
{NULL,"pl2_use", &pl2.kp,KEY,0},
{"config",NULL,cfg_file,STRING,0},
- {NULL,NULL,NONE,0}
+ {NULL,NULL,NULL,NONE,0}
};
char s[128];
char *p1,*p2;
- logo("CFG_load: загрузка конфигурации из %s\n",cfg_file);
- if((h=fopen(cfg_file,"rb"))==NULL) {
+ char pc[50];
+ char *e = getenv("HOME");
+ strncpy(pc, e, 30);
+ strcpy(&pc[strlen(pc)], "/default.cfg");
+ if (!fexists(pc)) {
+ strcpy(pc, "default.cfg");
+ if (!fexists(pc)) {
+ strcpy(pc, "/usr/share/doom2d-rembo/default.cfg");
+ if (!fexists(pc)) {
+ logo("default.cfg not found\n");
+ return;
+ }
+ }
+ }
+
+ logo("CFG_load: загрузка конфигурации из %s\n",pc);
+ if((h=fopen(pc,"rb"))==NULL) {
perror("Cannot open file");return;
}
while(!feof(h)) {
F_readstr(h,s,127);
- if(*s==';' || s[1]==';') continue; // comment
- if(!(p1=strtok(s,"\r\n\t=;"))) continue;//if(!(p1=strtok(s,"\r\n\t =;"))) continue;
- if(!(p2=strtok(NULL,"\r\n\t=;"))) continue;//if(!(p2=strtok(NULL,"\r\n\t =;"))) continue;
- for(j=0;cfg[j].t;++j) if(cfg[j].cfg && !cfg[j].o)
- if(strcasecmp(p1,cfg[j].cfg)==0) {
- switch(cfg[j].t) {
- case BYTE:
- n=strtol(p2,NULL,0);
- *((byte *)cfg[j].p)=(byte)n;
- break;
- case WORD:
- n=strtol(p2,NULL,0);
- *((word *)cfg[j].p)=(word)n;
- break;
- case DWORD:
- n=strtol(p2,NULL,0);
- *((dword *)cfg[j].p)=n;
- break;
- case STRING:
- strcpy((char *)cfg[j].p,p2);
- break;
- case SW_ON:
- case SW_OFF:
- if(strcasecmp(p2,"ON")==0) {*((byte *)cfg[j].p)=ON;break;}
- if(strcasecmp(p2,"OFF")==0) {*((byte *)cfg[j].p)=OFF;break;}
- *((byte *)cfg[j].p)=strtol(p2,NULL,0);
- break;
- case FILES:
- break;
-
- case KEY:
- {
- int k = get_key(p2);
- if (k) {
- *((int *)cfg[j].p)=k;
- }
- else {
+ if(*s==';' || s[1]==';')
+ continue; // comment
+ if(!(p1=strtok(s,"\r\n\t=;")))
+ continue; //if(!(p1=strtok(s,"\r\n\t =;"))) continue;
+ if(!(p2=strtok(NULL,"\r\n\t=;")))
+ continue;//if(!(p2=strtok(NULL,"\r\n\t =;"))) continue;
+ for(j=0;cfg[j].t;++j) {
+ if(cfg[j].cfg && !cfg[j].o) {
+ if(strcasecmp(p1,cfg[j].cfg)==0) {
+ switch(cfg[j].t) {
+ case BYTE:
+ n=strtol(p2,NULL,0);
+ *((byte *)cfg[j].p)=(byte)n;
+ break;
+ case WORD:
+ n=strtol(p2,NULL,0);
+ *((word *)cfg[j].p)=(word)n;
+ break;
+ case DWORD:
+ n=strtol(p2,NULL,0);
+ *((dword *)cfg[j].p)=n;
+ break;
+ case STRING:
+ strcpy((char *)cfg[j].p,p2);
+ break;
+ case SW_ON:
+ case SW_OFF:
+ if(strcasecmp(p2,"ON")==0) {
+ *((byte *)cfg[j].p)=ON;
+ break;
+ }
+ if(strcasecmp(p2,"OFF")==0) {
+ *((byte *)cfg[j].p)=OFF;
+ break;
+ }
+ *((byte *)cfg[j].p)=strtol(p2,NULL,0);
+ break;
+ case FILES:
+ break;
+ case KEY:
+ {
+ int k = get_key(p2);
+ if (k) {
+ *((int *)cfg[j].p)=k;
+ } else {
logo("Unknown key in cfg: %s=%s\n",p1,p2);
logo("List available key names:\n");
int i;
logo("%s\n", s);
}
}
- }
- }
- break;
-
- default:
- ERR_failinit("!!! Неизвестный тип в cfg !!!");
- }
- break;
- }
- }
+ }
+ }
+ break;
+ default:
+ ERR_failinit("!!! Неизвестный тип в cfg !!!");
+ } // switch
+ break;
+ } // if
+ } // if
+ } // for
+ } // while
fclose(h);
}