aboutsummaryrefslogtreecommitdiffstats
path: root/plpnfsd/main.cc
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2007-11-29 21:10:45 +0000
committerReuben Thomas <rrt@sc3d.org>2007-11-29 21:10:45 +0000
commit2c2433be50362cf58ded7d42e6705d962975ee6b (patch)
treeea044f3e881e3f7fd2097b3785bdea060dab5552 /plpnfsd/main.cc
parent0fd52a323bcc589556c6784431119a5a79d94b00 (diff)
downloadplptools-2c2433be50362cf58ded7d42e6705d962975ee6b.tar.gz
plptools-2c2433be50362cf58ded7d42e6705d962975ee6b.tar.bz2
plptools-2c2433be50362cf58ded7d42e6705d962975ee6b.zip
Improve cosmetically some debug messages and comments.
Be a little more conservative about when to flush the cached file.
Diffstat (limited to 'plpnfsd/main.cc')
-rw-r--r--plpnfsd/main.cc28
1 files changed, 15 insertions, 13 deletions
diff --git a/plpnfsd/main.cc b/plpnfsd/main.cc
index a2ad9dd..271319b 100644
--- a/plpnfsd/main.cc
+++ b/plpnfsd/main.cc
@@ -231,6 +231,17 @@ long rfsv_isalive() {
return (a->getStatus() == rfsv::E_PSI_GEN_NONE);
}
+long rfsv_closecached() {
+ if (!a)
+ return -1;
+ if (!a_filename)
+ return 0;
+ a->fclose(a_handle);
+ free(a_filename);
+ a_filename = NULL;
+ return 0;
+}
+
long rfsv_dir(const char *file, dentry **e) {
PlpDir entries;
dentry *tmp;
@@ -264,6 +275,7 @@ long rfsv_dircount(const char *file, u_int32_t *count) {
long rfsv_rmdir(const char *name) {
if (!a)
return -1;
+ rfsv_closecached(); /* Just in case we're caching stuff in this dir */
return a->rmdir(name);
}
@@ -273,17 +285,6 @@ long rfsv_mkdir(const char *file) {
return a->mkdir(file);
}
-long rfsv_closecached() {
- if (!a)
- return -1;
- if (!a_filename)
- return 0;
- a->fclose(a_handle);
- free(a_filename);
- a_filename = NULL;
- return 0;
-}
-
long rfsv_remove(const char *file) {
if (!a)
return -1;
@@ -438,8 +439,9 @@ long rfsv_statdev(char letter) {
long rfsv_rename(const char *oldname, const char *newname) {
if (!a)
return -1;
- if (a_filename && (!strcmp(a_filename, oldname) || !strcmp(a_filename, newname)))
- rfsv_closecached();
+ /* We could be renaming a directory containing the cached item, so
+ always flush */
+ rfsv_closecached();
return a->rename(oldname, newname);
}