next up previous
Next: open_read() Up: Brain Volume I/O Handling Previous: read_volume()

read_header()  

Read a volume's header
****************************************************************/

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() */



Ulrik Kjems
6/3/1998