home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 391.lha / AmigaUser / src / readdatafile.c < prev    next >
C/C++ Source or Header  |  1990-07-06  |  2KB  |  96 lines

  1. #include "include.h"
  2. #include "extern.h"
  3.  
  4. readdatafile()
  5. {
  6.  FILE *fp;
  7.  char str[256], str1[256], *tmp, *ptr, *getline(), *genchar();
  8.  int done = 0;
  9.  register int i, keynum;
  10.  entry *genentry();
  11.  float key, atof(), tmpkeylist[MAXNUMKEYS];
  12.  
  13.  fp = fopen(AUCDATAFILE, "r");
  14.  if(fp == NULL) {
  15.    printf("Cannot open %s for read. Exiting.\n",AUCDATAFILE);
  16.    exit(-1);
  17.  }
  18.  
  19.  while(!done) {
  20.    tmp = getline(str,fp);        /* get name of entry */
  21.    numentries++;                /* inc number of entries */
  22.    if(tmp) {
  23.      temp = genentry();                /* create a new entry */
  24.  
  25.      if(head == NULL) {               /* if first entry, initialize list */
  26.        head = temp;
  27.        curr = head;
  28.      }
  29.      else
  30.        curr -> next = temp;
  31.      curr = temp;
  32.      curr -> name = genchar(strlen(str) + 1);
  33.      strcpy(curr -> name, str);
  34.    }
  35.    else 
  36.      done = 1;
  37.  
  38.    if(!done)
  39.      tmp = getline(str,fp);        /* get email address of entry */  
  40.    if(tmp) {
  41.      curr -> email = genchar(strlen(str) + 1);
  42.      strcpy(curr -> email, str);
  43.    }
  44.    else
  45.      done = 1;
  46.  
  47.    if(!done)
  48.      tmp = getline(str,fp);        /* get system desc of entry */  
  49.    if(tmp) {
  50.      curr -> system = genchar(strlen(str) + 1);
  51.      strcpy(curr -> system, str);
  52.    }
  53.    else
  54.      done = 1;
  55.  
  56.    if(!done)
  57.      tmp = getline(str,fp);        /* get keycodes of entry */  
  58.    if(tmp) {
  59.      done = 1;                /* done = 1 if key read, else 0 */
  60.      keynum = 0;
  61.      ptr = str;
  62.      while(done > 0) {
  63.        done = sscanf(ptr,"%s",str1);
  64.        if(done > 0) {
  65.          sscanf(str1,"%f",&tmpkeylist[keynum++]);
  66.          ptr += (strlen(str1) + 1);
  67.        }
  68.        if(keynum == MAXNUMKEYS) {
  69.          done = -1;
  70.          printf("To many interests encountered for %s.\n",curr -> name);
  71.        }
  72.      }    
  73.      done = 0;
  74.    }
  75.    else
  76.      done = 1;
  77.  
  78.    curr -> keys = (float *) genchar(sizeof(float)*keynum);
  79.    curr -> numkeys = keynum;
  80.    for(i = 0; i < keynum; i++) {
  81.       curr -> keys[i] = tmpkeylist[i];
  82.    }
  83.  
  84.    if(!done)
  85.      tmp = getline(str,fp);        /* get comment of entry */  
  86.    if(tmp) {
  87.      curr -> comment = genchar(strlen(str) + 1);
  88.      strcpy(curr -> comment, str);
  89.    }
  90.    else
  91.      done = 1;
  92.  }
  93.  fclose(fp);
  94. }
  95.  
  96.