aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2008-06-26 14:38:39 +0000
committerWerner Koch <[email protected]>2008-06-26 14:38:39 +0000
commiteccdb17c30ef564767e5279cc8eae9bc937e0e48 (patch)
tree848286f049988df0882b70d8da788254c4913d82
parentassuan/ (diff)
downloadgpgme-eccdb17c30ef564767e5279cc8eae9bc937e0e48.tar.gz
gpgme-eccdb17c30ef564767e5279cc8eae9bc937e0e48.zip
Fix incompatibility with non-recent mingw runtimes.
-rw-r--r--gpgme/ChangeLog6
-rw-r--r--gpgme/w32-util.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog
index 2587f16c..cdda77ca 100644
--- a/gpgme/ChangeLog
+++ b/gpgme/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-26 Werner Koch <[email protected]>
+
+ * w32-util.c (_gpgme_mkstemp): Replace sprint by stpcpy.
+ (mkstemp): Need to use GetSystemTimeAsFileTime for better
+ compatibility.
+
2008-06-25 Marcus Brinkmann <[email protected]>
* gpgme-w32spawn.c: New file.
diff --git a/gpgme/w32-util.c b/gpgme/w32-util.c
index fc8e4be1..05a9069b 100644
--- a/gpgme/w32-util.c
+++ b/gpgme/w32-util.c
@@ -470,9 +470,11 @@ mkstemp (char *tmpl)
/* Get some more or less random data. */
{
- struct timeval tv;
- gettimeofday (&tv, NULL);
- random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
+ FILETIME ft;
+
+ GetSystemTimeAsFileTime (&ft);
+ random_time_bits = (((uint64_t)ft.dwHighDateTime << 32)
+ | (uint64_t)ft.dwLowDateTime);
}
value += random_time_bits ^ getpid ();
@@ -537,7 +539,7 @@ _gpgme_mkstemp (int *fd, char **name)
tmpname = malloc (strlen (tmp) + 13 + 1);
if (!tmpname)
return -1;
- sprintf (tmpname, "%s\\gpgme-XXXXXX", tmp);
+ strcpy (stpcpy (tmpname, tmp), "\\gpgme-XXXXXX");
*fd = mkstemp (tmpname);
if (fd < 0)
return -1;