diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2012-11-04 10:16:30 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-11-04 10:16:30 +0100 |
commit | 9cb91579643c106f08b1e862fcd6ffdb56bc4041 (patch) | |
tree | acc1662e2a96c12d9e91bb3a206ab9b86d894713 | |
parent | 14883d64dde384fc0d671d33c058fbdb3aa8bb11 (diff) | |
download | bluez-9cb91579643c106f08b1e862fcd6ffdb56bc4041.tar.gz |
monitor: Use global file for display settings
-rw-r--r-- | Makefile.tools | 2 | ||||
-rw-r--r-- | monitor/control.c | 6 | ||||
-rw-r--r-- | monitor/display.c (renamed from monitor/pager.c) | 41 | ||||
-rw-r--r-- | monitor/display.h (renamed from monitor/pager.h) | 8 | ||||
-rw-r--r-- | monitor/packet.c | 12 |
5 files changed, 43 insertions, 26 deletions
diff --git a/Makefile.tools b/Makefile.tools index 07eeeacfc..a2c9d9e2b 100644 --- a/Makefile.tools +++ b/Makefile.tools @@ -47,8 +47,8 @@ tools_btmgmt_SOURCES = tools/btmgmt.c src/glib-helper.c src/eir.c tools_btmgmt_LDADD = lib/libbluetooth-private.la @GLIB_LIBS@ monitor_btmon_SOURCES = monitor/main.c monitor/bt.h \ - monitor/pager.h monitor/pager.c \ monitor/mainloop.h monitor/mainloop.c \ + monitor/display.h monitor/display.c \ monitor/hcidump.h monitor/hcidump.c \ monitor/btsnoop.h monitor/btsnoop.c \ monitor/control.h monitor/control.c \ diff --git a/monitor/control.c b/monitor/control.c index 638d1733e..95582a4c4 100644 --- a/monitor/control.c +++ b/monitor/control.c @@ -40,7 +40,7 @@ #include <bluetooth/mgmt.h> #include "mainloop.h" -#include "pager.h" +#include "display.h" #include "packet.h" #include "btsnoop.h" #include "control.h" @@ -779,7 +779,7 @@ void control_reader(const char *path) if (btsnoop_open(path) < 0) return; - pager_open(); + open_pager(); while (1) { if (btsnoop_read(&tv, &index, &opcode, buf, &pktlen) < 0) @@ -788,7 +788,7 @@ void control_reader(const char *path) packet_monitor(&tv, index, opcode, buf, pktlen); } - pager_close(); + close_pager(); btsnoop_close(); } diff --git a/monitor/pager.c b/monitor/display.c index f24eca7af..7b6fc98ef 100644 --- a/monitor/pager.c +++ b/monitor/display.c @@ -34,11 +34,39 @@ #include <signal.h> #include <sys/wait.h> #include <sys/prctl.h> +#include <sys/ioctl.h> -#include "pager.h" +#include "display.h" static pid_t pager_pid = 0; +bool use_color(void) +{ + static int cached_use_color = -1; + + if (__builtin_expect(!!(cached_use_color < 0), 0)) + cached_use_color = isatty(STDOUT_FILENO) > 0 || pager_pid > 0; + + return cached_use_color; +} + +int num_columns(void) +{ + static int cached_num_columns = -1; + + if (__builtin_expect(!!(cached_num_columns < 0), 0)) { + struct winsize ws; + + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0) + return -1; + + if (ws.ws_col > 0) + cached_num_columns = ws.ws_col; + } + + return cached_num_columns; +} + static void close_pipe(int p[]) { if (p[0] >= 0) @@ -64,7 +92,7 @@ static void wait_for_terminate(pid_t pid) } } -void pager_open(void) +void open_pager(void) { const char *pager; pid_t parent_pid; @@ -82,6 +110,8 @@ void pager_open(void) if (!(isatty(STDOUT_FILENO) > 0)) return; + num_columns(); + if (pipe(fd) < 0) { perror("Failed to create pager pipe"); return; @@ -128,7 +158,7 @@ void pager_open(void) close_pipe(fd); } -void pager_close(void) +void close_pager(void) { if (pager_pid <= 0) return; @@ -138,8 +168,3 @@ void pager_close(void) wait_for_terminate(pager_pid); pager_pid = 0; } - -bool pager_have(void) -{ - return pager_pid > 0; -} diff --git a/monitor/pager.h b/monitor/display.h index 041eb74dd..2740f7699 100644 --- a/monitor/pager.h +++ b/monitor/display.h @@ -24,6 +24,8 @@ #include <stdbool.h> -void pager_open(void); -void pager_close(void); -bool pager_have(void); +bool use_color(void); +int num_columns(void); + +void open_pager(void); +void close_pager(void); diff --git a/monitor/packet.c b/monitor/packet.c index fd9e66372..8daa15309 100644 --- a/monitor/packet.c +++ b/monitor/packet.c @@ -40,7 +40,7 @@ #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> -#include "pager.h" +#include "display.h" #include "bt.h" #include "l2cap.h" #include "control.h" @@ -75,16 +75,6 @@ #define COLOR_HCI_ACLDATA COLOR_CYAN #define COLOR_HCI_SCODATA COLOR_YELLOW -static bool use_color(void) -{ - static int cached_use_color = -1; - - if (__builtin_expect(!!(cached_use_color < 0), 0)) - cached_use_color = isatty(STDOUT_FILENO) > 0 || pager_have(); - - return cached_use_color; -} - #define print_text(color, fmt, args...) do { \ printf("%s" fmt "%s", \ use_color() ? color : "", ## args, \ |