Contributed by Andy Vaught
F2003 I/O support contributed by Jerry DeLisle
-This file is part of the GNU Fortran runtime library (libgfortran).
+This file is part of the GNU Fortran 95 runtime library (libgfortran).
Libgfortran is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
errno = EBADF;
return -1;
}
- h = (HANDLE) _get_osfhandle (s->fd);
+ h = _get_osfhandle (s->fd);
if (h == INVALID_HANDLE_VALUE)
{
errno = EBADF;
retval = close (s->fd);
else
retval = 0;
- free (s);
+ free_mem (s);
return retval;
}
{
if (buf_flush (s) != 0)
return -1;
- free (s->buffer);
+ free_mem (s->buffer);
return raw_close (s);
}
mem_close (unix_stream * s)
{
if (s != NULL)
- free (s);
+ free_mem (s);
return 0;
}
{
const char *tempdir;
char *template;
- const char *slash = "/";
int fd;
tempdir = getenv ("GFORTRAN_TMPDIR");
-#ifdef __MINGW32__
- if (tempdir == NULL)
- {
- char buffer[MAX_PATH + 1];
- DWORD ret;
- ret = GetTempPath (MAX_PATH, buffer);
- /* If we are not able to get a temp-directory, we use
- current directory. */
- if (ret > MAX_PATH || !ret)
- buffer[0] = 0;
- else
- buffer[ret] = 0;
- tempdir = strdup (buffer);
- }
-#else
if (tempdir == NULL)
tempdir = getenv ("TMP");
if (tempdir == NULL)
tempdir = getenv ("TEMP");
if (tempdir == NULL)
tempdir = DEFAULT_TEMPDIR;
-#endif
- /* Check for special case that tempdir contains slash
- or backslash at end. */
- if (*tempdir == 0 || tempdir[strlen (tempdir) - 1] == '/'
-#ifdef __MINGW32__
- || tempdir[strlen (tempdir) - 1] == '\\'
-#endif
- )
- slash = "";
template = get_mem (strlen (tempdir) + 20);
#ifdef HAVE_MKSTEMP
- sprintf (template, "%s%sgfortrantmpXXXXXX", tempdir, slash);
+ sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
fd = mkstemp (template);
fd = -1;
do
{
- sprintf (template, "%s%sgfortrantmpXXXXXX", tempdir, slash);
+ sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
if (!mktemp (template))
break;
#if defined(HAVE_CRLF) && defined(O_BINARY)
#endif
}
while (fd == -1 && errno == EEXIST);
+
#endif /* HAVE_MKSTEMP */
if (fd < 0)
- free (template);
+ free_mem (template);
else
{
opp->file = template;
__gthread_mutex_lock (&unit_lock);
__gthread_mutex_unlock (&u->lock);
if (predec_waiting_locked (u) == 0)
- free (u);
+ free_mem (u);
goto retry;
}
__gthread_mutex_lock (&unit_lock);
__gthread_mutex_unlock (&u->lock);
if (predec_waiting_locked (u) == 0)
- free (u);
+ free_mem (u);
}
}
while (1);