aboutsummaryrefslogtreecommitdiffstats
path: root/src/g13.c
diff options
context:
space:
mode:
authorMarcus Brinkmann <[email protected]>2009-11-03 20:15:35 +0100
committerMarcus Brinkmann <[email protected]>2009-11-03 20:15:35 +0100
commit97932b102af882a37c2613b0f50dc39369c48723 (patch)
treebc4aaaea8d1fa96cc126f02a3789033aa92d5dc6 /src/g13.c
parent2009-11-02 Marcus Brinkmann <[email protected]> (diff)
downloadgpgme-97932b102af882a37c2613b0f50dc39369c48723.tar.gz
gpgme-97932b102af882a37c2613b0f50dc39369c48723.zip
2009-11-03 Marcus Brinkmann <[email protected]>
* Makefile.am (main_sources): Change g13.c to vfs-mount.c. Add vfs-create.c * vfs-create.c: New file. * g13.c: Renamed to ... * vfs-mount.c: ... this new file. * gpgme.h.in (gpgme_op_vfs_create): New prototype. * gpgme.def, libgpgme.vers: Add gpgme_op_vfs_create. * gpgme-tool.c (gt_vfs_create, cmd_vfs_create): New functions. (register_commands): Add VFS_CREATE and CREAET.
Diffstat (limited to 'src/g13.c')
-rw-r--r--src/g13.c209
1 files changed, 0 insertions, 209 deletions
diff --git a/src/g13.c b/src/g13.c
deleted file mode 100644
index a2ab675e..00000000
--- a/src/g13.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* g13.c - g13 support in GPGME
- Copyright (C) 2009 g10 Code GmbH
-
- This file is part of GPGME.
-
- GPGME is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- GPGME 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
-
-#if HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-
-#include "gpgme.h"
-#include "debug.h"
-#include "context.h"
-#include "ops.h"
-#include "util.h"
-
-typedef struct
-{
- struct _gpgme_op_vfs_mount_result result;
-} *op_data_t;
-
-
-
-gpgme_vfs_mount_result_t
-gpgme_op_vfs_mount_result (gpgme_ctx_t ctx)
-{
- gpgme_error_t err;
- void *hook;
- op_data_t opd;
-
- err = _gpgme_op_data_lookup (ctx, OPDATA_VFS_MOUNT, &hook, -1, NULL);
- opd = hook;
- /* Check in case this function is used without having run a command
- before. */
- if (err || !opd)
- return NULL;
-
- return &opd->result;
-}
-
-
-static gpgme_error_t
-vfs_start (gpgme_ctx_t ctx, int synchronous,
- const char *command,
- gpgme_assuan_data_cb_t data_cb,
- void *data_cb_value,
- gpgme_assuan_inquire_cb_t inq_cb,
- void *inq_cb_value,
- gpgme_assuan_status_cb_t status_cb,
- void *status_cb_value)
-{
- gpgme_error_t err;
- void *hook;
- op_data_t opd;
-
- if (!command || !*command)
- return gpg_error (GPG_ERR_INV_VALUE);
-
- /* The flag value 256 is used to suppress an engine reset. This is
- required to keep the connection running. */
- err = _gpgme_op_reset (ctx, ((synchronous & 255) | 256));
- if (err)
- return err;
-
- err = _gpgme_op_data_lookup (ctx, OPDATA_VFS_MOUNT, &hook, sizeof (*opd),
- NULL);
- opd = hook;
- if (err)
- return err;
-
- return _gpgme_engine_op_assuan_transact (ctx->engine, command,
- data_cb, data_cb_value,
- inq_cb, inq_cb_value,
- status_cb, status_cb_value);
-}
-
-
-
-/* XXXX. This is the asynchronous variant. */
-static gpgme_error_t
-gpgme_op_vfs_transact_start (gpgme_ctx_t ctx,
- const char *command,
- gpgme_assuan_data_cb_t data_cb,
- void *data_cb_value,
- gpgme_assuan_inquire_cb_t inq_cb,
- void *inq_cb_value,
- gpgme_assuan_status_cb_t status_cb,
- void *status_cb_value)
-{
- return vfs_start (ctx, 0, command, data_cb, data_cb_value,
- inq_cb, inq_cb_value, status_cb, status_cb_value);
-}
-
-
-/* XXXX. This is the synchronous variant. */
-static gpgme_error_t
-gpgme_op_vfs_transact (gpgme_ctx_t ctx,
- const char *command,
- gpgme_assuan_data_cb_t data_cb,
- void *data_cb_value,
- gpgme_assuan_inquire_cb_t inq_cb,
- void *inq_cb_value,
- gpgme_assuan_status_cb_t status_cb,
- void *status_cb_value,
- gpgme_error_t *op_err)
-{
- gpgme_error_t err;
-
- err = vfs_start (ctx, 1, command, data_cb, data_cb_value,
- inq_cb, inq_cb_value, status_cb, status_cb_value);
- if (!err)
- err = _gpgme_wait_one_ext (ctx, op_err);
- return err;
-}
-
-
-/* The actual exported interface follows. */
-
-/* The container is automatically unmounted when the context is reset
- or destroyed. This is a synchronous convenience interface, which
- automatically returns an operation error if there is no
- transmission error. */
-static gpgme_error_t
-_gpgme_op_vfs_mount (gpgme_ctx_t ctx, const char *container_file,
- const char *mount_dir, int flags, gpgme_error_t *op_err)
-{
- gpg_error_t err;
- char *cmd;
- char *container_file_esc = NULL;
-
- /* We want to encourage people to check error values, so not getting
- them is discouraged here. Also makes our code easier. */
- if (! op_err)
- return gpg_error (GPG_ERR_INV_VALUE);
-
- err = _gpgme_encode_percent_string (container_file, &container_file_esc, 0);
- if (err)
- return err;
-
- if (asprintf (&cmd, "OPEN -- %s", container_file_esc) < 0)
- {
- err = gpg_error_from_syserror ();
- free (container_file_esc);
- return err;
- }
- free (container_file_esc);
-
- err = gpgme_op_vfs_transact (ctx, cmd, NULL, NULL, NULL, NULL,
- NULL, NULL, op_err);
- free (cmd);
- if (err || *op_err)
- return err;
-
- if (mount_dir)
- {
- char *mount_dir_esc = NULL;
-
- err = _gpgme_encode_percent_string (mount_dir, &mount_dir_esc, 0);
- if (err)
- return err;
-
- if (asprintf (&cmd, "MOUNT -- %s", mount_dir_esc) < 0)
- {
- err = gpg_error_from_syserror ();
- free (mount_dir_esc);
- return err;
- }
- free (mount_dir_esc);
- }
- else
- {
- if (asprintf (&cmd, "MOUNT") < 0)
- return gpg_error_from_syserror ();
- }
-
- err = gpgme_op_vfs_transact (ctx, cmd, NULL, NULL, NULL, NULL,
- NULL, NULL, op_err);
- free (cmd);
-
- return err;
-}
-
-gpgme_error_t
-gpgme_op_vfs_mount (gpgme_ctx_t ctx, const char *container_file,
- const char *mount_dir, int flags, gpgme_error_t *op_err)
-{
- TRACE_BEG4 (DEBUG_CTX, "gpgme_op_vfs_mount", ctx,
- "container=%s, mount_dir=%s, flags=0x%x, op_err=%p",
- container_file, mount_dir, flags, op_err);
- return TRACE_ERR (_gpgme_op_vfs_mount (ctx, container_file, mount_dir,
- flags, op_err));
-}
-