svn commit: trunk/busybox: include miscutils networking procps

vda at busybox.net vda at busybox.net
Wed Mar 19 19:38:47 UTC 2008


Author: vda
Date: 2008-03-19 12:38:46 -0700 (Wed, 19 Mar 2008)
New Revision: 21403

Log:
*: s/BB_SIGS_FATAL/BB_FATAL_SIGS/ (latter proved easier to remember)
top: fix "top </dev/null" case (by Cristian Ionescu-Idbohrn)



Modified:
   trunk/busybox/include/libbb.h
   trunk/busybox/miscutils/less.c
   trunk/busybox/miscutils/watchdog.c
   trunk/busybox/networking/tcpudp.c
   trunk/busybox/procps/top.c


Changeset:
Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h	2008-03-19 16:24:17 UTC (rev 21402)
+++ trunk/busybox/include/libbb.h	2008-03-19 19:38:46 UTC (rev 21403)
@@ -278,7 +278,7 @@
 
 
 enum {
-	/* bb_signals(BB_SIGS_FATAL, handler) catches all signals which
+	/* bb_signals(BB_FATAL_SIGS, handler) catches all signals which
 	 * otherwise would kill us, except for those resulting from bugs:
 	 * SIGSEGV, SIGILL, SIGFPE.
 	 * Other fatal signals not included (TODO?):
@@ -288,7 +288,7 @@
 	 * SIGSYS   Bad argument to routine
 	 * SIGTRAP  Trace/breakpoint trap
 	 */
-	BB_SIGS_FATAL = 0
+	BB_FATAL_SIGS = 0
 		+ (1 << SIGHUP)
 		+ (1 << SIGINT)
 		+ (1 << SIGTERM)

Modified: trunk/busybox/miscutils/less.c
===================================================================
--- trunk/busybox/miscutils/less.c	2008-03-19 16:24:17 UTC (rev 21402)
+++ trunk/busybox/miscutils/less.c	2008-03-19 19:38:46 UTC (rev 21403)
@@ -1400,7 +1400,7 @@
 	term_less.c_cc[VTIME] = 0;
 
 	/* We want to restore term_orig on exit */
-	bb_signals(BB_SIGS_FATAL, sig_catcher);
+	bb_signals(BB_FATAL_SIGS, sig_catcher);
 
 	reinitialize();
 	while (1) {

Modified: trunk/busybox/miscutils/watchdog.c
===================================================================
--- trunk/busybox/miscutils/watchdog.c	2008-03-19 16:24:17 UTC (rev 21402)
+++ trunk/busybox/miscutils/watchdog.c	2008-03-19 19:38:46 UTC (rev 21403)
@@ -46,7 +46,7 @@
 		bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
 	}
 
-	bb_signals(BB_SIGS_FATAL, watchdog_shutdown);
+	bb_signals(BB_FATAL_SIGS, watchdog_shutdown);
 
 	/* Use known fd # - avoid needing global 'int fd' */
 	xmove_fd(xopen(argv[argc - 1], O_WRONLY), 3);

Modified: trunk/busybox/networking/tcpudp.c
===================================================================
--- trunk/busybox/networking/tcpudp.c	2008-03-19 16:24:17 UTC (rev 21402)
+++ trunk/busybox/networking/tcpudp.c	2008-03-19 19:38:46 UTC (rev 21403)
@@ -264,7 +264,7 @@
 
 	sig_block(SIGCHLD);
 	signal(SIGCHLD, sig_child_handler);
-	bb_signals(BB_SIGS_FATAL, sig_term_handler);
+	bb_signals(BB_FATAL_SIGS, sig_term_handler);
 	signal(SIGPIPE, SIG_IGN);
 
 	if (max_per_host)

Modified: trunk/busybox/procps/top.c
===================================================================
--- trunk/busybox/procps/top.c	2008-03-19 16:24:17 UTC (rev 21402)
+++ trunk/busybox/procps/top.c	2008-03-19 19:38:46 UTC (rev 21403)
@@ -108,10 +108,15 @@
 #define total_pcpu       (G.total_pcpu        )
 #define line_buf         (G.line_buf          )
 
+enum {
+	OPT_d = (1 << 0),
+	OPT_n = (1 << 1),
+	OPT_b = (1 << 2),
+	OPT_EOF = (1 << 3), /* pseudo: "we saw EOF in stdin" */
+};
+#define OPT_BATCH_MODE (option_mask32 & OPT_b)
 
-#define OPT_BATCH_MODE (option_mask32 & 0x4)
 
-
 #if ENABLE_FEATURE_USE_TERMIOS
 static int pid_sort(top_status_t *P, top_status_t *Q)
 {
@@ -165,7 +170,7 @@
 	if (fscanf(fp, "cpu  %lld %lld %lld %lld %lld %lld %lld %lld",
 			&jif.usr,&jif.nic,&jif.sys,&jif.idle,
 			&jif.iowait,&jif.irq,&jif.softirq,&jif.steal) < 4) {
-		bb_error_msg_and_die("failed to read /proc/stat");
+		bb_error_msg_and_die("can't read /proc/stat");
 	}
 	fclose(fp);
 	jif.total = jif.usr + jif.nic + jif.sys + jif.idle
@@ -506,7 +511,7 @@
 
 static void reset_term(void)
 {
-	tcsetattr(0, TCSANOW, (void *) &initial_settings);
+	tcsetattr(0, TCSANOW, &initial_settings);
 	if (ENABLE_FEATURE_CLEAN_UP) {
 		clearmems();
 #if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE
@@ -753,13 +758,13 @@
 
 	INIT_G();
 
-	interval = 5; /* default update rate is 5 seconds */
+	interval = 5; /* default update interval is 5 seconds */
 	iterations = 0; /* infinite */
 
-	/* do normal option parsing */
+	/* all args are options; -n NUM */
 	opt_complementary = "-:n+";
 	getopt32(argv, "d:n:b", &sinterval, &iterations);
-	if (option_mask32 & 0x1) {
+	if (option_mask32 & OPT_d) {
 		/* Need to limit it to not overflow poll timeout */
 		interval = xatou16(sinterval); // -d
 	}
@@ -772,12 +777,8 @@
 	/* unbuffered input, turn off echo */
 	new_settings.c_lflag &= ~(ISIG | ICANON | ECHO | ECHONL);
 
-	bb_signals(0
-		+ (1 << SIGTERM)
-		+ (1 << SIGINT)
-		, sig_catcher);
+	bb_signals(BB_FATAL_SIGS, sig_catcher);
 	tcsetattr(0, TCSANOW, (void *) &new_settings);
-	atexit(reset_term);
 #endif /* FEATURE_USE_TERMIOS */
 
 #if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE
@@ -794,7 +795,8 @@
 		lines = 24; /* default */
 		col = 79;
 #if ENABLE_FEATURE_USE_TERMIOS
-		get_terminal_width_height(0, &col, &lines);
+		/* We output to stdout, we need size of stdout (not stdin)! */
+		get_terminal_width_height(STDOUT_FILENO, &col, &lines);
 		if (lines < 5 || col < 10) {
 			sleep(interval);
 			continue;
@@ -839,9 +841,10 @@
 				topmem[n].stack    = p->stack;
 #endif
 			}
-		}
+		} /* end of "while we read /proc" */
 		if (ntop == 0) {
-			bb_error_msg_and_die("no process info in /proc");
+			bb_error_msg("no process info in /proc");
+			break;
 		}
 
 		if (scan_mask == TOP_MASK) {
@@ -875,9 +878,14 @@
 #if !ENABLE_FEATURE_USE_TERMIOS
 		sleep(interval);
 #else
-		if (safe_poll(pfd, 1, interval * 1000) > 0) {
-			if (read(0, &c, 1) != 1)    /* signal */
-				break;
+		if (option_mask32 & (OPT_b|OPT_EOF))
+			 /* batch mode, or EOF on stdin ("top </dev/null") */
+			sleep(interval);
+		else if (safe_poll(pfd, 1, interval * 1000) > 0) {
+			if (safe_read(0, &c, 1) != 1) { /* error/EOF? */
+				option_mask32 |= OPT_EOF;
+				continue;
+			}
 			if (c == initial_settings.c_cc[VINTR])
 				break;
 			c |= 0x20; /* lowercase */
@@ -922,7 +930,9 @@
 #endif
 		}
 #endif /* FEATURE_USE_TERMIOS */
-	}
+	} /* end of "while (1)" */
+
 	bb_putchar('\n');
+	reset_term();
 	return EXIT_SUCCESS;
 }




More information about the busybox-cvs mailing list