From: Steven Schubiger Date: Thu, 6 Jul 2017 17:36:34 +0000 (+0200) Subject: write_attr(): pass struct by reference X-Git-Tag: v0.62~9 X-Git-Url: http://git.refcnt.org/?p=colorize.git;a=commitdiff_plain;h=cc5f2939f456022441fc70ee5ac430bbeeb00e3c write_attr(): pass struct by reference --- diff --git a/colorize.c b/colorize.c index b64be49..d947b92 100644 --- a/colorize.c +++ b/colorize.c @@ -222,6 +222,11 @@ enum attr_type { ATTR_REVERSE = 0x08, ATTR_CONCEALED = 0x10 }; +struct attr { + const char *name; + unsigned int val; + enum attr_type type; +}; static FILE *stream; #if DEBUG @@ -241,7 +246,7 @@ static const char *program_name; static void process_opts (int, char **); static void process_opt_attr (const char *); -static void write_attr (unsigned int, unsigned int *, enum attr_type, const char *); +static void write_attr (const struct attr *, unsigned int *); static void print_hint (void); static void print_help (void); static void print_version (void); @@ -429,11 +434,7 @@ static void process_opt_attr (const char *p) { /* If attributes are added to this "list", also increase MAX_ATTRIBUTE_CHARS! */ - const struct attr { - const char *name; - unsigned int val; - enum attr_type type; - } attrs[] = { + const struct attr attrs[] = { { "bold", 1, ATTR_BOLD }, { "underscore", 4, ATTR_UNDERSCORE }, { "blink", 5, ATTR_BLINK }, @@ -461,7 +462,7 @@ process_opt_attr (const char *p) const size_t name_len = strlen (attrs[i].name); if ((size_t)(p - s) == name_len && strneq (s, attrs[i].name, name_len)) { - write_attr (attrs[i].val, &attr_types, attrs[i].type, attrs[i].name); + write_attr (&attrs[i], &attr_types); valid_attr = true; break; } @@ -475,8 +476,12 @@ process_opt_attr (const char *p) } static void -write_attr (unsigned int val, unsigned int *attr_types, enum attr_type attr_type, const char *attr_name) +write_attr (const struct attr *attr_i, unsigned int *attr_types) { + const unsigned int val = attr_i->val; + const enum attr_type attr_type = attr_i->type; + const char *attr_name = attr_i->name; + if (*attr_types & attr_type) vfprintf_fail ("--attr switch has attribute '%s' twice or more", attr_name); snprintf (attr + strlen (attr), 3, "%u;", val);