Diff between f6441b238c9aff5b6b3bdc3fe865ba61706eb394 and ad05009dd992dee229634e033a007f002a6da4d5

Changed Files

File Additions Deletions Status
monitor/display.c +7 -1 modified
monitor/display.h +1 -0 modified
monitor/main.c +7 -1 modified

Full Patch

diff --git a/monitor/display.c b/monitor/display.c
index b11b71d..4e5693b 100644
--- a/monitor/display.c
+++ b/monitor/display.c
@@ -28,6 +28,7 @@
 #include "display.h"
 
 static pid_t pager_pid = 0;
+int default_pager_num_columns = FALLBACK_TERMINAL_WIDTH;
 
 bool use_color(void)
 {
@@ -39,6 +40,11 @@ bool use_color(void)
 	return cached_use_color;
 }
 
+void set_default_pager_num_columns(int num_columns)
+{
+	default_pager_num_columns = num_columns;
+}
+
 int num_columns(void)
 {
 	static int cached_num_columns = -1;
@@ -48,7 +54,7 @@ int num_columns(void)
 
 		if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0 ||
 								ws.ws_col == 0)
-			cached_num_columns = FALLBACK_TERMINAL_WIDTH;
+			cached_num_columns = default_pager_num_columns;
 		else
 			cached_num_columns = ws.ws_col;
 	}
diff --git a/monitor/display.h b/monitor/display.h
index f3a614b..cba39ec 100644
--- a/monitor/display.h
+++ b/monitor/display.h
@@ -73,6 +73,7 @@ static inline uint64_t print_bitfield(int indent, uint64_t val,
 	return mask;
 }
 
+void set_default_pager_num_columns(int num_columns);
 int num_columns(void);
 
 void open_pager(void);
diff --git a/monitor/main.c b/monitor/main.c
index 0f5eb4a..969c881 100644
--- a/monitor/main.c
+++ b/monitor/main.c
@@ -30,6 +30,7 @@
 #include "analyze.h"
 #include "ellisys.h"
 #include "control.h"
+#include "display.h"
 
 static void signal_callback(int signum, void *user_data)
 {
@@ -67,6 +68,7 @@ static void usage(void)
 		"\t                       Read data from RTT\n"
 		"\t-R  --rtt [<address>],[<area>],[<name>]\n"
 		"\t                       RTT control block parameters\n"
+		"\t-C, --columns [width]  Output width if not a terminal\n"
 		"\t-h, --help             Show help options\n");
 }
 
@@ -90,6 +92,7 @@ static const struct option main_options[] = {
 	{ "no-pager",  no_argument,       NULL, 'P' },
 	{ "jlink",     required_argument, NULL, 'J' },
 	{ "rtt",       required_argument, NULL, 'R' },
+	{ "columns",   required_argument, NULL, 'C' },
 	{ "todo",      no_argument,       NULL, '#' },
 	{ "version",   no_argument,       NULL, 'v' },
 	{ "help",      no_argument,       NULL, 'h' },
@@ -121,7 +124,7 @@ int main(int argc, char *argv[])
 		struct sockaddr_un addr;
 
 		opt = getopt_long(argc, argv,
-					"r:w:a:s:p:i:d:B:V:MNtTSAE:PJ:R:vh",
+					"r:w:a:s:p:i:d:B:V:MNtTSAE:PJ:R:C:vh",
 					main_options, NULL);
 		if (opt < 0)
 			break;
@@ -205,6 +208,9 @@ int main(int argc, char *argv[])
 		case 'R':
 			rtt = optarg;
 			break;
+		case 'C':
+			set_default_pager_num_columns(atoi(optarg));
+			break;
 		case '#':
 			packet_todo();
 			lmp_todo();