summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2023-05-23 14:50:22 +0200
committerWerner Koch <wk@gnupg.org>2023-05-23 14:50:22 +0200
commit48b56485548e11e901b762f39f9dcd14aa650184 (patch)
tree0d6256d39b8820970654b7900d324b7730b326bf /common
parentsm: Emit STATUS_FAILURE for non-implemented commands. (diff)
downloadgnupg2-48b56485548e11e901b762f39f9dcd14aa650184.tar.xz
gnupg2-48b56485548e11e901b762f39f9dcd14aa650184.zip
common,w32: Set a proper error code when creating an output file.
* common/iobuf.c (direct_open) [W32]: Set errno. (fd_cache_open): Ditto. --
Diffstat (limited to 'common')
-rw-r--r--common/iobuf.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/common/iobuf.c b/common/iobuf.c
index 62cde27f9..825b97704 100644
--- a/common/iobuf.c
+++ b/common/iobuf.c
@@ -311,6 +311,13 @@ direct_open (const char *fname, const char *mode, int mode700)
{
hfile = CreateFileW (wfname, da, sm, NULL, cd,
FILE_ATTRIBUTE_NORMAL, NULL);
+ if (hfile == INVALID_HANDLE_VALUE)
+ {
+ gnupg_w32_set_errno (-1);
+ if (DBG_IOBUF)
+ log_debug ("iobuf:direct_open '%s' CreateFile failed: %s\n",
+ fname, gpg_strerror (gpg_error_from_syserror()));
+ }
xfree (wfname);
}
else
@@ -426,8 +433,9 @@ fd_cache_open (const char *fname, const char *mode)
#ifdef HAVE_W32_SYSTEM
if (SetFilePointer (fp, 0, NULL, FILE_BEGIN) == 0xffffffff)
{
- log_error ("rewind file failed on handle %p: ec=%d\n",
- fp, (int) GetLastError ());
+ int ec = (int) GetLastError ();
+ log_error ("rewind file failed on handle %p: ec=%d\n", fp, ec);
+ gnupg_w32_set_errno (ec);
fp = GNUPG_INVALID_FD;
}
#else