Mercurial > hg > octave-kai > gnulib-hg
annotate lib/fileblocks.c @ 1278:9ad625a30b7d
Use #if, not #ifdef with HAVE_ macros
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sun, 15 Mar 1998 11:09:10 +0000 |
parents | 92fcf946db19 |
children | 38fd8f5d359d |
rev | line source |
---|---|
5 | 1 /* Convert file size to number of blocks on System V-like machines. |
1214
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
2 Copyright (C) 1990, 1997, 1998 Free Software Foundation, Inc. |
5 | 3 |
4 This program is free software; you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 2, or (at your option) | |
7 any later version. | |
8 | |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
650
b4ef1c1a0171
update FSF address in copyright
Jim Meyering <jim@meyering.net>
parents:
599
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
b4ef1c1a0171
update FSF address in copyright
Jim Meyering <jim@meyering.net>
parents:
599
diff
changeset
|
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
5 | 17 |
18 /* Written by Brian L. Matthews, blm@6sceng.UUCP. */ | |
19 | |
1278
9ad625a30b7d
Use #if, not #ifdef with HAVE_ macros
Jim Meyering <jim@meyering.net>
parents:
1240
diff
changeset
|
20 #if HAVE_CONFIG_H |
599 | 21 # include <config.h> |
163
4aeea06507af
[!NINDIR]: Define BSIZE only if it's not already defined.
Jim Meyering <jim@meyering.net>
parents:
5
diff
changeset
|
22 #endif |
4aeea06507af
[!NINDIR]: Define BSIZE only if it's not already defined.
Jim Meyering <jim@meyering.net>
parents:
5
diff
changeset
|
23 |
1214
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
24 #include <sys/types.h> |
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
25 |
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
26 #if HAVE_SYS_PARAM_H |
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
27 # include <sys/param.h> |
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
28 #endif |
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
29 |
1134
b2ed35578119
(st_blocks): long -> off_t.
Jim Meyering <jim@meyering.net>
parents:
933
diff
changeset
|
30 #if !HAVE_ST_BLOCKS && !defined _POSIX_SOURCE && defined BSIZE |
5 | 31 |
933
6c3fbfcdb059
[HAVE_UNISTD_H]: Include unistd.h.
Jim Meyering <jim@meyering.net>
parents:
650
diff
changeset
|
32 # if HAVE_UNISTD_H |
6c3fbfcdb059
[HAVE_UNISTD_H]: Include unistd.h.
Jim Meyering <jim@meyering.net>
parents:
650
diff
changeset
|
33 # include <unistd.h> |
6c3fbfcdb059
[HAVE_UNISTD_H]: Include unistd.h.
Jim Meyering <jim@meyering.net>
parents:
650
diff
changeset
|
34 # endif |
6c3fbfcdb059
[HAVE_UNISTD_H]: Include unistd.h.
Jim Meyering <jim@meyering.net>
parents:
650
diff
changeset
|
35 |
599 | 36 # ifndef NINDIR |
1240
92fcf946db19
[__DJGPP__]: Add missing typedef for daddr_t.
Jim Meyering <jim@meyering.net>
parents:
1214
diff
changeset
|
37 |
92fcf946db19
[__DJGPP__]: Add missing typedef for daddr_t.
Jim Meyering <jim@meyering.net>
parents:
1214
diff
changeset
|
38 # if defined (__DJGPP__) |
92fcf946db19
[__DJGPP__]: Add missing typedef for daddr_t.
Jim Meyering <jim@meyering.net>
parents:
1214
diff
changeset
|
39 typedef long daddr_t; /* for disk address */ |
92fcf946db19
[__DJGPP__]: Add missing typedef for daddr_t.
Jim Meyering <jim@meyering.net>
parents:
1214
diff
changeset
|
40 # endif |
92fcf946db19
[__DJGPP__]: Add missing typedef for daddr_t.
Jim Meyering <jim@meyering.net>
parents:
1214
diff
changeset
|
41 |
1134
b2ed35578119
(st_blocks): long -> off_t.
Jim Meyering <jim@meyering.net>
parents:
933
diff
changeset
|
42 /* Some SysV's, like Irix, seem to lack this. Hope it's correct. */ |
5 | 43 /* Number of inode pointers per indirect block. */ |
1214
a6150f7af1bd
Include sys/param.h only #if HAVE_SYS_PARAM_H.
Jim Meyering <jim@meyering.net>
parents:
1134
diff
changeset
|
44 # define NINDIR (BSIZE / sizeof (daddr_t)) |
599 | 45 # endif /* !NINDIR */ |
5 | 46 |
47 /* Number of direct block addresses in an inode. */ | |
599 | 48 # define NDIR 10 |
5 | 49 |
50 /* Return the number of 512-byte blocks in a file of SIZE bytes. */ | |
51 | |
1134
b2ed35578119
(st_blocks): long -> off_t.
Jim Meyering <jim@meyering.net>
parents:
933
diff
changeset
|
52 off_t |
5 | 53 st_blocks (size) |
1134
b2ed35578119
(st_blocks): long -> off_t.
Jim Meyering <jim@meyering.net>
parents:
933
diff
changeset
|
54 off_t size; |
5 | 55 { |
1134
b2ed35578119
(st_blocks): long -> off_t.
Jim Meyering <jim@meyering.net>
parents:
933
diff
changeset
|
56 off_t datablks = size / 512 + (size % 512 != 0); |
b2ed35578119
(st_blocks): long -> off_t.
Jim Meyering <jim@meyering.net>
parents:
933
diff
changeset
|
57 off_t indrblks = 0; |
5 | 58 |
59 if (datablks > NDIR) | |
60 { | |
61 indrblks = (datablks - NDIR - 1) / NINDIR + 1; | |
62 | |
63 if (datablks > NDIR + NINDIR) | |
64 { | |
65 indrblks += (datablks - NDIR - NINDIR - 1) / (NINDIR * NINDIR) + 1; | |
66 | |
67 if (datablks > NDIR + NINDIR + NINDIR * NINDIR) | |
68 indrblks++; | |
69 } | |
70 } | |
71 | |
72 return datablks + indrblks; | |
73 } | |
598
e504ab9c8abf
[HAVE_ST_BLOCKS || _POSIX_VERSION]: Add extern dcl
Jim Meyering <jim@meyering.net>
parents:
498
diff
changeset
|
74 #else |
e504ab9c8abf
[HAVE_ST_BLOCKS || _POSIX_VERSION]: Add extern dcl
Jim Meyering <jim@meyering.net>
parents:
498
diff
changeset
|
75 /* This declaration is solely to ensure that after preprocessing |
e504ab9c8abf
[HAVE_ST_BLOCKS || _POSIX_VERSION]: Add extern dcl
Jim Meyering <jim@meyering.net>
parents:
498
diff
changeset
|
76 this file is never empty. */ |
e504ab9c8abf
[HAVE_ST_BLOCKS || _POSIX_VERSION]: Add extern dcl
Jim Meyering <jim@meyering.net>
parents:
498
diff
changeset
|
77 extern int textutils_fileblocks_unused; |
5 | 78 #endif |