/* engine-uiserver.c - Uiserver engine.
Copyright (C) 2000 Werner Koch (dd9jn)
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 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
#include "data.h"
#include "assuan.h"
-#include "status-table.h"
#include "debug.h"
#include "engine-backend.h"
int linelen;
} attic;
int any; /* any data line seen */
- } colon;
+ } colon;
gpgme_data_t inline_data; /* Used to collect D lines. */
typedef struct engine_uiserver *engine_uiserver_t;
-static void uiserver_io_event (void *engine,
+static void uiserver_io_event (void *engine,
gpgme_event_io_t type, void *type_data);
return gpg_error (GPG_ERR_INV_VALUE);
/* FIXME: Reset value to default. */
- if (!value)
+ if (!value)
return 0;
if (asprintf (&optstr, "OPTION %s=%s", catstr, value) < 0)
if (uiserver->status.fnc)
err = uiserver->status.fnc (uiserver->status.fnc_value,
GPGME_STATUS_EOF, "");
-
+
if (!err && uiserver->colon.fnc && uiserver->colon.any)
{
/* We must tell a colon function about the EOF. We do
*dst = *src++;
(*alinelen)++;
}
-
+
if (*dst == '\n')
{
/* Terminate the pending line, pass it to the colon
handler and reset it. */
-
+
uiserver->colon.any = 1;
if (*alinelen > 1 && *(dst - 1) == '\r')
dst--;
}
else
*dst++ = *src++;
-
+
linelen++;
}
-
+
src = line + 2;
while (linelen > 0)
{
{
char *rest;
gpgme_status_code_t r;
-
+
rest = strchr (line + 2, ' ');
if (!rest)
rest = line + linelen; /* set to an empty string */
else if (linelen >= 7
&& line[0] == 'I' && line[1] == 'N' && line[2] == 'Q'
&& line[3] == 'U' && line[4] == 'I' && line[5] == 'R'
- && line[6] == 'E'
+ && line[6] == 'E'
&& (line[7] == '\0' || line[7] == ' '))
{
char *keyword = line+7;
}
while (!err && assuan_pending_line (uiserver->assuan_ctx));
-
+
return err;
}
return err;
}
}
-
+
if (ciph)
{
uiserver->output_cb.data = ciph;
if (key)
{
const char *s = NULL;
-
+
if (key && key->uids)
s = key->uids->email;
-
+
if (s && strlen (s) < 80)
{
char buf[100];
-
+
strcpy (stpcpy (buf, "SENDER --info "), s);
err = uiserver_assuan_simple_command (uiserver->assuan_ctx, buf,
uiserver->status.fnc,
else
err = gpg_error (GPG_ERR_INV_VALUE);
gpgme_key_unref (key);
- if (err)
+ if (err)
{
free (cmd);
return err;
static void
uiserver_set_status_handler (void *engine, engine_status_handler_t fnc,
- void *fnc_value)
+ void *fnc_value)
{
engine_uiserver_t uiserver = engine;
static gpgme_error_t
uiserver_set_colon_line_handler (void *engine, engine_colon_line_handler_t fnc,
- void *fnc_value)
+ void *fnc_value)
{
engine_uiserver_t uiserver = engine;