2011-02-02 Marcus Brinkmann <mb@g10code.com>
authorMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Wed, 2 Feb 2011 12:47:53 +0000 (13:47 +0100)
committerMarcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
Wed, 2 Feb 2011 12:47:53 +0000 (13:47 +0100)
        * w32-util.c (mkstemp): Don't use CreateFile instead of open (the
        function is not used on Windows CE, and the callers were not
        adjusted).

src/ChangeLog
src/w32-util.c

index 562d2977e40236caf7ef3ccedb047f5690d76243..fe850956151e63cdf3943124808a153c8fda08ed 100644 (file)
@@ -1,3 +1,9 @@
+2011-02-02  Marcus Brinkmann  <mb@g10code.com>
+
+       * w32-util.c (mkstemp): Don't use CreateFile instead of open (the
+       function is not used on Windows CE, and the callers were not
+       adjusted).
+
 2010-11-02  Werner Koch  <wk@g10code.com>
 
        * data-fd.c (read, write, lseek) [W32CE && ! __MINGW32CE__]: New.
index ec2fe50f2aa8b670a24f11708fbc6b1c6ab541db..c29ff490ea2cfe4693c2fd6e5eed2c33f2bc401b 100644 (file)
@@ -473,6 +473,14 @@ _gpgme_get_conf_int (const char *key, int *value)
 }
 
 \f
+#ifdef HAVE_W32CE_SYSTEM
+int
+_gpgme_mkstemp (int *fd, char **name)
+{
+  return -1;
+}
+#else
+
 /* mkstemp extracted from libc/sysdeps/posix/tempname.c.  Copyright
    (C) 1991-1999, 2000, 2001, 2006 Free Software Foundation, Inc.
 
@@ -496,7 +504,7 @@ mkstemp (char *tmpl)
   static uint64_t value;
   uint64_t random_time_bits;
   unsigned int count;
-  HANDLE fd = INVALID_HANDLE_VALUE;
+  int fd = -1;
   int save_errno = errno;
 
   /* A lower bound on the number of temporary files to attempt to
@@ -552,23 +560,14 @@ mkstemp (char *tmpl)
       v /= 62;
       XXXXXX[5] = letters[v % 62];
 
-      fd = CreateFileA (tmpl, 
-                        GENERIC_WRITE|GENERIC_READ,
-                        FILE_SHARE_READ|FILE_SHARE_WRITE,
-                        NULL,
-                        CREATE_NEW,
-                        FILE_ATTRIBUTE_NORMAL,
-                        NULL);
-      if (fd != INVALID_HANDLE_VALUE)
+      fd = open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+      if (fd >= 0)
        {
          gpg_err_set_errno (save_errno);
-         return (int)fd;
+         return fd;
        }
-      else if (GetLastError () != ERROR_FILE_EXISTS)
-        {
-         gpg_err_set_errno (EIO);
-          return -1;
-        }
+      else if (errno != EEXIST)
+       return -1;
     }
 
   /* We got out of the loop because we ran out of combinations to try.  */
@@ -613,6 +612,7 @@ _gpgme_mkstemp (int *fd, char **name)
   *name = tmpname;
   return 0;
 }
+#endif
 
 
 \f