summaryrefslogtreecommitdiff
path: root/uisimulator/common
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/common')
-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*);
147 147
148 148
149#ifdef HAVE_DIRCACHE 149#ifdef HAVE_DIRCACHE
150struct dircache_entry;
151const struct dircache_entry *dircache_get_entry_ptr(const char *filename);
150void dircache_add_file(const char *name, long startcluster); 152void dircache_add_file(const char *name, long startcluster);
151void dircache_remove(const char *name); 153void dircache_remove(const char *name);
152void dircache_rename(const char *oldname, const char *newname); 154void dircache_rename(const char *oldname, const char *newname);
@@ -391,7 +393,7 @@ int sim_open(const char *name, int o, ...)
391 mode_t mode = va_arg(ap, unsigned int); 393 mode_t mode = va_arg(ap, unsigned int);
392 ret = OPEN(get_sim_pathname(name), opts, mode); 394 ret = OPEN(get_sim_pathname(name), opts, mode);
393#ifdef HAVE_DIRCACHE 395#ifdef HAVE_DIRCACHE
394 if (ret >= 0) 396 if (ret >= 0 && !dircache_get_entry_ptr(name))
395 dircache_add_file(name, 0); 397 dircache_add_file(name, 0);
396#endif 398#endif
397 va_end(ap); 399 va_end(ap);
@@ -418,7 +420,7 @@ int sim_creat(const char *name, mode_t mode)
418 int ret = OPEN(get_sim_pathname(name), 420 int ret = OPEN(get_sim_pathname(name),
419 O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, mode); 421 O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, mode);
420#ifdef HAVE_DIRCACHE 422#ifdef HAVE_DIRCACHE
421 if (ret >= 0) 423 if (ret >= 0 && !dircache_get_entry_ptr(name))
422 dircache_add_file(name, 0); 424 dircache_add_file(name, 0);
423#endif 425#endif
424 return ret; 426 return ret;