libnbcompat-20080908:

- declare endpwent and endgrent if system headers are missing them
- check for existance of statfs.f_flags before using it
- drop a bunch of redundant function checks

Based on the work of Timothy Larson.
This commit is contained in:
joerg 2008-09-08 20:20:22 +00:00
parent b65aa09b27
commit 2c43b4f278
7 changed files with 236 additions and 76 deletions

View file

@ -1,11 +1,11 @@
# $NetBSD: Makefile,v 1.62 2008/07/27 16:02:09 joerg Exp $
# $NetBSD: Makefile,v 1.63 2008/09/08 20:20:22 joerg Exp $
#
# NOTE: If you update this package, it is *mandatory* that you update
# pkgsrc/pkgtools/libnbcompat/files/README to reflect the actual
# list of tested and supported platforms.
#
DISTNAME= libnbcompat-20080422
DISTNAME= libnbcompat-20080908
CATEGORIES= pkgtools devel
MASTER_SITES= # empty
DISTFILES= # empty

View file

@ -11791,20 +11791,9 @@ fi
done
for ac_func in gid_from_group group_from_gid pwcache_groupdb \
pwcache_userdb uid_from_user user_from_uid \
do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
$as_echo_n "checking for $ac_func... " >&6; }
if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
{ $as_echo "$as_me:$LINENO: checking whether endgrent is declared" >&5
$as_echo_n "checking whether endgrent is declared... " >&6; }
if test "${ac_cv_have_decl_endgrent+set}" = set; then
$as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
@ -11813,54 +11802,27 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef $ac_func
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char $ac_func ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined __stub_$ac_func || defined __stub___$ac_func
choke me
#endif
$ac_includes_default
int
main ()
{
return $ac_func ();
#ifndef endgrent
(void) endgrent;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (ac_try="$ac_link"
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
@ -11869,34 +11831,102 @@ $as_echo "$ac_try_echo") >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
$as_test_x conftest$ac_exeext
}; then
eval "$as_ac_var=yes"
} && test -s conftest.$ac_objext; then
ac_cv_have_decl_endgrent=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
ac_cv_have_decl_endgrent=no
fi
rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
ac_res=`eval 'as_val=${'$as_ac_var'}
$as_echo "$as_val"'`
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
if test `eval 'as_val=${'$as_ac_var'}
$as_echo "$as_val"'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_endgrent" >&5
$as_echo "$ac_cv_have_decl_endgrent" >&6; }
if test $ac_cv_have_decl_endgrent = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_ENDGRENT 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_ENDGRENT 0
_ACEOF
fi
done
{ $as_echo "$as_me:$LINENO: checking whether endpwent is declared" >&5
$as_echo_n "checking whether endpwent is declared... " >&6; }
if test "${ac_cv_have_decl_endpwent+set}" = set; then
$as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef endpwent
(void) endpwent;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_have_decl_endpwent=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_decl_endpwent=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_endpwent" >&5
$as_echo "$ac_cv_have_decl_endpwent" >&6; }
if test $ac_cv_have_decl_endpwent = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_ENDPWENT 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_ENDPWENT 0
_ACEOF
fi
@ -12961,6 +12991,114 @@ fi
fi
{ $as_echo "$as_me:$LINENO: checking for struct statfs.f_flags" >&5
$as_echo_n "checking for struct statfs.f_flags... " >&6; }
if test "${ac_cv_member_struct_statfs_f_flags+set}" = set; then
$as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <sys/statfs.h>
int
main ()
{
static struct statfs ac_aggr;
if (ac_aggr.f_flags)
return 0;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_member_struct_statfs_f_flags=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <sys/statfs.h>
int
main ()
{
static struct statfs ac_aggr;
if (sizeof ac_aggr.f_flags)
return 0;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_member_struct_statfs_f_flags=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_member_struct_statfs_f_flags=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:$LINENO: result: $ac_cv_member_struct_statfs_f_flags" >&5
$as_echo "$ac_cv_member_struct_statfs_f_flags" >&6; }
if test $ac_cv_member_struct_statfs_f_flags = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_STATFS_F_FLAGS 1
_ACEOF
:
else
:
fi
{ $as_echo "$as_me:$LINENO: checking for struct statfs.f_fsize" >&5
$as_echo_n "checking for struct statfs.f_fsize... " >&6; }
if test "${ac_cv_member_struct_statfs_f_fsize+set}" = set; then

View file

@ -1,4 +1,4 @@
dnl $NetBSD: configure.ac,v 1.63 2008/05/19 12:52:57 joerg Exp $
dnl $NetBSD: configure.ac,v 1.64 2008/09/08 20:20:23 joerg Exp $
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.52)
@ -260,9 +260,8 @@ AC_CHECK_FUNCS([getmode setmode], [:], [
break
])
AC_CHECK_FUNCS([gid_from_group group_from_gid pwcache_groupdb \
pwcache_userdb uid_from_user user_from_uid \
])
AC_CHECK_DECLS([endgrent, endpwent])
AC_CHECK_FUNCS([gid_from_group group_from_gid pwcache_groupdb \
pwcache_userdb uid_from_user user_from_uid \
], [:], [
@ -326,6 +325,8 @@ AC_CHECK_FUNCS([getpassphrase getpgrp memmove select])
AC_CHECK_FUNC(getpgrp, [AC_FUNC_GETPGRP])
AC_CHECK_MEMBERS([struct statfs.f_flags], [:], [:],
[ #include <sys/statfs.h> ])
AC_CHECK_MEMBERS([struct statfs.f_fsize], [:], [:],
[ #include <sys/statfs.h> ])
AC_CHECK_MEMBERS([struct statfs.f_iosize], [:], [:],

View file

@ -24,6 +24,14 @@
/* Define to 1 if you have the <ctype.h> header file. */
#undef HAVE_CTYPE_H
/* Define to 1 if you have the declaration of `endgrent', and to 0 if you
don't. */
#undef HAVE_DECL_ENDGRENT
/* Define to 1 if you have the declaration of `endpwent', and to 0 if you
don't. */
#undef HAVE_DECL_ENDPWENT
/* Define to 1 if you have the declaration of `optind', and to 0 if you don't.
*/
#undef HAVE_DECL_OPTIND
@ -343,6 +351,9 @@
/* Define to 1 if `d_namlen' is member of `struct dirent'. */
#undef HAVE_STRUCT_DIRENT_D_NAMLEN
/* Define to 1 if `f_flags' is member of `struct statfs'. */
#undef HAVE_STRUCT_STATFS_F_FLAGS
/* Define to 1 if `f_fsize' is member of `struct statfs'. */
#undef HAVE_STRUCT_STATFS_F_FSIZE

