diff options
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/configure.in | 6 | ||||
-rw-r--r-- | gdb/remote-fileio.c | 11 |
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 |