- look at bb_applet_name. Should close bugs #892 and #893 also restructure code a bit so the fix only adds 1 byte..
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)
| @@ -1,3 +1,4 @@ | |
| + | /* vi: set sw=4 ts=4: */ |
| /* | |
| * dos2unix for BusyBox | |
| * | |
| @@ -8,7 +9,7 @@ | |
| * | |
| * dos2unix filters reading input from stdin and writing output to stdout. | |
| * | |
| - | * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. |
| + | * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. |
| */ | |
| #include <string.h> | |
| @@ -17,68 +18,69 @@ | |
| #include <fcntl.h> | |
| #include "busybox.h" | |
| - | #define CT_UNIX2DOS 1 |
| - | #define CT_DOS2UNIX 2 |
| - | #define tempFn bb_common_bufsiz1 |
| + | enum ConvType { |
| + | CT_UNIX2DOS = 1, |
| + | CT_DOS2UNIX |
| + | } ConvType; |
| /* if fn is NULL then input is stdin and output is stdout */ | |
| - | static int convert(char *fn, int ConvType) |
| + | static int convert(char *fn) |
| { | |
| - | int c, fd; |
| FILE *in, *out; | |
| + | int i; |
| if (fn != NULL) { | |
| in = bb_xfopen(fn, "rw"); | |
| /* | |
| - | The file is then created with mode read/write and |
| - | permissions 0666 for glibc 2.0.6 and earlier or |
| - | 0600 for glibc 2.0.7 and later. |
| - | */ |
| - | snprintf(tempFn, sizeof(tempFn), "%sXXXXXX", fn); |
| + | The file is then created with mode read/write and |
| + | permissions 0666 for glibc 2.0.6 and earlier or |
| + | 0600 for glibc 2.0.7 and later. |
| + | */ |
| + | snprintf(bb_common_bufsiz1, sizeof(bb_common_bufsiz1), "%sXXXXXX", fn); |
| /* | |
| - | sizeof tempFn is 4096, so it should be big enough to hold the full |
| - | path. however if the output is truncated the subsequent call to |
| - | mkstemp would fail. |
| - | */ |
| - | if ((fd = mkstemp(&tempFn[0])) == -1 || chmod(tempFn, 0600) == -1) { |
| + | sizeof bb_common_bufsiz1 is 4096, so it should be big enough to |
| + | hold the full path. However if the output is truncated the |
| + | subsequent call to mkstemp would fail. |
| + | */ |
| + | if ((i = mkstemp(&bb_common_bufsiz1[0])) == -1 |
| + | || chmod(bb_common_bufsiz1, 0600) == -1) { |
| bb_perror_nomsg_and_die(); | |
| } | |
| - | out = fdopen(fd, "w+"); |
| + | out = fdopen(i, "w+"); |
| if (!out) { | |
| - | close(fd); |
| - | remove(tempFn); |
| + | close(i); |
| + | remove(bb_common_bufsiz1); |
| } | |
| } else { | |
| in = stdin; | |
| out = stdout; | |
| } | |
| - | while ((c = fgetc(in)) != EOF) { |
| - | if (c == '\r') |
| + | while ((i = fgetc(in)) != EOF) { |
| + | if (i == '\r') |
| continue; | |
| - | if (c == '\n') { |
| + | if (i == '\n') { |
| if (ConvType == CT_UNIX2DOS) | |
| fputc('\r', out); | |
| fputc('\n', out); | |
| continue; | |
| } | |
| - | fputc(c, out); |
| + | fputc(i, out); |
| } | |
| if (fn != NULL) { | |
| if (fclose(in) < 0 || fclose(out) < 0) { | |
| bb_perror_nomsg(); | |
| - | remove(tempFn); |
| + | remove(bb_common_bufsiz1); |
| return -2; | |
| - | } |
| - | |
| + | } |
| /* Assume they are both on the same filesystem (which | |
| - | * should be true since we put them into the same directory |
| - | * so we _should_ be ok, but you never know... */ |
| - | if (rename(tempFn, fn) < 0) { |
| - | bb_perror_msg("cannot rename '%s' as '%s'", tempFn, fn); |
| + | * should be true since we put them into the same directory |
| + | * so we _should_ be ok, but you never know... */ |
| + | if (rename(bb_common_bufsiz1, fn) < 0) { |
| + | bb_perror_msg("cannot rename '%s' as '%s'", bb_common_bufsiz1, fn); |
| return -1; | |
| - | } |
| + | } |
| } | |
| return 0; | |
| @@ -86,14 +88,13 @@ static int convert(char *fn, int ConvType) | |
| int dos2unix_main(int argc, char *argv[]) | |
| { | |
| - | int ConvType; |
| int o; | |
| /* See if we are supposed to be doing dos2unix or unix2dos */ | |
| - | if (argv[0][0]=='d') { |
| - | ConvType = CT_DOS2UNIX; /*2*/ |
| + | if (bb_applet_name[0] == 'd') { |
| + | ConvType = CT_DOS2UNIX; /*2 */ |
| } else { | |
| - | ConvType = CT_UNIX2DOS; /*1*/ |
| + | ConvType = CT_UNIX2DOS; /*1 */ |
| } | |
| /* -u and -d are mutally exclusive */ | |
| bb_opt_complementally = "?:u--d:d--u"; | |
| @@ -108,12 +109,11 @@ int dos2unix_main(int argc, char *argv[]) | |
| ConvType = o; | |
| if (optind < argc) { | |
| - | while(optind < argc) |
| - | if ((o = convert(argv[optind++], ConvType)) < 0) |
| + | while (optind < argc) |
| + | if ((o = convert(argv[optind++])) < 0) |
| break; | |
| - | } |
| - | else |
| - | o = convert(NULL, ConvType); |
| + | } else |
| + | o = convert(NULL); |
| return o; | |
| } | |