File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srcm4 / canonicalize.m4
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 09:29:44 2012 UTC (12 years, 1 month ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_14p0, v1_14, HEAD
libiconv v1.14

    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>