diff options
Diffstat (limited to 'gpgme/op-support.c')
-rw-r--r-- | gpgme/op-support.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/gpgme/op-support.c b/gpgme/op-support.c index ba220a3b..68ff77d0 100644 --- a/gpgme/op-support.c +++ b/gpgme/op-support.c @@ -123,6 +123,8 @@ _gpgme_op_reset (gpgme_ctx_t ctx, int type) } +/* Parse the INV_RECP status line in ARGS and return the result in + KEY. */ gpgme_error_t _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key) { @@ -209,3 +211,47 @@ _gpgme_parse_inv_recp (char *args, gpgme_invalid_key_t *key) *key = inv_key; return 0; } + + +/* Parse the PLAINTEXT status line in ARGS and return the result in + FILENAMEP. */ +gpgme_error_t +_gpgme_parse_plaintext (char *args, char **filenamep) +{ + char *tail; + + while (*args == ' ') + args++; + if (*args == '\0') + return 0; + + /* First argument is file type. */ + while (*args != ' ' && *args != '\0') + args++; + while (*args == ' ') + args++; + if (*args == '\0') + return 0; + + /* Second argument is the timestamp. */ + while (*args != ' ' && *args != '\0') + args++; + while (*args == ' ') + args++; + if (*args == '\0') + return 0; + + tail = args; + while (*tail != ' ' && *tail != '\0') + tail++; + *tail = '\0'; + if (filenamep && *args != '\0') + { + char *filename = strdup (args); + if (!filename) + return gpg_error_from_errno (errno); + + *filenamep = filename; + } + return 0; +} |