diff options
author | Bernhard Reutner-Fischer | 2006-06-01 18:30:42 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer | 2006-06-01 18:30:42 +0000 |
commit | b5353a20f3226ab7ff939db8691b0d826d6e6428 (patch) | |
tree | 555500dbeaafcaca8359ee04b2c078f1de7c2b51 | |
parent | d04e9b813092162b59016ce10976fb91851b5f85 (diff) | |
download | busybox-b5353a20f3226ab7ff939db8691b0d826d6e6428.zip busybox-b5353a20f3226ab7ff939db8691b0d826d6e6428.tar.gz |
- look at bb_applet_name. Should close bugs #892 and #893
also restructure code a bit so the fix only adds 1 byte..
-rw-r--r-- | coreutils/dos2unix.c | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/coreutils/dos2unix.c b/coreutils/dos2unix.c index cf98c4f..5bf16e5 100644 --- a/coreutils/dos2unix.c +++ b/coreutils/dos2unix.c @@ -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; } |