~ubuntu-branches/ubuntu/maverick/zapping/maverick

« back to all changes in this revision

Viewing changes to macros/gnome-fileutils.m4

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2005-03-08 23:19:08 UTC
  • mfrom: (2.1.1 sarge)
  • Revision ID: james.westby@ubuntu.com-20050308231908-oip7rfv6lcmo8c0e
Tags: 0.9.2-2ubuntu1
Rebuilt for Python transition (2.3 -> 2.4)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
dnl
2
 
dnl GNOME_FILEUTILS_CHECKS
3
 
dnl
4
 
dnl checks that are needed for the diskusage applet.
5
 
dnl
6
 
 
7
 
AC_DEFUN([GNOME_FILEUTILS_CHECKS],
8
 
[       
9
 
AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \
10
 
mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \
11
 
sys/filsys.h sys/fs_types.h sys/fs/s5param.h)
12
 
 
13
 
AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \
14
 
getcwd getmntinfo gettimeofday isascii lchown \
15
 
listmntent memcpy mkfifo strchr strerror strrchr vprintf)
16
 
 
17
 
dnl Set some defaults when cross-compiling
18
 
 
19
 
if test x$cross_compiling = xyes ; then
20
 
        case "$host_os" in
21
 
        linux*)
22
 
          fu_cv_sys_mounted_getmntent1=yes
23
 
          fu_cv_sys_stat_statfs2_bsize=yes
24
 
          ;;
25
 
        sunos*)
26
 
          fu_cv_sys_stat_statfs4=yes
27
 
          ;;
28
 
        freebsd*)
29
 
          fu_cv_sys_stat_statfs2_bsize=yes
30
 
          ;;
31
 
        osf*)
32
 
          fu_cv_sys_stat_statfs3_osf1=yes
33
 
          ;;
34
 
        esac
35
 
fi
36
 
 
37
 
# Determine how to get the list of mounted filesystems.
38
 
list_mounted_fs=
39
 
 
40
 
# If the getmntent function is available but not in the standard library,
41
 
# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX).
42
 
AC_FUNC_GETMNTENT
43
 
 
44
 
# This test must precede the ones for getmntent because Unicos-9 is
45
 
# reported to have the getmntent function, but its support is incompatible
46
 
# with other getmntent implementations.
47
 
 
48
 
# NOTE: Normally, I wouldn't use a check for system type as I've done for
49
 
# `CRAY' below since that goes against the whole autoconf philosophy.  But
50
 
# I think there is too great a chance that some non-Cray system has a
51
 
# function named listmntent to risk the false positive.
52
 
 
53
 
if test -z "$list_mounted_fs"; then
54
 
# Cray UNICOS 9
55
 
AC_MSG_CHECKING([for listmntent of Cray/Unicos-9])
56
 
AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent,
57
 
[fu_cv_sys_mounted_cray_listmntent=no
58
 
AC_EGREP_CPP(yes,
59
 
[#ifdef _CRAY
60
 
yes
61
 
#endif
62
 
], [test $ac_cv_func_listmntent = yes \
63
 
&& fu_cv_sys_mounted_cray_listmntent=yes]
64
 
)
65
 
]
66
 
)
67
 
AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent)
68
 
if test $fu_cv_sys_mounted_cray_listmntent = yes; then
69
 
list_mounted_fs=found
70
 
AC_DEFINE(MOUNTED_LISTMNTENT)
71
 
fi
72
 
fi
73
 
 
74
 
if test $ac_cv_func_getmntent = yes; then
75
 
 
76
 
# This system has the getmntent function.
77
 
# Determine whether it's the one-argument variant or the two-argument one.
78
 
 
79
 
if test -z "$list_mounted_fs"; then
80
 
# 4.3BSD, SunOS, HP-UX, Dynix, Irix
81
 
AC_MSG_CHECKING([for one-argument getmntent function])
82
 
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1,
83
 
[test $ac_cv_header_mntent_h = yes \
84
 
&& fu_cv_sys_mounted_getmntent1=yes \
85
 
|| fu_cv_sys_mounted_getmntent1=no])
86
 
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
87
 
if test $fu_cv_sys_mounted_getmntent1 = yes; then
88
 
list_mounted_fs=found
89
 
AC_DEFINE(MOUNTED_GETMNTENT1)
90
 
fi
91
 
fi
92
 
 
93
 
if test -z "$list_mounted_fs"; then
94
 
# SVR4
95
 
AC_MSG_CHECKING([for two-argument getmntent function])
96
 
AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2,
97
 
