60 lines
1.5 KiB
Plaintext
60 lines
1.5 KiB
Plaintext
dnl ######################################################################
|
|
dnl Check if we have as buggy hasmntopt() libc function
|
|
AC_DEFUN([AMU_FUNC_BAD_HASMNTOPT],
|
|
[
|
|
AC_CACHE_CHECK([for working hasmntopt], ac_cv_func_hasmntopt_working,
|
|
[AC_TRY_RUN(
|
|
AMU_MOUNT_HEADERS(
|
|
[[
|
|
#ifdef HAVE_MNTENT_H
|
|
/* some systems need <stdio.h> before <mntent.h> is included */
|
|
# ifdef HAVE_STDIO_H
|
|
# include <stdio.h>
|
|
# endif /* HAVE_STDIO_H */
|
|
# include <mntent.h>
|
|
#endif /* HAVE_MNTENT_H */
|
|
#ifdef HAVE_SYS_MNTENT_H
|
|
# include <sys/mntent.h>
|
|
#endif /* HAVE_SYS_MNTENT_H */
|
|
#ifdef HAVE_SYS_MNTTAB_H
|
|
# include <sys/mnttab.h>
|
|
#endif /* HAVE_SYS_MNTTAB_H */
|
|
#if defined(HAVE_MNTTAB_H) && !defined(MNTTAB)
|
|
# include <mnttab.h>
|
|
#endif /* defined(HAVE_MNTTAB_H) && !defined(MNTTAB) */
|
|
#ifdef HAVE_STRUCT_MNTENT
|
|
typedef struct mntent mntent_t;
|
|
#else /* not HAVE_STRUCT_MNTENT */
|
|
# ifdef HAVE_STRUCT_MNTTAB
|
|
typedef struct mnttab mntent_t;
|
|
/* map struct mnttab field names to struct mntent field names */
|
|
# define mnt_opts mnt_mntopts
|
|
# endif /* not HAVE_STRUCT_MNTTAB */
|
|
#endif /* not HAVE_STRUCT_MNTENT */
|
|
|
|
int main()
|
|
{
|
|
mntent_t mnt;
|
|
char *tmp = NULL;
|
|
|
|
/*
|
|
* Test if hasmntopt will incorrectly find the string "soft", which
|
|
* is part of the large "softlookup" function.
|
|
*/
|
|
mnt.mnt_opts = "hard,softlookup,ro";
|
|
|
|
if ((tmp = hasmntopt(&mnt, "soft")))
|
|
exit(1);
|
|
exit(0);
|
|
}
|
|
]]),
|
|
[ac_cv_func_hasmntopt_working=yes],
|
|
[ac_cv_func_hasmntopt_working=no]
|
|
)])
|
|
if test $ac_cv_func_hasmntopt_working = no
|
|
then
|
|
AC_LIBOBJ([hasmntopt])
|
|
AC_DEFINE(HAVE_BAD_HASMNTOPT)
|
|
fi
|
|
])
|