cursor: refactor xcursor_theme_inherits

Use early returns and breaks to avoid dealing with very long
indentation lines.

Signed-off-by: Simon Ser <contact@emersion.fr>
This commit is contained in:
Simon Ser 2022-04-21 11:53:24 +02:00
parent 963014459c
commit 245d30ecb8

View file

@ -755,39 +755,43 @@ xcursor_theme_inherits(const char *full)
return NULL;
f = fopen(full, "r");
if (f) {
while (fgets(line, sizeof(line), f)) {
if (!strncmp(line, "Inherits", 8)) {
char *l = line + 8;
char *r;
while (*l == ' ')
l++;
if (*l != '=')
continue;
if (!f)
return NULL;
while (fgets(line, sizeof(line), f)) {
if (strncmp(line, "Inherits", 8))
continue;
char *l = line + 8;
char *r;
while (*l == ' ')
l++;
if (*l != '=')
continue;
l++;
while (*l == ' ')
l++;
result = malloc(strlen(l) + 1);
if (!result)
break;
r = result;
while (*l) {
while (xcursor_sep(*l) || xcursor_white(*l))
l++;
while (*l == ' ')
l++;
result = malloc(strlen(l) + 1);
if (result) {
r = result;
while (*l) {
while (xcursor_sep(*l) || xcursor_white(*l))
l++;
if (!*l)
break;
if (r != result)
*r++ = ':';
while (*l && !xcursor_white(*l) &&
!xcursor_sep(*l))
*r++ = *l++;
}
*r++ = '\0';
}
if (!*l)
break;
}
if (r != result)
*r++ = ':';
while (*l && !xcursor_white(*l) && !xcursor_sep(*l))
*r++ = *l++;
}
fclose(f);
*r++ = '\0';
break;
}
fclose(f);
return result;
}