summaryrefslogtreecommitdiff
path: root/src/util/ParseFile.c
diff options
context:
space:
mode:
authortradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac>2002-05-13 12:46:21 +0000
committertradke <tradke@17b73243-c579-4c4c-a9d2-2d5706c11dac>2002-05-13 12:46:21 +0000
commita01749c506005c305250641ed709262bbfd254c4 (patch)
tree44b025a7f484c047a457b1b58942733a90974d66 /src/util/ParseFile.c
parent6bc828251d22291617242bce7f3aafa3c88117c2 (diff)
Fixed parsing of undocumented $PARFILE variable.
This closes PR Cactus/1041. git-svn-id: http://svn.cactuscode.org/flesh/trunk@2809 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/util/ParseFile.c')
-rw-r--r--src/util/ParseFile.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/util/ParseFile.c b/src/util/ParseFile.c
index b1771453..79c92267 100644
--- a/src/util/ParseFile.c
+++ b/src/util/ParseFile.c
@@ -139,7 +139,7 @@ int ParseFile(FILE *ifp,
num_errors = 0;
/* avoid compiler warning about unused parameter */
- ConfigData = ConfigData;
+ (void) (ConfigData + 0);
/* allocate parse buffers */
tokens = (char *) malloc (4 * BUF_SZ);
@@ -180,7 +180,7 @@ int ParseFile(FILE *ifp,
if(intoken)
{
fprintf(stderr, "Parse error at line %d. No value supplied.\n", lineno);
- num_errors++;
+ num_errors++;
intoken = 0;
}
@@ -289,15 +289,20 @@ int ParseFile(FILE *ifp,
{
/* We got a define */
/* FIXME: Assume it is a parameter file for now */
- char filename[500];
- char *dir;
- char *file;
- int lpar;
+ char path[500];
+ char *parfile;
- CCTK_ParameterFilename(500,filename);
- Util_SplitFilename(&dir,&file,filename);
-
- lpar=((strlen(file)-3)*sizeof(char));
+ CCTK_ParameterFilename(500,path);
+ parfile = strrchr (path, '/');
+ if (parfile == NULL)
+ {
+ parfile = path;
+ }
+ /* skip the parameter file extension */
+ if (strcmp (parfile + strlen (parfile) - 4, ".par") == 0)
+ {
+ parfile[strlen (parfile) - 4] = 0;
+ }
/* ignore everything else on the line */
while (!(c==' ' || c=='\t' || c == '\n' || c == EOF))
@@ -307,11 +312,7 @@ int ParseFile(FILE *ifp,
printf("%c",c);
#endif
}
- strncpy(value,file,lpar);
- free(dir);
- free(file);
- value[strlen(value)-1] = '\0';
- set_function(tokens,value,lineno);
+ set_function(tokens,parfile,lineno);
}
else
{
@@ -373,7 +374,7 @@ int ParseFile(FILE *ifp,
{
value[pp++] = c;
CheckBuf(pp,lineno);
- }
+ }
if (c == ',') ncommas ++;
c = fgetc(ifp);
#ifdef DEBUG