Annotation of embedaddon/libiconv/srcm4/canonicalize.m4, revision 1.1

1.1     ! misho       1: # canonicalize.m4 serial 23
        !             2: 
        !             3: dnl Copyright (C) 2003-2007, 2009-2011 Free Software Foundation, Inc.
        !             4: 
        !             5: dnl This file is free software; the Free Software Foundation
        !             6: dnl gives unlimited permission to copy and/or distribute it,
        !             7: dnl with or without modifications, as long as this notice is preserved.
        !             8: 
        !             9: # Provides canonicalize_file_name and canonicalize_filename_mode, but does
        !            10: # not provide or fix realpath.
        !            11: AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE],
        !            12: [
        !            13:   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
        !            14:   AC_CHECK_FUNCS_ONCE([canonicalize_file_name])
        !            15:   AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
        !            16:   AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
        !            17:   if test $ac_cv_func_canonicalize_file_name = no; then
        !            18:     HAVE_CANONICALIZE_FILE_NAME=0
        !            19:   elif test "$gl_cv_func_realpath_works" != yes; then
        !            20:     REPLACE_CANONICALIZE_FILE_NAME=1
        !            21:   fi
        !            22: ])
        !            23: 
        !            24: # Provides canonicalize_file_name and realpath.
        !            25: AC_DEFUN([gl_CANONICALIZE_LGPL],
        !            26: [
        !            27:   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
        !            28:   AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE])
        !            29:   if test $ac_cv_func_canonicalize_file_name = no; then
        !            30:     HAVE_CANONICALIZE_FILE_NAME=0
        !            31:     if test $ac_cv_func_realpath = no; then
        !            32:       HAVE_REALPATH=0
        !            33:     elif test "$gl_cv_func_realpath_works" != yes; then
        !            34:       REPLACE_REALPATH=1
        !            35:     fi
        !            36:   elif test "$gl_cv_func_realpath_works" != yes; then
        !            37:     REPLACE_CANONICALIZE_FILE_NAME=1
        !            38:     REPLACE_REALPATH=1
        !            39:   fi
        !            40: ])
        !            41: 
        !            42: # Like gl_CANONICALIZE_LGPL, except prepare for separate compilation
        !            43: # (no REPLACE_CANONICALIZE_FILE_NAME, no REPLACE_REALPATH, no AC_LIBOBJ).
        !            44: AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE],
        !            45: [
        !            46:   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
        !            47:   AC_CHECK_FUNCS_ONCE([canonicalize_file_name getcwd readlink])
        !            48:   AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
        !            49:   AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
        !            50:   AC_CHECK_HEADERS_ONCE([sys/param.h])
        !            51: ])
        !            52: 
        !            53: # Check whether realpath works.  Assume that if a platform has both
        !            54: # realpath and canonicalize_file_name, but the former is broken, then
        !            55: # so is the latter.
        !            56: AC_DEFUN([gl_FUNC_REALPATH_WORKS],
        !            57: [
        !            58:   AC_CHECK_FUNCS_ONCE([realpath])
        !            59:   AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [
        !            60:     touch conftest.a
        !            61:     mkdir conftest.d
        !            62:     AC_RUN_IFELSE([
        !            63:       AC_LANG_PROGRAM([[
        !            64:         ]GL_NOCRASH[
        !            65:         #include <stdlib.h>
        !            66:         #include <string.h>
        !            67:       ]], [[
        !            68:         int result = 0;
        !            69:         {
        !            70:           char *name = realpath ("conftest.a", NULL);
        !            71:           if (!(name && *name == '/'))
        !            72:             result |= 1;
        !            73:         }
        !            74:         {
        !            75:           char *name = realpath ("conftest.b/../conftest.a", NULL);
        !            76:           if (name != NULL)
        !            77:             result |= 2;
        !            78:         }
        !            79:         {
        !            80:           char *name = realpath ("conftest.a/", NULL);
        !            81:           if (name != NULL)
        !            82:             result |= 4;
        !            83:         }
        !            84:         {
        !            85:           char *name1 = realpath (".", NULL);
        !            86:           char *name2 = realpath ("conftest.d//./..", NULL);
        !            87:           if (strcmp (name1, name2) != 0)
        !            88:             result |= 8;
        !            89:         }
        !            90:         return result;
        !            91:       ]])
        !            92:     ], [gl_cv_func_realpath_works=yes], [gl_cv_func_realpath_works=no],
        !            93:        [gl_cv_func_realpath_works="guessing no"])
        !            94:     rm -rf conftest.a conftest.d
        !            95:   ])
        !            96:   if test "$gl_cv_func_realpath_works" = yes; then
        !            97:     AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath()
        !            98:       can malloc memory, always gives an absolute path, and handles
        !            99:       trailing slash correctly.])
        !           100:   fi
        !           101: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>