summaryrefslogtreecommitdiffabout
path: root/src
Side-by-side diff
Diffstat (limited to 'src') (more/less context) (show whitespace changes)
-rw-r--r--src/eyefiworker.cc4
-rw-r--r--src/eyefiworker.h1
-rw-r--r--src/eyetil.h5
-rw-r--r--src/iiid.cc4
4 files changed, 12 insertions, 2 deletions
diff --git a/src/eyefiworker.cc b/src/eyefiworker.cc
index ac75fc1..1979b46 100644
--- a/src/eyefiworker.cc
+++ b/src/eyefiworker.cc
@@ -33,2 +33,4 @@ eyefiworker::eyefiworker()
}
+eyefiworker::~eyefiworker() {
+}
@@ -58,3 +60,3 @@ int eyefiworker::run(int bindport) {
#endif /* NDEBUG */
- _exit(0);
+ throw throwable_exit(0);
}
diff --git a/src/eyefiworker.h b/src/eyefiworker.h
index 6d4082c..6cdecff 100644
--- a/src/eyefiworker.h
+++ b/src/eyefiworker.h
@@ -9,2 +9,3 @@ class eyefiworker : public eyefiService {
eyefiworker();
+ ~eyefiworker();
diff --git a/src/eyetil.h b/src/eyetil.h
index eff2c43..03b9ba8 100644
--- a/src/eyetil.h
+++ b/src/eyetil.h
@@ -9,2 +9,7 @@
+struct throwable_exit {
+ int rc;
+ throwable_exit(int rc_) : rc(rc_) { }
+};
+
class binary_t : public std::vector<unsigned char> {
diff --git a/src/iiid.cc b/src/iiid.cc
index d655fe3..b3dd3bf 100644
--- a/src/iiid.cc
+++ b/src/iiid.cc
@@ -91,3 +91,5 @@ int main(int argc,char **argv) try {
return 0;
-} catch(std::exception& e) {
+} catch(const throwable_exit& e) {
+ return e.rc;
+} catch(const std::exception& e) {
syslog(LOG_CRIT,"Exiting iii daemon, because of error condition");