/*CONTROL.C*/#include "GLOBALS.H";#define MAXR 1024extern char *malloc();extern int getdrive();extern char msg3[];char pr0[] = "Reading ";lfile()$(  char f0[64];  int ib;  strcpy(f0,"CONTROL.DAT");  ib = getdrive(f0,'r');  if(ib>0)  $(    printf("\n%s%s\n",pr0,f0);    readf(ib);    close(ib);    printf("\n%s\n",msg3);    getkey();  $)$)/*function readf()*/readf(iocb)int iocb;$(  FILEDAT fr;  FILELX ff;  char w[MAXR], *ptr, *p, *fn, *t;  int m, n, s, bufs, bufr, i, k;  ff.lnhead = NULL;  n = bufr = 0;  p = ptr = w;  bufs = MAXR;  m = bgets(p,bufs,iocb);  bufr += m;  n=find(ptr,bufr,'');  if(n < 0)  $(    printf("\n\nNeed Ascii file\n\n");    return;  $)  for(i=1;i<=11;i++)  $(    n=find(ptr,bufr,'');    n++;    fn = ptr;    while(*fn != '')      fn++;    *fn = '\0';    fn = ptr;    if(i == 5)    $(      while(*fn != ',')        fn++;      fn++;      n = strlen(fn)+1;    $)    switch(i)    $(      case 5: case 7:      $(        t = malloc(n);        move(fn,t,n);      $)      break;      case 9: case 10:        if(fn[0] != '0')        $(          printf("\n\nmistake\n\n");          return;        $)      break;      case 11:      $(        s = val(fn);        fr.numc = s;      $)      break;      default: ; break;    $)    switch(i)    $(      case 5:        fr.BBSID = t;      break;      case 7:        fr.usern = t;      break;      default:        ;      break;    $)    n++;    ptr = (int)ptr + n;    bufr -= n;  $)  while(s+1)  $(    for(i=1;i<=2;i++)    $(      if((n=find(ptr,bufr,'')) < 0)      $(        move(ptr,w,bufr);        ptr = w;        p = (int)ptr + bufr;        bufs = MAXR-bufr;        m = bgets(p,bufs,iocb);        bufr += m;      $)      n=find(ptr,bufr,'');      n++;      fn = ptr;      while(*fn != '')        fn++;      *fn = '\0';      switch(i)      $(        case 1:        $(          fn = ptr;          k = val(fn);          n++;          ptr = (int)ptr + n;          bufr -= n;        $)        break;        case 2:        $(          if(addrec(k,ptr,&ff))          $(            n++;            ptr = (int)ptr + n;            bufr -= n;            s--;          $)          else s = -1;        $)        break;      $)    $)  $)  db->lhead = ff.lnhead;  db->BBSID = fr.BBSID;  db->usern = fr.usern;  db->numc = fr.numc;$)/*function addrec()*/addrec(a,curr,frc)int a;char *curr;FILELX *frc;$(  CONF *new;  char *t, *rec;  int bts, n, slist;  n = 0;  rec = curr;  bts = strlen(rec)+1;  if(bts >= 33) rec[33] = '\0';  bts = strlen(rec)+1;  slist = sizeof(CONF);  t = malloc(bts+slist);  if(t != NULL)  $(    move(rec,t,bts);    new = (CONF *)(bts + (int)t);    new->cnam  = t;    new->cnum  = a;    new->npers = 0;    new->nmes  = 0;    new->hi    = 0;    new->lo    = 0x07FF;    new->cnext = NULL;    if((*frc).lnhead == NULL)      (*frc).lnhead = new;    else (*frc).endln->cnext = new;    (*frc).endln = new;    n = 1;  $)  return(n);$)