/* Line Break Conversion by cppig1995 */ /* Jan 04, 2006 -- [cppig1995] */ #include #include enum { CONVERT_UNIX_WINDOWS, CONVERT_WINDOWS_UNIX }; int main(int argc, char *argv[]) { FILE *fi, *fo; char *fin, *fon; int c, t, o = 0; if(argc < 4) { printf("\nUsage : uwconv [Source] [Destination | /o] [/uw | /wu]\n"); printf("Convert Line Break Type Between LF-only <--> CR-LF\n\n"); printf("/o : Overwrite into Source file\n"); printf("/uw : UNIX(LF only) into DOS/Windows(CR/LF)\n"); printf("/wu : DOS/Windows(CR/LF) into UNIX(LF only)\n\n"); printf("If you pass more than 3 arguments,\n"); printf("Only 3 arguments from first will be recognized.\n"); printf("Else if you pass less than 3 arguments, you will " "see this help screen.\n\n"); printf("Exit Code 0 is Success. If else returned :\n"); printf("Code 1 : File I/O Error. Code 2 : Parameter Error.\n"); printf("Code 3 : Conversion Type Specification (/uw, /wu) " "is Wrong.\n\n"); printf("Please report bugs and send your ideas or questions " "to cppig1995@gmail.com\n"); return 2; } if(strcmp(argv[2], "/o")) fon = argv[2]; else { tmpnam(fon); o = 1; } if(!strcmp(argv[3], "/uw")) t = CONVERT_UNIX_WINDOWS; else if(!strcmp(argv[3], "/wu")) t = CONVERT_WINDOWS_UNIX; else return 3; fi = fopen(fin, "r"); fo = fopen(fon, "w"); if(!(fi && fo)) return 1; while((c = getc(fi)) != EOF) { if(t == CONVERT_UNIX_WINDOWS) { if(c == '\n') putc('\r', fo); putc(c, fo); } if(t == CONVERT_WINDOWS_UNIX) if(c != '\r') putc(c, fo); } if(o) { remove(fin); rename(fon, fin); } return 0; }