diff options
Diffstat (limited to 'netfs/daemonMisc.cpp')
-rw-r--r-- | netfs/daemonMisc.cpp | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/netfs/daemonMisc.cpp b/netfs/daemonMisc.cpp index 9327fad..4fa6eaf 100644 --- a/netfs/daemonMisc.cpp +++ b/netfs/daemonMisc.cpp @@ -13,16 +13,18 @@ MiscServer::MiscServer(DaemonGlobalStatePtr dgs) : } Ice::Int -MiscServer::access(const std::string & path, Ice::Int mode, const Ice::Current &) +MiscServer::access(Ice::Long tok, const std::string & path, Ice::Int mode, const Ice::Current &) { - return ::access(path.c_str(), mode); + SessionPtr sess(dgs->getSession(tok)); + return ::access((sess->exportCfg->root / path).string().c_str(), mode); } NetFSComms::Attr -MiscServer::getattr(const std::string & path, const Ice::Current &) +MiscServer::getattr(Ice::Long tok, const std::string & path, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); struct stat s; - if (::stat(path.c_str(), &s) != 0) { + if (::stat((sess->exportCfg->root / path).string().c_str(), &s) != 0) { throw NetFSComms::SystemError(errno); } NetFSComms::Attr a; @@ -43,8 +45,9 @@ MiscServer::getattr(const std::string & path, const Ice::Current &) } void -MiscServer::symlink(const std::string & path1, const std::string & path2, const Ice::Current &) +MiscServer::symlink(Ice::Long tok, const std::string & path1, const std::string & path2, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); errno = 0; if (::symlink(path1.c_str(), path2.c_str()) != 0) { throw NetFSComms::SystemError(errno); @@ -53,8 +56,9 @@ MiscServer::symlink(const std::string & path1, const std::string & path2, const } void -MiscServer::link(const std::string & path1, const std::string & path2, const Ice::Current &) +MiscServer::link(Ice::Long tok, const std::string & path1, const std::string & path2, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); errno = 0; if (::link(path1.c_str(), path2.c_str()) != 0) { throw NetFSComms::SystemError(errno); @@ -63,8 +67,9 @@ MiscServer::link(const std::string & path1, const std::string & path2, const Ice } void -MiscServer::rename(const std::string & from, const std::string & to, const Ice::Current &) +MiscServer::rename(Ice::Long tok, const std::string & from, const std::string & to, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); errno = 0; if (::rename(from.c_str(), to.c_str()) != 0) { throw NetFSComms::SystemError(errno); @@ -73,11 +78,12 @@ MiscServer::rename(const std::string & from, const std::string & to, const Ice:: } std::string -MiscServer::readlink(const std::string & path, const Ice::Current &) +MiscServer::readlink(Ice::Long tok, const std::string & path, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); errno = 0; char buf[PATH_MAX]; - ssize_t rc = ::readlink(path.c_str(), buf, PATH_MAX); + ssize_t rc = ::readlink((sess->exportCfg->root / path).string().c_str(), buf, PATH_MAX); if (rc == -1) { throw NetFSComms::SystemError(errno); } @@ -85,20 +91,22 @@ MiscServer::readlink(const std::string & path, const Ice::Current &) } void -MiscServer::chmod(const std::string & path, Ice::Int mode, const Ice::Current &) +MiscServer::chmod(Ice::Long tok, const std::string & path, Ice::Int mode, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); errno = 0; - if (::chmod(path.c_str(), mode) != 0) { + if (::chmod((sess->exportCfg->root / path).string().c_str(), mode) != 0) { throw NetFSComms::SystemError(errno); } // s.replicatedRequest = true; } void -MiscServer::chown(const std::string & path, Ice::Int uid, Ice::Int gid, const Ice::Current &) +MiscServer::chown(Ice::Long tok, const std::string & path, Ice::Int uid, Ice::Int gid, const Ice::Current &) { + SessionPtr sess(dgs->getSession(tok)); errno = 0; - if (::chown(path.c_str(), uid, gid) != 0) { + if (::chown((sess->exportCfg->root / path).string().c_str(), uid, gid) != 0) { throw NetFSComms::SystemError(errno); } // s.replicatedRequest = true; |