home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_100 / 151_01 / ed9.c < prev    next >
Text File  |  1985-03-10  |  3KB  |  220 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.     scr_chr_attr(SETBLINK);
  127.     pmtmess("system error: ",s);
  128.     scr_chr_attr(NOBLINK);
  129. }
  130. error(s) char *s;
  131. {
  132.     scr_chr_attr(SETBLINK);
  133.     pmtmess("error: ",s);
  134.     scr_chr_attr(NOBLINK);
  135. }
  136. diskerr(s) char *s;
  137. {
  138.     scr_chr_attr(SETBLINK);
  139.     pmtmess("disk error: ",s);
  140.     scr_chr_attr(NOBLINK);
  141. }
  142. readline(file,p,n) int file; char *p; int n;
  143. {
  144. int c;
  145. int k;
  146.     k=0;
  147.     while (1) {
  148.         c=sysrdch(file);
  149.         if (c==ERR) {
  150.             return(ERR);
  151.         }
  152.         if (c==EOF) {
  153.             return(EOF);
  154.         }
  155.         if (c==CR) {
  156.             return(k);
  157.         }
  158.         if (k<n) {
  159.             *p++=c;
  160.         }
  161.         k++;
  162.     }
  163. }
  164. pushline(file,p,n) int file; char *p; int n;
  165. {
  166.     while((n--)>0) {
  167.         if (syspshch(*p++,file)==ERR) {
  168.             return(ERR);
  169.         }
  170.     }
  171.     return(syspshch(CR,file));
  172. }
  173. popline(file,p,n) int file; char *p; int n;
  174. {
  175. int c;
  176. int k, kmax, t;
  177.     c=syspopch(file);
  178.     if (c==EOF) {
  179.         return(EOF);
  180.     }
  181.     if (c==CR) {
  182.         *p++ =CR;
  183.         k=1;
  184.     }
  185.     else {
  186.         syserr("popline:  missing CR");
  187.         return(ERR);
  188.     }
  189.     while (1) {
  190.         c=syspopch(file);
  191.         if (c==ERR) {
  192.             return(ERR);
  193.         }
  194.         if (c==EOF) {
  195.             break;
  196.         }
  197.         if (c==CR) {
  198.             if (syspshch(CR,file)==ERR) {
  199.                 return(ERR);
  200.             }
  201.             break;
  202.         }
  203.         if (k<n) {
  204.             *p++ =c;
  205.         }
  206.         k++;
  207.     }
  208.     kmax=k;
  209.     k=min(k,n-1);
  210.     t=0;
  211.     while (k>t) {
  212.         c=p[k];
  213.         p[k]=p[t];
  214.         p[t]=c;
  215.         k--;
  216.         t++;
  217.     }
  218.     return(kmax);
  219. }
  220.