summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormbornet-hl <mbornet.pro@wanadoo.fr>2015-09-10 20:28:47 +0200
committermbornet-hl <mbornet.pro@wanadoo.fr>2015-09-10 20:28:47 +0200
commite3a4277bfadd4ee70b573304e0cbc1b4f3a48fcf (patch)
tree180614f4896ed84406802330c4ffd6cf09a06b4d
parentae2a91c3d410552f897e2e3ef5d0d9289ee1bd94 (diff)
downloadhl-e3a4277bfadd4ee70b573304e0cbc1b4f3a48fcf.zip
hl-e3a4277bfadd4ee70b573304e0cbc1b4f3a48fcf.tar.gz
hl-e3a4277bfadd4ee70b573304e0cbc1b4f3a48fcf.tar.bz2
hl now manages /etc/default/hl config file.
-rw-r--r--man1/hl.116
-rw-r--r--src/.hl.cfg409
-rw-r--r--src/cr_cpri.h3
-rw-r--r--src/cr_main.c332
-rwxr-xr-xsrc/hlbin36120 -> 36120 bytes
5 files changed, 331 insertions, 429 deletions
diff --git a/man1/hl.1 b/man1/hl.1
index 120dec4..9bceb1e 100644
--- a/man1/hl.1
+++ b/man1/hl.1
@@ -1,5 +1,5 @@
-.\" @(#) [MB] cr_hl.1 Version 1.7 du 15/09/04 -
-.TH "HL" "1" "July 2015" "" "User Commands"
+.\" @(#) [MB] cr_hl.1 Version 1.9 du 15/09/10 -
+.TH "HL" "1" "September 2015" "" "User Commands"
.SH "NAME"
hl - Colorize strings matching regular expressions
.SH "SYNOPSIS"
@@ -159,9 +159,11 @@ Colorize the output of the \fBcal\fP command with the first three month in brigh
.SH "FILES"
.TP
-The \fBhl\fP command can use a configuration file named \fB$HOME/.hl.cfg\fP .
+Since version 1.57, the default configuration for \fBhl\fP is \fB/etc/default/hl\fP . This configuration file is common to all users.
+But each user can define his own configurations in his own \fB$HOME/.hl.cfg\fP configuration file.
+Users' configurations have the precedence over default configurations.
-Its recognized syntax is :
+Their recognized syntax is :
- comment lines (beginning with a '#'),
@@ -224,13 +226,15 @@ hl :
.EE
.SH "MAN PAGE VERSION"
-The version of this man page is 1.7.
-It is compatible with hl version 1.42 and upper.
+The version of this man page is 1.9.
+It is compatible with hl version 1.57 and upper.
.SH "AUTHOR"
.PP
The original version of this manual page was written by Martial Bornet
<mbornet (.) pro (at) wanadoo (.) fr> for the \fBGNU/Linux\fP system.
+The author also can be contacted with <man (.) flashnux (at) gmail (.) com>.
+
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU GPL.
diff --git a/src/.hl.cfg b/src/.hl.cfg
index 8b4974e..cc90a58 100644
--- a/src/.hl.cfg
+++ b/src/.hl.cfg
@@ -1,5 +1,5 @@
#
-# @(#) [MB] cr_.hl.cfg Version 1.25 du 15/09/07 -
+# @(#) [MB] cr_.hl.cfg Version 1.27 du 15/09/10 -
#
acl :
@@ -18,15 +18,15 @@ apt :
# Just for fun : C syntax, close to vim's
C :
- -e
- -%c '/\*'
- -. '\*/'
- -g '\<(void|bool|char|int|long|unsigned|float|double|struct|enum)\>'
- -y '\<(sizeof|switch|case|default|for|while|if|else|[0-9]|stderr|stdout)\>'
- -m '(\\n|\\r|\\b)'
- -y '".*"'
- -m '^[ ]*#[a-zA-Z]+'
- -y '^[ ]*#include[ ]+(<.*>|".*")'
+ -e
+ -%c '/\*'
+ -. '\*/'
+ -g '\<(void|bool|char|int|long|unsigned|float|double|struct|enum)\>'
+ -y '\<(sizeof|switch|case|default|for|while|if|else|[0-9]|stderr|stdout)\>'
+ -m '(\\n|\\r|\\b)'
+ -y '".*"'
+ -m '^[ ]*#[a-zA-Z]+'
+ -y '^[ ]*#include[ ]+(<.*>|".*")'
cal :
-e
@@ -181,10 +181,10 @@ ethtool :
-g 'duplex:.*full|link detected:.*yes|speed:.*1000mb/s'
eth_VIP :
- -e
- -3
- -%c '(eth[0-9]+(\.[0-9]+){0,1}:[0-9]+)'
- -. '^$'
+ -e
+ -3
+ -%c '(eth[0-9]+(\.[0-9]+){0,1}:[0-9]+)'
+ -. '^$'
fail2ban :
-e
@@ -193,23 +193,23 @@ fail2ban :
fdisk :
-e
- -b 'Device Boot.*'
- -3w 'Disk.*(/dev/sd.)'
- -2
- -c '.*/dev/sda.*'
- -%c 'Disk /dev/sda'
- -. '^$'
- -g '.*/dev/sdb.*'
- -%g 'Disk /dev/sdb'
- -. '^$'
- -y '.*/dev/sdc.*'
- -%y 'Disk /dev/sdc'
- -. '^$'
- -m '.*/dev/sdd.*'
- -%m 'Disk /dev/sdd'
- -. '^$'
- -b '.*Device.*'
- -1G '.*/dev/sde.*'
+ -b 'Device Boot.*'
+ -3w 'Disk.*(/dev/sd.)'
+ -2
+ -c '.*/dev/sda.*'
+ -%c 'Disk /dev/sda'
+ -. '^$'
+ -g '.*/dev/sdb.*'
+ -%g 'Disk /dev/sdb'
+ -. '^$'
+ -y '.*/dev/sdc.*'
+ -%y 'Disk /dev/sdc'
+ -. '^$'
+ -m '.*/dev/sdd.*'
+ -%m 'Disk /dev/sdd'
+ -. '^$'
+ -b '.*Device.*'
+ -1G '.*/dev/sde.*'
free :
-e
@@ -273,13 +273,13 @@ hl_usage :
-w '(-w .*)'
hosts :
- -e
- -b '#.*'
- -1R '^([ ]+)[0-9.]'
- -2g '^[ ]*\<((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\>'
+ -e
+ -b '#.*'
+ -1R '^([ ]+)[0-9.]'
+ -2g '^[ ]*\<((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\>'
-3r '(([0-9]{1,3}\.){3}[0-9]{1,3})'
- -3c '^[ ]*[0-9.]+[ ]+([^ ]+)'
- -2y '^[ ]*[0-9.]+[ ]+[^ ]+(.+)'
+ -3c '^[ ]*[0-9.]+[ ]+([^ ]+)'
+ -2y '^[ ]*[0-9.]+[ ]+[^ ]+(.+)'
ifconfig :
-ei
@@ -295,7 +295,7 @@ IP :
--validate_IP
ip :
- -e
+ -e
-3g '\<((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\>'
iptables :
@@ -349,36 +349,36 @@ man :
-3b '(Example .*):'
namei :
- -e
- -3c '.* -> .*'
- -2b '^ *d .*'
- -3g '^ *- .*'
- -y '^f: .*'
- -r '^( *? .*|.* No such file or directory.*)'
+ -e
+ -3c '.* -> .*'
+ -2b '^ *d .*'
+ -3g '^ *- .*'
+ -y '^f: .*'
+ -r '^( *? .*|.* No such file or directory.*)'
netstat :
-ei
- -g 'ESTABLISHED'
- -1y 'LISTEN'
- -m 'TIME_WAIT'
+ -g 'ESTABLISHED'
+ -1y 'LISTEN'
+ -m 'TIME_WAIT'
-g '\<((192.168.[0-9]{1,3}\.[0-9]{1,3}))\>'
-b '\<((127\.[01]\.[01]\.[01])|(0\.0\.0\.0))\>'
-r '\<(([0-9]{1,3}\.){3}[0-9]{1,3})\>'
passwd :
- -e
- -c '^[^:]+'
- -m '^[^:]+:([^:]+):'
- -y '^[^:]+:[^:]+:([^:]+:[^:]+):'
- -c '^([^:]*:){4}([^:]+)'
- -g '^([^:]*:){5}([^:]+)'
- -y '^([^:]*:){6}([^:]+)'
+ -e
+ -c '^[^:]+'
+ -m '^[^:]+:([^:]+):'
+ -y '^[^:]+:[^:]+:([^:]+:[^:]+):'
+ -c '^([^:]*:){4}([^:]+)'
+ -g '^([^:]*:){5}([^:]+)'
+ -y '^([^:]*:){6}([^:]+)'
passwd_chk :
- -e
- -G '^([^:]+):.*(/bin/false)$'
- -R '^([^:]+).*:(/bin/bash)$'
- --passwd
+ -e
+ -G '^([^:]+):.*(/bin/false)$'
+ -R '^([^:]+).*:(/bin/bash)$'
+ --passwd
percent :
-e
@@ -394,6 +394,17 @@ ps_cpu :
-c '00:00:0[1-9] .*'
-b '00:00:00 .*'
+ps_cpu_time :
+ -e
+ -3
+ -r '((0[1-9]|[1-9][0-9])(:[0-9]{2}){2} .*)'
+ -y '(00:(0[1-9]|[1-9][0-9]):[0-9]{2} .*)'
+ -c '(00:00:[1-9][0-9] .*)'
+
+# Alias de ps_cpu_time :
+ps :
+ --ps_cpu_time
+
rev_color_names :
-R 'red'
-G 'green'
@@ -459,12 +470,12 @@ virsh_list :
-y '.*paused'
w :
- -e
- -b '.*load average.*|^USER.*'
- -r '^root .*'
- -c ' /bin/bash'
- -y ' /usr/bin/python'
- -g '.+'
+ -e
+ -b '.*load average.*|^USER.*'
+ -r '^root .*'
+ -c ' /bin/bash'
+ -y ' /usr/bin/python'
+ -g '.+'
xxd :
-e
@@ -473,251 +484,107 @@ xxd :
-g '.{16}$'
-c '[[:xdigit:]]'
-za0 :
- -e
- -r '.* 0$'
- -g '.'
-
-za_conf :
- -ei
- -b '[ ]*#.*'
- -g '^[-_.[:alnum:]]+[ ]*:|-C[ ]+[-_.[:alnum:]]+'
- -C '<db::'
- -c '[-[:alnum:]]+:[^ ]+'
- -m '[ ](-[-_[:alnum:]]+|--[-_[:alnum:]]+)'
- -r '-M[ ]+(fs|users|rpm|dpkg|sysconf)'
- -y '(-o|--html-out)[ ]+[^ ]+'
- -w '(--title|--label)[ ]+[^ ]+'
-
-za_usage :
- -e
- -3c '\-M ([^:].*)'
- -3y '^--module .*'
- -3y '^--[^ ]+'
- -2g '\--[^ ]+'
- -3b ' -.\ '
- -3m ':(.+)'
-
-# For test purposes :
-# ~~~~~~~~~~~~~~~~~~~
-alpha :
- -e
- -y 'alpha|ALPHA'
-
-beta :
- -e
- -b 'beta|BETA'
-
-alphabeta :
- --alpha
- --beta
-
-alpha2 :
- -e
- -y 'alpha|ALPHA'
- --beta
-
-beta :
- -e
- -b 'beta|BETA'
-
-alphabeta :
- --alpha
- --beta
-
-alphabeta2 :
- --alpha2
-
-col_dupl :
- -e
- -r 'a'
- -g 'ab'
- -r 'abc'
- -c 'abcd'
-
-#
-# Range :
-# 0 => 124661
-# 124662 => 249323
-# 249324 => 415538
-#
-free_used_swap :
- -e
- -g '\<[0-9]\>'
- -g '\<[1-9][0-9]\>'
- -g '\<[1-9][0-9]{2}\>'
- -g '\<[1-9][0-9]{3}\>'
- -g '\<[1-9][0-9]{4}\>'
- -g '\<1[01][0-9]{4}\>'
- -g '\<12[0-3][0-9]{3}\>'
- -g '\<124[0-5][0-9]{2}\>'
- -g '\<1246[0-5][0-9]\>'
- -g '\<12466[0-1]\>'
- -Er '.'
-
-swap :
- -e
- -g '\<[0-9]\>'
- -y '\<[1-9][0-9]\>'
- -b '\<[1-9][0-9]{2}\>'
- -m '\<[1-9][0-9]{3}\>'
- -c '\<[1-9][0-9]{4}\>'
- -w '\<[1-9][0-9]{5}\>'
- -R '\<1[0-9]{6}\>'
- -G '\<2[0-4][0-9]{5}\>'
- -Y '\<250[0-9]{4}\>'
- -B '\<251[0-5][0-9]{3}\>'
- -M '\<2516[0][0-9]{2}\>'
- -C '\<25161[0-4][0-9]\>'
- -W '\<2516150\>'
- -Er '.'
-
-p :
- -e
- -g 'Swap: +[0-9]+ +(\<[0-9]\>)'
- -g 'Swap: +[0-9]+ +(\<[1-9][0-9]\>)'
- -g 'Swap: +[0-9]+ +(\<[1-9][0-9]{2}\>)'
- -g 'Swap: +[0-9]+ +(\<[1-9][0-9]{3}\>)'
- -g 'Swap: +[0-9]+ +(\<[1-9][0-9]{4}\>)'
- -g 'Swap: +[0-9]+ +(\<[1-9][0-9]{5}\>)'
- -g 'Swap: +[0-9]+ +(\<1[0-9]{6}\>)'
- -g 'Swap: +[0-9]+ +(\<2[0-4][0-9]{5}\>)'
- -g 'Swap: +[0-9]+ +(\<250[0-9]{4}\>)'
- -g 'Swap: +[0-9]+ +(\<251[0-5][0-9]{3}\>)'
- -g 'Swap: +[0-9]+ +(\<2516[0][0-9]{2}\>)'
- -g 'Swap: +[0-9]+ +(\<25161[0-4][0-9]\>)'
- -g 'Swap: +[0-9]+ +(\<2516150\>)'
- -y 'Swap: +[0-9]+ +(\<251615[1-9]\>)'
- -y 'Swap: +[0-9]+ +(\<25161[6-9][0-9]\>)'
- -y 'Swap: +[0-9]+ +(\<2516[2-9][0-9]{2}\>)'
- -g 'Swap: +[0-9]+ +(\<251[7-9][0-9]{3}\>)'
- -b 'Swap: +[0-9]+ +(\<25[2-9][0-9]{4}\>)'
- -W 'Swap: +[0-9]+ +(\<2[6-7][0-9]{5}\>)'
- -C 'Swap: +[0-9]+ +(\<28[0-6][0-9]{4}\>)'
- -B 'Swap: +[0-9]+ +(\<287[0-3][0-9]{3}\>)'
- -Y 'Swap: +[0-9]+ +(\<2874[0-7][0-9]{2}\>)'
- -G 'Swap: +[0-9]+ +(\<28748[0-5][0-9]\>)'
- -R 'Swap: +[0-9]+ +(\<287486[0-6]\>)'
- -r 'Swap: +[0-9]+ +(\<[0-9]+\>)'
-
-test :
- -e
- -R '^\(1\): (1)'
- -r '^ 1 : (<red> .{3})'
- -R '^\(2\): [^1]*(1)'
- -R '^\(2\): .*(2)'
- -R '^\(2\): .*(1)'
- -r '^ 2 : (</red>) [^<]* (<red>.+</red>)'
-
hi_red :
- -e
- -3
- -r '.+'
+ -e
+ -3
+ -r '.+'
hi_green :
- -e
- -3
- -g '.+'
+ -e
+ -3
+ -g '.+'
hi_yellow :
- -e
- -3
- -y '.+'
+ -e
+ -3
+ -y '.+'
hi_blue :
- -e
- -3
- -b '.+'
+ -e
+ -3
+ -b '.+'
hi_magenta :
- -e
- -3
- -m '.+'
+ -e
+ -3
+ -m '.+'
hi_cyan :
- -e
- -3
- -c '.+'
+ -e
+ -3
+ -c '.+'
hi_white :
- -e
- -3
- -w '.+'
+ -e
+ -3
+ -w '.+'
dim_red :
- -e
- -1
- -r '.+'
+ -e
+ -1
+ -r '.+'
dim_green :
- -e
- -1
- -g '.+'
+ -e
+ -1
+ -g '.+'
dim_yellow :
- -e
- -1
- -y '.+'
+ -e
+ -1
+ -y '.+'
dim_blue :
- -e
- -1
- -b '.+'
+ -e
+ -1
+ -b '.+'
dim_magenta :
- -e
- -1
- -m '.+'
+ -e
+ -1
+ -m '.+'
dim_cyan :
- -e
- -1
- -c '.+'
+ -e
+ -1
+ -c '.+'
dim_white :
- -e
- -1
- -w '.+'
+ -e
+ -1
+ -w '.+'
red :
- -e
- -2
- -r '.+'
+ -e
+ -2
+ -r '.+'
green :
- -e
- -2
- -g '.+'
+ -e
+ -2
+ -g '.+'
yellow :
- -e
- -2
- -y '.+'
+ -e
+ -2
+ -y '.+'
blue :
- -e
- -2
- -b '.+'
+ -e
+ -2
+ -b '.+'
magenta :
- -e
- -2
- -m '.+'
+ -e
+ -2
+ -m '.+'
cyan :
- -e
- -2
- -c '.+'
+ -e
+ -2
+ -c '.+'
white :
- -e
- -2
- -w '.+'
-
-esc0m :
- -e
- -2b '^.{7}'
- -3y '.\[0m'
- -2r '1b5b 306d'
- -2r '1b 5b30 6d'
- -3b '.{16}$'
+ -e
+ -2
+ -w '.+'
diff --git a/src/cr_cpri.h b/src/cr_cpri.h
index 6f3b885..57abd09 100644
--- a/src/cr_cpri.h
+++ b/src/cr_cpri.h
@@ -22,7 +22,7 @@
*
* File : cr_cpri.h
*
- * @(#) [MB] cr_cpri.h Version 1.23 du 15/08/26 -
+ * @(#) [MB] cr_cpri.h Version 1.24 du 15/09/10 -
*
* ============================================================================
*/
@@ -35,6 +35,7 @@
#include <regex.h>
#define CR_CONFIG_FILENAME ".hl.cfg"
+#define CR_DEFLT_CONFIG_FILE "/etc/default/hl"
#define bool int
#define FALSE (0)
diff --git a/src/cr_main.c b/src/cr_main.c
index 808f326..451e233 100644
--- a/src/cr_main.c
+++ b/src/cr_main.c
@@ -20,13 +20,14 @@
*
* File : cr_main.c
*
- * @(#) [MB] cr_main.c Version 1.55 du 15/09/07 -
+ * @(#) [MB] cr_main.c Version 1.57 du 15/09/10 -
*
* Functions in this file :
* ~~~~~~~~~~~~~~~~~~~~~~~~
* - cr_list2argv
* - cr_lists2argv
* - cr_read_config_file
+ * - cr_read_config_files
* - cr_new_config
* - cr_new_arg
* - cr_new_args
@@ -39,6 +40,7 @@
* - cr_getopt
* - cr_set_args
* - cr_add_to_list
+ * - cr_clear_marker_flags
* - cr_add_regexp
* - main
* - cr_usage
@@ -49,11 +51,13 @@
* - cr_add_config
* - cr_add_arg
* - cr_free_re
+ * - cr_marker2color
+ * - cr_set_desc
* - cr_read_input
* - cr_start_color
* - cr_end_color
* - cr_init_desc
- * - cr_set_desc
+ * - cr_same_colors
* - cr_disp_line
* ============================================================================
*/
@@ -124,9 +128,39 @@ void cr_lists2argv(struct cr_configs *configs)
CR_READ_CONFIG_FILE
******************************************************************************/
-void cr_read_config_file()
+void cr_read_config_file(char *cfg_file)
+{
+ if (access(cfg_file, 0) != 0) {
+#if 0
+ fprintf(stderr, "%s: config file \"%s\" does not exist !\n",
+ G.prgname, cfg_file);
+ exit(1);
+#else
+ return;
+#endif
+ }
+
+ if ((yyin = fopen(cfg_file, "r")) == NULL) {
+ fprintf(stderr, "%s: cannot open \"%s\" !\n",
+ G.prgname, cfg_file);
+ perror("fopen");
+ exit(1);
+ }
+
+ yylex();
+
+// cr_lists2argv(&G.configs);
+}
+
+/******************************************************************************
+
+ CR_READ_CONFIG_FILES
+
+******************************************************************************/
+void cr_read_config_files(void)
{
- char *_home, _cfg_file[1024];
+ int _size;
+ char *_home, *_cfg_file;
if (G.config_file_read) {
return;
@@ -137,21 +171,17 @@ void cr_read_config_file()
exit(1);
}
- sprintf(_cfg_file, "%s/%s", _home, CR_CONFIG_FILENAME);
- if (access(_cfg_file, 0) != 0) {
- fprintf(stderr, "%s: config file \"%s\" does not exist !\n",
- G.prgname, _cfg_file);
+ _size = strlen(_home) + 1 + sizeof(CR_CONFIG_FILENAME);
+ if ((_cfg_file = malloc(_size)) == NULL) {
+ fprintf(stderr, cr_err_malloc, G.prgname);
exit(1);
}
- if ((yyin = fopen(_cfg_file, "r")) == NULL) {
- fprintf(stderr, "%s: cannot open \"%s\" !\n",
- G.prgname, _cfg_file);
- perror("fopen");
- exit(1);
- }
+ sprintf(_cfg_file, "%s/%s", _home, CR_CONFIG_FILENAME);
- yylex();
+ cr_read_config_file(_cfg_file);
+
+ cr_read_config_file(CR_DEFLT_CONFIG_FILE);
cr_lists2argv(&G.configs);
@@ -225,7 +255,7 @@ struct cr_config *cr_get_config(char *config_name, struct cr_args *args)
struct cr_config *_config;
if (!G.config_file_read) {
- cr_read_config_file();
+ cr_read_config_files();
}
for (_config = args->configs->extract; _config != 0;
@@ -461,7 +491,7 @@ void cr_add_to_list(struct cr_re_desc *re)
/******************************************************************************
- CR_CLEAR_MARKER_FLAGS
+ CR_CLEAR_MARKER_FLAGS
******************************************************************************/
inline void cr_clear_marker_flags(void)
@@ -496,7 +526,7 @@ void cr_add_regexp(int color, char *regexp)
cr_add_to_list(_re);
G.last_RE = _re;
- G.last_color = color;
+ G.last_color = color;
}
else {
_re = G.last_RE;
@@ -511,7 +541,7 @@ void cr_add_regexp(int color, char *regexp)
cr_clear_marker_flags();
G.last_RE = 0;
- G.last_color = 0;
+ G.last_color = 0;
}
}
@@ -550,7 +580,7 @@ int main(int argc, char *argv[])
break;
case 'H':
- cr_read_config_file();
+ cr_read_config_files();
cr_usage(TRUE);
break;
@@ -643,7 +673,7 @@ int main(int argc, char *argv[])
break;
case 'V':
- fprintf(stderr, "%s: version %s\n", G.prgname, "1.55");
+ fprintf(stderr, "%s: version %s\n", G.prgname, "1.57");
exit(1);
break;
@@ -690,13 +720,13 @@ int main(int argc, char *argv[])
cr_start_color(&_re->col);
printf("%s", _re->regex[0]);
cr_end_color(NULL);
- printf("\n");
+ printf("\n");
if (_re->regex[1]) {
printf(" => ");
cr_start_color(&_re->col);
printf("%s", _re->regex[1]);
cr_end_color(NULL);
- printf("\n");
+ printf("\n");
}
}
}
@@ -714,7 +744,7 @@ int main(int argc, char *argv[])
******************************************************************************/
void cr_usage(bool disp_config)
{
- fprintf(stderr, "%s: version %s\n", G.prgname, "1.55");
+ fprintf(stderr, "%s: version %s\n", G.prgname, "1.57");
fprintf(stderr, "Usage: %s [-h|-H|-V|-[[%%.]eiuvdDEL1234][-[rgybmcwRGYBMCW] regexp ...][--config_name ...] ]\n",
G.prgname);
fprintf(stderr, " -h : help\n");
@@ -876,7 +906,7 @@ void cr_free_RE(void)
/******************************************************************************
- CR_MARKER2COLOR
+ CR_MARKER2COLOR
******************************************************************************/
void cr_marker2color( struct cr_re_desc *re)
@@ -884,48 +914,48 @@ void cr_marker2color( struct cr_re_desc *re)
int _i = 0, _curr_level;
struct cr_col_desc *_desc;
- _curr_level = re->curr_level;
+ _curr_level = re->curr_level;
//fprintf(stderr, "[%2d] >>> curr_level : %d\n", _i, _curr_level);
for (_i = 0, _desc = G.desc; _i < G.length; _i++, _desc++) {
- switch (_desc->marker) {
- case 1:
- _curr_level++;
+ switch (_desc->marker) {
+ case 1:
+ _curr_level++;
//fprintf(stderr, "[%2d] +++ curr_level : %d\n", _i, _curr_level);
- break;
+ break;
- case -1:
- if (_curr_level > 0) {
- _curr_level--;
- }
+ case -1:
+ if (_curr_level > 0) {
+ _curr_level--;
+ }
//fprintf(stderr, "[%2d] --- curr_level : %d\n", _i, _curr_level);
- break;
+ break;
- case 0:
+ case 0:
//fprintf(stderr, "[%2d] === curr_level : %d\n", _i, _curr_level);
- break;
-
- default:
- fprintf(stderr, "%s: internal error\n", G.prgname);
- exit(1);
- break;
- }
- if (!_desc->used) {
- if (_curr_level > 0) {
-// fprintf(stderr, "==> [%2d] [%c] Color set. Col num = %d\n",
-// _i, G.line[_i], re->col.col_num);
- _desc->used = TRUE;
- _desc->col = &re->col;
- }
- else {
-// fprintf(stderr, "==> [%2d] [%c] NO COLOR.\n", _i, G.line[_i]);
- }
- }
- else {
-// fprintf(stderr, "==> [%2d] [%c] Already colorized.\n", _i, G.line[_i]);
- }
- }
-
- re->curr_level = _curr_level;
+ break;
+
+ default:
+ fprintf(stderr, "%s: internal error\n", G.prgname);
+ exit(1);
+ break;
+ }
+ if (!_desc->used) {
+ if (_curr_level > 0) {
+// fprintf(stderr, "==> [%2d] [%c] Color set. Col num = %d\n",
+// _i, G.line[_i], re->col.col_num);
+ _desc->used = TRUE;
+ _desc->col = &re->col;
+ }
+ else {
+// fprintf(stderr, "==> [%2d] [%c] NO COLOR.\n", _i, G.line[_i]);
+ }
+ }
+ else {
+// fprintf(stderr, "==> [%2d] [%c] Already colorized.\n", _i, G.line[_i]);
+ }
+ }
+
+ re->curr_level = _curr_level;
//fprintf(stderr, "[%2d] <<< curr_level : %d\n", _i, _curr_level);
}
@@ -940,35 +970,35 @@ void cr_set_desc(struct cr_re_desc *re, int offset, int s, int e, int marker)
struct cr_col_desc *_desc;
//fprintf(stderr, "SET_DESC : s = %3d e = %3d marker = %d\n", s, e, marker);
- if (re->regex[1] == 0) {
- /* RE descriptor does not define a range
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
- for (_i = s, _desc = &G.desc[offset + s]; _i <= e; _i++, _desc++) {
- if (!_desc->used) {
- _desc->used = TRUE;
- _desc->col = &re->col;
- }
- }
- }
- else {
- switch (marker) {
-
- case 1:
- _desc = &G.desc[offset + s];
- break;
-
- case -1:
- _desc = &G.desc[offset + e + 1]; // XXX : ATTENTION AU SEGV
- break;
-
- default:
- fprintf(stderr, "%s: erreur interne, marker = %d\n",
- G.prgname, marker);
- exit(1);
- }
-
- _desc->marker = marker;
- }
+ if (re->regex[1] == 0) {
+ /* RE descriptor does not define a range
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+ for (_i = s, _desc = &G.desc[offset + s]; _i <= e; _i++, _desc++) {
+ if (!_desc->used) {
+ _desc->used = TRUE;
+ _desc->col = &re->col;
+ }
+ }
+ }
+ else {
+ switch (marker) {
+
+ case 1:
+ _desc = &G.desc[offset + s];
+ break;
+
+ case -1:
+ _desc = &G.desc[offset + e + 1]; // XXX : ATTENTION AU SEGV
+ break;
+
+ default:
+ fprintf(stderr, "%s: erreur interne, marker = %d\n",
+ G.prgname, marker);
+ exit(1);
+ }
+
+ _desc->marker = marker;
+ }
}
/******************************************************************************
@@ -979,7 +1009,7 @@ void cr_set_desc(struct cr_re_desc *re, int offset, int s, int e, int marker)
void cr_read_input(void)
{
int _i, _j, _n, _s = 0, _e = 0, _off, _idx_last,
- _marker;
+ _marker;
struct cr_re_desc *_re;
size_t _nmatch;
regmatch_t _pmatch[CR_SIZE + 1];
@@ -1010,58 +1040,58 @@ void cr_read_input(void)
}
for (_re = G.extract_RE; _re != NULL; _re = _re->next) {
- for (_i = 0; _i < 2; _i++) {
- if (_re->regex[_i]) {
- for (_off = 0, _eflags = 0;
- _off < G.length &&
- regexec(&_re->reg[_i], G.line + _off, _nmatch, _pmatch,
- _eflags) == 0; _off += _e + 1, _eflags = REG_NOTBOL) {
-
- if (G.debug) {
- fprintf(stderr, "Match for [%s] // [%s]\n",
- G.line + _off, _re->regex[_i]);
- fprintf(stderr, "LINE : [%s] :\n", G.line + _off);
- }
-
- for (_j = 0; _pmatch[_j].rm_so != -1; _j++) {
- if (_j == 0 && _pmatch[1].rm_so != -1) {
- continue;
- }
-
- _s = _pmatch[_j].rm_so;
- _e = _pmatch[_j].rm_eo - 1;
-
- if (G.debug) {
- strncpy(_debug_str,
- G.line + _off + _s, _e - _s + 1);
- _debug_str[_e -_s + 1] = 0;
- fprintf(stderr,
- "OFFSET = %3d : %3d => %3d [%s] [%s]\n",
- _off, _s, _e, _re->regex[_i], _debug_str);
- }
-
- if (_i == 0) _marker = 1;
- else _marker = -1;
- cr_set_desc(_re, _off, _s, _e, _marker);
- }
-
- /* To handle empty strings
- ~~~~~~~~~~~~~~~~~~~~~~~ */
- if (_e < 0) {
- _e = 0;
- }
- }
-
- if (G.debug) {
- fprintf(stderr, "NO MATCH for [%s] // [%s]\n",
- G.line + _off, _re->regex[_i]);
- }
- }
- }
-
- if (_re->regex[1]) {
- cr_marker2color(_re);
- }
+ for (_i = 0; _i < 2; _i++) {
+ if (_re->regex[_i]) {
+ for (_off = 0, _eflags = 0;
+ _off < G.length &&
+ regexec(&_re->reg[_i], G.line + _off, _nmatch, _pmatch,
+ _eflags) == 0; _off += _e + 1, _eflags = REG_NOTBOL) {
+
+ if (G.debug) {
+ fprintf(stderr, "Match for [%s] // [%s]\n",
+ G.line + _off, _re->regex[_i]);
+ fprintf(stderr, "LINE : [%s] :\n", G.line + _off);
+ }
+
+ for (_j = 0; _pmatch[_j].rm_so != -1; _j++) {
+ if (_j == 0 && _pmatch[1].rm_so != -1) {
+ continue;
+ }
+
+ _s = _pmatch[_j].rm_so;
+ _e = _pmatch[_j].rm_eo - 1;
+
+ if (G.debug) {
+ strncpy(_debug_str,
+ G.line + _off + _s, _e - _s + 1);
+ _debug_str[_e -_s + 1] = 0;
+ fprintf(stderr,
+ "OFFSET = %3d : %3d => %3d [%s] [%s]\n",
+ _off, _s, _e, _re->regex[_i], _debug_str);
+ }
+
+ if (_i == 0) _marker = 1;
+ else _marker = -1;
+ cr_set_desc(_re, _off, _s, _e, _marker);
+ }
+
+ /* To handle empty strings
+ ~~~~~~~~~~~~~~~~~~~~~~~ */
+ if (_e < 0) {
+ _e = 0;
+ }
+ }
+
+ if (G.debug) {
+ fprintf(stderr, "NO MATCH for [%s] // [%s]\n",
+ G.line + _off, _re->regex[_i]);
+ }
+ }
+ }
+
+ if (_re->regex[1]) {
+ cr_marker2color(_re);
+ }
}
cr_disp_line();
@@ -1170,19 +1200,19 @@ void cr_init_desc(void)
_desc++) {
_desc->col = NULL;
_desc->used = FALSE;
- _desc->marker = 0;
+ _desc->marker = 0;
}
}
/******************************************************************************
- CR_SAME_COLORS
+ CR_SAME_COLORS
******************************************************************************/
inline bool cr_same_colors(struct cr_color *col1, struct cr_color *col2)
{
- return (col1->col_num == col2->col_num)
- && (col1->intensity == col2->intensity);
+ return (col1->col_num == col2->col_num)
+ && (col1->intensity == col2->intensity);
}
/******************************************************************************
@@ -1201,7 +1231,7 @@ void cr_disp_line(void)
if (G.curr_col) {
cr_end_color(G.curr_col);
putc('\n', G.curr_col->out);
- G.curr_col = NULL;
+ G.curr_col = NULL;
}
else {
putc('\n', stdout);
@@ -1215,7 +1245,7 @@ void cr_disp_line(void)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
cr_start_color(_desc->col);
putc(_c, _desc->col->out);
- G.curr_col = _desc->col;
+ G.curr_col = _desc->col;
}
else {
/* Previous character was in color
@@ -1231,7 +1261,7 @@ void cr_disp_line(void)
cr_end_color(G.curr_col);
cr_start_color(_desc->col);
putc(_c, _desc->col->out);
- G.curr_col = _desc->col;
+ G.curr_col = _desc->col;
}
}
}
@@ -1243,7 +1273,7 @@ void cr_disp_line(void)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
cr_end_color(G.curr_col);
putc(_c, G.curr_col->out);
- G.curr_col = NULL;
+ G.curr_col = NULL;
}
else {
/* Previous character was not in color
@@ -1266,5 +1296,5 @@ void cr_disp_line(void)
cr_end_color(G.curr_col);
}
- G.curr_col = NULL;
+ G.curr_col = NULL;
}
diff --git a/src/hl b/src/hl
index 0bb7759..aa82c29 100755
--- a/src/hl
+++ b/src/hl
Binary files differ