diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-04-02 17:02:01 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-04-02 17:02:01 +0200 |
| commit | 05ddf0f600904f4b5678687fd64a97838755457b (patch) | |
| tree | 83bd30b930f27e3a0425b83662a3dd2463673ea3 /misc/fromdos.c | |
| parent | e5c4c1415bff4ae5e08a7d1ec7cdcce3ba589eb2 (diff) | |
Move test/fromdos.c to misc/fromdos.c where it belongs
This is a test file for developers only. Use with caution.
Diffstat (limited to 'misc/fromdos.c')
| -rw-r--r-- | misc/fromdos.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/misc/fromdos.c b/misc/fromdos.c new file mode 100644 index 000000000..13450214c --- /dev/null +++ b/misc/fromdos.c @@ -0,0 +1,65 @@ +/* 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; +} |
