X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffile_glob.c;h=3a5def25ec550896938d6f7ea33ec1831691a006;hb=b9e9e8e2196e0081d4814c50cdd02c18911bcf29;hp=fd6ae0b244b199014799174cbffc0eff3552502a;hpb=32714ab839d402d1e6194316d5909b2ce37e3ee3;p=yaz-moved-to-github.git diff --git a/src/file_glob.c b/src/file_glob.c index fd6ae0b..3a5def2 100644 --- a/src/file_glob.c +++ b/src/file_glob.c @@ -36,6 +36,17 @@ struct glob_res { struct res_entry *entries; }; +static void add_entry(yaz_glob_res_t res, const char *str) +{ + struct res_entry *ent = + nmem_malloc(res->nmem, sizeof(*ent)); + ent->file = nmem_strdup(res->nmem, str); + ent->next = 0; + *res->last_entry = ent; + res->last_entry = &ent->next; + res->number_of_entries++; +} + static void glob_r(yaz_glob_res_t res, const char *pattern, size_t off, char *prefix) { @@ -57,6 +68,11 @@ static void glob_r(yaz_glob_res_t res, const char *pattern, size_t off, glob_r(res, pattern, i, prefix); prefix[prefix_len] = '\0'; } + else if (!is_pattern && !pattern[i]) + { + strcpy(prefix + prefix_len, pattern + off); + add_entry(res, prefix); + } else { DIR * dir = opendir(*prefix ? prefix : "." ); @@ -82,13 +98,7 @@ static void glob_r(yaz_glob_res_t res, const char *pattern, size_t off, } else { - struct res_entry *ent = - nmem_malloc(res->nmem, sizeof(*ent)); - ent->file = nmem_strdup(res->nmem, prefix); - ent->next = 0; - *res->last_entry = ent; - res->last_entry = &ent->next; - res->number_of_entries++; + add_entry(res, prefix); } prefix[prefix_len] = '\0'; }