diff --git a/uisimulator/common/io.c b/uisimulator/common/io.c index 0d680e0e8a..fd30dc68b6 100644 --- a/uisimulator/common/io.c +++ b/uisimulator/common/io.c @@ -147,6 +147,7 @@ extern int _wrmdir(const wchar_t*); #ifdef HAVE_DIRCACHE +void dircache_add_file(const char *name, long startcluster); void dircache_remove(const char *name); void dircache_rename(const char *oldname, const char *newname); #endif @@ -389,6 +390,10 @@ int sim_open(const char *name, int o, ...) va_start(ap, o); mode_t mode = va_arg(ap, unsigned int); ret = OPEN(get_sim_pathname(name), opts, mode); +#ifdef HAVE_DIRCACHE + if (ret >= 0) + dircache_add_file(name, 0); +#endif va_end(ap); } else @@ -410,7 +415,13 @@ int sim_close(int fd) int sim_creat(const char *name, mode_t mode) { - return OPEN(get_sim_pathname(name), O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, mode); + int ret = OPEN(get_sim_pathname(name), + O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, mode); +#ifdef HAVE_DIRCACHE + if (ret >= 0) + dircache_add_file(name, 0); +#endif + return ret; } ssize_t sim_read(int fd, void *buf, size_t count) @@ -460,10 +471,12 @@ int sim_rmdir(const char *name) int sim_remove(const char *name) { + int ret = REMOVE(get_sim_pathname(name)); #ifdef HAVE_DIRCACHE - dircache_remove(name); + if (ret >= 0) + dircache_remove(name); #endif - return REMOVE(get_sim_pathname(name)); + return ret; } int sim_rename(const char *oldname, const char *newname)