/*ZPOST.C*/#include "GLOBALS.H";#define SX struct savexSX $(  int sib;  char scx;$);extern int dodir();extern int sutil();extern int getstr();extern int addend();extern int addcon();extern char *malloc();extern int setdrive();extern int getsdata();extern FILELX *dbx,*dbl,*dby,*dbz;extern char inn[4];extern int tot;extern char d6[], msg3[], pr0[];dohead(tt,fbuf)char *tt, *fbuf;$(  FILELX frec;  char ty, *rptr, bf[MAXL], *ptr, *p;  char frm[26], dt[9], tm[6], *tq;  int j, k;  ptr = fbuf;  rptr = frm;  getsdata(rptr,ptr,46,25);  p = frm;  j = strlen(p);  tq = inn;  tq[0] = p[0];  k = 0;  while((*p != ' ') && k<j)  $(    p++;    k++;  $)  while((*p == ' ') && k<j)  $(    p++;    k++;  $)  if(j == k) tq[1] = ' ';  else tq[1] = rptr[k];  tq[2] = '>';  tq[3] = '\0';  rptr = dt;  getsdata(rptr,ptr,8,8);  rptr = tm;  getsdata(rptr,ptr,16,5);  rptr = bf;  rptr[0] = '\0';  strcat(rptr,"On ");  strcat(rptr,dt);  strcat(rptr," at ");  strcat(rptr,tm);  strcat(rptr,", ");  ptr = frm;  j = strlen(frm)-1;  while(ptr[j] == ' ')    j--;  ptr[++j] = '\0';  strcat(rptr,frm);  strcat(rptr," wrote:");  frec.lnhead = NULL;  j = addcon(rptr,&frec);  dbz->lnhead = frec.lnhead;  dbz->endln  = frec.endln;  rptr = tt;  k = 0;  ty = 'Q';  frec.lnhead = NULL;  while(find(rptr+k,1,'\n') < 0)  $(    if(list(ty,rptr+k,&frec))    $(      j++;      k += (strlen(rptr+k) +1);    $)  $)  dbx->lnhead = frec.lnhead;  dbx->endln  = frec.endln;  return j;$)list(tp,curr,frc)char tp,*curr;FILELX *frc;$(  CONN *new;  char *t, *rec;  int n, slist;  n = 0;  rec = curr;  slist = sizeof(CONN);  t = malloc(slist);  if(t != NULL)  $(    new = (CONN *) t;    new->dat  = rec;    new->typ  = tp;    new->next = NULL;    if((*frc).lnhead == NULL)      (*frc).lnhead = new;    else (*frc).endln->next = new;    (*frc).endln = new;    n = 1;  $)  return(n);$)dodb(parm)int parm;$(  if(parm)  $(    dby->lnhead = dbz->lnhead;    dbz->endln->next = dbx->lnhead;    dbx->endln->next = dbl->lnhead;    dby->endln  = dbl->endln;  $)  else  $(    dby->lnhead = dbl->lnhead;    dby->endln  = dbl->endln;  $)$)char tprt[] = "Μoad taglines (or any textfile)";char sprs[] = "Σave editor contents";char dprs[] = "Δos directory\nΡuit\n\nSelect: ";char tprs[] = "Input filename\n--> ";tags()$(  SX sprm;  CONN *rov;  char cx, cy, f0[64], *ptr, w[MAXL];  int ib, j;  while(1)  $(    printf("\n\n%s",tprt);    printf("\n%s",sprs);    printf("\n%s",dprs);    cx = toupper(getkey());    if(cx == 'Q') return;    else if(cx == 'D') dodir();    else    $(      printf("\n%s",tprs);      ptr = f0;      getstr(ptr,63);      if(ptr[2] != ':')      $(        printf("\n%s",d6);        if((cy=getkey()) == '\n')          cy = '1';        setdrive(f0,cy);      $)      if(cx == 'L')      $(        ib=copen(f0,'r');        if(ib>0)        $(          ptr = w;          j = bgets(ptr,MAXL,ib);          j = find(ptr,MAXL,'\n');          if(j < 0)            printf("\n\nNeed Atascii file\n\n");          else          $(            close(ib);            ib=copen(f0,'r');            printf("\n%s%s\n",pr0,f0);            readt(ib);          $)        $)      $)      else      $(        j = sutil(&sprm,f0);        if(j <= 0) return;        else        $(          ib = sprm.sib;          printf("\nSaving %s\n",f0);          rov = dby->lnhead;          while(rov != NULL)          $(            printf(ib,"\n%s",rov->dat);            rov = rov->next;          $)          printf(ib,"\n");        $)      $)      close(ib);      printf("\n%s\n",msg3);      getkey();    $)  $)$)readt(iocb)int iocb;$(  FILELX *f, ff;  char w[2*MAXL], *p;  int m, flag;  ff.lnhead = NULL;  flag = 1;  p = w;  while(((m = cgets(p,iocb)) >= 0) && flag)  $(    if(m >= tot) flag = 0;    else    $(      if(m >= MAXL-1)      $(        printf("\n\nLine truncatedn\n");        p[MAXL-1] = '\0';      $)      else p[m] = '\0';      if(addcon(p,&ff))        ;      else flag = 0;    $)  $)  f->lnhead = ff.lnhead;  f->endln = ff.endln;  addend(f);$)