home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol076 / ed9.c < prev    next >
C/C++ Source or Header  |  1984-04-29  |  3KB  |  214 lines

  1. /* ED9.C */
  2.  
  3. #include ed0.c
  4. #include ed1.ccc
  5. toupper(c) int c;
  6. {
  7.     if ((c<'a')|(c>'z')) {
  8.         return(c);
  9.     }
  10.     else {
  11.         return(c-32);
  12.     }
  13. }
  14. tolower(c) int c;
  15. {
  16.     if ((c<'A')|(c>'Z')) {
  17.         return(c);
  18.     }
  19.     else {
  20.         return(c+32);
  21.     }
  22. }
  23. number(args,val) char *args; int *val;
  24. {
  25. char c;
  26.     c= *args++;
  27.     if ((c<'0')|(c>'9')) {
  28.         return(NO);
  29.     }
  30.     *val=c-'0';
  31.     while (c= *args++) {
  32.         if ((c<'0')|(c>'9')) {
  33.             break;
  34.         }
  35.         *val=(*val*10)+c-'0';
  36.     }
  37.     return(YES);
  38. }
  39. ctoi(buf,index) char *buf; int index;
  40. {
  41. int k;
  42.     while ((buf[index]==' ')|
  43.         (buf[index]==TAB)){
  44.         index++;
  45.     }
  46.     k=0;
  47.     while ((buf[index]>='0')&(buf[index]<='9')) {
  48.         k=(k*10)+buf[index]-'0';
  49.         index++;
  50.     }
  51.     return(k);
  52. }
  53. max(m,n) int m,n;
  54. {
  55.     if (m>=n) {
  56.         return(m);
  57.     }
  58.     else {
  59.         return(n);
  60.     }
  61. }
  62. min(m,n) int m,n;
  63. {
  64.     if (m<=n) {
  65.         return(m);
  66.     }
  67.     else {
  68.         return(n);
  69.     }
  70. }
  71. putdec(n,w) int n,w;
  72. {
  73. char chars[10];
  74. int i,nd;
  75.     nd=itoc(n,chars,10);
  76.     i=0;
  77.     while (i<nd) {
  78.         syscout(chars[i++]);
  79.     }
  80.     i=nd;
  81.     while (i++<w) {
  82.         syscout(' ');
  83.     }
  84. }
  85. itoc(n,str,size) int n; char *str; int size;
  86. {
  87. int absval;
  88. int len;
  89. int i,j,k;
  90.     absval=abs(n);
  91.     str[0]=0;
  92.     i=1;
  93.     while (i<size) {
  94.         str[i++]=(absval%10)+'0';
  95.         absval=absval/10;
  96.         if (absval==0) {
  97.             break;
  98.         }
  99.     }
  100.     if ((i<size)&(n<0)) {
  101.         str[i++]='-';
  102.     }
  103.     len=i-1;
  104.     i--;
  105.     j=0 ;
  106.     while (j<i) {
  107.         k=str[i];
  108.         str[i]=str[j];
  109.         str[j]=k;
  110.         i--;
  111.         j++;
  112.     }
  113.     return(len);
  114. }
  115. abs(n) int n;
  116. {
  117.     if (n<0) {
  118.         return(-n);
  119.     }
  120.     else {
  121.         return(n);
  122.     }
  123. }
  124. syserr(s) char *s;
  125. {
  126.     pmtmess("system error: ",s);
  127. }
  128. error(s) char *s;
  129. {
  130.     pmtmess("error: ",s);
  131. }
  132. diskerr(s) char *s;
  133. {
  134.     pmtmess("disk error: ",s);
  135. }
  136. readline(file,p,n) int file; char *p; int n;
  137. {
  138. int c;
  139. int k;
  140.     k=0;
  141.     while (1) {
  142.         c=sysrdch(file);
  143.         if (c==ERR) {
  144.             return(ERR);
  145.         }
  146.         if (c==EOF) {
  147.             return(EOF);
  148.         }
  149.         if (c==CR) {
  150.             return(k);
  151.         }
  152.         if (k<n) {
  153.             *p++=c;
  154.         }
  155.         k++;
  156.     }
  157. }
  158. pushline(file,p,n) int file; char *p; int n;
  159. {
  160.     while((n--)>0) {
  161.         if (syspshch(*p++,file)==ERR) {
  162.             return(ERR);
  163.         }
  164.     }
  165.     return(syspshch(CR,file));
  166. }
  167. popline(file,p,n) int file; char *p; int n;
  168. {
  169. int c;
  170. int k, kmax, t;
  171.     c=syspopch(file);
  172.     if (c==EOF) {
  173.         return(EOF);
  174.     }
  175.     if (c==CR) {
  176.         *p++ =CR;
  177.         k=1;
  178.     }
  179.     else {
  180.         syserr("popline:  missing CR");
  181.         return(ERR);
  182.     }
  183.     while (1) {
  184.         c=syspopch(file);
  185.         if (c==ERR) {
  186.             return(ERR);
  187.         }
  188.         if (c==EOF) {
  189.             break;
  190.         }
  191.         if (c==CR) {
  192.             if (syspshch(CR,file)==ERR) {
  193.                 return(ERR);
  194.             }
  195.             break;
  196.         }
  197.         if (k<n) {
  198.             *p++ =c;
  199.         }
  200.         k++;
  201.     }
  202.     kmax=k;
  203.     k=min(k,n-1);
  204.     t=0;
  205.     while (k>t) {
  206.         c=p[k];
  207.         p[k]=p[t];
  208.         p[t]=c;
  209.         k--;
  210.         t++;
  211.     }
  212.     return(kmax);
  213. }
  214.