projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
.
[gnulib.git]
/
lib
/
fileblocks.c
diff --git
a/lib/fileblocks.c
b/lib/fileblocks.c
index
0cfebb5
..
2c94430
100644
(file)
--- a/
lib/fileblocks.c
+++ b/
lib/fileblocks.c
@@
-1,5
+1,5
@@
/* Convert file size to number of blocks on System V-like machines.
/* Convert file size to number of blocks on System V-like machines.
- Copyright (C) 1990 Free Software Foundation, Inc.
+ Copyright (C) 1990
, 1997, 1998, 1999
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-17,23
+17,31
@@
/* Written by Brian L. Matthews, blm@6sceng.UUCP. */
\f
/* Written by Brian L. Matthews, blm@6sceng.UUCP. */
\f
-#if
def
HAVE_CONFIG_H
+#if HAVE_CONFIG_H
# include <config.h>
#endif
# include <config.h>
#endif
-#if !defined (HAVE_ST_BLOCKS) && !defined(_POSIX_VERSION)
-# include <sys/types.h>
+#include <sys/types.h>
+
+#if HAVE_SYS_PARAM_H
# include <sys/param.h>
# include <sys/param.h>
+#endif
+
+#if !HAVE_STRUCT_STAT_ST_BLOCKS && !defined _POSIX_SOURCE && defined BSIZE
+
+# if HAVE_UNISTD_H
+# include <unistd.h>
+# endif
# ifndef NINDIR
# ifndef NINDIR
-/* Some SysV's, like Irix, seem to lack these. Hope they're correct. */
-/* Size of a indirect block, in bytes. */
-# ifndef BSIZE
-# define BSIZE 1024
+
+# if defined (__DJGPP__)
+typedef long daddr_t; /* for disk address */
# endif
# endif
+/* Some SysV's, like Irix, seem to lack this. Hope it's correct. */
/* Number of inode pointers per indirect block. */
/* Number of inode pointers per indirect block. */
-# define NINDIR (BSIZE
/sizeof
(daddr_t))
+# define NINDIR (BSIZE
/ sizeof
(daddr_t))
# endif /* !NINDIR */
/* Number of direct block addresses in an inode. */
# endif /* !NINDIR */
/* Number of direct block addresses in an inode. */
@@
-41,12
+49,11
@@
/* Return the number of 512-byte blocks in a file of SIZE bytes. */
/* Return the number of 512-byte blocks in a file of SIZE bytes. */
-long
-st_blocks (size)
- long size;
+off_t
+st_blocks (off_t size)
{
{
-
long datablks = (size + 512 - 1) / 512
;
-
long
indrblks = 0;
+
off_t datablks = size / 512 + (size % 512 != 0)
;
+
off_t
indrblks = 0;
if (datablks > NDIR)
{
if (datablks > NDIR)
{