Bernhard Fischer trimmed down dos2unix a bit.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -35,28 +35,24 @@ | |
| #include <sys/time.h> | |
| #include "busybox.h" | |
| - | #define CT_AUTO 0 |
| #define CT_UNIX2DOS 1 | |
| #define CT_DOS2UNIX 2 | |
| /* We are making a lame pseudo-random string generator here. in | |
| * convert(), each pass through the while loop will add more and more | |
| * stuff into value, which is _supposed_ to wrap. We don't care about | |
| - | * it being accurate. We care about it being messy, since we then mod |
| - | * it by the sizeof(letters) and then use that as an index into letters |
| + | * it being accurate. We care about it being messy, since we use it |
| * to pick a random letter to add to out temporary file. */ | |
| typedef unsigned long int bb_uint64_t; | |
| - | static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; |
| - | |
| - | // if fn is NULL then input is stdin and output is stdout |
| + | /* if fn is NULL then input is stdin and output is stdout */ |
| static int convert(char *fn, int ConvType) | |
| { | |
| int c, fd; | |
| struct timeval tv; | |
| - | char tempFn[BUFSIZ]; |
| + | RESERVE_CONFIG_BUFFER(tempFn, BUFSIZ); |
| static bb_uint64_t value=0; | |
| - | FILE *in = stdin, *out = stdout; |
| + | FILE *in, *out; |
| if (fn != NULL) { | |
| in = bb_xfopen(fn, "rw"); | |
| @@ -73,7 +69,9 @@ static int convert(char *fn, int ConvType) | |
| * the input file... */ | |
| gettimeofday (&tv, NULL); | |
| value += ((bb_uint64_t) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid (); | |
| - | tempFn[++c] = letters[value % 62]; |
| + | tempFn[++c] = ((value%62) < 26)?(value%62)+97: |
| + | ((value%62) < 52)?(value%62)+39: |
| + | (value%62)-4; |
| tempFn[c+1] = '\0'; | |
| value /= 62; | |
| @@ -88,12 +86,16 @@ static int convert(char *fn, int ConvType) | |
| } | |
| break; | |
| } | |
| + | } else { |
| + | in = stdin; |
| + | out = stdout; |
| } | |
| while ((c = fgetc(in)) != EOF) { | |
| if (c == '\r') { | |
| if ((ConvType == CT_UNIX2DOS) && (fn != NULL)) { | |
| - | // file is alredy in DOS format so it is not necessery to touch it |
| + | /* file is already in DOS format so it is |
| + | * not necessary to touch it. */ |
| remove(tempFn); | |
| if (fclose(in) < 0 || fclose(out) < 0) { | |
| bb_perror_nomsg(); | |
| @@ -101,13 +103,12 @@ static int convert(char *fn, int ConvType) | |
| } | |
| return 0; | |
| } | |
| - | if (!ConvType) |
| - | ConvType = CT_DOS2UNIX; |
| break; | |
| } | |
| if (c == '\n') { | |
| if ((ConvType == CT_DOS2UNIX) && (fn != NULL)) { | |
| - | // file is alredy in UNIX format so it is not necessery to touch it |
| + | /* file is already in DOS format so it is |
| + | * not necessary to touch it. */ |
| remove(tempFn); | |
| if ((fclose(in) < 0) || (fclose(out) < 0)) { | |
| bb_perror_nomsg(); | |
| @@ -115,27 +116,21 @@ static int convert(char *fn, int ConvType) | |
| } | |
| return 0; | |
| } | |
| - | if (!ConvType) { |
| - | ConvType = CT_UNIX2DOS; |
| - | } |
| if (ConvType == CT_UNIX2DOS) { | |
| fputc('\r', out); | |
| } | |
| - | fputc('\n', out); |
| - | break; |
| } | |
| fputc(c, out); | |
| } | |
| - | if (c != EOF) |
| - | while ((c = fgetc(in)) != EOF) { |
| - | if (c == '\r') |
| - | continue; |
| - | if (c == '\n') { |
| - | if (ConvType == CT_UNIX2DOS) |
| - | fputc('\r', out); |
| - | fputc('\n', out); |
| - | continue; |
| - | } |
| + | while (c != EOF && (c = fgetc(in)) != EOF) { |
| + | if (c == '\r') |
| + | continue; |
| + | if (c == '\n') { |
| + | if (ConvType == CT_UNIX2DOS) |
| + | fputc('\r', out); |
| + | fputc('\n', out); |
| + | continue; |
| + | } |
| fputc(c, out); | |
| } | |
| @@ -160,30 +155,23 @@ static int convert(char *fn, int ConvType) | |
| int dos2unix_main(int argc, char *argv[]) | |
| { | |
| - | int ConvType = CT_AUTO; |
| + | int ConvType; |
| int o; | |
| - | //See if we are supposed to be doing dos2unix or unix2dos |
| + | /* See if we are supposed to be doing dos2unix or unix2dos */ |
| if (argv[0][0]=='d') { | |
| ConvType = CT_DOS2UNIX; | |
| - | } |
| - | if (argv[0][0]=='u') { |
| + | } else { |
| ConvType = CT_UNIX2DOS; | |
| } | |
| - | // process parameters |
| - | while ((o = getopt(argc, argv, "du")) != EOF) { |
| - | switch (o) { |
| - | case 'd': |
| - | ConvType = CT_UNIX2DOS; |
| - | break; |
| - | case 'u': |
| - | ConvType = CT_DOS2UNIX; |
| - | break; |
| - | default: |
| - | bb_show_usage(); |
| - | } |
| - | } |
| + | /* process parameters */ |
| + | o = bb_getopt_ulflags(argc, argv, "ud"); |
| + | |
| + | /* Do the conversion requested by an argument else do the default |
| + | * conversion depending on our name. */ |
| + | if (o) |
| + | ConvType = o; |
| if (optind < argc) { | |
| while(optind < argc) | |