****************************************************************/
int
read_header( char *name, header *hdr)
/*
*/
{
char filename[MAX_STR], *filename1, *filename2, fname[MAX_STR], buf[MAX_STR];
int cmpr = 3, found = 0;
strcpy(filename, name);
filename1 = hdr->filename1;
filename2 = hdr->filename2;
*filename2 = 0;
/* Maybe, the file name is with .Z or .gz at the end */
getext(filename, fname);
if (!strcmp(fname, ".Z") || !strcmp(fname, ".gz")) {
if (!strcmp(fname, ".Z"))
cmpr = COMPRESS;
else
cmpr = GZIP;
stripext(filename, fname);
strcpy(filename, fname);
}
/* ----------- TRY ANALYZE ---------------*/
strcpy(fname, filename); /* ANALYZE filename */
if ((cmpr == 3) &&
read_analyze_header(fname, hdr, 0, &found) == OK) {
stripext(fname, filename2);
strcat(filename2, ".img");
goto ok_found;
}
strcpy(fname, filename); /* VAPET filename */
if ((cmpr == 3) &&
read_vapet_header(fname, hdr, 0, &found) == OK)
goto ok_found;
/* Stop now if the file was found
but did not contain a valid file format*/
strcpy(fname, filename); /* XPRIME filename */
if ((cmpr == 3) &&
read_xprime_header(fname, hdr, 0, &found) == OK)
goto ok_found;
/* Stop now if the file was found
but did not contain a valid file format*/
strcat(fname, ".hdr"); /* filename.hdr */
if (read_analyze_header(fname, hdr, 0, &found) == OK) {
strcpy(filename2, filename);
strcat(filename2, ".img");
goto ok_found;
}
stripext(filename, fname);
strcat(fname, ".hdr"); /* filename - ext + .hdr */
if (read_analyze_header(fname, hdr, 0, &found) == OK) {
strcpy(filename2, filename); /* Use specified file as the image file */
/* If the file specified ended in a '.' then strip it off
This is so that "file." is converts to "file.hdr" and "file.img"
*/
if (filename2[strlen(filename2)-1] == '.')
strcat(filename2, "img");
goto ok_found;
}
strcpy(fname, filename); /* ANALYZE filename.Z */
strcat(fname, ".Z");
if ((cmpr & COMPRESS) &&
read_analyze_header(fname, hdr, COMPRESS, &found) == OK) {
stripext(filename, filename2);
strcat(filename2, ".img");
goto ok_found;
}
strcpy(fname, filename); /* VAPET filename.Z */
strcat(fname, ".Z");
if ((cmpr & COMPRESS) &&
read_vapet_header(fname, hdr, COMPRESS, &found) == OK)
goto ok_found;
strcpy(fname, filename); /* XPRIME filename.Z */
strcat(fname, ".Z");
if ((cmpr & COMPRESS) &&
read_xprime_header(fname, hdr, COMPRESS, &found) == OK)
goto ok_found;
strcpy(fname, filename);
strcat(fname, ".gz"); /* ANALYZE filename.gz */
if ((cmpr & GZIP) &&
read_analyze_header(fname, hdr, GZIP, &found) == OK) {
stripext(filename, filename2);
strcat(filename2, ".img");
goto ok_found;
}
strcpy(fname, filename); /* VAPET filename.gz */
strcat(fname, ".gz");
if ((cmpr & GZIP) &&
read_vapet_header(fname, hdr, GZIP, &found) == OK)
goto ok_found;
strcpy(fname, filename); /* XPRIME filename.gz */
strcat(fname, ".gz");
if ((cmpr & GZIP) &&
read_xprime_header(fname, hdr, GZIP, &found) == OK)
goto ok_found;
strcpy(fname, filename);
strcat(fname, ".hdr.gz"); /* ANALYZE filename.hdr.gz */
if (read_analyze_header(fname, hdr, GZIP, &found) == OK) {
strcpy(filename2, filename);
strcat(filename2, ".img");
goto ok_found;
}
strcpy(fname, filename); /* ANALYZE filename.hdr.Z */
strcat(fname, ".hdr.Z");
if (read_analyze_header(fname, hdr, COMPRESS, &found) == OK) {
stripext(filename, filename2);
strcat(filename2, ".img");
goto ok_found;
}
stripext(filename, fname);
strcat(fname, ".hdr.gz"); /* ANALYZE filename - ext + .hdr.gz */
if (read_analyze_header(fname, hdr, GZIP, &found) == OK) {
stripext(filename, filename2);
strcat(filename2, ".img");
goto ok_found;
}
stripext(filename, fname);
strcat(fname, ".hdr.Z"); /* ANALYZE filename - ext + .hdr.Z */
if (read_analyze_header(fname, hdr, COMPRESS, &found) == OK) {
stripext(filename, filename2);
strcat(filename2, ".img");
goto ok_found;
}
if (!found)
print(PANIC, "read_header(): File %s not found", filename);
else
print(INFO, "read_header(): File error %s\n", filename);
return ERROR;
ok_found:
/* now, the file is open */
if (hdr->compressed)
sprintf(buf, "%sed ", compression_str[hdr->compressed & 3]);
else
buf[0] = 0;
print(DEBUG, "Read %sheader %s\n", buf, fname);
return OK;
} /* read_header() */