[AC_EGREP_HEADER(getmntent, sys/mnttab.h,
98
 
fu_cv_sys_mounted_getmntent2=yes,
99
 
fu_cv_sys_mounted_getmntent2=no)])
100
 
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2)
101
 
if test $fu_cv_sys_mounted_getmntent2 = yes; then
102
 
list_mounted_fs=found
103
 
AC_DEFINE(MOUNTED_GETMNTENT2)
104
 
fi
105
 
fi
106
 
 
107
 
if test -z "$list_mounted_fs"; then
108
 
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
109
 
fi
110
 
 
111
 
fi
112
 
 
113
 
if test -z "$list_mounted_fs"; then
114
 
# DEC Alpha running OSF/1.
115
 
AC_MSG_CHECKING([for getfsstat function])
116
 
AC_CACHE_VAL(fu_cv_sys_mounted_getsstat,
117
 
[AC_TRY_LINK([
118
 
#include <sys/types.h>
119
 
#include <sys/mount.h>
120
 
#include <sys/fs_types.h>],
121
 
[struct statfs *stats;
122
 
int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ],
123
 
fu_cv_sys_mounted_getsstat=yes,
124
 
fu_cv_sys_mounted_getsstat=no)])
125
 
AC_MSG_RESULT($fu_cv_sys_mounted_getsstat)
126
 
if test $fu_cv_sys_mounted_getsstat = yes; then
127
 
list_mounted_fs=found
128
 
AC_DEFINE(MOUNTED_GETFSSTAT)
129
 
fi
130
 
fi
131
 
 
132
 
if test -z "$list_mounted_fs"; then
133
 
# AIX.
134
 
AC_MSG_CHECKING([for mntctl function and struct vmount])
135
 
AC_CACHE_VAL(fu_cv_sys_mounted_vmount,
136
 
[AC_TRY_CPP([#include <fshelp.h>],
137
 
fu_cv_sys_mounted_vmount=yes,
138
 
fu_cv_sys_mounted_vmount=no)])
139
 
AC_MSG_RESULT($fu_cv_sys_mounted_vmount)
140
 
if test $fu_cv_sys_mounted_vmount = yes; then
141
 
list_mounted_fs=found
142
 
AC_DEFINE(MOUNTED_VMOUNT)
143
 
fi
144
 
fi
145
 
 
146
 
if test -z "$list_mounted_fs"; then
147
 
# SVR3
148
 
AC_MSG_CHECKING([for FIXME existence of three headers])
149
 
AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp,
150
 
[AC_TRY_CPP([
151
 
#include <sys/statfs.h>
152
 
#include <sys/fstyp.h>
153
 
#include <mnttab.h>],
154
 
fu_cv_sys_mounted_fread_fstyp=yes,
155
 
fu_cv_sys_mounted_fread_fstyp=no)])
156
 
AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp)
157
 
if test $fu_cv_sys_mounted_fread_fstyp = yes; then
158
 
list_mounted_fs=found
159
 
AC_DEFINE(MOUNTED_FREAD_FSTYP)
160
 
fi
161
 
fi
162
 
 
163
 
if test -z "$list_mounted_fs"; then
164
 
# 4.4BSD and DEC OSF/1.
165
 
AC_MSG_CHECKING([for getmntinfo function])
166
 
AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo,
167
 
[
168
 
ok=
169
 
if test $ac_cv_func_getmntinfo = yes; then
170
 
AC_EGREP_HEADER(f_type;, sys/mount.h,
171
 
ok=yes)
172
 
fi
173
 
test -n "$ok" \
174
 
&& fu_cv_sys_mounted_getmntinfo=yes \
175
 
|| fu_cv_sys_mounted_getmntinfo=no
176
 
])
177
 
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
178
 
if test $fu_cv_sys_mounted_getmntinfo = yes; then
179
 
list_mounted_fs=found
180
 
AC_DEFINE(MOUNTED_GETMNTINFO)
181
 
fi
182
 
fi
183
 
 
184
 
# FIXME: add a test for netbsd-1.1 here
185
 
 
186
 
if test -z "$list_mounted_fs"; then
187
 
# Ultrix
188
 
AC_MSG_CHECKING([for getmnt function])
189
 
