common: Add header file and build the new code.
authorJustus Winter <justus@g10code.com>
Mon, 30 Nov 2015 12:00:11 +0000 (13:00 +0100)
committerJustus Winter <justus@g10code.com>
Fri, 4 Dec 2015 11:45:09 +0000 (12:45 +0100)
* common/Makefile.am (common_sources): Add new files.
* common/sh-exectool.h: New file.

Signed-off-by: Justus Winter <justus@g10code.com>
common/Makefile.am
common/sh-exectool.c
common/sh-exectool.h [new file with mode: 0644]

index c02c60e..1db4ec9 100644 (file)
@@ -87,7 +87,8 @@ common_sources = \
        helpfile.c \
        mkdir_p.c mkdir_p.h \
        strlist.c strlist.h \
-       call-gpg.c call-gpg.h
+       call-gpg.c call-gpg.h \
+       sh-exectool.c sh-exectool.h
 
 if HAVE_W32_SYSTEM
 common_sources += w32-reg.c w32-afunix.c w32-afunix.h
index ab18095..504900b 100644 (file)
@@ -25,9 +25,9 @@
 #include <errno.h>
 #include <assert.h>
 
-#include "g13-syshelp.h"
 #include <assuan.h>
 #include "i18n.h"
+#include "logging.h"
 #include "membuf.h"
 #include "exechelp.h"
 #include "sysutils.h"
diff --git a/common/sh-exectool.h b/common/sh-exectool.h
new file mode 100644 (file)
index 0000000..bbdbb03
--- /dev/null
@@ -0,0 +1,35 @@
+/* sh-exectool.h - Utility functions to execute a helper tool
+ * Copyright (C) 2015 g10 Code GmbH
+ *
+ * This file is part of GnuPG.
+ *
+ * GnuPG is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GnuPG is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GNUPG_COMMON_SH_EXECTOOL_H
+#define GNUPG_COMMON_SH_EXECTOOL_H
+
+/* Run the program PGMNAME with the command line arguments given in
+   the NULL terminates array ARGV.  If INPUT_STRING is not NULL it
+   will be fed to stdin of the process.  stderr is logged using
+   log_info and the process' stdout is returned in a newly malloced
+   buffer RESULT with the length stored at RESULTLEN if not given as
+   NULL.  A hidden Nul is appended to the output.  On error NULL is
+   stored at RESULT, a diagnostic is printed, and an error code
+   returned.  */
+gpg_error_t sh_exec_tool (const char *pgmname, const char *argv[],
+                         const char *input_string,
+                         char **result, size_t *resultlen);
+
+#endif /* GNUPG_COMMON_SH_EXECTOOL_H */