aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2009-11-06 00:44:44 +0000
committerMarcus Brinkmann <[email protected]>2009-11-06 00:44:44 +0000
commit75f035e9d0d6c2c73b288d7095a3c9ca2a95feb2 (patch)
tree987d20db80167a66bfdd6dd758c27ef4ce42a8a0
parent2009-11-05 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-75f035e9d0d6c2c73b288d7095a3c9ca2a95feb2.tar.gz
gpgme-75f035e9d0d6c2c73b288d7095a3c9ca2a95feb2.zip
2009-11-06 Marcus Brinkmann <[email protected]>
* gpgme-tool.c (struct gpgme_tool): New members write_data and write_data_hook. (gt_write_data): New function. (gt_result): Output vfs_mount result. (server_write_data): New function. (gpgme_server): Initialize write_data members.
-rw-r--r--src/ChangeLog9
-rw-r--r--src/gpgme-tool.c33
2 files changed, 42 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index c4793b10..943e7d7e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,12 @@
+2009-11-06 Marcus Brinkmann <[email protected]>
+
+ * gpgme-tool.c (struct gpgme_tool): New members write_data and
+ write_data_hook.
+ (gt_write_data): New function.
+ (gt_result): Output vfs_mount result.
+ (server_write_data): New function.
+ (gpgme_server): Initialize write_data members.
+
2009-11-05 Marcus Brinkmann <[email protected]>
* engine-g13.c (struct engine_g13): Remove members RESULT_CB and
diff --git a/src/gpgme-tool.c b/src/gpgme-tool.c
index 54d793cf..d2745301 100644
--- a/src/gpgme-tool.c
+++ b/src/gpgme-tool.c
@@ -35,6 +35,8 @@
#include <argp.h>
#endif
+#include <assuan.h>
+
#include "gpgme.h"
@@ -509,6 +511,8 @@ struct gpgme_tool
gpg_error_t (*write_status) (void *hook, const char *status, const char *msg);
void *write_status_hook;
+ gpg_error_t (*write_data) (void *hook, const void *buf, size_t len);
+ void *write_data_hook;
};
typedef struct gpgme_tool *gpgme_tool_t;
@@ -739,6 +743,13 @@ gt_write_status (gpgme_tool_t gt, status_t status, ...)
gpg_error_t
+gt_write_data (gpgme_tool_t gt, void *buf, size_t len)
+{
+ return gt->write_data (gt->write_data_hook, buf, len);
+}
+
+
+gpg_error_t
gt_get_engine_info (gpgme_tool_t gt, gpgme_protocol_t proto)
{
gpgme_engine_info_t info;
@@ -1085,6 +1096,18 @@ gt_result (gpgme_tool_t gt, unsigned int flags)
}
}
}
+ if (flags & GT_RESULT_VFS_MOUNT)
+ {
+ gpgme_vfs_mount_result_t res = gpgme_op_vfs_mount_result (gt->ctx);
+ if (res)
+ {
+ gt_write_data (gt, "vfs_mount\n", 10);
+ gt_write_data (gt, "mount_dir:", 10);
+ gt_write_data (gt, res->mount_dir, strlen (res->mount_dir));
+ gt_write_data (gt, "\n", 1);
+ }
+ }
+
return 0;
}
@@ -1113,6 +1136,14 @@ server_write_status (void *hook, const char *status, const char *msg)
}
+gpg_error_t
+server_write_data (void *hook, const void *buf, size_t len)
+{
+ struct server *server = hook;
+ return assuan_send_data (server->assuan_ctx, buf, len);
+}
+
+
static gpgme_data_encoding_t
server_data_encoding (const char *line)
{
@@ -1999,6 +2030,8 @@ gpgme_server (gpgme_tool_t gt)
server.gt = gt;
gt->write_status = server_write_status;
gt->write_status_hook = &server;
+ gt->write_data = server_write_data;
+ gt->write_data_hook = &server;
/* We use a pipe based server so that we can work from scripts.
assuan_init_pipe_server will automagically detect when we are