/*BROWSE.C›*/›#include "GLOBALS.H";›extern int browsep();›extern int docol();›extern int dohead();›extern int postad();›extern int saveptr();›extern int getmes();›extern int free();›extern char *malloc();›extern int point();›extern int getcnam();›extern int getmesn();›extern int getsdata();›extern int getdrive();›extern char msg1[], msg2[];›char from[] = "  From   :";›char   to[] = "  To     :";›char date[] = "  Date   :";›char subj[] = "  Subject:";›char sub2[] = "         :";›char mess[] = "Message #:";›char repl[] = "<Reply to: #";›char  ppt[] = "Ágain Âack Îext Òeply Êump Íark Ðrt Ñuit";›char x0[] = "No messages found";›char z11[] = "Quote current message in reply? y/n";›char z12[] = "lines at top of reply";›char z13[] = "Continue reading MESSAGES.DAT? y/[n]";›char z14[] = "Íáòëº\nSave pointer to current message? y/[n]";›char prY[] = "Get ready to print!";›char prZ[] = "Done!";›char p72[] = "MESSAGES.DAT";›browsex(rt,cn,rov)›int rt, cn;›DISK *rov;›$(›  DISK *prev;›  CONF *rec;›  char buf[MAXM], byt, f0[64], f1[64];›  char frm[26], too[26], dt[9], sj[26];›  char mn[8], tm[6], rp[9], cx, cy;›  char *ptr, *rptr, *t, recs[7];›  int sec, i, j, k, ib, lbuf, count;›  int m, n, flag, scan, pn, pflag;››  closeall();›  poke(82,0);›  poke(752,1);›  if(rov == NULL)›  $(›    if(rt != 0) cn = -1;›    rov = db->mhead;›    if(rt != -1)›      rov = getnext(rt,cn,rov);›  $)›  pn = rt;›  lbuf = sizeof(buf);›  scan = 1;›  pflag = 0;›  printf("\nRead %s\n",p72);›  strcpy(f0,p72);›  ib = getdrive(f0,'r');›  if(ib <= 0) return;›  else close(ib);›  while(scan && rov != NULL)›  $(›/*›************* while loop **************›*/›count = 0;›prev = NULL;›sec = rov->sector;›byt = rov->byte;›ib = copen(f0,'r');›point(ib,sec,byt);›i=bgets(buf,lbuf,ib);›ptr = buf;›if((ptr[122] != 'á') && (ptr[123] != 'â'))›$(›  printf("\n\nWrong Disk?\n\n");›  getkey();›  close(ib);›  return;›$)›rptr = recs;›getsdata(rptr,ptr,116,6);›k = val(recs);›k--;›k = k*128;›t = malloc(k+1);›if(t != NULL)›$(›  i=bgets(t,k,ib);›  close(ib);›  rptr = mn;›  getsdata(rptr,ptr,1,7);›  j = rov->confn;›  rec = getcnam(j);›  rptr = frm;›  getsdata(rptr,ptr,46,25);›  rptr = too;›  getsdata(rptr,ptr,21,25);›  rptr = dt;›  getsdata(rptr,ptr,8,8);›  rptr = tm;›  getsdata(rptr,ptr,16,5);›  rptr = sj;›  getsdata(rptr,ptr,71,25);›  rptr = rp;›  getsdata(rptr,ptr,108,8);›  m = val(rp);›  if(rp[0] == ' ') m = 0;›  if(pflag)›  $(›    printf("\n%s",prY);›    docol();›    rptr = f1;›    ib = browsep(rptr);›    if(ib <= 0) pflag = 0;›  $)›  if(!pflag)›  $(›    strcpy(f1,"S:");›    ib = copen(f1,'w');›  $)›  poke(82,0);›  poke(752,1);›  putchar('\f');›  printf(ib,"%s %s",mess,mn);›  printf(ib," of %d\n",rec->hi);›  printf(ib,"#%-3d %-33s\n",rec->cnum,rec->cnam);›  printf(ib,"\n%s %s",from,frm);›  printf(ib,"\n%s %s\n",to,too);›  printf(ib,"%s %s/ %s",date,dt,tm);›  count = 6;›  if(m != 0)›  $(›    printf(ib,"\n%s%s",subj,repl);›    printf(ib,"%s>",rp);›    printf(ib,"\n%s %s",sub2,sj);›    count+=2;›  $)›  else›  $(›    printf(ib,"\n%s %s",subj,sj);›    count++;›  $)›  printf(ib,"\n");›  count++;›  process(ib,pflag,t,k,count);›  close(ib);›  if(pflag)›  $(›    printf("\n%s",prZ);›    docol();›    pflag = 0;›  $)›$)›printf("\n\n%s",ppt);›cx = toupper(getkey());›putchar('\f');›switch(cx)›$(›  case 'R':›  $(›    j = 0;›    printf("\n%s",z11);›    cy = toupper(getkey());›    if(cy == 'Y')›    $(›      j = dohead(t,ptr);›      printf("\n%d %s",j,z12);›    $)›    postad(rec->cnum,ptr);›    printf("\n%s",z13);›    cy = toupper(getkey());›    if(cy != 'Y')›      scan = 0;›  $)›  break;›  case 'N': case '\n': case ' ':›  $(›    prev = rov;›    rov = rov->dnext;›    if(rt != -1)›      rov = getnext(pn,cn,rov);›    if(rov == NULL)›    $(›      printf("\n%s\n%s\n",x0,msg2);›      getkey();›      rov = prev;›      prev = NULL;›    $)›  $)›  break;›  case 'B':›  $(›    prev = rov->dprev;›    if(prev != NULL)›      rov = prev;›    else›    $(›      printf("\n%s\n%s\n",x0,msg2);›      getkey();›    $)›  $)›  break;›  case 'J':›  $(›    j = getmesn(rec->lo,rec->hi);›    if(j >= 0)›    $(›      prev = getmes(j,rec->cnum);›      if(prev != NULL) rov = prev;›    $)›  $)›  break;›  case 'M':›  $(›    printf("\n%s",z14);›    cy = toupper(getkey());›    if(cy == 'Y')›      saveptr(rov->mesn,rov->confn);›  $)›  break;›  case 'Q':›    scan = 0;›  break;›  case 'P':›    pflag = 1;›  break;›  case 'A': default: ; break;›$)›if(t != NULL) free(t,k+1);›/*›************ end while ****************›*/›  $)›  closeall();›$)›getnext(ppn,ccn,rrv)›int ppn, ccn;›DISK *rrv;›$(›  int flag;››  flag = 1;›  while(rrv != NULL && flag)›  $(›    if(ppn == 1)›    $(›      if(rrv->pers == 'y')›        flag = 0;›    $)›    else if (ccn >= 0)›    $(›      if(ccn == rrv->confn)›        flag = 0;›    $)›    if(flag) rrv = rrv->dnext;›  $)›  return rrv;›$)›