summaryrefslogtreecommitdiff
path: root/m4/ctng_prog_stat.m4
blob: 8a0b26a6965b6034149c4429c1d3922dfa63b80a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Check that stat(1) is present and determine the syntax for the format
# string (BSD or GNU). Defines ac_cv_stat_flavor to either GNU or BSD;
# and evaluates either IF-GNU or IF-BSD expression.
#   CTNG_PROG_STAT([IF-GNU], [IF-BSD])
AC_DEFUN([CTNG_PROG_STAT_FORMAT],
    [AC_CACHE_CHECK([whether stat takes GNU or BSD format],
         [ctng_cv_stat_flavor],
         [touch conftest
          chmod 642 conftest
          attr_bsd=$(stat -f '%Lp' conftest 2>conftest.stderr.bsd)
          CTNG_MSG_LOG_ENVVAR([attr_bsd], [stat -f output])
          CTNG_MSG_LOG_FILE([conftest.stderr.bsd])
          attr_gnu=$(stat -c '%a' conftest 2>conftest.stderr.gnu)
          CTNG_MSG_LOG_ENVVAR([attr_gnu], [stat -c output])
          CTNG_MSG_LOG_FILE([conftest.stderr.gnu])
          rm -f conftest conftest.stderr.*
          AS_IF([test "$attr_bsd" = "642"],
              [ctng_cv_stat_flavor=BSD],
              [test "$attr_gnu" = "642"],
              [ctng_cv_stat_flavor=GNU],
              [ctng_cv_stat_flavor=unknown])])
     AS_IF([test "$ctng_cv_stat_flavor" = "GNU" ], [$1],
        [test "$ctng_cv_stat_flavor" = "BSD" ], [$2],
        [AC_MSG_ERROR([cannot determine stat(1) format option])])
    ])

AC_DEFUN([CTNG_PROG_STAT],
    [AX_REQUIRE_DEFINED([CTNG_CHECK_PROGS_REQ])
     CTNG_CHECK_PROGS_REQ([stat], [stat])
     CTNG_PROG_STAT_FORMAT(
        [CTNG_SET_KCONFIG_OPTION([stat_flavor_GNU], [y])
         CTNG_SET_KCONFIG_OPTION([stat_flavor_BSD])],
        [CTNG_SET_KCONFIG_OPTION([stat_flavor_BSD], [y])
         CTNG_SET_KCONFIG_OPTION([stat_flavor_GNU])])
    ])