View file

@ -1,4 +1,4 @@
/* $NetBSD: grp.h,v 1.2 2008/04/29 05:46:08 martin Exp $ */
/* $NetBSD: grp.h,v 1.3 2008/09/08 20:20:23 joerg Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
@ -52,4 +52,8 @@ const char *group_from_gid(gid_t, int);
int gid_from_group(const char *, gid_t *);
#endif
#if !HAVE_DECL_ENDGRENT
void endgrent(void);
#endif
#endif /* !_NBCOMPAT_GRP_H_ */

View file

@ -1,4 +1,4 @@
/* $NetBSD: pwd.h,v 1.2 2008/04/29 05:46:08 martin Exp $ */
/* $NetBSD: pwd.h,v 1.3 2008/09/08 20:20:23 joerg Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
@ -52,4 +52,8 @@ const char *user_from_uid(uid_t, int);
int uid_from_user(const char *, uid_t *);
#endif
#if !HAVE_DECL_ENDPWENT
void endpwent(void);
#endif
#endif /* !_NBCOMPAT_PWD_H_ */

View file

@ -1,4 +1,4 @@
/* $NetBSD: statvfs.c,v 1.4 2008/04/29 05:46:08 martin Exp $ */
/* $NetBSD: statvfs.c,v 1.5 2008/09/08 20:20:23 joerg Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
@ -39,10 +39,12 @@ static void
fs2vfs(struct statvfs *vfs, const struct statfs *sfs)
{
vfs->f_flag = 0;
#if HAVE_STRUCT_STATFS_F_FLAGS
if (sfs->f_flags & MNT_RDONLY)
vfs->f_flag |= ST_RDONLY;
if (sfs->f_flags & MNT_NOSUID)
vfs->f_flag |= ST_NOSUID;
#endif
#if HAVE_STRUCT_STATFS_F_FSIZE
vfs->f_bsize = sfs->f_fsize