44 char returnValue[256],
char errorMessage[300]
50 char keyword[256], value[256];
52 FILE *interfileHeader;
55 for (i=0;i<256;i++) returnValue[i] =
'\0';
56 for (i=0;i<300;i++) errorMessage[i] =
'\0';
59 if ((interfileHeader = fopen(headerName,
"r"))==NULL) {
60 strcpy(errorMessage,headerName);
61 strcat(errorMessage,
" could not be opened for reading");
66 n=fread(&c,1,1,interfileHeader);
if(n<1) {
67 strcpy(errorMessage,
"wrong file header format?! No '!INTERFILE' at start of ");
68 strcat(errorMessage,headerName);
69 fclose(interfileHeader);
74 while (memcmp(c,
"\n",1) && memcmp(c,
"\r",1)) {
76 n=fread(&c,1,1,interfileHeader);
if(n<1) {
77 strcpy(errorMessage,
"wrong file header format?! No '!INTERFILE' at start of ");
78 strcat(errorMessage,headerName);
79 fclose(interfileHeader);
84 if (memcmp(line,
"!INTERFILE",10)) {
85 strcpy(errorMessage,
"wrong file header format?! No '!INTERFILE' at start of ");
86 strcat(errorMessage,headerName);
87 fclose(interfileHeader);
92 while (fread(&c,1,1,interfileHeader) == 1) {
93 for (i=0;i<512;i++) line[i] =
'\0';
94 for (i=0;i<256;i++) keyword[i] =
'\0';
95 for (i=0;i<256;i++) value[i] =
'\0';
99 while (memcmp(c,
"\r",1) && memcmp(c,
"\n",1) && i<512) {
100 memcpy(&line[i],c,1);
101 n=fread(&c,1,1,interfileHeader);
if(n<1) {
102 strcpy(errorMessage,
"wrong file header format: ");
103 strcat(errorMessage,headerName);
104 fclose(interfileHeader);
110 if (strncmp(&line[0],
";",1)) {
113 for (pos=1; pos<512; pos++)
114 if (line[pos] ==
'=' && line[pos-1] ==
':')
break;
116 for (i=0;i<pos-2 && i<256;i++) keyword[i] = line[i];
117 for (i=pos+2;i<256+pos+2 && i<512;i++) {
118 if (!memcmp(&line[i],
"\0",1) || !memcmp(&line[i],
"\r",1) || !memcmp(&line[i],
"\n",1))
120 value[i-pos-2] = line[i];
122 if (!memcmp(keyword,
"!END OF INTERFILE",17))
break;
124 else if (!strcmp(keyword,searchWord)) {
125 strcpy(returnValue,value);
130 fclose(interfileHeader);
132 strcpy(errorMessage,
"keyword '");
133 strcat(errorMessage,searchWord);
134 strcat(errorMessage,
"' not found in header");
138 strcpy(errorMessage,
"keyword '");
139 strcat(errorMessage,searchWord);
140 strcat(errorMessage,
"' appears more than once in header");
206 char *cptr, basefile[FILENAME_MAX], temp[FILENAME_MAX], temp2[FILENAME_MAX];
208 if(fname==NULL || strlen(fname)==0)
return(0);
209 if(verbose>0) printf(
"\n%s(%s, *str, *str, %d)\n", __func__, fname, verbose);
212 strcpy(basefile, fname);
213 cptr=strrchr(basefile,
'.');
215 if(strcasecmp(cptr,
".HDR")==0 || strcasecmp(cptr,
".I")==0 )
218 cptr=strrchr(basefile,
'.');
220 if(strcasecmp(cptr,
".I")==0)
223 if(verbose>1) printf(
"\n basefile := %s\n", basefile);
226 strcpy(temp, basefile); strcat(temp,
".i.hdr");
227 if(access(temp, 0) == -1) {
228 strcpy(temp, basefile); strcat(temp,
".hdr");
229 if(access(temp, 0) == -1) {
230 if(verbose>0) printf(
"\n hdr file not found or accessible.\n");
237 printf(
"\n %s was not identified as Interfile header file.\n", temp);
241 if(hdrfile!=NULL) strcpy(hdrfile, temp);
244 cptr=strrchr(temp,
'/');
if(cptr==NULL) cptr=strrchr(temp,
'\\');
246 cptr++; *cptr=(char)0; strcat(temp, temp2); strcpy(temp2, temp);}
247 if(strlen(temp2)<1 || access(temp2, 0) == -1) {
248 if(verbose>0) printf(
"\n %s not found or accessible.\n", temp2);
252 if(imgfile!=NULL) strcpy(imgfile, temp2);