summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Youngman <jay@gnu.org>2011-06-11 19:59:02 +0100
committerJames Youngman <jay@gnu.org>2011-06-12 02:29:51 +0100
commit0558bb105471d746a7c1a4d6585e3917438c7a42 (patch)
tree7e1faaebbf21f3c19181f1e5874885620d6d6c5a
parent5433c75e101d0e6da6f0be3882949565d41c20a1 (diff)
downloadfindutils-0558bb105471d746a7c1a4d6585e3917438c7a42.tar.gz
Use stat-size macros in pred.c also.
* find/pred.c: Include stat-size. Eliminate definitions of DEV_BSIZE, ST_BLKSIZE, ST_NBLOCKS, ST_NBLOCKSIZE macros which are now in stat-size.h (yes, this is the second set of these macros we've removed). (file_sparseness): Use ST_NBLOCKS and ST_NBLOCKSIZE. * cfg.mk (local-checks-to-skip): Don't skip sc_prohibit_stat_st_blocks, because now we no loner access the st_blocks field of struct stat, directly.
-rw-r--r--ChangeLog13
-rw-r--r--cfg.mk7
-rw-r--r--find/pred.c76
-rw-r--r--lib/listfile.c9
-rw-r--r--lib/listfile.h4
5 files changed, 20 insertions, 89 deletions
diff --git a/ChangeLog b/ChangeLog
index 8e8adf4e..149d430c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,19 @@
2011-06-11 James Youngman <jay@gnu.org>
+ Use stat-size macros in pred.c also.
+ * find/pred.c: Include stat-size. Eliminate definitions of
+ DEV_BSIZE, ST_BLKSIZE, ST_NBLOCKS, ST_NBLOCKSIZE macros which are
+ now in stat-size.h (yes, this is the second set of these macros
+ we've removed).
+ (file_sparseness): Use ST_NBLOCKS and ST_NBLOCKSIZE.
+ * cfg.mk (local-checks-to-skip): Don't skip
+ sc_prohibit_stat_st_blocks, because now we no loner access the
+ st_blocks field of struct stat, directly.
+ * lib/listfile.c (file_blocksize): Eliminate this function, it's
+ no longer needed.
+ * lib/listfile.h: Don't declare file_blocksize.
+
Adopt the new gnulib module stat-size.
* lib/listfile.c: Include "stat-size.h". Delete the DEV_BSIZE,
ST_BLKSIZE, ST_NBLOCKS, ST_NBLOCKSIZE macros which are now in
diff --git a/cfg.mk b/cfg.mk
index 341a5502..4cb14aa5 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -43,10 +43,9 @@ local-checks-to-skip += sc_useless_cpp_parens
local-checks-to-skip += \
sc_texinfo_acronym
-# sc_prohibit_strcmp is broken because it gives false positives for cases
-# where neither argument is a string literal.
-# sc_prohibit_stat_st_blocks produces a false positive on definition of ST_NBLOCKS.
-local-checks-to-skip += sc_prohibit_strcmp sc_prohibit_stat_st_blocks
+# sc_prohibit_strcmp is broken because it gives false positives for
+# cases where neither argument is a string literal.
+local-checks-to-skip += sc_prohibit_strcmp
# NEWS hash. We use this to detect unintended edits to bits of the NEWS file
diff --git a/find/pred.c b/find/pred.c
index 33733782..1ebb36db 100644
--- a/find/pred.c
+++ b/find/pred.c
@@ -44,6 +44,7 @@
#include "yesno.h"
#include "listfile.h"
#include "stat-time.h"
+#include "stat-size.h"
#include "dircallback.h"
#include "error.h"
#include "verify.h"
@@ -79,71 +80,6 @@
#define CLOSEDIR(d) closedir (d)
#endif
-
-
-
-/* Get or fake the disk device blocksize.
- Usually defined by sys/param.h (if at all). */
-#ifndef DEV_BSIZE
-# ifdef BSIZE
-# define DEV_BSIZE BSIZE
-# else /* !BSIZE */
-# define DEV_BSIZE 4096
-# endif /* !BSIZE */
-#endif /* !DEV_BSIZE */
-
-/* Extract or fake data from a `struct stat'.
- ST_BLKSIZE: Preferred I/O blocksize for the file, in bytes.
- ST_NBLOCKS: Number of blocks in the file, including indirect blocks.
- ST_NBLOCKSIZE: Size of blocks used when calculating ST_NBLOCKS. */
-#ifndef HAVE_STRUCT_STAT_ST_BLOCKS
-# define ST_BLKSIZE(statbuf) DEV_BSIZE
-# if defined _POSIX_SOURCE || !defined BSIZE /* fileblocks.c uses BSIZE. */
-# define ST_NBLOCKS(statbuf) \
- (S_ISREG ((statbuf).st_mode) \
- || S_ISDIR ((statbuf).st_mode) \
- ? (statbuf).st_size / ST_NBLOCKSIZE + ((statbuf).st_size % ST_NBLOCKSIZE != 0) : 0)
-# else /* !_POSIX_SOURCE && BSIZE */
-# define ST_NBLOCKS(statbuf) \
- (S_ISREG ((statbuf).st_mode) \
- || S_ISDIR ((statbuf).st_mode) \
- ? st_blocks ((statbuf).st_size) : 0)
-# endif /* !_POSIX_SOURCE && BSIZE */
-#else /* HAVE_STRUCT_STAT_ST_BLOCKS */
-/* Some systems, like Sequents, return st_blksize of 0 on pipes. */
-# define ST_BLKSIZE(statbuf) ((statbuf).st_blksize > 0 \
- ? (statbuf).st_blksize : DEV_BSIZE)
-# if defined hpux || defined __hpux__ || defined __hpux
-/* HP-UX counts st_blocks in 1024-byte units.
- This loses when mixing HP-UX and BSD file systems with NFS. */
-# define ST_NBLOCKSIZE 1024
-# else /* !hpux */
-# if defined _AIX && defined _I386
-/* AIX PS/2 counts st_blocks in 4K units. */
-# define ST_NBLOCKSIZE (4 * 1024)
-# else /* not AIX PS/2 */
-# if defined _CRAY
-# define ST_NBLOCKS(statbuf) \
- (S_ISREG ((statbuf).st_mode) \
- || S_ISDIR ((statbuf).st_mode) \
- ? (statbuf).st_blocks * ST_BLKSIZE(statbuf)/ST_NBLOCKSIZE : 0)
-# endif /* _CRAY */
-# endif /* not AIX PS/2 */
-# endif /* !hpux */
-#endif /* HAVE_STRUCT_STAT_ST_BLOCKS */
-
-#ifndef ST_NBLOCKS
-# define ST_NBLOCKS(statbuf) \
- (S_ISREG ((statbuf).st_mode) \
- || S_ISDIR ((statbuf).st_mode) \
- ? (statbuf).st_blocks : 0)
-#endif
-
-#ifndef ST_NBLOCKSIZE
-# define ST_NBLOCKSIZE 512
-#endif
-
-
#undef MAX
#define MAX(a, b) ((a) > (b) ? (a) : (b))
@@ -746,22 +682,18 @@ mode_to_filetype (mode_t m)
static double
file_sparseness (const struct stat *p)
{
-#if defined HAVE_STRUCT_STAT_ST_BLOCKS
if (0 == p->st_size)
{
- if (0 == p->st_blocks)
+ if (0 == ST_NBLOCKS(*p))
return 1.0;
else
- return p->st_blocks < 0 ? -HUGE_VAL : HUGE_VAL;
+ return ST_NBLOCKS(*p) < 0 ? -HUGE_VAL : HUGE_VAL;
}
else
{
- double blklen = file_blocksize (p) * (double)p->st_blocks;
+ double blklen = ST_NBLOCKSIZE * (double)ST_NBLOCKS(*p);
return blklen / p->st_size;
}
-#else
- return 1.0;
-#endif
}
diff --git a/lib/listfile.c b/lib/listfile.c
index 2e94bf6a..48d8cb26 100644
--- a/lib/listfile.c
+++ b/lib/listfile.c
@@ -67,15 +67,6 @@
static void print_name (register const char *p, FILE *stream, int literal_control_chars);
-size_t
-file_blocksize (const struct stat *p)
-{
- (void)p;
- return ST_NBLOCKSIZE;
-}
-
-
-
/* NAME is the name to print.
RELNAME is the path to access it from the current directory.
STATP is the results of stat or lstat on it.
diff --git a/lib/listfile.h b/lib/listfile.h
index be76d57d..9ee71a2d 100644
--- a/lib/listfile.h
+++ b/lib/listfile.h
@@ -19,9 +19,5 @@
#if !defined LISTFILE_H
# define LISTFILE_H
-
void list_file (const char *name, int dir_fd, char *relname, const struct stat *statp, time_t current_time, int output_block_size, int literal_control_chars, FILE *stream);
-
-size_t file_blocksize(const struct stat *p);
-
#endif