]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add smaller banner for teeny tiny terminals
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 24 Sep 2012 19:59:02 +0000 (14:59 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 24 Sep 2012 19:59:09 +0000 (14:59 -0500)
build/cc.sh [new file with mode: 0644]
cc.sh
cluecon2_small.tmpl [new file with mode: 0644]
cluecon_small.tmpl [new file with mode: 0644]
libs/esl/fs_cli.c
libs/esl/src/include/cc.h
src/include/cc.h
src/switch_core.c

diff --git a/build/cc.sh b/build/cc.sh
new file mode 100644 (file)
index 0000000..2eb7634
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+s=(`stty size`)
+c=${s[1]}
+
+
+if [ $c -gt 99 ] ; then
+    cat ../cluecon2.tmpl
+else
+    cat ../cluecon2_small.tmpl
+fi
diff --git a/cc.sh b/cc.sh
index 85ab418e26be880a7ef939bfd3b3b1316b565a01..323b877db80996b7388246af532847931cf755a7 100755 (executable)
--- a/cc.sh
+++ b/cc.sh
@@ -1,8 +1,10 @@
 cc=`cat cluecon.tmpl | sed 's/\\\\/\\\\\\\\/g' | awk '{printf "%s\\\\n", $0}' `
+cc_s=`cat cluecon_small.tmpl | sed 's/\\\\/\\\\\\\\/g' | awk '{printf "%s\\\\n", $0}' `
 
 cat <<EOF > src/include/cc.h
 
 const char *cc = "$cc";
+const char *cc_s = "$cc_s";
 
 EOF
 
diff --git a/cluecon2_small.tmpl b/cluecon2_small.tmpl
new file mode 100644 (file)
index 0000000..7e81f07
--- /dev/null
@@ -0,0 +1,10 @@
+\e[01;44;33m
+.===============================================================.
+|       _                                                       |
+|   ___| |_   _  ___  ___ ___  _ __         ___ ___  _ __ ___   |
+|  / __| | | | |/ _ \/ __/ _ \| '_ \       / __/ _ \| '_ ` _ \  |
+| | (__| | |_| |  __/ (_| (_) | | | |  _  | (_| (_) | | | | | | |
+|  \___|_|\__,_|\___|\___\___/|_| |_| (_)  \___\___/|_| |_| |_| |
+|                                                               |
+.===============================================================.
+\e[0m
diff --git a/cluecon_small.tmpl b/cluecon_small.tmpl
new file mode 100644 (file)
index 0000000..e6ceb6d
--- /dev/null
@@ -0,0 +1,8 @@
+.===============================================================.
+|       _                                                       |
+|   ___| |_   _  ___  ___ ___  _ __         ___ ___  _ __ ___   |
+|  / __| | | | |/ _ \/ __/ _ \| '_ \       / __/ _ \| '_ ` _ \  |
+| | (__| | |_| |  __/ (_| (_) | | | |  _  | (_| (_) | | | | | | |
+|  \___|_|\__,_|\___|\___\___/|_| |_| (_)  \___\___/|_| |_| |_| |
+|                                                               |
+.===============================================================.
index 95629da76e3eeb75e129de890c61f1cbdfdbbe0c..bde78f183bd99703574df4e5e4bdf9821f62e2de 100644 (file)
@@ -116,6 +116,31 @@ static void clear_cli(void) {
        fflush(stdout);
 }
 
+static void screen_size(int *x, int *y)
+{
+
+#ifdef WIN32
+       CONSOLE_SCREEN_BUFFER_INFO csbi;
+       int ret;
+
+       if ((ret = GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ), &csbi))) {
+               if (x) *x = csbi.dwSize.X;
+               if (y) *y = csbi.dwSize.Y;
+       }
+
+#elif TIOCGWINSZ
+       struct winsize w;
+       ioctl(0, TIOCGWINSZ, &w);
+
+       if (x) *x = w.ws_col;
+       if (y) *y = w.ws_row;
+#else
+       if (x) *x = 24;
+       if (x) *x = 80;
+#endif
+
+}
+
 /* If a fnkey is configured then process the command */
 static unsigned char console_fnkey_pressed(int i)
 {
@@ -923,13 +948,19 @@ static const char *inf = "Type /help <enter> to see a list of commands\n\n\n";
 
 static void print_banner(FILE *stream)
 {
+       int x;
+       const char *use = NULL;
 #include <cc.h>
 
+       screen_size(&x, NULL);
+
+       use = (x > 100) ? cc : cc_s;
+
 #ifdef WIN32
        /* Print banner in yellow with blue background */
        SetConsoleTextAttribute(hStdout, ESL_SEQ_FYELLOW | BACKGROUND_BLUE);
        WriteFile(hStdout, banner, (DWORD) strlen(banner), NULL, NULL);
-       WriteFile(hStdout, cc, (DWORD) strlen(cc), NULL, NULL);
+       WriteFile(hStdout, use, (DWORD) strlen(use), NULL, NULL);
        SetConsoleTextAttribute(hStdout, wOldColorAttrs);
 
        /* Print the rest info in default colors */
@@ -940,10 +971,14 @@ static void print_banner(FILE *stream)
                        ESL_SEQ_DEFAULT_COLOR,
                        ESL_SEQ_FYELLOW, ESL_SEQ_BBLUE,
                        banner,
-                       cc, ESL_SEQ_DEFAULT_COLOR, inf);
+                       use, ESL_SEQ_DEFAULT_COLOR, inf);
 
        fprintf(stream, "%s", output_text_color);
 #endif
+
+       if (x < 160) {
+               fprintf(stream, "\n[This app Best viewed at 160x60 or more..]\n");
+       }
 }
 
 static void set_fn_keys(cli_profile_t *profile)
index 44666193c615e0a9f6ae398e4c690b20b6feeac0..965aa9cbacd97552d1a5d04ff64d9c6b8b92dd53 100644 (file)
@@ -1,2 +1,4 @@
+
 const char *cc = ".========================================================================================================.\n|    ____                       _____        ____ _             ____              _ _ _____              |\n|   / ___|___  _ __ ___   ___  |_   _|__    / ___| |_   _  ___ / ___|___  _ __   ( ) |___ /              |\n|  | |   / _ \\| '_ ` _ \\ / _ \\   | |/ _ \\  | |   | | | | |/ _ \\ |   / _ \\| '_ \\  |/| | |_ \\              |\n|  | |__| (_) | | | | | |  __/   | | (_) | | |___| | |_| |  __/ |__| (_) | | | |   | |___) |             |\n|   \\____\\___/|_| |_| |_|\\___|   |_|\\___/   \\____|_|\\__,_|\\___|\\____\\___/|_| |_|   |_|____/              |\n|                                                                                                        |\n|    ____ _     _                          _   _ ____    _                                               |\n|   / ___| |__ (_) ___ __ _  __ _  ___    | | | / ___|  / \\                                              |\n|  | |   | '_ \\| |/ __/ _` |/ _` |/ _ \\   | | | \\___ \\ / _ \\                                             |\n|  | |___| | | | | (_| (_| | (_| | (_) |  | |_| |___) / ___ \\                                            |\n|   \\____|_| |_|_|\\___\\__,_|\\__, |\\___( )  \\___/|____/_/   \\_\\                                           |\n|                           |___/     |/                                                                 |\n|      _                         _      __   _   _                ___  _   _       ____   ___  _ _____   |\n|     / \\  _   _  __ _ _   _ ___| |_   / /_ | |_| |__            ( _ )| |_| |__   |___ \\ / _ \\/ |___ /   |\n|    / _ \\| | | |/ _` | | | / __| __| | '_ \\| __| '_ \\   _____   / _ \\| __| '_ \\    __) | | | | | |_ \\   |\n|   / ___ \\ |_| | (_| | |_| \\__ \\ |_  | (_) | |_| | | | |_____| | (_) | |_| | | |  / __/| |_| | |___) |  |\n|  /_/   \\_\\__,_|\\__, |\\__,_|___/\\__|  \\___/ \\__|_| |_|          \\___/ \\__|_| |_| |_____|\\___/|_|____/   |\n|                |___/                                                                                   |\n|                                           _                                                            |\n|  __      ____      ____      __       ___| |_   _  ___  ___ ___  _ __         ___ ___  _ __ ___        |\n|  \\ \\ /\\ / /\\ \\ /\\ / /\\ \\ /\\ / /      / __| | | | |/ _ \\/ __/ _ \\| '_ \\       / __/ _ \\| '_ ` _ \\       |\n|   \\ V  V /  \\ V  V /  \\ V  V /   _  | (__| | |_| |  __/ (_| (_) | | | |  _  | (_| (_) | | | | | |      |\n|    \\_/\\_/    \\_/\\_/    \\_/\\_/   (_)  \\___|_|\\__,_|\\___|\\___\\___/|_| |_| (_)  \\___\\___/|_| |_| |_|      |\n|                                                                                                        |\n.========================================================================================================.\n";
+const char *cc_s = ".===============================================================.\n|       _                                                       |\n|   ___| |_   _  ___  ___ ___  _ __         ___ ___  _ __ ___   |\n|  / __| | | | |/ _ \\/ __/ _ \\| '_ \\       / __/ _ \\| '_ ` _ \\  |\n| | (__| | |_| |  __/ (_| (_) | | | |  _  | (_| (_) | | | | | | |\n|  \\___|_|\\__,_|\\___|\\___\\___/|_| |_| (_)  \\___\\___/|_| |_| |_| |\n|                                                               |\n.===============================================================.\n";
 
index 44666193c615e0a9f6ae398e4c690b20b6feeac0..965aa9cbacd97552d1a5d04ff64d9c6b8b92dd53 100644 (file)
@@ -1,2 +1,4 @@
+
 const char *cc = ".========================================================================================================.\n|    ____                       _____        ____ _             ____              _ _ _____              |\n|   / ___|___  _ __ ___   ___  |_   _|__    / ___| |_   _  ___ / ___|___  _ __   ( ) |___ /              |\n|  | |   / _ \\| '_ ` _ \\ / _ \\   | |/ _ \\  | |   | | | | |/ _ \\ |   / _ \\| '_ \\  |/| | |_ \\              |\n|  | |__| (_) | | | | | |  __/   | | (_) | | |___| | |_| |  __/ |__| (_) | | | |   | |___) |             |\n|   \\____\\___/|_| |_| |_|\\___|   |_|\\___/   \\____|_|\\__,_|\\___|\\____\\___/|_| |_|   |_|____/              |\n|                                                                                                        |\n|    ____ _     _                          _   _ ____    _                                               |\n|   / ___| |__ (_) ___ __ _  __ _  ___    | | | / ___|  / \\                                              |\n|  | |   | '_ \\| |/ __/ _` |/ _` |/ _ \\   | | | \\___ \\ / _ \\                                             |\n|  | |___| | | | | (_| (_| | (_| | (_) |  | |_| |___) / ___ \\                                            |\n|   \\____|_| |_|_|\\___\\__,_|\\__, |\\___( )  \\___/|____/_/   \\_\\                                           |\n|                           |___/     |/                                                                 |\n|      _                         _      __   _   _                ___  _   _       ____   ___  _ _____   |\n|     / \\  _   _  __ _ _   _ ___| |_   / /_ | |_| |__            ( _ )| |_| |__   |___ \\ / _ \\/ |___ /   |\n|    / _ \\| | | |/ _` | | | / __| __| | '_ \\| __| '_ \\   _____   / _ \\| __| '_ \\    __) | | | | | |_ \\   |\n|   / ___ \\ |_| | (_| | |_| \\__ \\ |_  | (_) | |_| | | | |_____| | (_) | |_| | | |  / __/| |_| | |___) |  |\n|  /_/   \\_\\__,_|\\__, |\\__,_|___/\\__|  \\___/ \\__|_| |_|          \\___/ \\__|_| |_| |_____|\\___/|_|____/   |\n|                |___/                                                                                   |\n|                                           _                                                            |\n|  __      ____      ____      __       ___| |_   _  ___  ___ ___  _ __         ___ ___  _ __ ___        |\n|  \\ \\ /\\ / /\\ \\ /\\ / /\\ \\ /\\ / /      / __| | | | |/ _ \\/ __/ _ \\| '_ \\       / __/ _ \\| '_ ` _ \\       |\n|   \\ V  V /  \\ V  V /  \\ V  V /   _  | (__| | |_| |  __/ (_| (_) | | | |  _  | (_| (_) | | | | | |      |\n|    \\_/\\_/    \\_/\\_/    \\_/\\_/   (_)  \\___|_|\\__,_|\\___|\\___\\___/|_| |_| (_)  \\___\\___/|_| |_| |_|      |\n|                                                                                                        |\n.========================================================================================================.\n";
+const char *cc_s = ".===============================================================.\n|       _                                                       |\n|   ___| |_   _  ___  ___ ___  _ __         ___ ___  _ __ ___   |\n|  / __| | | | |/ _ \\/ __/ _ \\| '_ \\       / __/ _ \\| '_ ` _ \\  |\n| | (__| | |_| |  __/ (_| (_) | | | |  _  | (_| (_) | | | | | | |\n|  \\___|_|\\__,_|\\___|\\___\\___/|_| |_| (_)  \\___\\___/|_| |_| |_| |\n|                                                               |\n.===============================================================.\n";
 
index 30b94232c465e088963e0d839530a9802e563a87..a747a9dc2771f773c104db681eaf9b4bf0e4227f 100644 (file)
@@ -186,6 +186,31 @@ SWITCH_DECLARE(FILE *) switch_core_get_console(void)
        return runtime.console;
 }
 
+SWITCH_DECLARE(void) switch_core_screen_size(int *x, int *y)
+{
+
+#ifdef WIN32
+       CONSOLE_SCREEN_BUFFER_INFO csbi;
+       int ret;
+
+       if ((ret = GetConsoleScreenBufferInfo(GetStdHandle( STD_OUTPUT_HANDLE ), &csbi))) {
+               if (x) *x = csbi.dwSize.X;
+               if (y) *y = csbi.dwSize.Y;
+       }
+
+#elif TIOCGWINSZ
+       struct winsize w;
+       ioctl(0, TIOCGWINSZ, &w);
+
+       if (x) *x = w.ws_col;
+       if (y) *y = w.ws_row;
+#else
+       if (x) *x = 24;
+       if (x) *x = 80;
+#endif
+
+}
+
 SWITCH_DECLARE(FILE *) switch_core_data_channel(switch_text_channel_t channel)
 {
        FILE *handle = stdout;
@@ -1964,6 +1989,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_init_and_modload(switch_core_flag_t
 {
        switch_event_t *event;
        char *cmd;
+       int x = 0;
+       const char *use = NULL;
 #include "cc.h"
 
 
@@ -2000,14 +2027,19 @@ SWITCH_DECLARE(switch_status_t) switch_core_init_and_modload(switch_core_flag_t
                switch_event_fire(&event);
        }
 
+       switch_core_screen_size(&x, NULL);
+
+       use = (x > 100) ? cc : cc_s;
+
 #ifdef WIN32
-       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%s%s\n\n", switch_core_banner(), cc);
+       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%s%s\n\n", switch_core_banner(), use);
 #else
        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%s%s%s%s%s%s\n\n", 
                                          SWITCH_SEQ_DEFAULT_COLOR,
                                          SWITCH_SEQ_FYELLOW, SWITCH_SEQ_BBLUE,
                                          switch_core_banner(), 
-                                         cc, SWITCH_SEQ_DEFAULT_COLOR);
+                                         use, SWITCH_SEQ_DEFAULT_COLOR);
+       
 #endif
 
 
@@ -2017,6 +2049,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_init_and_modload(switch_core_flag_t
                                          switch_core_session_limit(0),
                                          switch_core_sessions_per_second(0), switch_test_flag((&runtime), SCF_USE_SQL) ? "Enabled" : "Disabled");
 
+
+       if (x < 160) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "\n[This app Best viewed at 160x60 or more..]\n");
+       }
+
        switch_clear_flag((&runtime), SCF_NO_NEW_SESSIONS);
 
        if ((cmd = switch_core_get_variable_dup("api_on_startup"))) {