Skip to content

Commit

Permalink
Revert "Windows: Use a customized struct stat that also has the st_bl…
Browse files Browse the repository at this point in the history
…ocks member."

This reverts commit fc2ded5.

As we do not need the member in struct stat, we do not need to have a
custom "struct mingw_stat" anymore.

Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Johannes Sixt authored and Junio C Hamano committed Aug 19, 2008
1 parent fdb2a2a commit 180964f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 32 deletions.
28 changes: 8 additions & 20 deletions compat/mingw.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,10 @@ static int do_lstat(const char *file_name, struct stat *buf)
buf->st_ino = 0;
buf->st_gid = 0;
buf->st_uid = 0;
buf->st_nlink = 1;
buf->st_mode = fMode;
buf->st_size = fdata.nFileSizeLow; /* Can't use nFileSizeHigh, since it's not a stat64 */
buf->st_dev = _getdrive() - 1;
buf->st_dev = buf->st_rdev = (_getdrive() - 1);
buf->st_atime = filetime_to_time_t(&(fdata.ftLastAccessTime));
buf->st_mtime = filetime_to_time_t(&(fdata.ftLastWriteTime));
buf->st_ctime = filetime_to_time_t(&(fdata.ftCreationTime));
Expand Down Expand Up @@ -88,7 +89,7 @@ static int do_lstat(const char *file_name, struct stat *buf)
* complete. Note that Git stat()s are redirected to mingw_lstat()
* too, since Windows doesn't really handle symlinks that well.
*/
int mingw_lstat(const char *file_name, struct mingw_stat *buf)
int mingw_lstat(const char *file_name, struct stat *buf)
{
int namelen;
static char alt_name[PATH_MAX];
Expand Down Expand Up @@ -116,8 +117,7 @@ int mingw_lstat(const char *file_name, struct mingw_stat *buf)
}

#undef fstat
#undef stat
int mingw_fstat(int fd, struct mingw_stat *buf)
int mingw_fstat(int fd, struct stat *buf)
{
HANDLE fh = (HANDLE)_get_osfhandle(fd);
BY_HANDLE_FILE_INFORMATION fdata;
Expand All @@ -127,21 +127,8 @@ int mingw_fstat(int fd, struct mingw_stat *buf)
return -1;
}
/* direct non-file handles to MS's fstat() */
if (GetFileType(fh) != FILE_TYPE_DISK) {
struct stat st;
if (fstat(fd, &st))
return -1;
buf->st_ino = st.st_ino;
buf->st_gid = st.st_gid;
buf->st_uid = st.st_uid;
buf->st_mode = st.st_mode;
buf->st_size = st.st_size;
buf->st_dev = st.st_dev;
buf->st_atime = st.st_atime;
buf->st_mtime = st.st_mtime;
buf->st_ctime = st.st_ctime;
return 0;
}
if (GetFileType(fh) != FILE_TYPE_DISK)
return fstat(fd, buf);

if (GetFileInformationByHandle(fh, &fdata)) {
int fMode = S_IREAD;
Expand All @@ -155,9 +142,10 @@ int mingw_fstat(int fd, struct mingw_stat *buf)
buf->st_ino = 0;
buf->st_gid = 0;
buf->st_uid = 0;
buf->st_nlink = 1;
buf->st_mode = fMode;
buf->st_size = fdata.nFileSizeLow; /* Can't use nFileSizeHigh, since it's not a stat64 */
buf->st_dev = _getdrive() - 1;
buf->st_dev = buf->st_rdev = (_getdrive() - 1);
buf->st_atime = filetime_to_time_t(&(fdata.ftLastAccessTime));
buf->st_mtime = filetime_to_time_t(&(fdata.ftLastWriteTime));
buf->st_ctime = filetime_to_time_t(&(fdata.ftCreationTime));
Expand Down
15 changes: 3 additions & 12 deletions compat/mingw.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,21 +162,12 @@ int mingw_rename(const char*, const char*);

/* Use mingw_lstat() instead of lstat()/stat() and
* mingw_fstat() instead of fstat() on Windows.
* struct stat is redefined because it lacks the st_blocks member.
*/
struct mingw_stat {
unsigned st_mode;
time_t st_mtime, st_atime, st_ctime;
unsigned st_dev, st_ino, st_uid, st_gid;
size_t st_size;
};
int mingw_lstat(const char *file_name, struct mingw_stat *buf);
int mingw_fstat(int fd, struct mingw_stat *buf);
int mingw_lstat(const char *file_name, struct stat *buf);
int mingw_fstat(int fd, struct stat *buf);
#define fstat mingw_fstat
#define lstat mingw_lstat
#define stat mingw_stat
static inline int mingw_stat(const char *file_name, struct mingw_stat *buf)
{ return mingw_lstat(file_name, buf); }
#define stat(x,y) mingw_lstat(x,y)

int mingw_utime(const char *file_name, const struct utimbuf *times);
#define utime mingw_utime
Expand Down

0 comments on commit 180964f

Please sign in to comment.