home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d168 / dillonstuff.lha / src / com / remcr.c < prev    next >
C/C++ Source or Header  |  1988-11-22  |  1KB  |  90 lines

  1.  
  2. /*
  3.  *  REMCR.C
  4.  *
  5.  *  REMCR [-l]    file1 file2 ... filen
  6.  *
  7.  *  -l    : convert file name to lower case
  8.  *
  9.  */
  10.  
  11. #include <stdio.h>
  12.  
  13. extern char *malloc();
  14.  
  15. main(ac,av)
  16. char *av[];
  17. {
  18.     register short i;
  19.     FILE *fi;
  20.     long len;
  21.     char *buf;
  22.     char clower = 0;
  23.  
  24.     for (i = 1; i < ac; ++i) {
  25.     if (strcmp(av[i], "-l") == 0) {
  26.         clower = 1;
  27.         continue;
  28.     }
  29.     printf("%-20s ", av[i]);
  30.     fflush(stdout);
  31.     if ((fi = fopen(av[i], "r")) == NULL) {
  32.         perror(av[i]);
  33.         continue;
  34.     }
  35.     fseek(fi, 0, 2);
  36.     len = ftell(fi);
  37.     printf("%6ld ", len);
  38.     fflush(stdout);
  39.     if (len < 0 || (buf = malloc(len*2)) == NULL) {
  40.         puts("len < 0 or malloc failed");
  41.         fclose(fi);
  42.         continue;
  43.     }
  44.     fseek(fi, 0, 0);
  45.     if (fread(buf, len, 1, fi) != 1) {
  46.         puts("read failed");
  47.         goto done;
  48.     }
  49.     fclose(fi);
  50.     len = remcr(buf, len);
  51.     if (clower) {
  52.         register char *ptr;
  53.         for (ptr = av[i]; *ptr; ++ptr) {
  54.         if (*ptr >= 'A' && *ptr <= 'Z')
  55.             *ptr |= 0x20;
  56.         }
  57.     }
  58.     if ((fi = fopen(av[i], "w")) == NULL) {
  59.         puts("Unable to open for write");
  60.         goto done;
  61.     }
  62.     printf("write ");
  63.     fflush(stdout);
  64.     if (fwrite(buf, len, 1, fi) != 1) {
  65.         puts("write failed");
  66.         goto done;
  67.     }
  68.     puts("ok");
  69. done:
  70.     fclose(fi);
  71.     free(buf);
  72.     }
  73. }
  74.  
  75. remcr(buf, len)
  76. register char *buf;
  77. register long len;
  78. {
  79.     register char *ptr = buf + len;
  80.     register long i, j;
  81.     for (i = j = 0; i < len; ++i) {
  82.     if (buf[i] == 13)
  83.         continue;
  84.     ptr[j++] = buf[i];
  85.     }
  86.     bmov(buf + len, buf, j);
  87.     return(j);
  88. }
  89.  
  90.