We want this to get 64bit timestamps and file lenghts.
GError **error)
{
GLocalFile *local = G_LOCAL_FILE (file);
- int fd;
- struct stat buf;
+ int fd, ret;
+ GLocalFileStat buf;
fd = g_open (local->filename, O_RDONLY|O_BINARY, 0);
if (fd == -1)
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);
g_set_error_literal (error, G_IO_ERROR,
)
)
{
- 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 */
- if (fstat (tmpfd, &tmp_statbuf) != 0 ||
+ if (tres != 0 ||
original_stat.st_uid != tmp_statbuf.st_uid ||
original_stat.st_gid != tmp_statbuf.st_gid ||
original_stat.st_mode != tmp_statbuf.st_mode)