aboutsummaryrefslogtreecommitdiffstats
path: root/agent/findkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/findkey.c')
-rw-r--r--agent/findkey.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/agent/findkey.c b/agent/findkey.c
index 96a1f360c..b2ee68513 100644
--- a/agent/findkey.c
+++ b/agent/findkey.c
@@ -64,7 +64,7 @@ agent_write_private_key (const unsigned char *grip,
{
log_error ("secret key file `%s' already exists\n", fname);
xfree (fname);
- return seterr (General_Error);
+ return gpg_error (GPG_ERR_GENERAL);
}
/* We would like to create FNAME but only if it does not already
@@ -82,32 +82,39 @@ agent_write_private_key (const unsigned char *grip,
else
{
fp = fdopen (fd, "wb");
- if (! fp)
- close (fd);
+ if (!fp)
+ {
+ int save_e = errno;
+ close (fd);
+ errno = save_e;
+ }
}
}
if (!fp)
{
+ gpg_error_t tmperr = gpg_error (gpg_err_code_from_errno (errno));
log_error ("can't create `%s': %s\n", fname, strerror (errno));
xfree (fname);
- return seterr (File_Create_Error);
+ return tmperr;
}
if (fwrite (buffer, length, 1, fp) != 1)
{
+ gpg_error_t tmperr = gpg_error (gpg_err_code_from_errno (errno));
log_error ("error writing `%s': %s\n", fname, strerror (errno));
fclose (fp);
remove (fname);
xfree (fname);
- return seterr (File_Create_Error);
+ return tmperr;
}
if ( fclose (fp) )
{
+ gpg_error_t tmperr = gpg_error (gpg_err_code_from_errno (errno));
log_error ("error closing `%s': %s\n", fname, strerror (errno));
remove (fname);
xfree (fname);
- return seterr (File_Create_Error);
+ return tmperr;
}
xfree (fname);
@@ -291,7 +298,7 @@ agent_key_from_file (CTRL ctrl,
assert (n);
*shadow_info = xtrymalloc (n);
if (!*shadow_info)
- rc = GNUPG_Out_Of_Core;
+ rc = out_of_core ();
else
{
memcpy (*shadow_info, s, n);
@@ -306,7 +313,7 @@ agent_key_from_file (CTRL ctrl,
break;
default:
log_error ("invalid private key format\n");
- rc = GNUPG_Bad_Secret_Key;
+ rc = gpg_error (GPG_ERR_BAD_SECKEY);
break;
}
if (rc)