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.
This commit is contained in:
Anthony Sterling 2016-05-02 13:33:19 +01:00
parent e988dac87c
commit 469a24b85d
4 changed files with 55 additions and 3 deletions

View File

@ -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
---------------------------------

View File

@ -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;

View File

@ -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;
}

View File

@ -3,9 +3,10 @@
#include <stddef.h>
#include <stdbool.h>
#include <ncurses.h>
// 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