Skip to content
Snippets Groups Projects
Select Git revision
  • 75faece7bbd83701a1ac41d00cf971c5f74050dc
  • master default protected
  • 0.19.X
  • discrete
  • 0.18.X
  • ignore_lambda_to_diff_errors
  • 0.17.X
  • authors-update
  • 0.16.X
  • 0.15.X
  • 0.14.X
  • debian
  • 0.13.X
  • 0.12.X
  • 0.11.X
  • 0.10.X
  • 0.9.X
  • 0.6.X
  • 0.7.X
  • 0.8.X
  • 0.19.1
  • 0.19.0
  • 0.19b2
  • 0.19b1
  • 0.19-branching
  • 0.18.2
  • 0.18.1
  • 0.18
  • 0.18rc2
  • 0.18rc1
  • 0.18rc
  • 0.17.1-1
  • 0.17.1
  • debian/0.17.0-4
  • debian/0.17.0-3
  • debian/0.17.0-1
  • 0.17
  • debian/0.17.0_b1+git14-g4e6829c-1
  • debian/0.17.0_b1-1
  • 0.17b1
40 results

index.rst

Blame
  • fromdos.c 1.52 KiB
    /* fromdos.c : strip the stupid ^M characters without mistakes! */
    
    /* this can do in-place conversion or be used as a pipe... */
    
    #include <stdio.h>
    #include <errno.h>
    #include <unistd.h>
    #include <string.h>
    
    int main(int argc, char** argv) {
      int f,c;
      if (argc <= 1) {
        if (isatty(0)) {
          fprintf(stderr,"usage : %s <files>\nStrips ^M characters.\nCan do in-place conversion of many files or can be used in a pipe\n",argv[0]);
          return 1;
        }
        for (;;) {
          c = getchar();
          while (c == '\r') {
            c = getchar();
            if (c != '\n') putchar(c);
          }
          if (c < 0) break;
          putchar(c);
        }
        return 0;
      }
      for (f = 1; f < argc; f++) {
        char* fname = argv[f];
        char tempname[1024];
        FILE* in = fopen(fname,"rb");
        FILE* out;
        int mod = 0;
        if (!in) {
          fprintf(stderr,"%s : %s\n", fname, strerror(errno));
          return 1;
        }
        strcpy(tempname, fname);
        strcat(tempname, ".temp");
        out = fopen(tempname, "wb");
        if (!out) {
          fprintf(stderr,"%s : %s\n", fname, strerror(errno));
          return 1;
        }
        for (;;) {
          c = getc(in);
          while (c == '\r') {
            c = getc(in);
            if (c == '\n') mod=1; else putc(c,out);
          }
          if (c < 0) break;
          putc(c,out);
        }
        fclose(in);
        fclose(out);
        if (!mod) {
          fprintf(stderr,"%s : no change\n", fname);
          unlink(tempname);
        } else if (rename(tempname, fname)) {
          fprintf(stderr,"Can't mv %s %s : %s\n",tempname,fname,strerror(errno));
          return 1;
        }
      }
      return 0;
    }