summaryrefslogtreecommitdiff
path: root/src/group.c
diff options
context:
space:
mode:
authorJérémie Courrèges-Anglas <jca@wxcvbn.org>2014-03-03 10:33:48 +0100
committerJérémie Courrèges-Anglas <jca@wxcvbn.org>2014-03-03 10:33:48 +0100
commitc7bc35e610b165f49201537ca4d2425b46bd31bb (patch)
treea9f8d454316c6f17b447ebc65ba590dcb526b401 /src/group.c
parent1e9ec347b28a884f6fee8f1f42c6d5360546dd08 (diff)
downloadratpoison-c7bc35e610b165f49201537ca4d2425b46bd31bb.zip
Better, faster, prettier groups_find_by_group_name
* there are really two operation modes that could even be put into separate functions. So disentangle the logic and put the operation mode check outside of the loop parsing the groups list.
Diffstat (limited to 'src/group.c')
-rw-r--r--src/group.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/group.c b/src/group.c
index 037e570..02d2073 100644
--- a/src/group.c
+++ b/src/group.c
@@ -232,12 +232,19 @@ groups_find_group_by_name (char *s, int exact_match)
{
rp_group *cur;
- list_for_each_entry (cur, &rp_groups, node)
+ if (!exact_match)
+ {
+ list_for_each_entry (cur, &rp_groups, node)
+ {
+ if (cur->name && str_comp (s, cur->name, strlen (s)))
+ return cur;
+ }
+ }
+ else
{
- if (cur->name)
+ list_for_each_entry (cur, &rp_groups, node)
{
- if ((!exact_match && str_comp (s, cur->name, strlen (s))) ||
- (exact_match && !strcmp (cur->name, s)))
+ if (cur->name && !strcmp (cur->name, s))
return cur;
}
}