summaryrefslogtreecommitdiff
path: root/src/dired.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2008-04-26 08:23:21 +0000
committerEli Zaretskii <eliz@gnu.org>2008-04-26 08:23:21 +0000
commit01388a3dd2bb36ab8deeb59f62b35a47688ea22a (patch)
treec41e09be084265c9ef6477aae4c6811b8db48f26 /src/dired.c
parent341dd15a7bd9d0b4adff846e94289b3e1877eed1 (diff)
downloademacs-01388a3dd2bb36ab8deeb59f62b35a47688ea22a.tar.gz
(Ffile_attributes) [WINDOWSNT]: Undo change from 2008-03-31, it's not needed
anymore with `struct stat' definition on nt/inc/sys/stat.h. Undo changes from 2007-01-12 and 2007-01-13 for the same reasons.
Diffstat (limited to 'src/dired.c')
-rw-r--r--src/dired.c32
1 files changed, 9 insertions, 23 deletions
diff --git a/src/dired.c b/src/dired.c
index f8b8f2dc84a..85558592be6 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -942,7 +942,7 @@ Elements of the attribute list are:
char modes[10];
Lisp_Object handler;
struct gcpro gcpro1;
- EMACS_INT uid, gid, ino;
+ EMACS_INT ino;
filename = Fexpand_file_name (filename, Qnil);
@@ -977,34 +977,20 @@ Elements of the attribute list are:
#endif
}
values[1] = make_number (s.st_nlink);
- /* When make_fixnum_or_float is called below with types that are
- shorter than an int (e.g., `short'), GCC whines about comparison
- being always false due to limited range of data type. Fix by
- copying s.st_uid and s.st_gid into int variables. */
-#ifdef WINDOWSNT
- /* Windows uses signed short for the uid and gid in the stat structure,
- but we use an int for getuid (limited to the range 0-60000).
- So users with uid > 32767 need their uid patched back here. */
- uid = (unsigned short) s.st_uid;
- gid = (unsigned short) s.st_gid;
-#else
- uid = s.st_uid;
- gid = s.st_gid;
-#endif
if (NILP (id_format) || EQ (id_format, Qinteger))
{
- values[2] = make_fixnum_or_float (uid);
- values[3] = make_fixnum_or_float (gid);
+ values[2] = make_fixnum_or_float (s.st_uid);
+ values[3] = make_fixnum_or_float (s.st_gid);
}
else
{
BLOCK_INPUT;
- pw = (struct passwd *) getpwuid (uid);
+ pw = (struct passwd *) getpwuid (s.st_uid);
values[2] = (pw ? build_string (pw->pw_name)
- : make_fixnum_or_float (uid));
- gr = (struct group *) getgrgid (gid);
+ : make_fixnum_or_float (s.st_uid));
+ gr = (struct group *) getgrgid (s.st_gid);
values[3] = (gr ? build_string (gr->gr_name)
- : make_fixnum_or_float (gid));
+ : make_fixnum_or_float (s.st_gid));
UNBLOCK_INPUT;
}
values[4] = make_time (s.st_atime);
@@ -1026,11 +1012,11 @@ Elements of the attribute list are:
if (! NILP (dirname))
encoded = ENCODE_FILE (dirname);
if (! NILP (dirname) && stat (SDATA (encoded), &sdir) == 0)
- values[9] = (sdir.st_gid != gid) ? Qt : Qnil;
+ values[9] = (sdir.st_gid != s.st_gid) ? Qt : Qnil;
else /* if we can't tell, assume worst */
values[9] = Qt;
#else /* file gid will be egid */
- values[9] = (gid != getegid ()) ? Qt : Qnil;
+ values[9] = (s.st_gid != getegid ()) ? Qt : Qnil;
#endif /* BSD4_2 (or BSD4_3) */
/* Shut up GCC warnings in FIXNUM_OVERFLOW_P below. */
if (sizeof (s.st_ino) > sizeof (ino))