Mercurial > geeqie
changeset 1741:77415a49cd99
fixes sidecar file grouping
files with a number in extension were listed twice, it
caused problems later
author | nadvornik |
---|---|
date | Mon, 07 Sep 2009 19:48:05 +0000 |
parents | 6146ec0c9ab9 |
children | eb64f542341b |
files | src/filedata.c |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/filedata.c Mon Sep 07 08:24:09 2009 +0000 +++ b/src/filedata.c Mon Sep 07 19:48:05 2009 +0000 @@ -367,7 +367,7 @@ file_data_disconnect_sidecar_file(fd, sfd); } - if (sfd) file_data_check_sidecars(sfd, FALSE); /* this will group the sidecars back together */ + if (sfd) file_data_check_sidecars(sfd, NULL); /* this will group the sidecars back together */ file_data_send_notification(fd, NOTIFY_REREAD); } else @@ -444,7 +444,7 @@ GList *list = NULL; sl = path_from_utf8(path); - + extl = strrchr(sl, '.'); if (extl) { @@ -455,13 +455,25 @@ for (i = 0; i < (1 << ext_len); i++) { struct stat st; + gboolean skip = FALSE; for (j = 0; j < ext_len; j++) { if (i & (1 << (ext_len - 1 - j))) + { extl[j] = g_ascii_tolower(extl[j]); + /* make sure the result does not contain duplicates */ + if (extl[j] == g_ascii_toupper(extl[j])) + { + /* no change, probably a number, we have already tested this combination */ + skip = TRUE; + break; + } + } else extl[j] = g_ascii_toupper(extl[j]); } + if (skip) continue; + if (stat(sl, &st) == 0) { list = g_list_prepend(list, file_data_new_local(sl, &st, FALSE, FALSE));