AC_CACHE_VAL(fu_cv_sys_mounted_getmnt,
190
 
[AC_TRY_CPP([
191
 
#include <sys/fs_types.h>
192
 
#include <sys/mount.h>],
193
 
fu_cv_sys_mounted_getmnt=yes,
194
 
fu_cv_sys_mounted_getmnt=no)])
195
 
AC_MSG_RESULT($fu_cv_sys_mounted_getmnt)
196
 
if test $fu_cv_sys_mounted_getmnt = yes; then
197
 
list_mounted_fs=found
198
 
AC_DEFINE(MOUNTED_GETMNT)
199
 
fi
200
 
fi
201
 
 
202
 
if test -z "$list_mounted_fs"; then
203
 
# SVR2
204
 
AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab])
205
 
AC_CACHE_VAL(fu_cv_sys_mounted_fread,
206
 
[AC_TRY_CPP([#include <mnttab.h>],
207
 
fu_cv_sys_mounted_fread=yes,
208
 
fu_cv_sys_mounted_fread=no)])
209
 
AC_MSG_RESULT($fu_cv_sys_mounted_fread)
210
 
if test $fu_cv_sys_mounted_fread = yes; then
211
 
list_mounted_fs=found
212
 
AC_DEFINE(MOUNTED_FREAD)
213
 
fi
214
 
fi
215
 
 
216
 
if test -z "$list_mounted_fs"; then
217
 
AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
218
 
# FIXME -- no need to abort building the whole package
219
 
# Can't build mountlist.c or anything that needs its functions
220
 
fi
221
 
 
222
 
AC_CHECKING(how to get filesystem space usage)
223
 
space=no
224
 
 
225
 
# Perform only the link test since it seems there are no variants of the
226
 
# statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
227
 
# because that got a false positive on SCO OSR5.  Adding the declaration
228
 
# of a `struct statvfs' causes this test to fail (as it should) on such
229
 
# systems.  That system is reported to work fine with STAT_STATFS4 which
230
 
# is what it gets when this test fails.
231
 
if test $space = no; then
232
 
# SVR4
233
 
AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
234
 
[AC_TRY_LINK([#include <sys/types.h>
235
 
#include <sys/statvfs.h>],
236
 
[struct statvfs fsd; statvfs (0, &fsd);],
237
 
fu_cv_sys_stat_statvfs=yes,
238
 
fu_cv_sys_stat_statvfs=no)])
239
 
if test $fu_cv_sys_stat_statvfs = yes; then
240
 
space=yes
241
 
AC_DEFINE(STAT_STATVFS)
242
 
fi
243
 
fi
244
 
 
245
 
if test $space = no; then
246
 
# DEC Alpha running OSF/1
247
 
AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
248
 
AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
249
 
[AC_TRY_RUN([
250
 
#include <sys/param.h>
251
 
#include <sys/types.h>
252
 
#include <sys/mount.h>
253
 
main ()
254
 
{
255
 
struct statfs fsd;
256
 
fsd.f_fsize = 0;
257
 
exit (statfs (".", &fsd, sizeof (struct statfs)));
258
 
}],
259
 
fu_cv_sys_stat_statfs3_osf1=yes,
260
 
fu_cv_sys_stat_statfs3_osf1=no,
261
 
fu_cv_sys_stat_statfs3_osf1=no)])
262
 
AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
263
 
if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
264
 
space=yes
265
 
AC_DEFINE(STAT_STATFS3_OSF1)
266
 
fi
267
 
fi
268
 
 
269
 
if test $space = no; then
270
 
# AIX
271
 
AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
272
 
member (AIX, 4.3BSD)])
273
 
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
274
 
[AC_TRY_RUN([
275
 
#ifdef HAVE_SYS_PARAM_H
276
 
#include <sys/param.h>
277
 
#endif
278
 
#ifdef HAVE_SYS_MOUNT_H
279
 
#include <sys/mount.h>
280
 
#endif
281
 
#ifdef HAVE_SYS_VFS_H
282
 
#include <sys/vfs.h>
283
 
#endif
284
 
main ()
285
 
{
286
 
struct statfs fsd;
287
 
fsd.f_bsize = 0;
288
 
exit (statfs (".", &fsd));
289
 
}],
290
 
fu_cv_sys_stat_statfs2_bsize=yes,
291
 
fu_cv_sys_stat_statfs2_bsize=no,
292
 
fu_cv_sys_stat_statfs2_bsize=no)])
293
 
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
294
 
if test $fu_cv_sys_stat_statfs2_bsize = yes; then
295
 
space=yes
296
 
AC_DEFINE(STAT_STATFS2_BSIZE)
297
 
fi
298
 
fi
299
 
 
300
 
if test $space = no; then
301
 
# SVR3
302
 
AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
303
 
AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
304
 
