/*POSTY.C*/#include "GLOBALS.H";#define SX struct savexSX $(  int sib;  char scx;$);extern FILELX *dbx, *dby, *dbz, *dbl;extern int getsdata();extern int setdrive();extern int free();extern int columns;extern int dodb();extern int docol();extern int postc();extern int tot;extern char d6[];char inn[4];char bline[] = "Ρ Quit Σ Save Φ View Ε Edit Γ Columns";lines()$(  char c;  if(dbx->lnhead != NULL)    dodb(1);  else dodb(0);  while(1)  $(    printf("\n%s\n",bline);    printf("Bytes free: %d\n",tot);    c = toupper(getkey());    switch(c)    $(      case 'Q':      $(        printf("\nQuit? y/n");        if(toupper(getkey()) == 'Y')        $(          delmess();          return 0;        $)      $)      break;      case 'C':        docol();      break;      default:      $(        if(dby->lnhead != NULL)        $(          switch(c)          $(            case 'S':              return 1;            break;            case 'V':              plines();            break;            case 'E':              postc();            break;            default: ; break;          $)        $)      $)      break;    $)  $)$)plines()$(  CONN *rov;  char cx;  int count, cnm, dd;  poke(82,0);  poke(752,1);  count = 0;  cnm = 1;  rov = dby->lnhead;  while(rov != NULL)  $(    cx = rov->typ;    dd = strlen(rov->dat) +4;    printf("\n%3d>",cnm);    if(cx == 'Q')    $(      printf("%s",inn);      dd+= 3;    $)    printf("%s",rov->dat);    if(dd >= 2*columns)      count+=3;    else if(dd >= columns)      count+=2;    else count++;    if(count >= 21)    $(      printf("\n>- More -<");      getkey();      count = 0;    $)    cnm++;    rov = rov->next;  $)$)delmess()$(  CONN *rov, *holdr;  char *d;  int slist, i;  if(dby->lnhead != NULL)  $(    slist = sizeof(CONN);    rov = dby->lnhead;    while(rov != NULL)    $(      holdr = rov;      rov = rov->next;      if(holdr->typ == 'Q')        free(holdr,slist);      else      $(        d = holdr->dat;        i = strlen(d)+1;        free(d,i+slist);      $)    $)  $)  dbl->lnhead = NULL;  dbx->lnhead = NULL;  dby->lnhead = NULL;  dbz->lnhead = NULL;$)putsdata(p,r,pos,lim)char *p, *r;int pos, lim;$(  int j;  j = 0;  while((j<lim) && (r[j] != '\0'))  $(    p[j+pos] = r[j];    j++;  $)$)clearblk(r,size)char *r;int size;$(  int j;  for(j=0;j<size;j++)    r[j] = ' ';$)itoa(yint,cptr)int yint;char *cptr;$(  char buf[11], *ptr, *rptr;  int x, flag, j, k;  x = yint;  flag = 1;  ptr = buf;  j = 0;  while(flag)  $(    ptr[j++] = '0' + x-10*(x/10);    x = x/10;    if(x == 0) flag = 0;  $)  ptr[j] = '\0';  x = strlen(ptr);   cptr[x] = '\0';  k=0;  for(j = x-1;j >= 0;j--)    cptr[k++] = ptr[j];$)char do0[]="Save post or reply";savep(n,r)int n;char *r;$(  SX sparm;  CONN *rov;  char f0[64], nn[7], cx, *ptr;  int ib, j, k;  printf("\n%s",do0);  ptr = f0;  *ptr = '\0';  strcat(f0,db->BBSID);  strcat(f0,".MSG");  ptr = f0;  j = sutil(&sparm,ptr);  if(j <= 0) return;  else  $(    ib = sparm.sib;    cx = sparm.scx;    if(cx == 'W')    $(      printf(ib,"%s",db->BBSID);      k = strlen(db->BBSID);      for(j=0;j<MAXM-k;j++)        printf(ib," ");    $)    bputs(r,MAXM,ib);    rov = dby->lnhead;    while(rov != NULL)    $(      if(rov->typ == 'Q')        bputs(inn,3,ib);      ptr = rov->dat;      k = strlen(ptr) +1;      for(j=0;j<k;j++)      $(        if(ptr[j] == '\0')          cputc('γ',ib);        else cputc(ptr[j],ib);      $)      rov = rov->next;    $)    for(j=0;j<n;j++) cputc(' ',ib);    close(ib);  $)$)char do1[]="Some kind of error";char do2[]="Can't open ";char do3[]="exists.";char do4[]=" Α ppend at end or";char do5[]=" Χ rite over file or";char do6[]=" Ε xit";char do7[]="Type A, W, or E-->";sutil(sxp,sr)SX *sxp;char *sr;$(  char f0[64], cx, *ptr;  int ib, ac;  strcpy(f0,sr);  if(sr[2] != ':')  $(    printf("\n%s",d6);    if((cx=getkey()) == '\n')      cx = '1';    setdrive(f0,cx);    strcpy(sr,f0);  $)  printf("\n%s\n",sr);  ac = 1;  if((ib=copen(f0,'r'))>0)  $(    close(ib);    printf("\n\n%s %s",f0,do3);    printf("\n%s",do4);    printf("\n%s",do5);    printf("\n%s",do6);    printf("\n%s",do7);    cx = toupper(getkey());    switch(cx)    $(    case 'E':      return -1;    break;    case 'A':      if((ib=copen(f0,'a'))<1)        ac = 0;    break;    case 'W':      if((ib=copen(f0,'w'))<1)        ac = 0;      break;      default: ; break;    $)  $)  else  $(    if((ib=copen(f0,'w'))<1)      ac = 0;    else cx = 'W';  $)  if(ac == 0)    printf("\n\n%s %s\n",do2,f0);  else  $(    (*sxp).sib = ib;    (*sxp).scx = cx;  $)  return ac;$)