X-Git-Url: http://git.refcnt.org/?p=colorize.git;a=blobdiff_plain;f=colorize.c;h=1d83781d6df5ff3fb636312aca4fd24f81753bd5;hp=7c1b6480da59062795ab7c40860b04ddc809141a;hb=aa263791f3e5e06ffd46621fdf9132921f8911a5;hpb=2d7ae2f7a5858e02a378d62142d65c4ff975859b diff --git a/colorize.c b/colorize.c index 7c1b648..1d83781 100644 --- a/colorize.c +++ b/colorize.c @@ -73,7 +73,7 @@ #define LF 0x01 #define CR 0x02 -#define SKIP_LINE_ENDINGS(flags) (((flags) & CR) && ((flags) & LF) ? 2 : 1) +#define SKIP_LINE_ENDINGS(flags) ((flags) == (CR|LF) ? 2 : 1) #define VALID_FILE_TYPE(mode) (S_ISREG (mode) || S_ISLNK (mode) || S_ISFIFO (mode)) @@ -116,11 +116,13 @@ # define COLOR_SEP_CHAR '/' #endif -#define DEBUG_FILE "debug.txt" +#if DEBUG +# define DEBUG_FILE "debug.txt" +#endif -#define MAX_ATTRIBUTE_CHARS (5 * 2) +#define MAX_ATTRIBUTE_CHARS (6 * 2) -#define VERSION "0.62" +#define VERSION "0.63" typedef enum { false, true } bool; @@ -164,7 +166,7 @@ struct bytes_size { char unit; }; -enum fmts { +enum { FMT_GENERIC, FMT_STRING, FMT_QUOTE, @@ -188,7 +190,7 @@ static const char *formats[] = { enum { GENERIC, FOREGROUND = 0, BACKGROUND }; static const struct { - struct color const *entries; + const struct color *entries; unsigned int count; const char *desc; } tables[] = { @@ -504,13 +506,16 @@ print_hint (void) static void print_help (void) { - struct short_opt { + struct opt_data { const char *name; const char *short_opt; + const char *arg; }; - const struct short_opt short_opts[] = { - { "help", "h" }, - { "version", "V" }, + const struct opt_data opts_data[] = { + { "attr", NULL, "=ATTR1,ATTR2,..." }, + { "exclude-random", NULL, "=COLOR" }, + { "help", "h", NULL }, + { "version", "V", NULL }, }; const struct option *opt = long_opts; unsigned int i; @@ -536,16 +541,21 @@ print_help (void) printf ("\n\tOptions\n"); for (; opt->name; opt++) { - const char *short_opt = NULL; + const struct opt_data *opt_data = NULL; unsigned int i; - for (i = 0; i < sizeof (short_opts) / sizeof (struct short_opt); i++) - if (streq (opt->name, short_opts[i].name)) + for (i = 0; i < sizeof (opts_data) / sizeof (struct opt_data); i++) + if (streq (opt->name, opts_data[i].name)) { - short_opt = short_opts[i].short_opt; + opt_data = &opts_data[i]; break; } - if (short_opt) - printf ("\t\t-%s, --%s\n", short_opt, opt->name); + if (opt_data) + { + if (opt_data->short_opt) + printf ("\t\t-%s, --%s\n", opt_data->short_opt, opt->name); + else + printf ("\t\t --%s%s\n", opt->name, opt_data->arg); + } else printf ("\t\t --%s\n", opt->name); } @@ -702,6 +712,7 @@ process_args (unsigned int arg_cnt, char **arg_strings, char *attr, const struct color_name.name = color_name.orig = "default"; find_color_entry (&color_name, FOREGROUND, colors); + assert (colors[FOREGROUND]->code != NULL); } process_file_arg (file_string, file, stream); @@ -1437,8 +1448,8 @@ has_color_name (const char *str, const char *name) { char *p; - assert (strlen (str)); - assert (strlen (name)); + assert (strlen (str) > 0); + assert (strlen (name) > 0); if (!(*str == *name || *str == toupper (*name))) return false;