Random #ifdefectomy.

Rob Landley rob at landley.net
Wed Jun 3 21:03:21 UTC 2009


Remove unnecessary #if statements from the "more", "script", and 
"scriptreplay" commands.  Bloatcheck says 0 bytes changed.

Also zapped INIT_G() while I was there, since it was dead code anyway.

diff --git a/util-linux/more.c b/util-linux/more.c
index b0f20c4..b9ba114 100644
--- a/util-linux/more.c
+++ b/util-linux/more.c
@@ -16,7 +16,7 @@
 
 #include "libbb.h"
 
-#if ENABLE_FEATURE_USE_TERMIOS
+// Support for FEATURE_USE_TERMIOS
 
 struct globals {
 	int cin_fileno;
@@ -24,12 +24,13 @@ struct globals {
 	struct termios new_settings;
 };
 #define G (*(struct globals*)bb_common_bufsiz1)
-#define INIT_G() ((void)0)
 #define initial_settings (G.initial_settings)
 #define new_settings     (G.new_settings    )
 #define cin_fileno       (G.cin_fileno      )
 
-#define setTermSettings(fd, argp) tcsetattr(fd, TCSANOW, argp)
+#define setTermSettings(fd, argp) do { \
+		if (ENABLE_FEATURE_USE_TERMIOS) tcsetattr(fd, TCSANOW, argp); \
+	} while(0)
 #define getTermSettings(fd, argp) tcgetattr(fd, argp)
 
 static void gotsig(int sig UNUSED_PARAM)
@@ -39,11 +40,6 @@ static void gotsig(int sig UNUSED_PARAM)
 	exit(EXIT_FAILURE);
 }
 
-#else /* !FEATURE_USE_TERMIOS */
-#define INIT_G() ((void)0)
-#define setTermSettings(fd, argp) ((void)0)
-#endif /* FEATURE_USE_TERMIOS */
-
 #define CONVERTED_TAB_SIZE 8
 
 int more_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -61,8 +57,6 @@ int more_main(int argc UNUSED_PARAM, char **argv)
 	unsigned terminal_width;
 	unsigned terminal_height;
 
-	INIT_G();
-
 	argv++;
 	/* Another popular pager, most, detects when stdout
 	 * is not a tty and turns into cat. This makes sense. */
@@ -72,21 +66,21 @@ int more_main(int argc UNUSED_PARAM, char **argv)
 	if (!cin)
 		return bb_cat(argv);
 
