aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2003-12-30 06:52:09 +0000
committerEli Zaretskii <eliz@gnu.org>2003-12-30 06:52:09 +0000
commit1dd727e9e932e53956fe4fc0cde511c39cc66f38 (patch)
tree7f59c1e0c088fe1f44f6c2d9db0d42a053bfbb70
parent283853005f6b20e6ed7c32a104d31e69023739c6 (diff)
downloadgdb-1dd727e9e932e53956fe4fc0cde511c39cc66f38.zip
gdb-1dd727e9e932e53956fe4fc0cde511c39cc66f38.tar.gz
gdb-1dd727e9e932e53956fe4fc0cde511c39cc66f38.tar.bz2
* remote-fileio.c (remote_fileio_to_fio_stat)
(remote_fileio_func_fstat) [HAVE_STRUCT_STAT_ST_BLOCKS]: Support systems that don't have `st_blocks' member in `struct stat'. * configure.in (HAVE_STRUCT_STAT_ST_BLOCKS): Ditto.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/configure.in6
-rw-r--r--gdb/remote-fileio.c11
3 files changed, 25 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7c460c4..7e65a00 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2003-12-30 Eli Zaretskii <eliz@elta.co.il>
+
+ * remote-fileio.c (remote_fileio_to_fio_stat)
+ (remote_fileio_func_fstat) [HAVE_STRUCT_STAT_ST_BLOCKS]: Support
+ systems that don't have `st_blocks' member in `struct stat'.
+
+ * configure.in (HAVE_STRUCT_STAT_ST_BLOCKS): Ditto.
+
2003-12-29 Eli Zaretskii <eliz@elta.co.il>
* go32-nat.c (go32_sldt, go32_sgdt, go32_sidt, go32_pte): Fix
diff --git a/gdb/configure.in b/gdb/configure.in
index d27470c..f0f65c2 100644
--- a/gdb/configure.in
+++ b/gdb/configure.in
@@ -383,6 +383,12 @@ AC_CHECK_HEADERS(curses.h ncurses.h term.h)
# unconditionally, so what's the point in checking these?
AC_CHECK_HEADERS(ctype.h time.h)
+# remote-fileio.c needs st_blocks
+AC_CHECK_MEMBER(struct stat.st_blocks,
+ [AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS, 1,
+ [Define if struct stat has st_blocks member.])],
+ [#include <sys/stat.h>])
+
# ------------------------- #
# Checks for declarations. #
# ------------------------- #
diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c
index fd57617..ead40f0 100644
--- a/gdb/remote-fileio.c
+++ b/gdb/remote-fileio.c
@@ -411,7 +411,16 @@ remote_fileio_to_fio_stat (struct stat *st, struct fio_stat *fst)
remote_fileio_to_fio_uint ((long) st->st_rdev, fst->fst_rdev);
remote_fileio_to_fio_ulong ((LONGEST) st->st_size, fst->fst_size);
remote_fileio_to_fio_ulong ((LONGEST) st->st_blksize, fst->fst_blksize);
+#if HAVE_STRUCT_STAT_ST_BLOCKS
remote_fileio_to_fio_ulong ((LONGEST) st->st_blocks, fst->fst_blocks);
+#else
+ /* FIXME: This is correct for DJGPP, but other systems that don't
+ have st_blocks, if any, might prefer 512 instead of st_blksize.
+ (eliz, 30-12-2003) */
+ remote_fileio_to_fio_ulong (((LONGEST) st->st_size + st->st_blksize - 1)
+ / (LONGEST) st->st_blksize,
+ fst->fst_blocks);
+#endif
remote_fileio_to_fio_time (st->st_atime, fst->fst_atime);
remote_fileio_to_fio_time (st->st_mtime, fst->fst_mtime);
remote_fileio_to_fio_time (st->st_ctime, fst->fst_ctime);
@@ -1131,7 +1140,9 @@ remote_fileio_func_fstat (char *buf)
st.st_rdev = 0;
st.st_size = 0;
st.st_blksize = 512;
+#if HAVE_STRUCT_STAT_ST_BLOCKS
st.st_blocks = 0;
+#endif
if (!gettimeofday (&tv, NULL))
st.st_atime = st.st_mtime = st.st_ctime = tv.tv_sec;
else