From 469a24b85da60871d717e09e7599c044edec4f25 Mon Sep 17 00:00:00 2001 From: Anthony Sterling Date: Mon, 2 May 2016 13:33:19 +0100 Subject: [PATCH] Added the `-f` flag to change the foreground color The `-f` flag enabling the selection of the following colors:- - white - yellow - black - magenta - blue - green - red By default the foreground is blue, as per the current implementation. --- README.md | 5 +++++ src/main.c | 5 ++++- src/nms.c | 42 +++++++++++++++++++++++++++++++++++++++++- src/nms.h | 6 +++++- 4 files changed, 55 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d1a14f2..83f6879 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,11 @@ eliminating the need for the user to press a key to start it. ls -l / | nms -a ``` +Use the `-f` option to set foreground color to either white, yellow, black, magenta, blue, green, or red - this is blue by default. +``` +ls -l / | nms -f green +``` + Using the Module in Your Program --------------------------------- diff --git a/src/main.c b/src/main.c index f472021..2101e12 100644 --- a/src/main.c +++ b/src/main.c @@ -12,8 +12,11 @@ int main(int argc, char *argv[]) { NmsArgs args = INIT_NMSARGS; // Processing command arguments - while ((o = getopt(argc, argv, "av")) != -1) { + while ((o = getopt(argc, argv, "f:av")) != -1) { switch (o) { + case 'f': + args.foreground_color = getColorByName(optarg, args.foreground_color); + break; case 'a': args.auto_decrypt = true; break; diff --git a/src/nms.c b/src/nms.c index 4de277c..7bfbd05 100644 --- a/src/nms.c +++ b/src/nms.c @@ -86,7 +86,7 @@ char nms_exec(NmsArgs *args) { // Setting up and starting colors if terminal supports them if (has_colors()) { start_color(); - init_pair(1, COLOR_BLUE, COLOR_BLACK); + init_pair(1, args->foreground_color, COLOR_BLACK); } // Get terminal window size @@ -284,3 +284,43 @@ char getMaskChar(void) { return maskChars[rand() % strlen(maskChars)]; } + +/* + * char getColorByName(char *string, int fallback) + * + * DESCR: + * Returns an ncurses color by its name. + * + */ +int getColorByName(char *string, int fallback) { + + if(strcmp("white", string) == 0) { + return COLOR_WHITE; + } + + if(strcmp("yellow", string) == 0) { + return COLOR_YELLOW; + } + + if(strcmp("black", string) == 0) { + return COLOR_BLACK; + } + + if(strcmp("magenta", string) == 0) { + return COLOR_MAGENTA; + } + + if(strcmp("blue", string) == 0) { + return COLOR_BLUE; + } + + if(strcmp("green", string) == 0) { + return COLOR_GREEN; + } + + if(strcmp("red", string) == 0) { + return COLOR_RED; + } + + return fallback; +} diff --git a/src/nms.h b/src/nms.h index e614aff..d8bec85 100644 --- a/src/nms.h +++ b/src/nms.h @@ -3,9 +3,10 @@ #include #include +#include // Default arguments for nms_exec() -#define INIT_NMSARGS { NULL, NULL, -1, -1, false, false } +#define INIT_NMSARGS { NULL, NULL, -1, -1, false, false , COLOR_BLUE } // Argument structure for nms_exec() typedef struct { @@ -15,9 +16,12 @@ typedef struct { int input_cursor_y; bool show_cursor; bool auto_decrypt; + int foreground_color; } NmsArgs; // Display the characters stored in the display queue char nms_exec(NmsArgs *); +int getColorByName(char *string, int fallback); + #endif