cpp: Add env var to control editinteractor debug
authorAndre Heinecke <aheinecke@gnupg.org>
Fri, 1 Nov 2019 11:00:18 +0000 (12:00 +0100)
committerAndre Heinecke <aheinecke@gnupg.org>
Fri, 1 Nov 2019 11:00:18 +0000 (12:00 +0100)
* lang/cpp/src/editinteractor.cpp (EditInteractor::Private::Private):
Read "GPGMEPP_INTERACTOR_DEBUG" env var.
(EditInteractor::Private::~Private): Close debug file.

--
While it was possible for the application to control the
debug through setDebugChannel it is often times helpful
to just debug without changing the application using
GPGME

lang/cpp/src/editinteractor.cpp

index f7c994a..36d1be6 100644 (file)
@@ -178,10 +178,25 @@ EditInteractor::Private::Private(EditInteractor *qq)
       error(),
       debug(nullptr)
 {
-
+    const char *debug_env = getenv("GPGMEPP_INTERACTOR_DEBUG");
+    if (!debug_env) {
+        return;
+    }
+    if (!strcmp(debug_env, "stdout")) {
+        debug = stdout;
+    } else if (!strcmp(debug_env, "stderr")) {
+        debug = stderr;
+    } else if (debug_env) {
+        debug = std::fopen(debug_env, "a+");
+    }
 }
 
-EditInteractor::Private::~Private() {}
+EditInteractor::Private::~Private()
+{
+    if (debug) {
+        std::fclose(debug);
+    }
+}
 
 EditInteractor::EditInteractor()
     : d(new Private(this))