-/* Copyright (C) 1991, 1992, 1996, 1998, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1998, 2001, 2006, 2013 Free Software Foundation, Inc.
This file is derived from mkstemps.c from the GNU Libiberty Library
which in turn is derived from the GNU C Library.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
-#include "libguile/scmconfig.h"
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libguile/__scm.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
-
-/* We need to provide a type for gcc_uint64_t. */
-#ifdef __GNUC__
-typedef unsigned long long gcc_uint64_t;
-#else
-typedef unsigned long gcc_uint64_t;
+#ifdef __MINGW32__
+#include <process.h>
#endif
#ifndef TMP_MAX
#define TMP_MAX 16384
#endif
+/* We provide this prototype to avoid compiler warnings. If this ever
+ conflicts with a declaration in a system header file, we'll find
+ out, because we should include that header file here. */
+int mkstemp (char *);
+
/* Generate a unique temporary file name from TEMPLATE.
TEMPLATE has the form:
{
static const char letters[]
= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- static gcc_uint64_t value;
+ static scm_t_uint64 value;
#ifdef HAVE_GETTIMEOFDAY
struct timeval tv;
#endif
#ifdef HAVE_GETTIMEOFDAY
/* Get some more or less random data. */
gettimeofday (&tv, NULL);
- value += ((gcc_uint64_t) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid ();
+ value += ((scm_t_uint64) tv.tv_usec << 16) ^ tv.tv_sec ^ getpid ();
#else
value += getpid ();
#endif
for (count = 0; count < TMP_MAX; ++count)
{
- gcc_uint64_t v = value;
+ scm_t_uint64 v = value;
int fd;
/* Fill in the random bits. */
v /= 62;
XXXXXX[5] = letters[v % 62];
- fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600);
+ fd = open (template, O_RDWR|O_CREAT|O_EXCL|O_BINARY, 0600);
if (fd >= 0)
/* The file does not exist. */
return fd;