summaryrefslogtreecommitdiffstats
path: root/uisimulator
diff options
context:
space:
mode:
authorMichael Hohmuth <sideral@rockbox.org>2011-04-16 13:06:18 +0000
committerMichael Hohmuth <sideral@rockbox.org>2011-04-16 13:06:18 +0000
commite7f5013988c416bc78a13eda9bf28a3c213f22b3 (patch)
tree74d2faa2bb67e77f38494dce35ae66f484c911eb /uisimulator
parentcf223b98adadeb8b0c29ea604cd049f7798b5012 (diff)
downloadrockbox-e7f5013988c416bc78a13eda9bf28a3c213f22b3.tar.gz
rockbox-e7f5013988c416bc78a13eda9bf28a3c213f22b3.zip
Fix regression in r29715: files listed multiple times in uisimulator
Fixes FS#12066. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29717 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'uisimulator')
-rw-r--r--uisimulator/common/io.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/uisimulator/common/io.c b/uisimulator/common/io.c
index fd30dc68b6..3212fa50fe 100644
--- a/uisimulator/common/io.c
+++ b/uisimulator/common/io.c
@@ -147,6 +147,8 @@ extern int _wrmdir(const wchar_t*);
#ifdef HAVE_DIRCACHE
+struct dircache_entry;
+const struct dircache_entry *dircache_get_entry_ptr(const char *filename);
void dircache_add_file(const char *name, long startcluster);
void dircache_remove(const char *name);
void dircache_rename(const char *oldname, const char *newname);
@@ -391,7 +393,7 @@ int sim_open(const char *name, int o, ...)
mode_t mode = va_arg(ap, unsigned int);
ret = OPEN(get_sim_pathname(name), opts, mode);
#ifdef HAVE_DIRCACHE
- if (ret >= 0)
+ if (ret >= 0 && !dircache_get_entry_ptr(name))
dircache_add_file(name, 0);
#endif
va_end(ap);
@@ -418,7 +420,7 @@ int sim_creat(const char *name, mode_t mode)
int ret = OPEN(get_sim_pathname(name),
O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, mode);
#ifdef HAVE_DIRCACHE
- if (ret >= 0)
+ if (ret >= 0 && !dircache_get_entry_ptr(name))
dircache_add_file(name, 0);
#endif
return ret;