From c443841605388835d2751f01f6d209ff3cbddd57 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 20 Jul 2015 01:46:12 +0100 Subject: Switch to the StringSeq interface where possible because it's considerably less annoying --- libfusepp/fuseAppBase.cpp | 2 +- libfusepp/fuseAppBase.h | 6 +++--- netfs/fuse/fuseApp.cpp | 7 +++---- netfs/fuse/fuseApp.h | 5 ++--- netfs/fuse/netfs.cpp | 9 ++++----- netfs/unittests/mockFuse.cpp | 17 ++++++++++------- netfs/unittests/mockFuse.h | 9 ++++----- netfs/unittests/testCore.cpp | 12 +++++------- netfs/unittests/testEdgeCases.cpp | 10 ++++------ netfs/unittests/testGlacier.cpp | 12 +++++------- 10 files changed, 41 insertions(+), 48 deletions(-) diff --git a/libfusepp/fuseAppBase.cpp b/libfusepp/fuseAppBase.cpp index a1ea491..49f2d6b 100644 --- a/libfusepp/fuseAppBase.cpp +++ b/libfusepp/fuseAppBase.cpp @@ -198,7 +198,7 @@ void FuseAppBase::fuseDestroy(void *) } struct fuse_args -FuseAppBase::runint(int & argc, char** & argv) +FuseAppBase::runint(int argc, char ** argv) { struct fuse_opt fuse_opts[] = { { NULL, 0, 0 } diff --git a/libfusepp/fuseAppBase.h b/libfusepp/fuseAppBase.h index d76fbff..ccd2027 100644 --- a/libfusepp/fuseAppBase.h +++ b/libfusepp/fuseAppBase.h @@ -57,11 +57,11 @@ class FuseAppBase { virtual int onError(const std::exception & err) throw(); virtual int fuse_opt_parse(struct fuse_args *args, void *data, const struct fuse_opt opts[], fuse_opt_proc_t proc) = 0; - virtual int main(int &, char **, const struct fuse_operations *) = 0; + virtual int main(int, char **, const struct fuse_operations *) = 0; #define GetHelper(func) getHelper<&FuseAppBase::func>(typeid(&FuseAppBase::func) != typeid(&FuseApp::func)) template - static int run(int & argc, char** & argv, FuseApp * fa) + static int run(int argc, char ** argv, FuseApp * fa) { auto args = fa->runint(argc, argv); struct fuse_operations operations = { @@ -124,7 +124,7 @@ class FuseAppBase { }; return fa->main(args.argc, args.argv, &operations); } - struct fuse_args runint(int &, char ** &); + struct fuse_args runint(int, char **); private: static void * fuseInit(struct fuse_conn_info *conn); diff --git a/netfs/fuse/fuseApp.cpp b/netfs/fuse/fuseApp.cpp index 964f412..ac0dab5 100644 --- a/netfs/fuse/fuseApp.cpp +++ b/netfs/fuse/fuseApp.cpp @@ -11,9 +11,8 @@ template class Cache>>; template class OptimisticCallCacheable; -NetFS::FuseApp::FuseApp(int & argc, char ** argv) : - _argc(argc), - _argv(argv), +NetFS::FuseApp::FuseApp(const Ice::StringSeq & a) : + args(a), sessionOpened(false), openDirID(0), openFileID(0) @@ -48,7 +47,7 @@ NetFS::FuseApp::ReadConfiguration(const std::string & path) const void * NetFS::FuseApp::init(struct fuse_conn_info *) { - ic = Ice::initialize(_argc, _argv); + ic = Ice::initialize(args); auto fc = ReadConfiguration(configPath); auto e = fc->Resources.find(resourceName); if (e == fc->Resources.end()) { diff --git a/netfs/fuse/fuseApp.h b/netfs/fuse/fuseApp.h index 70dd335..3ab1cb0 100644 --- a/netfs/fuse/fuseApp.h +++ b/netfs/fuse/fuseApp.h @@ -34,7 +34,7 @@ namespace NetFS { typedef std::map OpenFiles; public: - FuseApp(int & argc, char ** argv); + FuseApp(const Ice::StringSeq &); ~FuseApp(); private: @@ -96,8 +96,7 @@ namespace NetFS { ReqEnv reqEnv(); - int & _argc; - char ** _argv; + Ice::StringSeq args; Ice::CommunicatorPtr ic; Client::ResourcePtr fcr; mutable boost::shared_mutex _lock; diff --git a/netfs/fuse/netfs.cpp b/netfs/fuse/netfs.cpp index f700a74..23996c2 100644 --- a/netfs/fuse/netfs.cpp +++ b/netfs/fuse/netfs.cpp @@ -2,28 +2,27 @@ class FuseImpl : public NetFS::FuseApp { public: - FuseImpl(int & argc, char ** argv) : NetFS::FuseApp(argc, argv) { } + FuseImpl(const Ice::StringSeq & a) : NetFS::FuseApp(a) { } struct fuse_context * fuse_get_context() override { return ::fuse_get_context(); } - + int fuse_opt_parse(struct fuse_args * args, void * data, const struct fuse_opt opts[], fuse_opt_proc_t proc) override { return ::fuse_opt_parse(args, data, opts, proc); } - int main(int & argc, char ** argv, const struct fuse_operations * ops) override + int main(int argc, char ** argv, const struct fuse_operations * ops) override { return ::fuse_main(argc, argv, ops, this); } - }; int main(int argc, char* argv[]) { - return FuseAppBase::run(argc, argv, new FuseImpl(argc, argv)); + return FuseAppBase::run(argc, argv, new FuseImpl(Ice::argsToStringSeq(argc, argv))); } diff --git a/netfs/unittests/mockFuse.cpp b/netfs/unittests/mockFuse.cpp index 2b9edad..a9e2cc1 100644 --- a/netfs/unittests/mockFuse.cpp +++ b/netfs/unittests/mockFuse.cpp @@ -1,7 +1,7 @@ #include "mockFuse.h" -FuseMock::FuseMock(const std::string & ep, int & argc, char ** argv) : - NetFS::FuseApp(argc, argv), +FuseMock::FuseMock(const std::string & ep, const Ice::StringSeq & a) : + NetFS::FuseApp(a), testEndpoint(ep) { ::memset(&context, 0, sizeof(fuse_context)); @@ -26,7 +26,7 @@ FuseMock::fuse_opt_parse(struct fuse_args * args, void * data, const struct fuse } int -FuseMock::main(int &, char **, const struct fuse_operations * o) +FuseMock::main(int, char **, const struct fuse_operations * o) { o->init(NULL); ops = *o; @@ -45,12 +45,15 @@ FuseMock::ReadConfiguration(const std::string & path) const return c; } -FuseMockHost::FuseMockHost(const std::string & ep, int c, char ** v) : - argc(c), - app(new FuseMock(ep, c, v)), +FuseMockHost::FuseMockHost(const std::string & ep, const Ice::StringSeq & a) : + app(new FuseMock(ep, a)), fuse(&app->ops) { - FuseAppBase::run(argc, v, app); + std::vector argv; + for (auto & arg : a) { + argv.push_back(const_cast(arg.c_str())); + } + FuseAppBase::run(a.size(), &argv.front(), app); } FuseMockHost::~FuseMockHost() diff --git a/netfs/unittests/mockFuse.h b/netfs/unittests/mockFuse.h index 3ca88fe..e28fd5a 100644 --- a/netfs/unittests/mockFuse.h +++ b/netfs/unittests/mockFuse.h @@ -5,11 +5,11 @@ class FuseMock : public NetFS::FuseApp { public: - FuseMock(const std::string &, int & argc, char ** argv); + FuseMock(const std::string &, const Ice::StringSeq &); struct fuse_context * fuse_get_context() override; int fuse_opt_parse(struct fuse_args * args, void * data, const struct fuse_opt [], fuse_opt_proc_t proc) override; - int main(int &, char **, const struct fuse_operations * o) override; + int main(int, char **, const struct fuse_operations * o) override; fuse_operations ops; @@ -23,15 +23,14 @@ class FuseMock : public NetFS::FuseApp { class FuseMockHost { public: - FuseMockHost(const std::string &, int c, char ** v); + FuseMockHost(const std::string &, const Ice::StringSeq &); ~FuseMockHost(); private: - int argc; FuseMock * app; public: - fuse_operations * fuse; + const fuse_operations * fuse; }; diff --git a/netfs/unittests/testCore.cpp b/netfs/unittests/testCore.cpp index d13708c..07590b6 100644 --- a/netfs/unittests/testCore.cpp +++ b/netfs/unittests/testCore.cpp @@ -13,18 +13,16 @@ const boost::filesystem::path RootDir(XSTR(ROOT)); const std::string testEndpoint("tcp -h localhost -p 12012"); -char * defaultFuseArgv[] = { - strdup((RootDir / "defaultFuse.xml:testvol").string().c_str()), - strdup((RootDir / "test").string().c_str()) -}; - class Core { public: Core() : daemonHost(testEndpoint, { "--NetFSD.ConfigPath=" + (RootDir / "defaultDaemon.xml").string() }), - fuseHost(testEndpoint, 2, defaultFuseArgv), + fuseHost(testEndpoint, { + (RootDir / "defaultFuse.xml:testvol").string(), + (RootDir / "test").string() + }), ic(daemonHost.ic), fuse(fuseHost.fuse) { @@ -35,7 +33,7 @@ class Core { FuseMockHost fuseHost; Ice::CommunicatorPtr ic; - fuse_operations * fuse;; + const fuse_operations * fuse; }; BOOST_FIXTURE_TEST_SUITE( NetfsCore, Core ) diff --git a/netfs/unittests/testEdgeCases.cpp b/netfs/unittests/testEdgeCases.cpp index 5c5f671..b1b7a44 100644 --- a/netfs/unittests/testEdgeCases.cpp +++ b/netfs/unittests/testEdgeCases.cpp @@ -13,17 +13,15 @@ const boost::filesystem::path RootDir(XSTR(ROOT)); const std::string testEndpoint("tcp -h localhost -p 12014"); -char * defaultFuseArgv[] = { - strdup((RootDir / "defaultFuse.xml:testvol").string().c_str()), - strdup((RootDir / "test").string().c_str()) -}; - BOOST_AUTO_TEST_CASE ( createAndDaemonRestart ) { MockDaemonHost daemon(testEndpoint, { "--NetFSD.ConfigPath=" + (RootDir / "defaultDaemon.xml").string() }); - FuseMockHost fuse(testEndpoint, 2, defaultFuseArgv); + FuseMockHost fuse(testEndpoint, { + (RootDir / "defaultFuse.xml:testvol").string(), + (RootDir / "test").string() + }); struct statvfs s; BOOST_REQUIRE_EQUAL(0, fuse.fuse->statfs("/", &s)); diff --git a/netfs/unittests/testGlacier.cpp b/netfs/unittests/testGlacier.cpp index 8ee055d..90daaef 100644 --- a/netfs/unittests/testGlacier.cpp +++ b/netfs/unittests/testGlacier.cpp @@ -25,16 +25,14 @@ BOOST_AUTO_TEST_CASE ( withRouter ) } BOOST_SCOPE_EXIT_END; { - char * glacierFuseArgv[] = { - strdup((RootDir / "defaultFuse.xml:testvol").string().c_str()), - strdup((RootDir / "test").string().c_str()), - strdup("--Ice.Default.Router=Glacier2/router:tcp -h localhost -p 4063") - }; - MockDaemonHost daemon(testEndpoint, { "--NetFSD.ConfigPath=" + (RootDir / "defaultDaemon.xml").string() }); - FuseMockHost fuse(testEndpoint, 3, glacierFuseArgv); + FuseMockHost fuse(testEndpoint, { + (RootDir / "defaultFuse.xml:testvol").string(), + (RootDir / "test").string(), + "--Ice.Default.Router=Glacier2/router:tcp -h localhost -p 4063" + }); struct statvfs s; BOOST_REQUIRE_EQUAL(0, fuse.fuse->statfs("/", &s)); -- cgit v1.2.3