diff options
| -rw-r--r-- | src/pacman/conf.c | 48 | ||||
| -rw-r--r-- | src/pacman/conf.h | 16 | ||||
| -rw-r--r-- | src/pacman/pacman.c | 1 | 
3 files changed, 65 insertions, 0 deletions
| diff --git a/src/pacman/conf.c b/src/pacman/conf.c index dca6e3e1..815df95f 100644 --- a/src/pacman/conf.c +++ b/src/pacman/conf.c @@ -39,6 +39,43 @@  /* global config variable */  config_t *config = NULL; +#define NOCOLOR       "\033[0m" + +#define BLACK         "\033[0;30m" +#define RED           "\033[0;31m" +#define GREEN         "\033[0;32m" +#define YELLOW        "\033[0;33m" +#define BLUE          "\033[0;34m" +#define MAGENTA       "\033[0;35m" +#define CYAN          "\033[0;36m" +#define WHITE         "\033[0;37m" + +#define BOLDBLACK     "\033[1;30m" +#define BOLDRED       "\033[1;31m" +#define BOLDGREEN     "\033[1;32m" +#define BOLDYELLOW    "\033[1;33m" +#define BOLDBLUE      "\033[1;34m" +#define BOLDMAGENTA   "\033[1;35m" +#define BOLDCYAN      "\033[1;36m" +#define BOLDWHITE     "\033[1;37m" + +void enable_colors(int colors) +{ +	colstr_t *colstr = &config->colstr; + +	if(colors == PM_COLOR_ON) { +		colstr->colon   = BOLDBLUE "::" BOLDWHITE " "; +		colstr->title   = BOLDWHITE; +		colstr->repo    = BOLDMAGENTA; +		colstr->version = BOLDGREEN; +		colstr->groups  = BOLDBLUE; +		colstr->meta    = BOLDCYAN; +		colstr->warn    = BOLDYELLOW; +		colstr->err     = BOLDRED; +		colstr->nocolor = NOCOLOR; +	} +} +  config_t *config_new(void)  {  	config_t *newconfig = calloc(1, sizeof(config_t)); @@ -60,6 +97,16 @@ config_t *config_new(void)  		newconfig->remotefilesiglevel = ALPM_SIG_USE_DEFAULT;  	} +	newconfig->colstr.colon   = ":: "; +	newconfig->colstr.title   = ""; +	newconfig->colstr.repo    = ""; +	newconfig->colstr.version = ""; +	newconfig->colstr.groups  = ""; +	newconfig->colstr.meta    = ""; +	newconfig->colstr.warn    = ""; +	newconfig->colstr.err     = ""; +	newconfig->colstr.nocolor = ""; +  	return newconfig;  } @@ -439,6 +486,7 @@ static int _parse_options(const char *key, char *value,  		} else if(strcmp(key, "Color") == 0) {  			if(config->color == PM_COLOR_UNSET) {  				config->color = isatty(fileno(stdout)) ? PM_COLOR_ON : PM_COLOR_OFF; +				enable_colors(config->color);  			}  		} else {  			pm_printf(ALPM_LOG_WARNING, diff --git a/src/pacman/conf.h b/src/pacman/conf.h index 6cabd33e..dcd32040 100644 --- a/src/pacman/conf.h +++ b/src/pacman/conf.h @@ -22,6 +22,18 @@  #include <alpm.h> +typedef struct __colstr_t { +	const char *colon; +	const char *title; +	const char *repo; +	const char *version; +	const char *groups; +	const char *meta; +	const char *warn; +	const char *err; +	const char *nocolor; +} colstr_t; +  typedef struct __config_t {  	unsigned short op;  	unsigned short quiet; @@ -98,6 +110,9 @@ typedef struct __config_t {  	alpm_list_t *explicit_adds;  	alpm_list_t *explicit_removes; + +	/* Color strings for output */ +	colstr_t colstr;  } config_t;  /* Operations */ @@ -156,6 +171,7 @@ enum {  /* global config variable */  extern config_t *config; +void enable_colors(int colors);  config_t *config_new(void);  int config_free(config_t *oldconfig); diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index bb8b439f..a6ea14f7 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -407,6 +407,7 @@ static int parsearg_global(int opt)  						optarg, "--color");  				return 1;  			} +			enable_colors(config->color);  			break;  		case OP_CONFIG:  			check_optarg(); | 
