Skip to content

Commit 6d57791

Browse files
committed
SQUASH??? simplify
1 parent 07acda1 commit 6d57791

1 file changed

Lines changed: 27 additions & 45 deletions

File tree

builtin/help.c

Lines changed: 27 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -120,36 +120,37 @@ static void show_config_human(struct string_list *keys)
120120
}
121121
}
122122

123-
static void show_config_sections(struct string_list *keys)
123+
static void grab_leading_part(struct string_list *keys, const char *var, int use_dot)
124124
{
125-
struct string_list keys_uniq = STRING_LIST_INIT_DUP;
126-
struct strbuf sb = STRBUF_INIT;
127-
struct string_list_item *item;
125+
const char *cut = NULL;
128126

129-
for (size_t i = 0; i < keys->nr; i++) {
130-
const char *var = keys->items[i].string;
131-
const char *dot = strchr(var, '.');
132-
const char *wildcard = strchr(var, '*');
133-
const char *tag = strchr(var, '<');
134-
const char *cut;
135-
136-
if (dot)
137-
cut = dot;
138-
else if (wildcard && tag)
139-
cut = wildcard < tag ? wildcard : tag;
140-
else if (wildcard)
141-
cut = wildcard;
142-
else if (tag)
143-
cut = tag;
144-
else {
145-
string_list_append(&keys_uniq, var);
146-
continue;
147-
}
127+
if (use_dot)
128+
cut = strchr(var, use_dot);
148129

130+
if (!cut) {
131+
size_t prefix_len = strcspn(var, "*<");
132+
if (var[prefix_len])
133+
cut = var + prefix_len;
134+
}
135+
136+
if (!cut)
137+
string_list_append(keys, var);
138+
else {
139+
struct strbuf sb = STRBUF_INIT;
149140
strbuf_add(&sb, var, cut - var);
150-
string_list_append(&keys_uniq, sb.buf);
141+
string_list_append(keys, sb.buf);
151142
strbuf_release(&sb);
152143
}
144+
}
145+
146+
static void show_config_sections(struct string_list *keys)
147+
{
148+
struct string_list keys_uniq = STRING_LIST_INIT_DUP;
149+
struct string_list_item *item;
150+
151+
for (size_t i = 0; i < keys->nr; i++)
152+
grab_leading_part(&keys_uniq, keys->items[i].string, '.');
153+
153154
string_list_sort_u(&keys_uniq, 0);
154155
for_each_string_list_item(item, &keys_uniq)
155156
puts(item->string);
@@ -159,30 +160,11 @@ static void show_config_sections(struct string_list *keys)
159160
static void show_config_vars(struct string_list *keys)
160161
{
161162
struct string_list keys_uniq = STRING_LIST_INIT_DUP;
162-
struct strbuf sb = STRBUF_INIT;
163163
struct string_list_item *item;
164164

165-
for (size_t i = 0; i < keys->nr; i++) {
166-
const char *var = keys->items[i].string;
167-
const char *wildcard = strchr(var, '*');
168-
const char *tag = strchr(var, '<');
169-
const char *cut;
170-
171-
if (wildcard && tag)
172-
cut = wildcard < tag ? wildcard : tag;
173-
else if (wildcard)
174-
cut = wildcard;
175-
else if (tag)
176-
cut = tag;
177-
else {
178-
string_list_append(&keys_uniq, var);
179-
continue;
180-
}
165+
for (size_t i = 0; i < keys->nr; i++)
166+
grab_leading_part(&keys_uniq, keys->items[i].string, '\0');
181167

182-
strbuf_add(&sb, var, cut - var);
183-
string_list_append(&keys_uniq, sb.buf);
184-
strbuf_release(&sb);
185-
}
186168
string_list_sort_u(&keys_uniq, 0);
187169
for_each_string_list_item(item, &keys_uniq)
188170
puts(item->string);

0 commit comments

Comments
 (0)