summaryrefslogtreecommitdiff
path: root/trust/extract.c
diff options
context:
space:
mode:
Diffstat (limited to 'trust/extract.c')
-rw-r--r--trust/extract.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/trust/extract.c b/trust/extract.c
index 0389d29..d12d18b 100644
--- a/trust/extract.c
+++ b/trust/extract.c
@@ -41,6 +41,7 @@
#include "iter.h"
#include "message.h"
#include "oid.h"
+#include "path.h"
#include "pkcs11.h"
#include "pkcs11x.h"
#include "save.h"
@@ -48,6 +49,7 @@
#include <assert.h>
#include <ctype.h>
+#include <errno.h>
#include <getopt.h>
#include <stdint.h>
#include <stdio.h>
@@ -281,3 +283,39 @@ p11_trust_extract (int argc,
p11_enumerate_cleanup (&ex);
return ret;
}
+
+int
+p11_trust_extract_compat (int argc,
+ char *argv[])
+{
+ char *path;
+ char *path2;
+ int error;
+
+ argv[argc] = NULL;
+
+ /*
+ * For compatibility with people who deployed p11-kit 0.18.x
+ * before trust stuff was put into its own branch.
+ */
+ path2 = p11_path_build (PRIVATEDIR, "p11-kit-extract-trust", NULL);
+ return_val_if_fail (path2 != NULL, 1);
+ execv (path2, argv);
+ error = errno;
+ free (path2);
+
+ if (error == ENOENT) {
+ path = p11_path_build (PRIVATEDIR, "trust-extract-compat", NULL);
+ return_val_if_fail (path != NULL, 1);
+ execv (path, argv);
+ error = errno;
+ free (path);
+ }
+
+ /* At this point we have no command */
+ p11_message_err (error, "could not run %s command", path);
+
+ free (path);
+ free (path2);
+ return 2;
+}