From: Kai Tietz Date: Fri, 30 Apr 2010 09:15:03 +0000 (+0000) Subject: unix.c (raw_truncate): Explicit cast from integer-scal to pointer. X-Git-Tag: releases/gcc-4.6.0~7568 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e7fc9c75d0e914748acda8cd682479fbe9da38e9;p=thirdparty%2Fgcc.git unix.c (raw_truncate): Explicit cast from integer-scal to pointer. 2010-04-30 Kai Tietz PR/43844 * io/unix.c (raw_truncate): Explicit cast from integer-scal to pointer. (empfile): Use for mingw GetTempPath and avoid double slash for path. From-SVN: r158925 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 2c38ba39af1a..a869f31ccc82 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,11 @@ +2010-04-30 Kai Tietz + + PR/43844 + * io/unix.c (raw_truncate): Explicit cast from integer-scalar + to pointer. + (empfile): Use for mingw GetTempPath and avoid double slash + for path. + 2010-04-24 Kai Tietz PR/43844 diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index b3bd438c32dd..9ab5bcdbc564 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -308,7 +308,7 @@ raw_truncate (unix_stream * s, gfc_offset length) errno = EBADF; return -1; } - h = _get_osfhandle (s->fd); + h = (HANDLE) _get_osfhandle (s->fd); if (h == INVALID_HANDLE_VALUE) { errno = EBADF; @@ -877,20 +877,45 @@ tempfile (st_parameter_open *opp) { 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/gfortrantmpXXXXXX", tempdir); + sprintf (template, "%s%sgfortrantmpXXXXXX", tempdir, slash); fd = mkstemp (template); @@ -898,7 +923,7 @@ tempfile (st_parameter_open *opp) fd = -1; do { - sprintf (template, "%s/gfortrantmpXXXXXX", tempdir); + sprintf (template, "%s%sgfortrantmpXXXXXX", tempdir, slash); if (!mktemp (template)) break; #if defined(HAVE_CRLF) && defined(O_BINARY) @@ -909,7 +934,6 @@ tempfile (st_parameter_open *opp) #endif } while (fd == -1 && errno == EEXIST); - #endif /* HAVE_MKSTEMP */ if (fd < 0)