svn commit: trunk/busybox/coreutils

aldot at busybox.net aldot at busybox.net
Thu Jun 1 18:30:43 UTC 2006


Author: aldot
Date: 2006-06-01 11:30:42 -0700 (Thu, 01 Jun 2006)
New Revision: 15261

Log:
- look at bb_applet_name. Should close bugs #892 and #893
  also restructure code a bit so the fix only adds 1 byte..


Modified:
   trunk/busybox/coreutils/dos2unix.c


Changeset:
Modified: trunk/busybox/coreutils/dos2unix.c
===================================================================
--- trunk/busybox/coreutils/dos2unix.c	2006-06-01 14:36:14 UTC (rev 15260)
+++ trunk/busybox/coreutils/dos2unix.c	2006-06-01 18:30:42 UTC (rev 15261)
@@ -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 @@
 
 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 @@
 		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;
 }




More information about the busybox-cvs mailing list