70 int interfile_read(
char headerName[256],
char searchWord[256],
char returnValue[256],
char errorMessage[300]) {
75 char keyword[256], value[256];
77 FILE *interfileHeader;
80 for (i=0;i<256;i++) returnValue[i] =
'\0';
81 for (i=0;i<300;i++) errorMessage[i] =
'\0';
84 if ((interfileHeader = fopen(headerName,
"r"))==NULL) {
85 strcpy(errorMessage,headerName);
86 strcat(errorMessage,
" could not be opened for reading");
91 n=fread(&c,1,1,interfileHeader);
if(n<1) {
92 strcpy(errorMessage,
"wrong file header format?! No '!INTERFILE' at start of ");
93 strcat(errorMessage,headerName);
94 fclose(interfileHeader);
99 while (memcmp(c,
"\n",1) && memcmp(c,
"\r",1)) {
101 n=fread(&c,1,1,interfileHeader);
if(n<1) {
102 strcpy(errorMessage,
"wrong file header format?! No '!INTERFILE' at start of ");
103 strcat(errorMessage,headerName);
104 fclose(interfileHeader);
107 memcpy(&line[i],c,1);
109 if (memcmp(line,
"!INTERFILE",10)) {
110 strcpy(errorMessage,
"wrong file header format?! No '!INTERFILE' at start of ");
111 strcat(errorMessage,headerName);
112 fclose(interfileHeader);
117 while (fread(&c,1,1,interfileHeader) == 1) {
118 for (i=0;i<516;i++) line[i] =
'\0';
119 for (i=0;i<256;i++) keyword[i] =
'\0';
120 for (i=0;i<256;i++) value[i] =
'\0';
124 while (memcmp(c,
"\r",1) && memcmp(c,
"\n",1) && i<516) {
125 memcpy(&line[i],c,1);
126 n=fread(&c,1,1,interfileHeader);
if(n<1) {
127 strcpy(errorMessage,
"wrong file header format: ");
128 strcat(errorMessage,headerName);
129 fclose(interfileHeader);
135 if (strncmp(&line[0],
";",1)) {
138 for (pos=1; pos<516; pos++)
139 if (line[pos] ==
'=' && line[pos-1] ==
':')
break;
141 for (i=0;i<pos-2 && i<256;i++) keyword[i] = line[i];
142 for (i=pos+2;i<256+pos+2 && i<512;i++) {
143 if (!memcmp(&line[i],
"\0",1) || !memcmp(&line[i],
"\r",1) || !memcmp(&line[i],
"\n",1))
145 value[i-pos-2] = line[i];
147 if (!memcmp(keyword,
"!END OF INTERFILE",17))
break;
149 else if (!strcmp(keyword,searchWord)) {
150 strcpy(returnValue,value);
155 fclose(interfileHeader);
157 strcpy(errorMessage,
"keyword '");
158 strcat(errorMessage,searchWord);
159 strcat(errorMessage,
"' not found in header");
163 strcpy(errorMessage,
"keyword '");
164 strcat(errorMessage,searchWord);
165 strcat(errorMessage,
"' appears more than once in header");
int interfile_read(char headerName[256], char searchWord[256], char returnValue[256], char errorMessage[300])