comparison src/dired.c @ 5727:86d33ddc7fd6

Avoid EOVERFLOW from stat() calls due to overflowing inode numbers. The btrfs filesystem now uses 64-bit inode numbers even on 32-bit systems. This can lead to spurious stat() failures, where EOVERFLOW is returned because the inode number does not fit into the 32-bit stat structure, even when the caller is not interested in the inode number. This patch builds with _FILE_OFFSET_BITS == 64 when possible, and deals with integers that may be too large to fit into a Lisp fixnum. For more information, see xemacs-patches message <CAHCOHQk_mPM6WgFChBsGafqhuazep6VED7swFoqfFXOV1r8org@mail.gmail.com>.
author Jerry James <james@xemacs.org>
date Wed, 06 Mar 2013 08:32:17 -0700
parents 56144c8593a8
children c30fdcab7bc8
comparison
equal deleted inserted replaced
5726:179f4a9201b5 5727:86d33ddc7fd6
925 gid = (s.st_gid != getegid ()) ? Qt : Qnil; 925 gid = (s.st_gid != getegid ()) ? Qt : Qnil;
926 #endif /* BSD4_2 or BSD4_3 */ 926 #endif /* BSD4_2 or BSD4_3 */
927 927
928 RETURN_UNGCPRO (listn (12, 928 RETURN_UNGCPRO (listn (12,
929 mode, 929 mode,
930 make_fixnum (s.st_nlink), 930 make_integer (s.st_nlink),
931 make_fixnum (s.st_uid), 931 make_integer (s.st_uid),
932 make_fixnum (s.st_gid), 932 make_integer (s.st_gid),
933 make_time (s.st_atime), 933 make_time (s.st_atime),
934 make_time (s.st_mtime), 934 make_time (s.st_mtime),
935 make_time (s.st_ctime), 935 make_time (s.st_ctime),
936 size, 936 size,
937 modestring, 937 modestring,
938 gid, 938 gid,
939 make_fixnum (s.st_ino), 939 make_integer (s.st_ino),
940 make_fixnum (s.st_dev))); 940 make_integer (s.st_dev)));
941 } 941 }
942 942
943 943
944 /************************************************************************/ 944 /************************************************************************/
945 /* initialization */ 945 /* initialization */