(Ffile_attributes) [WINDOWSNT]: Force inode be positive.
authorEli Zaretskii <eliz@gnu.org>
Sat, 5 Apr 2008 19:10:08 +0000 (19:10 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 5 Apr 2008 19:10:08 +0000 (19:10 +0000)
src/ChangeLog
src/dired.c

index d1528cb..e41f04e 100644 (file)
@@ -1,3 +1,7 @@
+2008-04-05  Eli Zaretskii  <eliz@gnu.org>
+
+       * dired.c (Ffile_attributes) [WINDOWSNT]: Force inode be positive.
+
 2008-03-31  Chong Yidong  <cyd@stupidchicken.com>
 
        * xdisp.c (next_overlay_string): Don't set
index 1a80a41..31b7e19 100644 (file)
@@ -1028,7 +1028,17 @@ Elements of the attribute list are:
   values[9] = (gid != getegid ()) ? Qt : Qnil;
 #endif /* BSD4_2 (or BSD4_3) */
   /* Shut up GCC warnings in FIXNUM_OVERFLOW_P below.  */
+#ifdef WINDOWSNT
+  {
+    /* The bit-shuffling we do in w32.c:stat can turn on the MSB, which
+       will produce negative inode numbers.  People don't like that, so
+       force a positive inode instead.  */
+    unsigned short tem = s.st_ino;
+    ino = tem;
+  }
+#else
   ino = s.st_ino;
+#endif
   if (FIXNUM_OVERFLOW_P (ino))
     /* To allow inode numbers larger than VALBITS, separate the bottom
        16 bits.  */