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

  1.  
  2. /*
  3.  *  ADDCR.C
  4.  *
  5.  *  ADDCR [-l] file1 file2 ... filen
  6.  *
  7.  *  -l = convert filenames to lower case on writeout.
  8.  */
  9.  
  10. #include <stdio.h>
  11.  
  12. extern char *malloc();
  13.  
  14. main(ac,av)
  15. char *av[];
  16. {
  17.     register short i;
  18.     FILE *fi;
  19.     long len;
  20.     char *buf;
  21.     char *wbuf;
  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*3)) == 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.     wbuf = buf + len;
  51.     len = addcr(buf, len);
  52.     if (clower) {
  53.         register char *ptr;
  54.         for (ptr = av[i]; *ptr; ++ptr) {
  55.         if (*ptr >= 'A' && *ptr <= 'Z')
  56.             *ptr |= 0x20;
  57.         }
  58.     }
  59.     if ((fi = fopen(av[i], "w")) == NULL) {
  60.         puts("Unable to open for write");
  61.         goto done;
  62.     }
  63.     printf("write ");
  64.     fflush(stdout);
  65.     if (fwrite(wbuf, len, 1, fi) != 1) {
  66.         puts("write failed");
  67.         goto done;
  68.     }
  69.     puts("ok");
  70. done:
  71.     fclose(fi);
  72.     free(buf);
  73.     }
  74. }
  75.  
  76. addcr(buf, len)
  77. register char *buf;
  78. register long len;
  79. {
  80.     register char *ptr = buf + len;
  81.     register long i, j;
  82.     for (i = j = 0; i < len; ++i) {
  83.     if (buf[i] == 13)
  84.         continue;
  85.     if (buf[i] != 10) {
  86.         ptr[j++] = buf[i];
  87.         continue;
  88.     }
  89.     ptr[j++] = 13;
  90.     ptr[j++] = 10;
  91.     }
  92.     return(j);
  93. }
  94.  
  95.