mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-20 23:58:54 +02:00
GLocalFile: Use _fstati64 rather than stat on Win32
We want this to get 64bit timestamps and file lenghts.
This commit is contained in:
committed by
Alexander Larsson
parent
a3722d0408
commit
8b50e2f547
@@ -1297,8 +1297,8 @@ g_local_file_read (GFile *file,
|
|||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GLocalFile *local = G_LOCAL_FILE (file);
|
GLocalFile *local = G_LOCAL_FILE (file);
|
||||||
int fd;
|
int fd, ret;
|
||||||
struct stat buf;
|
GLocalFileStat buf;
|
||||||
|
|
||||||
fd = g_open (local->filename, O_RDONLY|O_BINARY, 0);
|
fd = g_open (local->filename, O_RDONLY|O_BINARY, 0);
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
@@ -1312,7 +1312,13 @@ g_local_file_read (GFile *file,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fstat(fd, &buf) == 0 && S_ISDIR (buf.st_mode))
|
#ifdef G_OS_WIN32
|
||||||
|
ret = _fstati64 (fd, &buf);
|
||||||
|
#else
|
||||||
|
ret = fstat (fd, &buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (ret == 0 && S_ISDIR (buf.st_mode))
|
||||||
{
|
{
|
||||||
close (fd);
|
close (fd);
|
||||||
g_set_error_literal (error, G_IO_ERROR,
|
g_set_error_literal (error, G_IO_ERROR,
|
||||||
|
@@ -909,10 +909,16 @@ handle_overwrite_open (const char *filename,
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
struct stat tmp_statbuf;
|
GLocalFileStat tmp_statbuf;
|
||||||
|
int tres;
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
tres = _fstati64 (tmpfd, &tmp_statbuf);
|
||||||
|
#else
|
||||||
|
tres = fstat (tmpfd, &tmp_statbuf);
|
||||||
|
#endif
|
||||||
/* Check that we really needed to change something */
|
/* Check that we really needed to change something */
|
||||||
if (fstat (tmpfd, &tmp_statbuf) != 0 ||
|
if (tres != 0 ||
|
||||||
original_stat.st_uid != tmp_statbuf.st_uid ||
|
original_stat.st_uid != tmp_statbuf.st_uid ||
|
||||||
original_stat.st_gid != tmp_statbuf.st_gid ||
|
original_stat.st_gid != tmp_statbuf.st_gid ||
|
||||||
original_stat.st_mode != tmp_statbuf.st_mode)
|
original_stat.st_mode != tmp_statbuf.st_mode)
|
||||||
|
Reference in New Issue
Block a user