summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libfusepp/fuseAppBase.cpp2
-rw-r--r--libfusepp/fuseAppBase.h5
-rw-r--r--netfs/fuse/Jamfile.jam4
-rw-r--r--netfs/fuse/netfs.cpp17
-rw-r--r--netfs/unittests/Jamfile.jam3
-rw-r--r--netfs/unittests/mockFuse.cpp7
-rw-r--r--netfs/unittests/mockFuse.h1
7 files changed, 36 insertions, 3 deletions
diff --git a/libfusepp/fuseAppBase.cpp b/libfusepp/fuseAppBase.cpp
index 49f2d6b..b56b765 100644
--- a/libfusepp/fuseAppBase.cpp
+++ b/libfusepp/fuseAppBase.cpp
@@ -184,7 +184,7 @@ int FuseAppBase::fallocate(const char *, int, off_t, off_t, struct fuse_file_inf
}
int FuseAppBase::onError(const std::exception & e) throw()
{
- fprintf(stderr, "Unknown exception (what: %s)\n", e.what());
+ log(LOG_ERR, stringf("Unknown exception (what: %s)\n", e.what()));
return -ENOSYS;
}
diff --git a/libfusepp/fuseAppBase.h b/libfusepp/fuseAppBase.h
index 1a4a0bc..a9be11b 100644
--- a/libfusepp/fuseAppBase.h
+++ b/libfusepp/fuseAppBase.h
@@ -7,6 +7,8 @@
#include <exception>
#include <stdio.h>
#include <errno.h>
+#include <syslog.h>
+#include <misc.h>
#ifndef DLL_PUBLIC
#define DLL_PUBLIC __attribute__ ((visibility ("default")))
#endif
@@ -58,6 +60,7 @@ class DLL_PUBLIC FuseAppBase {
virtual int flock(const char *, struct fuse_file_info *, int op);
virtual int fallocate(const char *, int, off_t, off_t, struct fuse_file_info *);
virtual int onError(const std::exception & err) throw();
+ virtual void log(int level, const std::string &) const throw() = 0;
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;
@@ -156,7 +159,7 @@ class DLL_PUBLIC FuseAppBase {
return helper<f>(a...);
}
catch (...) {
- fprintf(stderr, "Unknown exception calling %s\n", typeid(f).name());
+ fuseApp->log(LOG_ERR, stringf("Unknown exception calling %s\n", typeid(f).name()));
return -ENOSYS;
}
}
diff --git a/netfs/fuse/Jamfile.jam b/netfs/fuse/Jamfile.jam
index 142221e..8413d1f 100644
--- a/netfs/fuse/Jamfile.jam
+++ b/netfs/fuse/Jamfile.jam
@@ -29,8 +29,11 @@ lib netfsClientConfiguration :
<library>..//slicer
;
+obj misc : ../../libmisc/misc.cpp ;
+
lib netfsClient :
pch
+ misc
netfsClientConfiguration
[ glob *.cpp : netfs.cpp ]
[ glob ../../libfusepp/fuse*.cpp ]
@@ -66,6 +69,7 @@ lib netfsClient :
;
exe netfs :
+ misc
netfs.cpp :
<library>netfsClient
<library>fuse
diff --git a/netfs/fuse/netfs.cpp b/netfs/fuse/netfs.cpp
index 23996c2..945c599 100644
--- a/netfs/fuse/netfs.cpp
+++ b/netfs/fuse/netfs.cpp
@@ -1,8 +1,18 @@
#include "fuseApp.h"
+#include <syslog.h>
class FuseImpl : public NetFS::FuseApp {
public:
- FuseImpl(const Ice::StringSeq & a) : NetFS::FuseApp(a) { }
+ FuseImpl(const Ice::StringSeq & a) :
+ NetFS::FuseApp(a)
+ {
+ openlog("netfs", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
+ }
+
+ ~FuseImpl()
+ {
+ closelog();
+ }
struct fuse_context * fuse_get_context() override
{
@@ -18,6 +28,11 @@ class FuseImpl : public NetFS::FuseApp {
{
return ::fuse_main(argc, argv, ops, this);
}
+
+ void log(int priority, const std::string & message) const throw() override
+ {
+ syslog(priority, "%s", message.c_str());
+ }
};
int
diff --git a/netfs/unittests/Jamfile.jam b/netfs/unittests/Jamfile.jam
index 74275c5..9aa8bda 100644
--- a/netfs/unittests/Jamfile.jam
+++ b/netfs/unittests/Jamfile.jam
@@ -9,6 +9,7 @@ lib Ice ;
path-constant me : . ;
lib testMocks :
+ ../../libmisc/misc.cpp
[ glob mock*.cpp ]
:
<library>IceUtil
@@ -18,6 +19,8 @@ lib testMocks :
<library>../daemon//netfsd
<library>../fuse//netfsClient
<library>../ice//netfsComms
+ <define>BOOST_TEST_DYN_LINK
+ <library>boost_utf
<define>ROOT=\"$(me)\"
: :
<library>boost_system
diff --git a/netfs/unittests/mockFuse.cpp b/netfs/unittests/mockFuse.cpp
index a9e2cc1..4b92332 100644
--- a/netfs/unittests/mockFuse.cpp
+++ b/netfs/unittests/mockFuse.cpp
@@ -1,4 +1,5 @@
#include "mockFuse.h"
+#include <boost/test/test_tools.hpp>
FuseMock::FuseMock(const std::string & ep, const Ice::StringSeq & a) :
NetFS::FuseApp(a),
@@ -45,6 +46,12 @@ FuseMock::ReadConfiguration(const std::string & path) const
return c;
}
+void
+FuseMock::log(int, const std::string & message) const throw()
+{
+ BOOST_MESSAGE(message);
+}
+
FuseMockHost::FuseMockHost(const std::string & ep, const Ice::StringSeq & a) :
app(new FuseMock(ep, a)),
fuse(&app->ops)
diff --git a/netfs/unittests/mockFuse.h b/netfs/unittests/mockFuse.h
index e28fd5a..71b1c5e 100644
--- a/netfs/unittests/mockFuse.h
+++ b/netfs/unittests/mockFuse.h
@@ -10,6 +10,7 @@ class FuseMock : public NetFS::FuseApp {
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;
+ void log(int, const std::string &) const throw() override;
fuse_operations ops;