-#if ENABLE_FEATURE_USE_TERMIOS
-	cin_fileno = fileno(cin);
-	getTermSettings(cin_fileno, &initial_settings);
-	new_settings = initial_settings;
-	new_settings.c_lflag &= ~ICANON;
-	new_settings.c_lflag &= ~ECHO;
-	new_settings.c_cc[VMIN] = 1;
-	new_settings.c_cc[VTIME] = 0;
-	setTermSettings(cin_fileno, &new_settings);
-	bb_signals(0
-		+ (1 << SIGINT)
-		+ (1 << SIGQUIT)
-		+ (1 << SIGTERM)
-		, gotsig);
-#endif
+	if (ENABLE_FEATURE_USE_TERMIOS) {
+		cin_fileno = fileno(cin);
+		getTermSettings(cin_fileno, &initial_settings);
+		new_settings = initial_settings;
+		new_settings.c_lflag &= ~ICANON;
+		new_settings.c_lflag &= ~ECHO;
+		new_settings.c_cc[VMIN] = 1;
+		new_settings.c_cc[VTIME] = 0;
+		setTermSettings(cin_fileno, &new_settings);
+		bb_signals(0
+			+ (1 << SIGINT)
+			+ (1 << SIGQUIT)
+			+ (1 << SIGTERM)
+			, gotsig);
+	}
 
 	do {
 		file = stdin;
@@ -126,9 +120,8 @@ int more_main(int argc UNUSED_PARAM, char **argv)
 				for (;;) {
 					input = getc(cin);
 					input = tolower(input);
-#if !ENABLE_FEATURE_USE_TERMIOS
-					printf("\033[A"); /* up cursor */
-#endif
+					if (!ENABLE_FEATURE_USE_TERMIOS)
+						printf("\033[A"); /* up cursor */
 					/* Erase the last message */
 					printf("\r%*s\r", len, "");
 
@@ -150,10 +143,10 @@ int more_main(int argc UNUSED_PARAM, char **argv)
 
 				/* The user may have resized the terminal.
 				 * Re-read the dimensions. */
-#if ENABLE_FEATURE_USE_TERMIOS
-				get_terminal_width_height(cin_fileno, &terminal_width, &terminal_height);
-				terminal_height -= 1;
-#endif
+				if (ENABLE_FEATURE_USE_TERMIOS) {
+					get_terminal_width_height(cin_fileno, &terminal_width, &terminal_height);
+					terminal_height -= 1;
+				}
 			}
 
 			/* Crudely convert tabs into spaces, which are
diff --git a/util-linux/script.c b/util-linux/script.c
index d16a291..4e0deb4 100644
--- a/util-linux/script.c
+++ b/util-linux/script.c
@@ -33,24 +33,20 @@ int script_main(int argc UNUSED_PARAM, char **argv)
 		OPT_c = (1 << 1),
 		OPT_f = (1 << 2),
 		OPT_q = (1 << 3),
-#if ENABLE_SCRIPTREPLAY
 		OPT_t = (1 << 4),
-#endif
 	};
 
-#if ENABLE_GETOPT_LONG
 	static const char getopt_longopts[] ALIGN1 =
 		"append\0"  No_argument       "a"
 		"command\0" Required_argument "c"
 		"flush\0"   No_argument       "f"
 		"quiet\0"   No_argument       "q"
-# if ENABLE_SCRIPTREPLAY
-		"timing\0"  No_argument       "t"
-# endif
+		IF_SCRIPTREPLAY("timing\0"  No_argument       "t")
 		;
 
-	applet_long_options = getopt_longopts;
-#endif
+	if (ENABLE_GETOPT_LONG)
+		applet_long_options = getopt_longopts;
+
 	opt_complementary = "?1"; /* max one arg */
 	opt = getopt32(argv, "ac:fq" IF_SCRIPTREPLAY("t") , &shell_arg);
 	//argc -= optind;
@@ -101,9 +97,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
 #define buf bb_common_bufsiz1
 		struct pollfd pfd[2];
 		int outfd, count, loop;
-#if ENABLE_SCRIPTREPLAY
-		double oldtime = time(NULL);
-#endif
+		double oldtime = ENABLE_SCRIPTREPLAY ? time(NULL) : 0;
 		smallint fd_count = 2;
 
 		outfd = xopen(fname, mode);
@@ -132,8 +126,7 @@ int script_main(int argc UNUSED_PARAM, char **argv)
 					goto restore;
 				}
 				if (count > 0) {
-#if ENABLE_SCRIPTREPLAY
-					if (opt & OPT_t) {
+					if (ENABLE_SCRIPTREPLAY && (opt & OPT_t)) {
 						struct timeval tv;
 						double newtime;
 
@@ -142,7 +135,6 @@ int script_main(int argc UNUSED_PARAM, char **argv)
 						fprintf(stderr, "%f %u\n", newtime - oldtime, count);
 						oldtime = newtime;
 					}
-#endif
 					full_write(STDOUT_FILENO, buf, count);
 					full_write(outfd, buf, count);
 					if (opt & OPT_f) {
diff --git a/util-linux/scriptreplay.c b/util-linux/scriptreplay.c
index 038dbdf..6474d38 100644
--- a/util-linux/scriptreplay.c
+++ b/util-linux/scriptreplay.c
@@ -30,9 +30,9 @@ int scriptreplay_main(int argc UNUSED_PARAM, char **argv)
 		usleep(delay * factor);
 		bb_copyfd_exact_size(fd, STDOUT_FILENO, count);
 	}
-#if ENABLE_FEATURE_CLEAN_UP
-	close(fd);
-	fclose(tfp);
-#endif
+	if (ENABLE_FEATURE_CLEAN_UP) {
+		close(fd);
+		fclose(tfp);
+	}
 	return EXIT_SUCCESS;
 }

-- 
Latency is more important than throughput. It's that simple. - Linus Torvalds


More information about the busybox mailing list