forked from github/server
- Für externe Dateien kann jetzt ein Suchpfad festgelegt werden:
setenv ECHECKPATH "/usr/local/lib/echeck:." o. echeck -P/usr/local/lib/echeck:. Pfadhandling generell etwas weniger 'hackig'.
This commit is contained in:
parent
6b7999ea9b
commit
db13b7a220
|
@ -1,6 +1,6 @@
|
||||||
/* vi: set ts=2 ai sw=2:
|
/* vi: set ts=2 ai sw=2:
|
||||||
*
|
*
|
||||||
* $Id: echeck.c,v 1.2 2001/01/30 15:22:49 corwin Exp $
|
* $Id: echeck.c,v 1.3 2001/02/02 22:00:15 corwin Exp $
|
||||||
*
|
*
|
||||||
* Eressea PB(E)M host Copyright (C) 1997-2000
|
* Eressea PB(E)M host Copyright (C) 1997-2000
|
||||||
* Enno Rehling (rehling@usa.net)
|
* Enno Rehling (rehling@usa.net)
|
||||||
|
@ -25,7 +25,18 @@
|
||||||
|
|
||||||
#define MAINVERSION "3"
|
#define MAINVERSION "3"
|
||||||
#define MINVERSION "10"
|
#define MINVERSION "10"
|
||||||
#define PATCHLEVEL "3"
|
#define PATCHLEVEL "4"
|
||||||
|
|
||||||
|
#ifndef DEFAULT_PATH
|
||||||
|
#if defined(unix)
|
||||||
|
#define DEFAULT_PATH "/usr/local/lib/echeck:."
|
||||||
|
#define PATH_DELIM ":"
|
||||||
|
#else
|
||||||
|
#define DEFAULT_PATH NULL
|
||||||
|
#define PATH_DELIM ":"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define VERSION MAINVERSION"."MINVERSION"."PATCHLEVEL
|
#define VERSION MAINVERSION"."MINVERSION"."PATCHLEVEL
|
||||||
|
|
||||||
|
@ -190,12 +201,12 @@ char order_buf[BUFSIZE], /* current order line */
|
||||||
indent, next_indent, /* indent index */
|
indent, next_indent, /* indent index */
|
||||||
does_default=0, /* Ist DEFAULT aktiv? */
|
does_default=0, /* Ist DEFAULT aktiv? */
|
||||||
befehle_ende, /* EOF der Befehlsdatei */
|
befehle_ende, /* EOF der Befehlsdatei */
|
||||||
*path=NULL,
|
|
||||||
*filename;
|
*filename;
|
||||||
int rec_cost=RECRUIT_COST,
|
int rec_cost=RECRUIT_COST,
|
||||||
this_command,
|
this_command,
|
||||||
this_unit, /* wird von getaunit gesetzt */
|
this_unit, /* wird von getaunit gesetzt */
|
||||||
Rx, Ry; /* Koordinaten der aktuellen Region */
|
Rx, Ry; /* Koordinaten der aktuellen Region */
|
||||||
|
const char *path;
|
||||||
FILE *F;
|
FILE *F;
|
||||||
|
|
||||||
/* ------------------------------------------------------------- */
|
/* ------------------------------------------------------------- */
|
||||||
|
@ -917,6 +928,29 @@ ItemName(int i, int plural) {
|
||||||
return item->name->txt;
|
return item->name->txt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FILE *
|
||||||
|
path_fopen(const char *path, const char *file, const char *mode)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
char *pathw = strdup(path);
|
||||||
|
char *token;
|
||||||
|
char buf[4096];
|
||||||
|
|
||||||
|
token = strtok(pathw, PATH_DELIM);
|
||||||
|
while(token) {
|
||||||
|
sprintf(buf, "%s/%s", token, file);
|
||||||
|
f = fopen(buf, mode);
|
||||||
|
if(f) {
|
||||||
|
free(pathw);
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
token = strtok(NULL, PATH_DELIM);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(pathw);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
readspells(void) {
|
readspells(void) {
|
||||||
|
@ -924,21 +958,13 @@ readspells(void) {
|
||||||
t_spell *it, *in;
|
t_spell *it, *in;
|
||||||
char *file;
|
char *file;
|
||||||
|
|
||||||
if (path) {
|
F = path_fopen(path, "zauber.txt", "r");
|
||||||
char *x;
|
|
||||||
file=cmalloc(strlen(path)+12);
|
|
||||||
x=(char *)(path+strlen(path)-1);
|
|
||||||
if (*x=='/' || *x=='\\' || *x==':') /* endet path auf /, \ oder : ? */
|
|
||||||
sprintf(file,"%szauber.txt",path);
|
|
||||||
else
|
|
||||||
sprintf(file,"%s/zauber.txt",path);
|
|
||||||
} else
|
|
||||||
file=strdup("zauber.txt");
|
|
||||||
F=fopen(file, "r");
|
|
||||||
if(!F) {
|
if(!F) {
|
||||||
fprintf(ERR, "Kann Datei '%s' nicht lesen.\n", file);
|
fprintf(ERR, "Kann Datei 'zauber.txt' nicht lesen.\n", file);
|
||||||
|
fprintf(ERR, "Suchpfad ist '%s'\n", path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
it=in=spells;
|
it=in=spells;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
do {
|
do {
|
||||||
|
@ -982,21 +1008,13 @@ readskills(void) {
|
||||||
t_skills *it, *in;
|
t_skills *it, *in;
|
||||||
char *file;
|
char *file;
|
||||||
|
|
||||||
if (path) {
|
F = path_fopen(path, "talente.txt", "r");
|
||||||
char *x;
|
|
||||||
file=cmalloc(strlen(path)+12);
|
|
||||||
x=(char *)(path+strlen(path)-1);
|
|
||||||
if (*x=='/' || *x=='\\' || *x==':') /* endet path auf /, \ oder : ? */
|
|
||||||
sprintf(file,"%stalente.txt",path);
|
|
||||||
else
|
|
||||||
sprintf(file,"%s/talente.txt",path);
|
|
||||||
} else
|
|
||||||
file=strdup("talente.txt");
|
|
||||||
F=fopen(file, "r");
|
|
||||||
if(!F) {
|
if(!F) {
|
||||||
fprintf(ERR, "Kann Datei '%s' nicht lesen.\n", file);
|
fprintf(ERR, "Kann Datei 'talente.txt' nicht lesen.\n", file);
|
||||||
|
fprintf(ERR, "Suchpfad ist '%s'\n", path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
it=in=skilldata;
|
it=in=skilldata;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
do {
|
do {
|
||||||
|
@ -1035,22 +1053,13 @@ readitems(void) {
|
||||||
t_names *n, *nn;
|
t_names *n, *nn;
|
||||||
char *file;
|
char *file;
|
||||||
|
|
||||||
if (path) {
|
F = path_fopen(path, "items.txt", "r");
|
||||||
char *x;
|
|
||||||
file=cmalloc(strlen(path)+12);
|
|
||||||
x=(char *)(path+strlen(path)-1);
|
|
||||||
if (*x=='/' || *x=='\\' || *x==':') /* endet path auf /, \ oder : ? */
|
|
||||||
sprintf(file,"%sitems.txt",path);
|
|
||||||
else
|
|
||||||
sprintf(file,"%s/items.txt",path);
|
|
||||||
} else
|
|
||||||
file=strdup("items.txt");
|
|
||||||
|
|
||||||
F=fopen(file, "r");
|
|
||||||
if(!F) {
|
if(!F) {
|
||||||
fprintf(ERR,"Kann Datei '%s' nicht lesen.\n", file);
|
fprintf(ERR, "Kann Datei 'items.txt' nicht lesen.\n", file);
|
||||||
exit(100);
|
fprintf(ERR, "Suchpfad ist '%s'\n", path);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
it=in=itemdata;
|
it=in=itemdata;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
do {
|
do {
|
||||||
|
@ -3947,7 +3956,7 @@ readaunit(void) {
|
||||||
if (befehle_ende)
|
if (befehle_ende)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Erst wenn wir sicher sind, daß kein Befehl eingegeben wurde, checken
|
/* Erst wenn wir sicher sind, dass kein Befehl eingegeben wurde, checken
|
||||||
* wir, ob nun eine neue Einheit oder ein neuer Spieler drankommt */
|
* wir, ob nun eine neue Einheit oder ein neuer Spieler drankommt */
|
||||||
|
|
||||||
if (igetkeyword(order_buf)==-1) {
|
if (igetkeyword(order_buf)==-1) {
|
||||||
|
@ -4553,6 +4562,12 @@ main(int argc, char *argv[]) {
|
||||||
added 15.6.00 chartus*/
|
added 15.6.00 chartus*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Path-Handling */
|
||||||
|
path = getenv("ECHECKPATH");
|
||||||
|
if(path == NULL) {
|
||||||
|
path = DEFAULT_PATH;
|
||||||
|
}
|
||||||
|
|
||||||
ERR=stdout;
|
ERR=stdout;
|
||||||
|
|
||||||
if (argc <= 1) {
|
if (argc <= 1) {
|
||||||
|
@ -4605,7 +4620,7 @@ main(int argc, char *argv[]) {
|
||||||
|
|
||||||
if (unit_count==0) {
|
if (unit_count==0) {
|
||||||
fputs("\nBitte überprüfe, ob Du die Befehle korrekt eingesandt hast.\n"
|
fputs("\nBitte überprüfe, ob Du die Befehle korrekt eingesandt hast.\n"
|
||||||
"Beachte dabei besonders, daß die Befehle nicht als HTML, Word-Dokument\n"
|
"Beachte dabei besonders, dass die Befehle nicht als HTML, Word-Dokument\n"
|
||||||
"oder als Attachment (Anlage) eingeschickt werden dürfen.\n", ERR);
|
"oder als Attachment (Anlage) eingeschickt werden dürfen.\n", ERR);
|
||||||
return -42;
|
return -42;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue