source: rtems-graphics-toolkit/fltk-1.1.10/test/fromdos.c @ 513eea1

Last change on this file since 513eea1 was 513eea1, checked in by Joel Sherrill <joel.sherrill@…>, on 01/09/10 at 22:43:24

2010-01-08 Joel Sherrill <joel.sherrill@…>

fltk 1.1.10. imported

  • ORIGIN: Updated.
  • Property mode set to 100644
File size: 1.5 KB
Line 
1/* fromdos.c : strip the stupid ^M characters without mistakes! */
2
3/* this can do in-place conversion or be used as a pipe... */
4
5#include <stdio.h>
6#include <errno.h>
7#include <unistd.h>
8#include <string.h>
9
10int main(int argc, char** argv) {
11  int f,c;
12  if (argc <= 1) {
13    if (isatty(0)) {
14      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]);
15      return 1;
16    }
17    for (;;) {
18      c = getchar();
19      while (c == '\r') {
20        c = getchar();
21        if (c != '\n') putchar(c);
22      }
23      if (c < 0) break;
24      putchar(c);
25    }
26    return 0;
27  }
28  for (f = 1; f < argc; f++) {
29    char* fname = argv[f];
30    char tempname[1024];
31    FILE* in = fopen(fname,"rb");
32    FILE* out;
33    int mod = 0;
34    if (!in) {
35      fprintf(stderr,"%s : %s\n", fname, strerror(errno));
36      return 1;
37    }
38    strcpy(tempname, fname);
39    strcat(tempname, ".temp");
40    out = fopen(tempname, "wb");
41    if (!out) {
42      fprintf(stderr,"%s : %s\n", fname, strerror(errno));
43      return 1;
44    }
45    for (;;) {
46      c = getc(in);
47      while (c == '\r') {
48        c = getc(in);
49        if (c == '\n') mod=1; else putc(c,out);
50      }
51      if (c < 0) break;
52      putc(c,out);
53    }
54    fclose(in);
55    fclose(out);
56    if (!mod) {
57      fprintf(stderr,"%s : no change\n", fname);
58      unlink(tempname);
59    } else if (rename(tempname, fname)) {
60      fprintf(stderr,"Can't mv %s %s : %s\n",tempname,fname,strerror(errno));
61      return 1;
62    }
63  }
64  return 0;
65}
Note: See TracBrowser for help on using the repository browser.