/* * dos2unix Version 0.1 * Bart Trzynadlowski, September 17, 2000 * Public domain */ /* * Converts ASCII DOS files to UNIX format by turning 13,10->10 * Usage: dos2unix [-v] * -v,-V prints version information * * Contact Bart Trzynadlowski: * Email: trzy@powernet.net * WWW: http://www.powernet.net/~trzy */ #include #include #include int main(int argc, char **argv) { FILE *fp; char *buf; int i, j, s; if (argc <= 1) { printf("dos2unix: No input file(s) specified\n"); exit(0); } else { for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-v") || !strcmp(argv[i], "-V")) { printf("dos2unix: Version 0.1, September 17, 2000\n"); exit(0); } } } for (i = 1; i < argc; i++) { if ((fp = fopen(argv[i], "rb")) == NULL) fprintf(stderr, "dos2unix: Warning: Failed to open \"%s\"\n", argv[i]); else { fseek(fp, 0, SEEK_END); fgetpos(fp, (void *) &s); /* get size */ rewind(fp); if ((buf = calloc(s + 1, sizeof(char))) == NULL) fprintf(stderr, "dos2unix: Warning: Not enough memory to load \"%s\"\n", argv[i]); else { fread(buf, sizeof(char), s, fp); fclose(fp); for (j = 0; j < s; j++) { if (buf[j] == 13 && buf[j + 1] == 10) { memmove(&buf[j + 1], &buf[j + 2], s - (j + 2)); buf[j] = 10; s--; } } if ((fp = fopen(argv[i], "wb")) == NULL) fprintf(stderr, "dos2unix: Warning: Failed to write back to \"%s\"\n", argv[i]); else fwrite(buf, sizeof(char), s, fp); free(buf); } } } return 0; }