git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/3] configure.ac: check tv_nsec field in struct stat

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Dec 21, 2014, 20:20 UTC
Message-ID
<CAPig+cQWpq12axtJNsjoiKLKTpi6_xreS1fYDXYBtNv0Bj=T2Q@mail.gmail.com>
In-Reply-To
<1419188016-26134-1-git-send-email-reubenhwk@gmail.com>
On Sun, Dec 21, 2014 at 1:53 PM, Reuben Hawkins <reubenhwk@gmail.com> wrote:
> This check will automatically set the correct NO_NSEC setting.
Missing sign-off. See git/Documentation/SubmittingPatches.
Show 10 quoted lines
> ---
> diff --git a/configure.ac b/configure.ac
> index 6af9647..3cfdd51 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -754,6 +754,25 @@ AC_CHECK_TYPES([struct itimerval],
>  [#include <sys/time.h>])
>  GIT_CONF_SUBST([NO_STRUCT_ITIMERVAL])
>  #
> +# Define HAVE_ST_MTIM=No if you don't have struct stat.st_mtim.tv_nsec.

This comment is misleading. HAVE_ST_MTIM is never actually #defined or set manually by the user, or used anywhere outside of the conditional below. Also, the name itself is misleading: HAVE_ST_MTIM_NSEC would be more appropriate.

> +AC_CHECK_MEMBER([struct stat.st_mtim.tv_nsec],
> +[HAVE_ST_MTIM=Yes],
> +[HAVE_ST_MTIM=No],

In Autoconf, it's customary to use lowercase values (such as "yes" rather than "Yes") for these temporary variables. A "no" value is usually represented by an empty assignment (HAVE_ST_MTIM=). However, AC_CHECK_MEMBER() assigns the test result automatically to a shell variable (in this case, named ac_cv_member_struct_stat_st_mtim_tv_nsec), so there is no need to invent your own (HAVE_ST_MTIM).

So, you can reduce this to:
   AC_CHECK_MEMBER([struct stat.st_mtim.tv_nsec])
and later check the value with
    test x$ac_cv_member_struct_stat_st_mtim_tv_nsec = yes
> +[#include <sys/stat.h>])
> +#
> +# Define HAVE_ST_MTIMESPEC=No if you don't have struct stat.st_mtimespec.tv_nsec.
Ditto regarding misleading comment and variable name.
Show 7 quoted lines
> +AC_CHECK_MEMBER([struct stat.st_mtimespec.tv_nsec],
> +[HAVE_ST_MTIMESPEC=Yes],
> +[HAVE_ST_MTIMESPEC=No],
> +[#include <sys/stat.h>])
> +#
> +# Define NO_NSEC if both HAVE_ST_MTIMESPEC and HAVE_ST_MTIM are set to No.
> +if test '(' "$HAVE_ST_MTIM" = "No" ')' -a '(' "$HAVE_ST_MTIMESPEC" = "No" ')' ; then
Use of  'test -a' is unportable. The Autoconf manual has this to say:
    The -a, -o, ‘(’, and ‘)’ operands are not present in all
    implementations, and have been marked obsolete by Posix 2008.
Instead, use:
    test ... && test ....
> +       NO_NSEC=YesPlease
> +       GIT_CONF_SUBST([NO_NSEC])

git-compat-util.h also needs to know if it should use st_ctimespec rather than st_ctim. By this point, although indirect, you've determined which of the two is available (if any), so as a bonus, you can tell the build system about that, as well. Something like this, perhaps:

    if test x$ac_cv_member_struct_stat_st_mtimspec_tv_nsec = xyes; then
        USE_ST_TIMESPEC=YesPlease
        GIT_CONF_SUBST([USE_ST_TIMESPEC])
    elif test x$ac_cv_member_struct_stat_st_mtime_tv_nsec != xyes; then
        NO_NSEC=YesPlease
        GIT_CONF_SUBST([NO_NSEC])
    fi
Show 8 quoted lines
> +fi
> +
> +#
>  # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent.
>  AC_CHECK_MEMBER(struct dirent.d_ino,
>  [NO_D_INO_IN_DIRENT=],
> --
> 2.2.0.GIT
Previous: Eric SunshineNext: Eric Sunshine
Message 21 of 22 in “configure.ac: check tv_nsec field in struct stat”
  1. 1/3 configure.ac: check tv_nsec field in struct statReuben Hawkins, Dec 21, 2014
  2. 2/3 configure.ac,trace.c: check for CLOCK_MONOTONICReuben Hawkins, Dec 21, 2014
  3. Eric SunshineDec 21, 2014
  4. brian m. carlsonDec 22, 2014
  5. Reuben HawkinsDec 22, 2014
  6. 3/3 configure.ac,imap-send.c: check HMAC_CTX_cleanupReuben Hawkins, Dec 21, 2014
  7. Eric SunshineDec 21, 2014
  8. v2 patches for fixes on RHEL3Reuben Hawkins, Jan 7, 2015
  9. 1/3 configure.ac: check tv_nsec field in struct statReuben Hawkins, Jan 7, 2015
  10. Eric SunshineJan 7, 2015
  11. Reuben HawkinsJan 7, 2015
  12. Eric SunshineJan 7, 2015
  13. Reuben HawkinsJan 7, 2015
  14. Eric SunshineJan 8, 2015
  15. 2/3 configure.ac: check for clock_gettime and CLOCK_MONOTONICReuben Hawkins, Jan 7, 2015
  16. Eric SunshineJan 7, 2015
  17. Reuben HawkinsJan 7, 2015
  18. Eric SunshineJan 8, 2015
  19. 3/3 configure.ac: check for HMAC_CTX_cleanupReuben Hawkins, Jan 7, 2015
  20. Eric SunshineJan 7, 2015
  21. Eric SunshineDec 21, 2014
  22. Eric SunshineDec 21, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.