/*POSTZ.C*/#include "GLOBALS.H";extern int getstr();extern char *malloc();extern int free();extern int plines();extern int post();extern int tags();extern int tot;extern FILELX *dby;extern char prom[];char prom2[] = "Εxit Ιnsert Δelete Φiew Τaglines";char prom4[] = "Insert before which line? -->";char prom5[] = "delete at which line? -->";char prom7[] = "Add at end? y/[n]";postc()$(  FILELX *f, fr;  char c, cx[4], *r, ch;  int d, d1, j, flag, s;  printf("\nEdit\n");  s = sizeof(FILELX);  f = (FILELX *) malloc(s);  if(f != NULL)  $(    while(1)    $(      printf("\n%s\n",prom2);      printf("Bytes free: %d\n",tot);      c = toupper(getkey());      switch(c)      $(        case 'E':        $(          free(f,s);          return;        $)        break;        case 'I':        $(          printf("\n%s",prom7);          ch = toupper(getkey());          if((ch == '\n') || (ch == 'N'))          $(            printf("\n%s",prom4);            r = cx;            getstr(r,3);            d = val(cx);          $)          printf("\n%s",prom);          post(&fr);          if(fr.lnhead != NULL)          $(            f->lnhead = fr.lnhead;            f->endln = fr.endln;            if(ch == 'Y') addend(f);            else            $(              if(dby->lnhead == NULL)                addend(f);              else addline(d,f);            $)          $)        $)        break;        case 'D':        $(          flag = 1;          while(flag)          $(            flag = 0;            printf("\nBegin %s",prom5);            r = cx;            getstr(r,3);            d = val(cx);            printf("\nEnd %s",prom5);            r = cx;            getstr(r,3);            d1 = val(cx);            if(d > d1)            $(              printf("\nBegin <= End");              flag = 1;            $)          $)          if(d == d1) deline(d);          else for(j=d;j<=d1;j++)            deline(d);        $)        break;        case 'T':          tags();        break;        case 'V':          plines();        break;        default: ; break;      $)    $)  $)$)deline(n)int n;$(  CONN *rov, *hr, *prev;  char *d;  int slist, flag, count, i;  if(dby->lnhead != NULL)  $(    slist = sizeof(CONN);    flag = 0;    rov = dby->lnhead;    if(n == 1)    $(      hr = dby->lnhead;      dby->lnhead = rov->next;      flag = 1;    $)    else    $(      count = 2;      while((rov != NULL) && !flag)      $(        hr = rov;        rov = rov->next;        if(n == count)        $(          hr->next = rov->next;          flag = 1;        $)        else count++;      $)    $)    if(flag)    $(      if(rov->typ == 'Q')        free(rov,slist);      else      $(        d = rov->dat;        i = strlen(d)+1;        free(d,i+slist);      $)      if(hr->next == NULL)        dby->endln = hr;    $)  $)$)addline(dd,ff)int dd;FILELX *ff;$(  CONN *rov, *holdr;  int flag, count;  if(dby->lnhead != NULL)  $(    flag = 0;    count = 2;    rov = dby->lnhead;    while((rov != NULL) && !flag)    $(      if(dd == 1)      $(        dby->lnhead = ff->lnhead;        ff->endln->next = rov;        flag = 1;      $)      else if(dd == count)      $(        holdr = rov->next;        rov->next = ff->lnhead;        ff->endln->next = holdr;        flag = 1;      $)      else rov = rov->next;      count++;    $)  $)  else  $(    dby->lnhead = ff->lnhead;    dby->endln = ff->endln;  $)$)addend(ff)FILELX *ff;$(  if(dby->lnhead == NULL)    dby->lnhead = ff->lnhead;  else dby->endln->next = ff->lnhead;  dby->endln = ff->endln;$)