[AC_TRY_RUN([#include <sys/types.h>
305
 
#include <sys/statfs.h>
306
 
main ()
307
 
{
308
 
struct statfs fsd;
309
 
exit (statfs (".", &fsd, sizeof fsd, 0));
310
 
}],
311
 
fu_cv_sys_stat_statfs4=yes,
312
 
fu_cv_sys_stat_statfs4=no,
313
 
fu_cv_sys_stat_statfs4=no)])
314
 
AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
315
 
if test $fu_cv_sys_stat_statfs4 = yes; then
316
 
space=yes
317
 
AC_DEFINE(STAT_STATFS4)
318
 
fi
319
 
fi
320
 
 
321
 
if test $space = no; then
322
 
# 4.4BSD and NetBSD
323
 
AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
324
 
member (4.4BSD and NetBSD)])
325
 
AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
326
 
[AC_TRY_RUN([#include <sys/types.h>
327
 
#ifdef HAVE_SYS_PARAM_H
328
 
#include <sys/param.h>
329
 
#endif
330
 
#ifdef HAVE_SYS_MOUNT_H
331
 
#include <sys/mount.h>
332
 
#endif
333
 
main ()
334
 
{
335
 
struct statfs fsd;
336
 
fsd.f_fsize = 0;
337
 
exit (statfs (".", &fsd));
338
 
}],
339
 
fu_cv_sys_stat_statfs2_fsize=yes,
340
 
fu_cv_sys_stat_statfs2_fsize=no,
341
 
fu_cv_sys_stat_statfs2_fsize=no)])
342
 
AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
343
 
if test $fu_cv_sys_stat_statfs2_fsize = yes; then
344
 
space=yes
345
 
AC_DEFINE(STAT_STATFS2_FSIZE)
346
 
fi
347
 
fi
348
 
 
349
 
if test $space = no; then
350
 
# Ultrix
351
 
AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
352
 
AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
353
 
[AC_TRY_RUN([#include <sys/types.h>
354
 
#ifdef HAVE_SYS_PARAM_H
355
 
#include <sys/param.h>
356
 
#endif
357
 
#ifdef HAVE_SYS_MOUNT_H
358
 
#include <sys/mount.h>
359
 
#endif
360
 
#ifdef HAVE_SYS_FS_TYPES_H
361
 
#include <sys/fs_types.h>
362
 
#endif
363
 
main ()
364
 
{
365
 
struct fs_data fsd;
366
 
/* Ultrix's statfs returns 1 for success,
367
 
0 for not mounted, -1 for failure.  */
368
 
exit (statfs (".", &fsd) != 1);
369
 
}],
370
 
fu_cv_sys_stat_fs_data=yes,
371
 
fu_cv_sys_stat_fs_data=no,
372
 
fu_cv_sys_stat_fs_data=no)])
373
 
AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
374
 
if test $fu_cv_sys_stat_fs_data = yes; then
375
 
space=yes
376
 
AC_DEFINE(STAT_STATFS2_FS_DATA)
377
 
fi
378
 
fi
379
 
 
380
 
if test $space = no; then
381
 
# SVR2
382
 
AC_TRY_CPP([#include <sys/filsys.h>],
383
 
AC_DEFINE(STAT_READ_FILSYS) space=yes)
384
 
fi
385
 
 
386
 
if test -n "$list_mounted_fs" && test $space != no; then
387
 
DF_PROG="df"
388
 
# LIBOBJS="$LIBOBJS fsusage.o"
389
 
# LIBOBJS="$LIBOBJS mountlist.o"
390
 
fi
391
 
 
392
 
# Check for SunOS statfs brokenness wrt partitions 2GB and larger.
393
 
# If <sys/vfs.h> exists and struct statfs has a member named f_spare,
394
 
# enable the work-around code in fsusage.c.
395
 
AC_MSG_CHECKING([for statfs that truncates block counts])
396
 
AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
397
 
[AC_TRY_COMPILE([
398
 
#if !defined(sun) && !defined(__sun)
399
 
choke -- this is a workaround for a Sun-specific problem
400
 
#endif
401
 
#include <sys/types.h>
402
 
#include <sys/vfs.h>],
403
 
[struct statfs t; long c = *(t.f_spare);],
404
 
fu_cv_sys_truncating_statfs=yes,
405
 
fu_cv_sys_truncating_statfs=no,
406
 
)])
407
 
if test $fu_cv_sys_truncating_statfs = yes; then
408
 
AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS)
409
 
fi
410
 
AC_MSG_RESULT($fu_cv_sys_truncating_statfs)
411
 
 
412
 
AC_CHECKING(for AFS)
413
 
test -d /afs && AC_DEFINE(AFS)
414
 
])