|| !strcmp(s, "path") || !strcmp(s, "ipath"))
{
int i = (*s == 'i');
- char *arg = ss[1], *path = 0, *name = new ? new->name : arg;
-
- // Handle path expansion and case flattening
- if (new && s[i] == 'p') name = path = dirtree_path(new, 0);
- if (i) {
- if (check || !new) {
- if (name) name = strlower(name);
- if (!new) {
- dlist_add(&TT.argdata, name);
- free(path);
- } else arg = ((struct double_list *)llist_pop(&argdata))->data;
- }
- }
+ if (i && !new) {
+ char *p;
+ for (p = ss[1]; *p; ++p) {
+ *p = tolower(*p);
+ }
+ }
if (check) {
- test = !fnmatch(arg, name, FNM_PATHNAME*(s[i] == 'p'));
+ char *path = 0, *name = new->name;
+
+ // Handle path expansion and case flattening
+ if (s[i] == 'p') name = path = dirtree_path(new, 0);
+ if (i) name = strlower(name);
+
+ test = !fnmatch(ss[1], name, FNM_PATHNAME*(s[i] == 'p'));
free(path);
if (i) free(name);
}