├── .ci_build_config.rb ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── README.md ├── Rakefile ├── config.h.in ├── configure ├── configure.ac ├── mrbgem.rake ├── mrblib ├── ext.rb └── file-stat.rb ├── src └── file-stat.c └── test ├── executable ├── file-stat.c ├── file-stat.rb ├── readable └── writable /.ci_build_config.rb: -------------------------------------------------------------------------------- 1 | def gem_config(conf) 2 | conf.gem :core => "mruby-time" 3 | conf.gem '../' 4 | end 5 | 6 | MRuby::Build.new do |conf| 7 | toolchain :gcc 8 | conf.enable_test 9 | if ENV['DISABLE_PRESYM'] == 'true' 10 | conf.disable_presym 11 | end 12 | 13 | gem_config(conf) 14 | end 15 | 16 | if ENV['TARGET'] == 'windows-x86_64' 17 | MRuby::CrossBuild.new('windows-x86_64') do |conf| 18 | toolchain :gcc 19 | 20 | conf.cc.command = 'x86_64-w64-mingw32-gcc' 21 | conf.linker.command = 'x86_64-w64-mingw32-gcc' 22 | conf.cxx.command = 'x86_64-w64-mingw32-g++' 23 | conf.archiver.command = 'x86_64-w64-mingw32-gcc-ar' 24 | 25 | conf.exts do |exts| 26 | exts.object = '.obj' 27 | exts.executable = '.exe' 28 | exts.library = '.lib' 29 | end 30 | 31 | conf.build_target = 'x86_64-pc-linux-gnu' 32 | conf.host_target = 'x86_64-w64-mingw32' 33 | 34 | gem_config(conf) 35 | end 36 | end 37 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | ubuntu-latest-gcc: 13 | strategy: 14 | matrix: 15 | mruby-version: 16 | - 3.0.0 17 | - 3.1.0 18 | - 3.2.0 19 | disable-presym: 20 | - 'true' 21 | - 'false' 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v4 25 | - uses: ruby/setup-ruby@v1 26 | with: 27 | ruby-version: '3.2' 28 | - name: Build and test 29 | env: 30 | CC: gcc 31 | CXX: g++ 32 | MRUBY_VERSION: ${{ matrix.mruby-version }} 33 | DISABLE_PRESYM: ${{ matrix.disable-presym }} 34 | run: rake test 35 | 36 | ubuntu-latest-clang: 37 | strategy: 38 | matrix: 39 | mruby-version: 40 | - 3.0.0 41 | - 3.1.0 42 | - 3.2.0 43 | disable-presym: 44 | - 'true' 45 | - 'false' 46 | runs-on: ubuntu-latest 47 | steps: 48 | - uses: actions/checkout@v4 49 | - uses: ruby/setup-ruby@v1 50 | with: 51 | ruby-version: '3.2' 52 | - name: Build and test 53 | env: 54 | CC: clang 55 | CXX: clang++ 56 | MRUBY_VERSION: ${{ matrix.mruby-version }} 57 | DISABLE_PRESYM: ${{ matrix.disable-presym }} 58 | run: rake test 59 | 60 | ubuntu-latest-mingw: 61 | strategy: 62 | matrix: 63 | mruby-version: 64 | - 3.0.0 65 | - 3.1.0 66 | - 3.2.0 67 | disable-presym: 68 | - 'true' 69 | - 'false' 70 | runs-on: ubuntu-latest 71 | steps: 72 | - uses: actions/checkout@v4 73 | - uses: ruby/setup-ruby@v1 74 | with: 75 | ruby-version: '3.2' 76 | - name: apt 77 | run: sudo apt install mingw-w64 78 | - name: Build and test 79 | env: 80 | TARGET: windows-x86_64 81 | MRUBY_VERSION: ${{ matrix.mruby-version }} 82 | DISABLE_PRESYM: ${{ matrix.disable-presym }} 83 | run: rake test 84 | 85 | windows-mingw: 86 | strategy: 87 | matrix: 88 | mruby-version: 89 | - 3.0.0 90 | - 3.1.0 91 | - 3.2.0 92 | disable-presym: 93 | - 'true' 94 | - 'false' 95 | runs-on: windows-latest 96 | steps: 97 | - uses: actions/checkout@v4 98 | - uses: ruby/setup-ruby@v1 99 | with: 100 | ruby-version: '3.2' 101 | - name: Build and test 102 | env: 103 | CFLAGS: -g -O1 -Wall -Wundef 104 | MRUBY_VERSION: ${{ matrix.mruby-version }} 105 | DISABLE_PRESYM: ${{ matrix.disable-presym }} 106 | run: rake test 107 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | autom4te.cache/ 3 | *.log 4 | config.status 5 | config.h 6 | *.lock 7 | /mruby-* 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mruby-file-stat 2 | 3 | [![CI](https://github.com/ksss/mruby-file-stat/workflows/CI/badge.svg)](https://github.com/ksss/mruby-file-stat/actions) 4 | 5 | **File::Stat** class in mruby 6 | 7 | ```ruby 8 | stat = File::Stat.new('filename') # or File.stat('filename') 9 | stat.dev #=> device id 10 | stat.dev_major #=> device major id 11 | stat.dev_minor #=> device minor id 12 | stat.ino #=> i-node number 13 | stat.mode #=> permission value (st_mode) 14 | stat.nlink #=> hard link count 15 | stat.uid #=> user id 16 | stat.gid #=> group id 17 | stat.rdev #=> device type 18 | stat.rdev_major #=> rdev major id 19 | stat.rdev_minor #=> rdev minor id 20 | stat.atime #=> last access time 21 | stat.mtime #=> last modify time 22 | stat.ctime #=> last change attribute time 23 | stat.birthtime #=> file created time 24 | stat.size #=> file size(byte) 25 | stat.blksize #=> file I/O block size 26 | stat.blocks #=> attached block num 27 | stat.grpowned #=> same gid? 28 | stat.<=> #=> comparate mtime (-1,0,1 or nil) 29 | stat.size? 30 | stat.zero? 31 | stat.symlink? 32 | stat.file? 33 | stat.directory? 34 | stat.chardev? 35 | stat.blockdev? 36 | stat.pipe? 37 | stat.socket? 38 | stat.owned? 39 | stat.owned_real? 40 | stat.readable? 41 | stat.readable_real? 42 | stat.writable? 43 | stat.writable_real? 44 | stat.executable? 45 | stat.executable_real? 46 | stat.world_readable? 47 | stat.world_writable? 48 | stat.setuid? 49 | stat.setgid? 50 | stat.sticky? 51 | stat.ftype #=> socket, link, file, blockSpecial, directory, characterSpecial, fifo or unknown 52 | ``` 53 | 54 | This library is wrap of struct stat. 55 | 56 | ## Installation 57 | 58 | ### use github repository 59 | 60 | Write in /mruby/build_config.rb 61 | 62 | ```ruby 63 | MRuby::Build.new do |conf| 64 | # by mgem 65 | conf.gem :mgem => 'mruby-file-stat' 66 | # by github 67 | conf.gem :github => 'ksss/mruby-file-stat', :branch => 'master' 68 | end 69 | ``` 70 | 71 | ## Homepage 72 | 73 | https://github.com/ksss/mruby-file-stat 74 | 75 | ## License 76 | 77 | See [https://github.com/ruby/ruby/blob/trunk/file.c](https://github.com/ruby/ruby/blob/trunk/file.c) 78 | 79 | ## Doc 80 | 81 | [http://ruby-doc.org/core-2.1.5/File/Stat.html](http://ruby-doc.org/core-2.1.5/File/Stat.html) 82 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | mruby_version = ENV["MRUBY_VERSION"] || 'master' 2 | mruby_dir = "mruby-#{mruby_version}" 3 | 4 | file 'mruby-head' do 5 | sh "git clone --depth 1 --no-single-branch https://github.com/mruby/mruby.git" 6 | sh "mv mruby mruby-head" 7 | end 8 | 9 | file mruby_dir => 'mruby-head' do 10 | sh "cp -a mruby-head #{mruby_dir}" 11 | cd mruby_dir do 12 | sh "git checkout #{mruby_version}" 13 | end 14 | end 15 | 16 | file "#{mruby_dir}/ci_build_config.rb" => [mruby_dir, ".ci_build_config.rb"] do 17 | sh "cp #{File.expand_path(".ci_build_config.rb")} #{mruby_dir}/ci_build_config.rb" 18 | end 19 | 20 | desc "run test with mruby" 21 | task :test => "#{mruby_dir}/ci_build_config.rb" do 22 | cd mruby_dir do 23 | sh "rake -E 'STDOUT.sync=true' test all MRUBY_CONFIG=ci_build_config.rb" 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.ac by autoheader. */ 2 | 3 | /* Define to 1 if you have the `getgroups' function. */ 4 | #undef HAVE_GETGROUPS 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_INTTYPES_H 8 | 9 | /* Define to 1 if you have the `lstat' function. */ 10 | #undef HAVE_LSTAT 11 | 12 | /* Define to 1 if you have the header file. */ 13 | #undef HAVE_MEMORY_H 14 | 15 | /* Define to 1 if you have the header file. */ 16 | #undef HAVE_STDINT_H 17 | 18 | /* Define to 1 if you have the header file. */ 19 | #undef HAVE_STDLIB_H 20 | 21 | /* Define to 1 if you have the header file. */ 22 | #undef HAVE_STRINGS_H 23 | 24 | /* Define to 1 if you have the header file. */ 25 | #undef HAVE_STRING_H 26 | 27 | /* Define to 1 if `st_atim' is a member of `struct stat'. */ 28 | #undef HAVE_STRUCT_STAT_ST_ATIM 29 | 30 | /* Define to 1 if `st_atimensec' is a member of `struct stat'. */ 31 | #undef HAVE_STRUCT_STAT_ST_ATIMENSEC 32 | 33 | /* Define to 1 if `st_atimespec' is a member of `struct stat'. */ 34 | #undef HAVE_STRUCT_STAT_ST_ATIMESPEC 35 | 36 | /* Define to 1 if `st_birthtimespec' is a member of `struct stat'. */ 37 | #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 38 | 39 | /* Define to 1 if `st_blksize' is a member of `struct stat'. */ 40 | #undef HAVE_STRUCT_STAT_ST_BLKSIZE 41 | 42 | /* Define to 1 if `st_blocks' is a member of `struct stat'. */ 43 | #undef HAVE_STRUCT_STAT_ST_BLOCKS 44 | 45 | /* Define to 1 if `st_ctim' is a member of `struct stat'. */ 46 | #undef HAVE_STRUCT_STAT_ST_CTIM 47 | 48 | /* Define to 1 if `st_ctimensec' is a member of `struct stat'. */ 49 | #undef HAVE_STRUCT_STAT_ST_CTIMENSEC 50 | 51 | /* Define to 1 if `st_ctimespec' is a member of `struct stat'. */ 52 | #undef HAVE_STRUCT_STAT_ST_CTIMESPEC 53 | 54 | /* Define to 1 if `st_mtim' is a member of `struct stat'. */ 55 | #undef HAVE_STRUCT_STAT_ST_MTIM 56 | 57 | /* Define to 1 if `st_mtimensec' is a member of `struct stat'. */ 58 | #undef HAVE_STRUCT_STAT_ST_MTIMENSEC 59 | 60 | /* Define to 1 if `st_mtimespec' is a member of `struct stat'. */ 61 | #undef HAVE_STRUCT_STAT_ST_MTIMESPEC 62 | 63 | /* Define to 1 if `st_rdev' is a member of `struct stat'. */ 64 | #undef HAVE_STRUCT_STAT_ST_RDEV 65 | 66 | /* Define to 1 if you have the header file. */ 67 | #undef HAVE_SYS_STAT_H 68 | 69 | /* Define to 1 if you have the header file. */ 70 | #undef HAVE_SYS_SYSMACROS_H 71 | 72 | /* Define to 1 if you have the header file. */ 73 | #undef HAVE_SYS_TYPES_H 74 | 75 | /* Define to 1 if you have the header file. */ 76 | #undef HAVE_UNISTD_H 77 | 78 | /* Define to the address where bug reports for this package should be sent. */ 79 | #undef PACKAGE_BUGREPORT 80 | 81 | /* Define to the full name of this package. */ 82 | #undef PACKAGE_NAME 83 | 84 | /* Define to the full name and version of this package. */ 85 | #undef PACKAGE_STRING 86 | 87 | /* Define to the one symbol short name of this package. */ 88 | #undef PACKAGE_TARNAME 89 | 90 | /* Define to the home page for this package. */ 91 | #undef PACKAGE_URL 92 | 93 | /* Define to the version of this package. */ 94 | #undef PACKAGE_VERSION 95 | 96 | /* Define to 1 if you have the ANSI C header files. */ 97 | #undef STDC_HEADERS 98 | -------------------------------------------------------------------------------- /configure: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Guess values for system-dependent variables and create Makefiles. 3 | # Generated by GNU Autoconf 2.69. 4 | # 5 | # 6 | # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. 7 | # 8 | # 9 | # This configure script is free software; the Free Software Foundation 10 | # gives unlimited permission to copy, distribute and modify it. 11 | ## -------------------- ## 12 | ## M4sh Initialization. ## 13 | ## -------------------- ## 14 | 15 | # Be more Bourne compatible 16 | DUALCASE=1; export DUALCASE # for MKS sh 17 | if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : 18 | emulate sh 19 | NULLCMD=: 20 | # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which 21 | # is contrary to our usage. Disable this feature. 22 | alias -g '${1+"$@"}'='"$@"' 23 | setopt NO_GLOB_SUBST 24 | else 25 | case `(set -o) 2>/dev/null` in #( 26 | *posix*) : 27 | set -o posix ;; #( 28 | *) : 29 | ;; 30 | esac 31 | fi 32 | 33 | 34 | as_nl=' 35 | ' 36 | export as_nl 37 | # Printing a long string crashes Solaris 7 /usr/bin/printf. 38 | as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' 39 | as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo 40 | as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo 41 | # Prefer a ksh shell builtin over an external printf program on Solaris, 42 | # but without wasting forks for bash or zsh. 43 | if test -z "$BASH_VERSION$ZSH_VERSION" \ 44 | && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then 45 | as_echo='print -r --' 46 | as_echo_n='print -rn --' 47 | elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then 48 | as_echo='printf %s\n' 49 | as_echo_n='printf %s' 50 | else 51 | if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then 52 | as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' 53 | as_echo_n='/usr/ucb/echo -n' 54 | else 55 | as_echo_body='eval expr "X$1" : "X\\(.*\\)"' 56 | as_echo_n_body='eval 57 | arg=$1; 58 | case $arg in #( 59 | *"$as_nl"*) 60 | expr "X$arg" : "X\\(.*\\)$as_nl"; 61 | arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; 62 | esac; 63 | expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" 64 | ' 65 | export as_echo_n_body 66 | as_echo_n='sh -c $as_echo_n_body as_echo' 67 | fi 68 | export as_echo_body 69 | as_echo='sh -c $as_echo_body as_echo' 70 | fi 71 | 72 | # The user is always right. 73 | if test "${PATH_SEPARATOR+set}" != set; then 74 | PATH_SEPARATOR=: 75 | (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { 76 | (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || 77 | PATH_SEPARATOR=';' 78 | } 79 | fi 80 | 81 | 82 | # IFS 83 | # We need space, tab and new line, in precisely that order. Quoting is 84 | # there to prevent editors from complaining about space-tab. 85 | # (If _AS_PATH_WALK were called with IFS unset, it would disable word 86 | # splitting by setting IFS to empty value.) 87 | IFS=" "" $as_nl" 88 | 89 | # Find who we are. Look in the path if we contain no directory separator. 90 | as_myself= 91 | case $0 in #(( 92 | *[\\/]* ) as_myself=$0 ;; 93 | *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 94 | for as_dir in $PATH 95 | do 96 | IFS=$as_save_IFS 97 | test -z "$as_dir" && as_dir=. 98 | test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break 99 | done 100 | IFS=$as_save_IFS 101 | 102 | ;; 103 | esac 104 | # We did not find ourselves, most probably we were run as `sh COMMAND' 105 | # in which case we are not to be found in the path. 106 | if test "x$as_myself" = x; then 107 | as_myself=$0 108 | fi 109 | if test ! -f "$as_myself"; then 110 | $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 111 | exit 1 112 | fi 113 | 114 | # Unset variables that we do not need and which cause bugs (e.g. in 115 | # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" 116 | # suppresses any "Segmentation fault" message there. '((' could 117 | # trigger a bug in pdksh 5.2.14. 118 | for as_var in BASH_ENV ENV MAIL MAILPATH 119 | do eval test x\${$as_var+set} = xset \ 120 | && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : 121 | done 122 | PS1='$ ' 123 | PS2='> ' 124 | PS4='+ ' 125 | 126 | # NLS nuisances. 127 | LC_ALL=C 128 | export LC_ALL 129 | LANGUAGE=C 130 | export LANGUAGE 131 | 132 | # CDPATH. 133 | (unset CDPATH) >/dev/null 2>&1 && unset CDPATH 134 | 135 | # Use a proper internal environment variable to ensure we don't fall 136 | # into an infinite loop, continuously re-executing ourselves. 137 | if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then 138 | _as_can_reexec=no; export _as_can_reexec; 139 | # We cannot yet assume a decent shell, so we have to provide a 140 | # neutralization value for shells without unset; and this also 141 | # works around shells that cannot unset nonexistent variables. 142 | # Preserve -v and -x to the replacement shell. 143 | BASH_ENV=/dev/null 144 | ENV=/dev/null 145 | (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV 146 | case $- in # (((( 147 | *v*x* | *x*v* ) as_opts=-vx ;; 148 | *v* ) as_opts=-v ;; 149 | *x* ) as_opts=-x ;; 150 | * ) as_opts= ;; 151 | esac 152 | exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} 153 | # Admittedly, this is quite paranoid, since all the known shells bail 154 | # out after a failed `exec'. 155 | $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 156 | as_fn_exit 255 157 | fi 158 | # We don't want this to propagate to other subprocesses. 159 | { _as_can_reexec=; unset _as_can_reexec;} 160 | if test "x$CONFIG_SHELL" = x; then 161 | as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : 162 | emulate sh 163 | NULLCMD=: 164 | # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which 165 | # is contrary to our usage. Disable this feature. 166 | alias -g '\${1+\"\$@\"}'='\"\$@\"' 167 | setopt NO_GLOB_SUBST 168 | else 169 | case \`(set -o) 2>/dev/null\` in #( 170 | *posix*) : 171 | set -o posix ;; #( 172 | *) : 173 | ;; 174 | esac 175 | fi 176 | " 177 | as_required="as_fn_return () { (exit \$1); } 178 | as_fn_success () { as_fn_return 0; } 179 | as_fn_failure () { as_fn_return 1; } 180 | as_fn_ret_success () { return 0; } 181 | as_fn_ret_failure () { return 1; } 182 | 183 | exitcode=0 184 | as_fn_success || { exitcode=1; echo as_fn_success failed.; } 185 | as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } 186 | as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } 187 | as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } 188 | if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : 189 | 190 | else 191 | exitcode=1; echo positional parameters were not saved. 192 | fi 193 | test x\$exitcode = x0 || exit 1 194 | test -x / || exit 1" 195 | as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO 196 | as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO 197 | eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && 198 | test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 199 | test \$(( 1 + 1 )) = 2 || exit 1" 200 | if (eval "$as_required") 2>/dev/null; then : 201 | as_have_required=yes 202 | else 203 | as_have_required=no 204 | fi 205 | if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : 206 | 207 | else 208 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 209 | as_found=false 210 | for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH 211 | do 212 | IFS=$as_save_IFS 213 | test -z "$as_dir" && as_dir=. 214 | as_found=: 215 | case $as_dir in #( 216 | /*) 217 | for as_base in sh bash ksh sh5; do 218 | # Try only shells that exist, to save several forks. 219 | as_shell=$as_dir/$as_base 220 | if { test -f "$as_shell" || test -f "$as_shell.exe"; } && 221 | { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : 222 | CONFIG_SHELL=$as_shell as_have_required=yes 223 | if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : 224 | break 2 225 | fi 226 | fi 227 | done;; 228 | esac 229 | as_found=false 230 | done 231 | $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && 232 | { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : 233 | CONFIG_SHELL=$SHELL as_have_required=yes 234 | fi; } 235 | IFS=$as_save_IFS 236 | 237 | 238 | if test "x$CONFIG_SHELL" != x; then : 239 | export CONFIG_SHELL 240 | # We cannot yet assume a decent shell, so we have to provide a 241 | # neutralization value for shells without unset; and this also 242 | # works around shells that cannot unset nonexistent variables. 243 | # Preserve -v and -x to the replacement shell. 244 | BASH_ENV=/dev/null 245 | ENV=/dev/null 246 | (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV 247 | case $- in # (((( 248 | *v*x* | *x*v* ) as_opts=-vx ;; 249 | *v* ) as_opts=-v ;; 250 | *x* ) as_opts=-x ;; 251 | * ) as_opts= ;; 252 | esac 253 | exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} 254 | # Admittedly, this is quite paranoid, since all the known shells bail 255 | # out after a failed `exec'. 256 | $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 257 | exit 255 258 | fi 259 | 260 | if test x$as_have_required = xno; then : 261 | $as_echo "$0: This script requires a shell more modern than all" 262 | $as_echo "$0: the shells that I found on your system." 263 | if test x${ZSH_VERSION+set} = xset ; then 264 | $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" 265 | $as_echo "$0: be upgraded to zsh 4.3.4 or later." 266 | else 267 | $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, 268 | $0: including any error possibly output before this 269 | $0: message. Then install a modern shell, or manually run 270 | $0: the script under such a shell if you do have one." 271 | fi 272 | exit 1 273 | fi 274 | fi 275 | fi 276 | SHELL=${CONFIG_SHELL-/bin/sh} 277 | export SHELL 278 | # Unset more variables known to interfere with behavior of common tools. 279 | CLICOLOR_FORCE= GREP_OPTIONS= 280 | unset CLICOLOR_FORCE GREP_OPTIONS 281 | 282 | ## --------------------- ## 283 | ## M4sh Shell Functions. ## 284 | ## --------------------- ## 285 | # as_fn_unset VAR 286 | # --------------- 287 | # Portably unset VAR. 288 | as_fn_unset () 289 | { 290 | { eval $1=; unset $1;} 291 | } 292 | as_unset=as_fn_unset 293 | 294 | # as_fn_set_status STATUS 295 | # ----------------------- 296 | # Set $? to STATUS, without forking. 297 | as_fn_set_status () 298 | { 299 | return $1 300 | } # as_fn_set_status 301 | 302 | # as_fn_exit STATUS 303 | # ----------------- 304 | # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. 305 | as_fn_exit () 306 | { 307 | set +e 308 | as_fn_set_status $1 309 | exit $1 310 | } # as_fn_exit 311 | 312 | # as_fn_mkdir_p 313 | # ------------- 314 | # Create "$as_dir" as a directory, including parents if necessary. 315 | as_fn_mkdir_p () 316 | { 317 | 318 | case $as_dir in #( 319 | -*) as_dir=./$as_dir;; 320 | esac 321 | test -d "$as_dir" || eval $as_mkdir_p || { 322 | as_dirs= 323 | while :; do 324 | case $as_dir in #( 325 | *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( 326 | *) as_qdir=$as_dir;; 327 | esac 328 | as_dirs="'$as_qdir' $as_dirs" 329 | as_dir=`$as_dirname -- "$as_dir" || 330 | $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 331 | X"$as_dir" : 'X\(//\)[^/]' \| \ 332 | X"$as_dir" : 'X\(//\)$' \| \ 333 | X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || 334 | $as_echo X"$as_dir" | 335 | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 336 | s//\1/ 337 | q 338 | } 339 | /^X\(\/\/\)[^/].*/{ 340 | s//\1/ 341 | q 342 | } 343 | /^X\(\/\/\)$/{ 344 | s//\1/ 345 | q 346 | } 347 | /^X\(\/\).*/{ 348 | s//\1/ 349 | q 350 | } 351 | s/.*/./; q'` 352 | test -d "$as_dir" && break 353 | done 354 | test -z "$as_dirs" || eval "mkdir $as_dirs" 355 | } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" 356 | 357 | 358 | } # as_fn_mkdir_p 359 | 360 | # as_fn_executable_p FILE 361 | # ----------------------- 362 | # Test if FILE is an executable regular file. 363 | as_fn_executable_p () 364 | { 365 | test -f "$1" && test -x "$1" 366 | } # as_fn_executable_p 367 | # as_fn_append VAR VALUE 368 | # ---------------------- 369 | # Append the text in VALUE to the end of the definition contained in VAR. Take 370 | # advantage of any shell optimizations that allow amortized linear growth over 371 | # repeated appends, instead of the typical quadratic growth present in naive 372 | # implementations. 373 | if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : 374 | eval 'as_fn_append () 375 | { 376 | eval $1+=\$2 377 | }' 378 | else 379 | as_fn_append () 380 | { 381 | eval $1=\$$1\$2 382 | } 383 | fi # as_fn_append 384 | 385 | # as_fn_arith ARG... 386 | # ------------------ 387 | # Perform arithmetic evaluation on the ARGs, and store the result in the 388 | # global $as_val. Take advantage of shells that can avoid forks. The arguments 389 | # must be portable across $(()) and expr. 390 | if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : 391 | eval 'as_fn_arith () 392 | { 393 | as_val=$(( $* )) 394 | }' 395 | else 396 | as_fn_arith () 397 | { 398 | as_val=`expr "$@" || test $? -eq 1` 399 | } 400 | fi # as_fn_arith 401 | 402 | 403 | # as_fn_error STATUS ERROR [LINENO LOG_FD] 404 | # ---------------------------------------- 405 | # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are 406 | # provided, also output the error to LOG_FD, referencing LINENO. Then exit the 407 | # script with STATUS, using 1 if that was 0. 408 | as_fn_error () 409 | { 410 | as_status=$1; test $as_status -eq 0 && as_status=1 411 | if test "$4"; then 412 | as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 413 | $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 414 | fi 415 | $as_echo "$as_me: error: $2" >&2 416 | as_fn_exit $as_status 417 | } # as_fn_error 418 | 419 | if expr a : '\(a\)' >/dev/null 2>&1 && 420 | test "X`expr 00001 : '.*\(...\)'`" = X001; then 421 | as_expr=expr 422 | else 423 | as_expr=false 424 | fi 425 | 426 | if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then 427 | as_basename=basename 428 | else 429 | as_basename=false 430 | fi 431 | 432 | if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then 433 | as_dirname=dirname 434 | else 435 | as_dirname=false 436 | fi 437 | 438 | as_me=`$as_basename -- "$0" || 439 | $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 440 | X"$0" : 'X\(//\)$' \| \ 441 | X"$0" : 'X\(/\)' \| . 2>/dev/null || 442 | $as_echo X/"$0" | 443 | sed '/^.*\/\([^/][^/]*\)\/*$/{ 444 | s//\1/ 445 | q 446 | } 447 | /^X\/\(\/\/\)$/{ 448 | s//\1/ 449 | q 450 | } 451 | /^X\/\(\/\).*/{ 452 | s//\1/ 453 | q 454 | } 455 | s/.*/./; q'` 456 | 457 | # Avoid depending upon Character Ranges. 458 | as_cr_letters='abcdefghijklmnopqrstuvwxyz' 459 | as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 460 | as_cr_Letters=$as_cr_letters$as_cr_LETTERS 461 | as_cr_digits='0123456789' 462 | as_cr_alnum=$as_cr_Letters$as_cr_digits 463 | 464 | 465 | as_lineno_1=$LINENO as_lineno_1a=$LINENO 466 | as_lineno_2=$LINENO as_lineno_2a=$LINENO 467 | eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && 468 | test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { 469 | # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) 470 | sed -n ' 471 | p 472 | /[$]LINENO/= 473 | ' <$as_myself | 474 | sed ' 475 | s/[$]LINENO.*/&-/ 476 | t lineno 477 | b 478 | :lineno 479 | N 480 | :loop 481 | s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ 482 | t loop 483 | s/-\n.*// 484 | ' >$as_me.lineno && 485 | chmod +x "$as_me.lineno" || 486 | { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } 487 | 488 | # If we had to re-execute with $CONFIG_SHELL, we're ensured to have 489 | # already done that, so ensure we don't try to do so again and fall 490 | # in an infinite loop. This has already happened in practice. 491 | _as_can_reexec=no; export _as_can_reexec 492 | # Don't try to exec as it changes $[0], causing all sort of problems 493 | # (the dirname of $[0] is not the place where we might find the 494 | # original and so on. Autoconf is especially sensitive to this). 495 | . "./$as_me.lineno" 496 | # Exit status is that of the last command. 497 | exit 498 | } 499 | 500 | ECHO_C= ECHO_N= ECHO_T= 501 | case `echo -n x` in #((((( 502 | -n*) 503 | case `echo 'xy\c'` in 504 | *c*) ECHO_T=' ';; # ECHO_T is single tab character. 505 | xy) ECHO_C='\c';; 506 | *) echo `echo ksh88 bug on AIX 6.1` > /dev/null 507 | ECHO_T=' ';; 508 | esac;; 509 | *) 510 | ECHO_N='-n';; 511 | esac 512 | 513 | rm -f conf$$ conf$$.exe conf$$.file 514 | if test -d conf$$.dir; then 515 | rm -f conf$$.dir/conf$$.file 516 | else 517 | rm -f conf$$.dir 518 | mkdir conf$$.dir 2>/dev/null 519 | fi 520 | if (echo >conf$$.file) 2>/dev/null; then 521 | if ln -s conf$$.file conf$$ 2>/dev/null; then 522 | as_ln_s='ln -s' 523 | # ... but there are two gotchas: 524 | # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 525 | # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 526 | # In both cases, we have to default to `cp -pR'. 527 | ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 528 | as_ln_s='cp -pR' 529 | elif ln conf$$.file conf$$ 2>/dev/null; then 530 | as_ln_s=ln 531 | else 532 | as_ln_s='cp -pR' 533 | fi 534 | else 535 | as_ln_s='cp -pR' 536 | fi 537 | rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file 538 | rmdir conf$$.dir 2>/dev/null 539 | 540 | if mkdir -p . 2>/dev/null; then 541 | as_mkdir_p='mkdir -p "$as_dir"' 542 | else 543 | test -d ./-p && rmdir ./-p 544 | as_mkdir_p=false 545 | fi 546 | 547 | as_test_x='test -x' 548 | as_executable_p=as_fn_executable_p 549 | 550 | # Sed expression to map a string onto a valid CPP name. 551 | as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" 552 | 553 | # Sed expression to map a string onto a valid variable name. 554 | as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" 555 | 556 | 557 | test -n "$DJDIR" || exec 7<&0 &1 559 | 560 | # Name of the host. 561 | # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, 562 | # so uname gets run too. 563 | ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` 564 | 565 | # 566 | # Initializations. 567 | # 568 | ac_default_prefix=/usr/local 569 | ac_clean_files= 570 | ac_config_libobj_dir=. 571 | LIBOBJS= 572 | cross_compiling=no 573 | subdirs= 574 | MFLAGS= 575 | MAKEFLAGS= 576 | 577 | # Identity of this package. 578 | PACKAGE_NAME= 579 | PACKAGE_TARNAME= 580 | PACKAGE_VERSION= 581 | PACKAGE_STRING= 582 | PACKAGE_BUGREPORT= 583 | PACKAGE_URL= 584 | 585 | ac_unique_file="src/file-stat.c" 586 | # Factoring default headers for most tests. 587 | ac_includes_default="\ 588 | #include 589 | #ifdef HAVE_SYS_TYPES_H 590 | # include 591 | #endif 592 | #ifdef HAVE_SYS_STAT_H 593 | # include 594 | #endif 595 | #ifdef STDC_HEADERS 596 | # include 597 | # include 598 | #else 599 | # ifdef HAVE_STDLIB_H 600 | # include 601 | # endif 602 | #endif 603 | #ifdef HAVE_STRING_H 604 | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H 605 | # include 606 | # endif 607 | # include 608 | #endif 609 | #ifdef HAVE_STRINGS_H 610 | # include 611 | #endif 612 | #ifdef HAVE_INTTYPES_H 613 | # include 614 | #endif 615 | #ifdef HAVE_STDINT_H 616 | # include 617 | #endif 618 | #ifdef HAVE_UNISTD_H 619 | # include 620 | #endif" 621 | 622 | ac_subst_vars='LTLIBOBJS 623 | LIBOBJS 624 | EGREP 625 | GREP 626 | CPP 627 | OBJEXT 628 | EXEEXT 629 | ac_ct_CC 630 | CPPFLAGS 631 | LDFLAGS 632 | CFLAGS 633 | CC 634 | target_alias 635 | host_alias 636 | build_alias 637 | LIBS 638 | ECHO_T 639 | ECHO_N 640 | ECHO_C 641 | DEFS 642 | mandir 643 | localedir 644 | libdir 645 | psdir 646 | pdfdir 647 | dvidir 648 | htmldir 649 | infodir 650 | docdir 651 | oldincludedir 652 | includedir 653 | localstatedir 654 | sharedstatedir 655 | sysconfdir 656 | datadir 657 | datarootdir 658 | libexecdir 659 | sbindir 660 | bindir 661 | program_transform_name 662 | prefix 663 | exec_prefix 664 | PACKAGE_URL 665 | PACKAGE_BUGREPORT 666 | PACKAGE_STRING 667 | PACKAGE_VERSION 668 | PACKAGE_TARNAME 669 | PACKAGE_NAME 670 | PATH_SEPARATOR 671 | SHELL' 672 | ac_subst_files='' 673 | ac_user_opts=' 674 | enable_option_checking 675 | ' 676 | ac_precious_vars='build_alias 677 | host_alias 678 | target_alias 679 | CC 680 | CFLAGS 681 | LDFLAGS 682 | LIBS 683 | CPPFLAGS 684 | CPP' 685 | 686 | 687 | # Initialize some variables set by options. 688 | ac_init_help= 689 | ac_init_version=false 690 | ac_unrecognized_opts= 691 | ac_unrecognized_sep= 692 | # The variables have the same names as the options, with 693 | # dashes changed to underlines. 694 | cache_file=/dev/null 695 | exec_prefix=NONE 696 | no_create= 697 | no_recursion= 698 | prefix=NONE 699 | program_prefix=NONE 700 | program_suffix=NONE 701 | program_transform_name=s,x,x, 702 | silent= 703 | site= 704 | srcdir= 705 | verbose= 706 | x_includes=NONE 707 | x_libraries=NONE 708 | 709 | # Installation directory options. 710 | # These are left unexpanded so users can "make install exec_prefix=/foo" 711 | # and all the variables that are supposed to be based on exec_prefix 712 | # by default will actually change. 713 | # Use braces instead of parens because sh, perl, etc. also accept them. 714 | # (The list follows the same order as the GNU Coding Standards.) 715 | bindir='${exec_prefix}/bin' 716 | sbindir='${exec_prefix}/sbin' 717 | libexecdir='${exec_prefix}/libexec' 718 | datarootdir='${prefix}/share' 719 | datadir='${datarootdir}' 720 | sysconfdir='${prefix}/etc' 721 | sharedstatedir='${prefix}/com' 722 | localstatedir='${prefix}/var' 723 | includedir='${prefix}/include' 724 | oldincludedir='/usr/include' 725 | docdir='${datarootdir}/doc/${PACKAGE}' 726 | infodir='${datarootdir}/info' 727 | htmldir='${docdir}' 728 | dvidir='${docdir}' 729 | pdfdir='${docdir}' 730 | psdir='${docdir}' 731 | libdir='${exec_prefix}/lib' 732 | localedir='${datarootdir}/locale' 733 | mandir='${datarootdir}/man' 734 | 735 | ac_prev= 736 | ac_dashdash= 737 | for ac_option 738 | do 739 | # If the previous option needs an argument, assign it. 740 | if test -n "$ac_prev"; then 741 | eval $ac_prev=\$ac_option 742 | ac_prev= 743 | continue 744 | fi 745 | 746 | case $ac_option in 747 | *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; 748 | *=) ac_optarg= ;; 749 | *) ac_optarg=yes ;; 750 | esac 751 | 752 | # Accept the important Cygnus configure options, so we can diagnose typos. 753 | 754 | case $ac_dashdash$ac_option in 755 | --) 756 | ac_dashdash=yes ;; 757 | 758 | -bindir | --bindir | --bindi | --bind | --bin | --bi) 759 | ac_prev=bindir ;; 760 | -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) 761 | bindir=$ac_optarg ;; 762 | 763 | -build | --build | --buil | --bui | --bu) 764 | ac_prev=build_alias ;; 765 | -build=* | --build=* | --buil=* | --bui=* | --bu=*) 766 | build_alias=$ac_optarg ;; 767 | 768 | -cache-file | --cache-file | --cache-fil | --cache-fi \ 769 | | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) 770 | ac_prev=cache_file ;; 771 | -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ 772 | | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) 773 | cache_file=$ac_optarg ;; 774 | 775 | --config-cache | -C) 776 | cache_file=config.cache ;; 777 | 778 | -datadir | --datadir | --datadi | --datad) 779 | ac_prev=datadir ;; 780 | -datadir=* | --datadir=* | --datadi=* | --datad=*) 781 | datadir=$ac_optarg ;; 782 | 783 | -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ 784 | | --dataroo | --dataro | --datar) 785 | ac_prev=datarootdir ;; 786 | -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ 787 | | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) 788 | datarootdir=$ac_optarg ;; 789 | 790 | -disable-* | --disable-*) 791 | ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` 792 | # Reject names that are not valid shell variable names. 793 | expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && 794 | as_fn_error $? "invalid feature name: $ac_useropt" 795 | ac_useropt_orig=$ac_useropt 796 | ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` 797 | case $ac_user_opts in 798 | *" 799 | "enable_$ac_useropt" 800 | "*) ;; 801 | *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" 802 | ac_unrecognized_sep=', ';; 803 | esac 804 | eval enable_$ac_useropt=no ;; 805 | 806 | -docdir | --docdir | --docdi | --doc | --do) 807 | ac_prev=docdir ;; 808 | -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) 809 | docdir=$ac_optarg ;; 810 | 811 | -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) 812 | ac_prev=dvidir ;; 813 | -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) 814 | dvidir=$ac_optarg ;; 815 | 816 | -enable-* | --enable-*) 817 | ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` 818 | # Reject names that are not valid shell variable names. 819 | expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && 820 | as_fn_error $? "invalid feature name: $ac_useropt" 821 | ac_useropt_orig=$ac_useropt 822 | ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` 823 | case $ac_user_opts in 824 | *" 825 | "enable_$ac_useropt" 826 | "*) ;; 827 | *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" 828 | ac_unrecognized_sep=', ';; 829 | esac 830 | eval enable_$ac_useropt=\$ac_optarg ;; 831 | 832 | -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ 833 | | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ 834 | | --exec | --exe | --ex) 835 | ac_prev=exec_prefix ;; 836 | -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ 837 | | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ 838 | | --exec=* | --exe=* | --ex=*) 839 | exec_prefix=$ac_optarg ;; 840 | 841 | -gas | --gas | --ga | --g) 842 | # Obsolete; use --with-gas. 843 | with_gas=yes ;; 844 | 845 | -help | --help | --hel | --he | -h) 846 | ac_init_help=long ;; 847 | -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) 848 | ac_init_help=recursive ;; 849 | -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) 850 | ac_init_help=short ;; 851 | 852 | -host | --host | --hos | --ho) 853 | ac_prev=host_alias ;; 854 | -host=* | --host=* | --hos=* | --ho=*) 855 | host_alias=$ac_optarg ;; 856 | 857 | -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) 858 | ac_prev=htmldir ;; 859 | -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ 860 | | --ht=*) 861 | htmldir=$ac_optarg ;; 862 | 863 | -includedir | --includedir | --includedi | --included | --include \ 864 | | --includ | --inclu | --incl | --inc) 865 | ac_prev=includedir ;; 866 | -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ 867 | | --includ=* | --inclu=* | --incl=* | --inc=*) 868 | includedir=$ac_optarg ;; 869 | 870 | -infodir | --infodir | --infodi | --infod | --info | --inf) 871 | ac_prev=infodir ;; 872 | -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) 873 | infodir=$ac_optarg ;; 874 | 875 | -libdir | --libdir | --libdi | --libd) 876 | ac_prev=libdir ;; 877 | -libdir=* | --libdir=* | --libdi=* | --libd=*) 878 | libdir=$ac_optarg ;; 879 | 880 | -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ 881 | | --libexe | --libex | --libe) 882 | ac_prev=libexecdir ;; 883 | -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ 884 | | --libexe=* | --libex=* | --libe=*) 885 | libexecdir=$ac_optarg ;; 886 | 887 | -localedir | --localedir | --localedi | --localed | --locale) 888 | ac_prev=localedir ;; 889 | -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) 890 | localedir=$ac_optarg ;; 891 | 892 | -localstatedir | --localstatedir | --localstatedi | --localstated \ 893 | | --localstate | --localstat | --localsta | --localst | --locals) 894 | ac_prev=localstatedir ;; 895 | -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ 896 | | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) 897 | localstatedir=$ac_optarg ;; 898 | 899 | -mandir | --mandir | --mandi | --mand | --man | --ma | --m) 900 | ac_prev=mandir ;; 901 | -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) 902 | mandir=$ac_optarg ;; 903 | 904 | -nfp | --nfp | --nf) 905 | # Obsolete; use --without-fp. 906 | with_fp=no ;; 907 | 908 | -no-create | --no-create | --no-creat | --no-crea | --no-cre \ 909 | | --no-cr | --no-c | -n) 910 | no_create=yes ;; 911 | 912 | -no-recursion | --no-recursion | --no-recursio | --no-recursi \ 913 | | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) 914 | no_recursion=yes ;; 915 | 916 | -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ 917 | | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ 918 | | --oldin | --oldi | --old | --ol | --o) 919 | ac_prev=oldincludedir ;; 920 | -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ 921 | | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ 922 | | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) 923 | oldincludedir=$ac_optarg ;; 924 | 925 | -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) 926 | ac_prev=prefix ;; 927 | -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) 928 | prefix=$ac_optarg ;; 929 | 930 | -program-prefix | --program-prefix | --program-prefi | --program-pref \ 931 | | --program-pre | --program-pr | --program-p) 932 | ac_prev=program_prefix ;; 933 | -program-prefix=* | --program-prefix=* | --program-prefi=* \ 934 | | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) 935 | program_prefix=$ac_optarg ;; 936 | 937 | -program-suffix | --program-suffix | --program-suffi | --program-suff \ 938 | | --program-suf | --program-su | --program-s) 939 | ac_prev=program_suffix ;; 940 | -program-suffix=* | --program-suffix=* | --program-suffi=* \ 941 | | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) 942 | program_suffix=$ac_optarg ;; 943 | 944 | -program-transform-name | --program-transform-name \ 945 | | --program-transform-nam | --program-transform-na \ 946 | | --program-transform-n | --program-transform- \ 947 | | --program-transform | --program-transfor \ 948 | | --program-transfo | --program-transf \ 949 | | --program-trans | --program-tran \ 950 | | --progr-tra | --program-tr | --program-t) 951 | ac_prev=program_transform_name ;; 952 | -program-transform-name=* | --program-transform-name=* \ 953 | | --program-transform-nam=* | --program-transform-na=* \ 954 | | --program-transform-n=* | --program-transform-=* \ 955 | | --program-transform=* | --program-transfor=* \ 956 | | --program-transfo=* | --program-transf=* \ 957 | | --program-trans=* | --program-tran=* \ 958 | | --progr-tra=* | --program-tr=* | --program-t=*) 959 | program_transform_name=$ac_optarg ;; 960 | 961 | -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) 962 | ac_prev=pdfdir ;; 963 | -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) 964 | pdfdir=$ac_optarg ;; 965 | 966 | -psdir | --psdir | --psdi | --psd | --ps) 967 | ac_prev=psdir ;; 968 | -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) 969 | psdir=$ac_optarg ;; 970 | 971 | -q | -quiet | --quiet | --quie | --qui | --qu | --q \ 972 | | -silent | --silent | --silen | --sile | --sil) 973 | silent=yes ;; 974 | 975 | -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) 976 | ac_prev=sbindir ;; 977 | -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ 978 | | --sbi=* | --sb=*) 979 | sbindir=$ac_optarg ;; 980 | 981 | -sharedstatedir | --sharedstatedir | --sharedstatedi \ 982 | | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ 983 | | --sharedst | --shareds | --shared | --share | --shar \ 984 | | --sha | --sh) 985 | ac_prev=sharedstatedir ;; 986 | -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ 987 | | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ 988 | | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ 989 | | --sha=* | --sh=*) 990 | sharedstatedir=$ac_optarg ;; 991 | 992 | -site | --site | --sit) 993 | ac_prev=site ;; 994 | -site=* | --site=* | --sit=*) 995 | site=$ac_optarg ;; 996 | 997 | -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) 998 | ac_prev=srcdir ;; 999 | -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) 1000 | srcdir=$ac_optarg ;; 1001 | 1002 | -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ 1003 | | --syscon | --sysco | --sysc | --sys | --sy) 1004 | ac_prev=sysconfdir ;; 1005 | -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ 1006 | | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) 1007 | sysconfdir=$ac_optarg ;; 1008 | 1009 | -target | --target | --targe | --targ | --tar | --ta | --t) 1010 | ac_prev=target_alias ;; 1011 | -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) 1012 | target_alias=$ac_optarg ;; 1013 | 1014 | -v | -verbose | --verbose | --verbos | --verbo | --verb) 1015 | verbose=yes ;; 1016 | 1017 | -version | --version | --versio | --versi | --vers | -V) 1018 | ac_init_version=: ;; 1019 | 1020 | -with-* | --with-*) 1021 | ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` 1022 | # Reject names that are not valid shell variable names. 1023 | expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && 1024 | as_fn_error $? "invalid package name: $ac_useropt" 1025 | ac_useropt_orig=$ac_useropt 1026 | ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` 1027 | case $ac_user_opts in 1028 | *" 1029 | "with_$ac_useropt" 1030 | "*) ;; 1031 | *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" 1032 | ac_unrecognized_sep=', ';; 1033 | esac 1034 | eval with_$ac_useropt=\$ac_optarg ;; 1035 | 1036 | -without-* | --without-*) 1037 | ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` 1038 | # Reject names that are not valid shell variable names. 1039 | expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && 1040 | as_fn_error $? "invalid package name: $ac_useropt" 1041 | ac_useropt_orig=$ac_useropt 1042 | ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` 1043 | case $ac_user_opts in 1044 | *" 1045 | "with_$ac_useropt" 1046 | "*) ;; 1047 | *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" 1048 | ac_unrecognized_sep=', ';; 1049 | esac 1050 | eval with_$ac_useropt=no ;; 1051 | 1052 | --x) 1053 | # Obsolete; use --with-x. 1054 | with_x=yes ;; 1055 | 1056 | -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ 1057 | | --x-incl | --x-inc | --x-in | --x-i) 1058 | ac_prev=x_includes ;; 1059 | -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ 1060 | | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) 1061 | x_includes=$ac_optarg ;; 1062 | 1063 | -x-libraries | --x-libraries | --x-librarie | --x-librari \ 1064 | | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) 1065 | ac_prev=x_libraries ;; 1066 | -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ 1067 | | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) 1068 | x_libraries=$ac_optarg ;; 1069 | 1070 | -*) as_fn_error $? "unrecognized option: \`$ac_option' 1071 | Try \`$0 --help' for more information" 1072 | ;; 1073 | 1074 | *=*) 1075 | ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` 1076 | # Reject names that are not valid shell variable names. 1077 | case $ac_envvar in #( 1078 | '' | [0-9]* | *[!_$as_cr_alnum]* ) 1079 | as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; 1080 | esac 1081 | eval $ac_envvar=\$ac_optarg 1082 | export $ac_envvar ;; 1083 | 1084 | *) 1085 | # FIXME: should be removed in autoconf 3.0. 1086 | $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 1087 | expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && 1088 | $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 1089 | : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" 1090 | ;; 1091 | 1092 | esac 1093 | done 1094 | 1095 | if test -n "$ac_prev"; then 1096 | ac_option=--`echo $ac_prev | sed 's/_/-/g'` 1097 | as_fn_error $? "missing argument to $ac_option" 1098 | fi 1099 | 1100 | if test -n "$ac_unrecognized_opts"; then 1101 | case $enable_option_checking in 1102 | no) ;; 1103 | fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; 1104 | *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; 1105 | esac 1106 | fi 1107 | 1108 | # Check all directory arguments for consistency. 1109 | for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ 1110 | datadir sysconfdir sharedstatedir localstatedir includedir \ 1111 | oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ 1112 | libdir localedir mandir 1113 | do 1114 | eval ac_val=\$$ac_var 1115 | # Remove trailing slashes. 1116 | case $ac_val in 1117 | */ ) 1118 | ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` 1119 | eval $ac_var=\$ac_val;; 1120 | esac 1121 | # Be sure to have absolute directory names. 1122 | case $ac_val in 1123 | [\\/$]* | ?:[\\/]* ) continue;; 1124 | NONE | '' ) case $ac_var in *prefix ) continue;; esac;; 1125 | esac 1126 | as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" 1127 | done 1128 | 1129 | # There might be people who depend on the old broken behavior: `$host' 1130 | # used to hold the argument of --host etc. 1131 | # FIXME: To remove some day. 1132 | build=$build_alias 1133 | host=$host_alias 1134 | target=$target_alias 1135 | 1136 | # FIXME: To remove some day. 1137 | if test "x$host_alias" != x; then 1138 | if test "x$build_alias" = x; then 1139 | cross_compiling=maybe 1140 | elif test "x$build_alias" != "x$host_alias"; then 1141 | cross_compiling=yes 1142 | fi 1143 | fi 1144 | 1145 | ac_tool_prefix= 1146 | test -n "$host_alias" && ac_tool_prefix=$host_alias- 1147 | 1148 | test "$silent" = yes && exec 6>/dev/null 1149 | 1150 | 1151 | ac_pwd=`pwd` && test -n "$ac_pwd" && 1152 | ac_ls_di=`ls -di .` && 1153 | ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || 1154 | as_fn_error $? "working directory cannot be determined" 1155 | test "X$ac_ls_di" = "X$ac_pwd_ls_di" || 1156 | as_fn_error $? "pwd does not report name of working directory" 1157 | 1158 | 1159 | # Find the source files, if location was not specified. 1160 | if test -z "$srcdir"; then 1161 | ac_srcdir_defaulted=yes 1162 | # Try the directory containing this script, then the parent directory. 1163 | ac_confdir=`$as_dirname -- "$as_myself" || 1164 | $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 1165 | X"$as_myself" : 'X\(//\)[^/]' \| \ 1166 | X"$as_myself" : 'X\(//\)$' \| \ 1167 | X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || 1168 | $as_echo X"$as_myself" | 1169 | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 1170 | s//\1/ 1171 | q 1172 | } 1173 | /^X\(\/\/\)[^/].*/{ 1174 | s//\1/ 1175 | q 1176 | } 1177 | /^X\(\/\/\)$/{ 1178 | s//\1/ 1179 | q 1180 | } 1181 | /^X\(\/\).*/{ 1182 | s//\1/ 1183 | q 1184 | } 1185 | s/.*/./; q'` 1186 | srcdir=$ac_confdir 1187 | if test ! -r "$srcdir/$ac_unique_file"; then 1188 | srcdir=.. 1189 | fi 1190 | else 1191 | ac_srcdir_defaulted=no 1192 | fi 1193 | if test ! -r "$srcdir/$ac_unique_file"; then 1194 | test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." 1195 | as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" 1196 | fi 1197 | ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" 1198 | ac_abs_confdir=`( 1199 | cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" 1200 | pwd)` 1201 | # When building in place, set srcdir=. 1202 | if test "$ac_abs_confdir" = "$ac_pwd"; then 1203 | srcdir=. 1204 | fi 1205 | # Remove unnecessary trailing slashes from srcdir. 1206 | # Double slashes in file names in object file debugging info 1207 | # mess up M-x gdb in Emacs. 1208 | case $srcdir in 1209 | */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; 1210 | esac 1211 | for ac_var in $ac_precious_vars; do 1212 | eval ac_env_${ac_var}_set=\${${ac_var}+set} 1213 | eval ac_env_${ac_var}_value=\$${ac_var} 1214 | eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} 1215 | eval ac_cv_env_${ac_var}_value=\$${ac_var} 1216 | done 1217 | 1218 | # 1219 | # Report the --help message. 1220 | # 1221 | if test "$ac_init_help" = "long"; then 1222 | # Omit some internal or obsolete options to make the list less imposing. 1223 | # This message is too long to be a string in the A/UX 3.1 sh. 1224 | cat <<_ACEOF 1225 | \`configure' configures this package to adapt to many kinds of systems. 1226 | 1227 | Usage: $0 [OPTION]... [VAR=VALUE]... 1228 | 1229 | To assign environment variables (e.g., CC, CFLAGS...), specify them as 1230 | VAR=VALUE. See below for descriptions of some of the useful variables. 1231 | 1232 | Defaults for the options are specified in brackets. 1233 | 1234 | Configuration: 1235 | -h, --help display this help and exit 1236 | --help=short display options specific to this package 1237 | --help=recursive display the short help of all the included packages 1238 | -V, --version display version information and exit 1239 | -q, --quiet, --silent do not print \`checking ...' messages 1240 | --cache-file=FILE cache test results in FILE [disabled] 1241 | -C, --config-cache alias for \`--cache-file=config.cache' 1242 | -n, --no-create do not create output files 1243 | --srcdir=DIR find the sources in DIR [configure dir or \`..'] 1244 | 1245 | Installation directories: 1246 | --prefix=PREFIX install architecture-independent files in PREFIX 1247 | [$ac_default_prefix] 1248 | --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX 1249 | [PREFIX] 1250 | 1251 | By default, \`make install' will install all the files in 1252 | \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify 1253 | an installation prefix other than \`$ac_default_prefix' using \`--prefix', 1254 | for instance \`--prefix=\$HOME'. 1255 | 1256 | For better control, use the options below. 1257 | 1258 | Fine tuning of the installation directories: 1259 | --bindir=DIR user executables [EPREFIX/bin] 1260 | --sbindir=DIR system admin executables [EPREFIX/sbin] 1261 | --libexecdir=DIR program executables [EPREFIX/libexec] 1262 | --sysconfdir=DIR read-only single-machine data [PREFIX/etc] 1263 | --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 1264 | --localstatedir=DIR modifiable single-machine data [PREFIX/var] 1265 | --libdir=DIR object code libraries [EPREFIX/lib] 1266 | --includedir=DIR C header files [PREFIX/include] 1267 | --oldincludedir=DIR C header files for non-gcc [/usr/include] 1268 | --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] 1269 | --datadir=DIR read-only architecture-independent data [DATAROOTDIR] 1270 | --infodir=DIR info documentation [DATAROOTDIR/info] 1271 | --localedir=DIR locale-dependent data [DATAROOTDIR/locale] 1272 | --mandir=DIR man documentation [DATAROOTDIR/man] 1273 | --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] 1274 | --htmldir=DIR html documentation [DOCDIR] 1275 | --dvidir=DIR dvi documentation [DOCDIR] 1276 | --pdfdir=DIR pdf documentation [DOCDIR] 1277 | --psdir=DIR ps documentation [DOCDIR] 1278 | _ACEOF 1279 | 1280 | cat <<\_ACEOF 1281 | _ACEOF 1282 | fi 1283 | 1284 | if test -n "$ac_init_help"; then 1285 | 1286 | cat <<\_ACEOF 1287 | 1288 | Some influential environment variables: 1289 | CC C compiler command 1290 | CFLAGS C compiler flags 1291 | LDFLAGS linker flags, e.g. -L if you have libraries in a 1292 | nonstandard directory 1293 | LIBS libraries to pass to the linker, e.g. -l 1294 | CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if 1295 | you have headers in a nonstandard directory 1296 | CPP C preprocessor 1297 | 1298 | Use these variables to override the choices made by `configure' or to help 1299 | it to find libraries and programs with nonstandard names/locations. 1300 | 1301 | Report bugs to the package provider. 1302 | _ACEOF 1303 | ac_status=$? 1304 | fi 1305 | 1306 | if test "$ac_init_help" = "recursive"; then 1307 | # If there are subdirs, report their specific --help. 1308 | for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue 1309 | test -d "$ac_dir" || 1310 | { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || 1311 | continue 1312 | ac_builddir=. 1313 | 1314 | case "$ac_dir" in 1315 | .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; 1316 | *) 1317 | ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` 1318 | # A ".." for each directory in $ac_dir_suffix. 1319 | ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` 1320 | case $ac_top_builddir_sub in 1321 | "") ac_top_builddir_sub=. ac_top_build_prefix= ;; 1322 | *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; 1323 | esac ;; 1324 | esac 1325 | ac_abs_top_builddir=$ac_pwd 1326 | ac_abs_builddir=$ac_pwd$ac_dir_suffix 1327 | # for backward compatibility: 1328 | ac_top_builddir=$ac_top_build_prefix 1329 | 1330 | case $srcdir in 1331 | .) # We are building in place. 1332 | ac_srcdir=. 1333 | ac_top_srcdir=$ac_top_builddir_sub 1334 | ac_abs_top_srcdir=$ac_pwd ;; 1335 | [\\/]* | ?:[\\/]* ) # Absolute name. 1336 | ac_srcdir=$srcdir$ac_dir_suffix; 1337 | ac_top_srcdir=$srcdir 1338 | ac_abs_top_srcdir=$srcdir ;; 1339 | *) # Relative name. 1340 | ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix 1341 | ac_top_srcdir=$ac_top_build_prefix$srcdir 1342 | ac_abs_top_srcdir=$ac_pwd/$srcdir ;; 1343 | esac 1344 | ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix 1345 | 1346 | cd "$ac_dir" || { ac_status=$?; continue; } 1347 | # Check for guested configure. 1348 | if test -f "$ac_srcdir/configure.gnu"; then 1349 | echo && 1350 | $SHELL "$ac_srcdir/configure.gnu" --help=recursive 1351 | elif test -f "$ac_srcdir/configure"; then 1352 | echo && 1353 | $SHELL "$ac_srcdir/configure" --help=recursive 1354 | else 1355 | $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 1356 | fi || ac_status=$? 1357 | cd "$ac_pwd" || { ac_status=$?; break; } 1358 | done 1359 | fi 1360 | 1361 | test -n "$ac_init_help" && exit $ac_status 1362 | if $ac_init_version; then 1363 | cat <<\_ACEOF 1364 | configure 1365 | generated by GNU Autoconf 2.69 1366 | 1367 | Copyright (C) 2012 Free Software Foundation, Inc. 1368 | This configure script is free software; the Free Software Foundation 1369 | gives unlimited permission to copy, distribute and modify it. 1370 | _ACEOF 1371 | exit 1372 | fi 1373 | 1374 | ## ------------------------ ## 1375 | ## Autoconf initialization. ## 1376 | ## ------------------------ ## 1377 | 1378 | # ac_fn_c_try_compile LINENO 1379 | # -------------------------- 1380 | # Try to compile conftest.$ac_ext, and return whether this succeeded. 1381 | ac_fn_c_try_compile () 1382 | { 1383 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1384 | rm -f conftest.$ac_objext 1385 | if { { ac_try="$ac_compile" 1386 | case "(($ac_try" in 1387 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 1388 | *) ac_try_echo=$ac_try;; 1389 | esac 1390 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 1391 | $as_echo "$ac_try_echo"; } >&5 1392 | (eval "$ac_compile") 2>conftest.err 1393 | ac_status=$? 1394 | if test -s conftest.err; then 1395 | grep -v '^ *+' conftest.err >conftest.er1 1396 | cat conftest.er1 >&5 1397 | mv -f conftest.er1 conftest.err 1398 | fi 1399 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 1400 | test $ac_status = 0; } && { 1401 | test -z "$ac_c_werror_flag" || 1402 | test ! -s conftest.err 1403 | } && test -s conftest.$ac_objext; then : 1404 | ac_retval=0 1405 | else 1406 | $as_echo "$as_me: failed program was:" >&5 1407 | sed 's/^/| /' conftest.$ac_ext >&5 1408 | 1409 | ac_retval=1 1410 | fi 1411 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1412 | as_fn_set_status $ac_retval 1413 | 1414 | } # ac_fn_c_try_compile 1415 | 1416 | # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES 1417 | # ---------------------------------------------------- 1418 | # Tries to find if the field MEMBER exists in type AGGR, after including 1419 | # INCLUDES, setting cache variable VAR accordingly. 1420 | ac_fn_c_check_member () 1421 | { 1422 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1423 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 1424 | $as_echo_n "checking for $2.$3... " >&6; } 1425 | if eval \${$4+:} false; then : 1426 | $as_echo_n "(cached) " >&6 1427 | else 1428 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 1429 | /* end confdefs.h. */ 1430 | $5 1431 | int 1432 | main () 1433 | { 1434 | static $2 ac_aggr; 1435 | if (ac_aggr.$3) 1436 | return 0; 1437 | ; 1438 | return 0; 1439 | } 1440 | _ACEOF 1441 | if ac_fn_c_try_compile "$LINENO"; then : 1442 | eval "$4=yes" 1443 | else 1444 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 1445 | /* end confdefs.h. */ 1446 | $5 1447 | int 1448 | main () 1449 | { 1450 | static $2 ac_aggr; 1451 | if (sizeof ac_aggr.$3) 1452 | return 0; 1453 | ; 1454 | return 0; 1455 | } 1456 | _ACEOF 1457 | if ac_fn_c_try_compile "$LINENO"; then : 1458 | eval "$4=yes" 1459 | else 1460 | eval "$4=no" 1461 | fi 1462 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 1463 | fi 1464 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 1465 | fi 1466 | eval ac_res=\$$4 1467 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 1468 | $as_echo "$ac_res" >&6; } 1469 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1470 | 1471 | } # ac_fn_c_check_member 1472 | 1473 | # ac_fn_c_try_cpp LINENO 1474 | # ---------------------- 1475 | # Try to preprocess conftest.$ac_ext, and return whether this succeeded. 1476 | ac_fn_c_try_cpp () 1477 | { 1478 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1479 | if { { ac_try="$ac_cpp conftest.$ac_ext" 1480 | case "(($ac_try" in 1481 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 1482 | *) ac_try_echo=$ac_try;; 1483 | esac 1484 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 1485 | $as_echo "$ac_try_echo"; } >&5 1486 | (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err 1487 | ac_status=$? 1488 | if test -s conftest.err; then 1489 | grep -v '^ *+' conftest.err >conftest.er1 1490 | cat conftest.er1 >&5 1491 | mv -f conftest.er1 conftest.err 1492 | fi 1493 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 1494 | test $ac_status = 0; } > conftest.i && { 1495 | test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || 1496 | test ! -s conftest.err 1497 | }; then : 1498 | ac_retval=0 1499 | else 1500 | $as_echo "$as_me: failed program was:" >&5 1501 | sed 's/^/| /' conftest.$ac_ext >&5 1502 | 1503 | ac_retval=1 1504 | fi 1505 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1506 | as_fn_set_status $ac_retval 1507 | 1508 | } # ac_fn_c_try_cpp 1509 | 1510 | # ac_fn_c_try_run LINENO 1511 | # ---------------------- 1512 | # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes 1513 | # that executables *can* be run. 1514 | ac_fn_c_try_run () 1515 | { 1516 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1517 | if { { ac_try="$ac_link" 1518 | case "(($ac_try" in 1519 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 1520 | *) ac_try_echo=$ac_try;; 1521 | esac 1522 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 1523 | $as_echo "$ac_try_echo"; } >&5 1524 | (eval "$ac_link") 2>&5 1525 | ac_status=$? 1526 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 1527 | test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' 1528 | { { case "(($ac_try" in 1529 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 1530 | *) ac_try_echo=$ac_try;; 1531 | esac 1532 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 1533 | $as_echo "$ac_try_echo"; } >&5 1534 | (eval "$ac_try") 2>&5 1535 | ac_status=$? 1536 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 1537 | test $ac_status = 0; }; }; then : 1538 | ac_retval=0 1539 | else 1540 | $as_echo "$as_me: program exited with status $ac_status" >&5 1541 | $as_echo "$as_me: failed program was:" >&5 1542 | sed 's/^/| /' conftest.$ac_ext >&5 1543 | 1544 | ac_retval=$ac_status 1545 | fi 1546 | rm -rf conftest.dSYM conftest_ipa8_conftest.oo 1547 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1548 | as_fn_set_status $ac_retval 1549 | 1550 | } # ac_fn_c_try_run 1551 | 1552 | # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES 1553 | # ------------------------------------------------------- 1554 | # Tests whether HEADER exists and can be compiled using the include files in 1555 | # INCLUDES, setting the cache variable VAR accordingly. 1556 | ac_fn_c_check_header_compile () 1557 | { 1558 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1559 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 1560 | $as_echo_n "checking for $2... " >&6; } 1561 | if eval \${$3+:} false; then : 1562 | $as_echo_n "(cached) " >&6 1563 | else 1564 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 1565 | /* end confdefs.h. */ 1566 | $4 1567 | #include <$2> 1568 | _ACEOF 1569 | if ac_fn_c_try_compile "$LINENO"; then : 1570 | eval "$3=yes" 1571 | else 1572 | eval "$3=no" 1573 | fi 1574 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 1575 | fi 1576 | eval ac_res=\$$3 1577 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 1578 | $as_echo "$ac_res" >&6; } 1579 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1580 | 1581 | } # ac_fn_c_check_header_compile 1582 | 1583 | # ac_fn_c_try_link LINENO 1584 | # ----------------------- 1585 | # Try to link conftest.$ac_ext, and return whether this succeeded. 1586 | ac_fn_c_try_link () 1587 | { 1588 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1589 | rm -f conftest.$ac_objext conftest$ac_exeext 1590 | if { { ac_try="$ac_link" 1591 | case "(($ac_try" in 1592 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 1593 | *) ac_try_echo=$ac_try;; 1594 | esac 1595 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 1596 | $as_echo "$ac_try_echo"; } >&5 1597 | (eval "$ac_link") 2>conftest.err 1598 | ac_status=$? 1599 | if test -s conftest.err; then 1600 | grep -v '^ *+' conftest.err >conftest.er1 1601 | cat conftest.er1 >&5 1602 | mv -f conftest.er1 conftest.err 1603 | fi 1604 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 1605 | test $ac_status = 0; } && { 1606 | test -z "$ac_c_werror_flag" || 1607 | test ! -s conftest.err 1608 | } && test -s conftest$ac_exeext && { 1609 | test "$cross_compiling" = yes || 1610 | test -x conftest$ac_exeext 1611 | }; then : 1612 | ac_retval=0 1613 | else 1614 | $as_echo "$as_me: failed program was:" >&5 1615 | sed 's/^/| /' conftest.$ac_ext >&5 1616 | 1617 | ac_retval=1 1618 | fi 1619 | # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information 1620 | # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would 1621 | # interfere with the next link command; also delete a directory that is 1622 | # left behind by Apple's compiler. We do this before executing the actions. 1623 | rm -rf conftest.dSYM conftest_ipa8_conftest.oo 1624 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1625 | as_fn_set_status $ac_retval 1626 | 1627 | } # ac_fn_c_try_link 1628 | 1629 | # ac_fn_c_check_func LINENO FUNC VAR 1630 | # ---------------------------------- 1631 | # Tests whether FUNC exists, setting the cache variable VAR accordingly 1632 | ac_fn_c_check_func () 1633 | { 1634 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1635 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 1636 | $as_echo_n "checking for $2... " >&6; } 1637 | if eval \${$3+:} false; then : 1638 | $as_echo_n "(cached) " >&6 1639 | else 1640 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 1641 | /* end confdefs.h. */ 1642 | /* Define $2 to an innocuous variant, in case declares $2. 1643 | For example, HP-UX 11i declares gettimeofday. */ 1644 | #define $2 innocuous_$2 1645 | 1646 | /* System header to define __stub macros and hopefully few prototypes, 1647 | which can conflict with char $2 (); below. 1648 | Prefer to if __STDC__ is defined, since 1649 | exists even on freestanding compilers. */ 1650 | 1651 | #ifdef __STDC__ 1652 | # include 1653 | #else 1654 | # include 1655 | #endif 1656 | 1657 | #undef $2 1658 | 1659 | /* Override any GCC internal prototype to avoid an error. 1660 | Use char because int might match the return type of a GCC 1661 | builtin and then its argument prototype would still apply. */ 1662 | #ifdef __cplusplus 1663 | extern "C" 1664 | #endif 1665 | char $2 (); 1666 | /* The GNU C library defines this for functions which it implements 1667 | to always fail with ENOSYS. Some functions are actually named 1668 | something starting with __ and the normal name is an alias. */ 1669 | #if defined __stub_$2 || defined __stub___$2 1670 | choke me 1671 | #endif 1672 | 1673 | int 1674 | main () 1675 | { 1676 | return $2 (); 1677 | ; 1678 | return 0; 1679 | } 1680 | _ACEOF 1681 | if ac_fn_c_try_link "$LINENO"; then : 1682 | eval "$3=yes" 1683 | else 1684 | eval "$3=no" 1685 | fi 1686 | rm -f core conftest.err conftest.$ac_objext \ 1687 | conftest$ac_exeext conftest.$ac_ext 1688 | fi 1689 | eval ac_res=\$$3 1690 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 1691 | $as_echo "$ac_res" >&6; } 1692 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1693 | 1694 | } # ac_fn_c_check_func 1695 | 1696 | # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES 1697 | # ------------------------------------------------------- 1698 | # Tests whether HEADER exists, giving a warning if it cannot be compiled using 1699 | # the include files in INCLUDES and setting the cache variable VAR 1700 | # accordingly. 1701 | ac_fn_c_check_header_mongrel () 1702 | { 1703 | as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 1704 | if eval \${$3+:} false; then : 1705 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 1706 | $as_echo_n "checking for $2... " >&6; } 1707 | if eval \${$3+:} false; then : 1708 | $as_echo_n "(cached) " >&6 1709 | fi 1710 | eval ac_res=\$$3 1711 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 1712 | $as_echo "$ac_res" >&6; } 1713 | else 1714 | # Is the header compilable? 1715 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 1716 | $as_echo_n "checking $2 usability... " >&6; } 1717 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 1718 | /* end confdefs.h. */ 1719 | $4 1720 | #include <$2> 1721 | _ACEOF 1722 | if ac_fn_c_try_compile "$LINENO"; then : 1723 | ac_header_compiler=yes 1724 | else 1725 | ac_header_compiler=no 1726 | fi 1727 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 1728 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 1729 | $as_echo "$ac_header_compiler" >&6; } 1730 | 1731 | # Is the header present? 1732 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 1733 | $as_echo_n "checking $2 presence... " >&6; } 1734 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 1735 | /* end confdefs.h. */ 1736 | #include <$2> 1737 | _ACEOF 1738 | if ac_fn_c_try_cpp "$LINENO"; then : 1739 | ac_header_preproc=yes 1740 | else 1741 | ac_header_preproc=no 1742 | fi 1743 | rm -f conftest.err conftest.i conftest.$ac_ext 1744 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 1745 | $as_echo "$ac_header_preproc" >&6; } 1746 | 1747 | # So? What about this header? 1748 | case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( 1749 | yes:no: ) 1750 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 1751 | $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} 1752 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 1753 | $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} 1754 | ;; 1755 | no:yes:* ) 1756 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 1757 | $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} 1758 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 1759 | $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} 1760 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 1761 | $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} 1762 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 1763 | $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} 1764 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 1765 | $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} 1766 | ;; 1767 | esac 1768 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 1769 | $as_echo_n "checking for $2... " >&6; } 1770 | if eval \${$3+:} false; then : 1771 | $as_echo_n "(cached) " >&6 1772 | else 1773 | eval "$3=\$ac_header_compiler" 1774 | fi 1775 | eval ac_res=\$$3 1776 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 1777 | $as_echo "$ac_res" >&6; } 1778 | fi 1779 | eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno 1780 | 1781 | } # ac_fn_c_check_header_mongrel 1782 | cat >config.log <<_ACEOF 1783 | This file contains any messages produced by compilers while 1784 | running configure, to aid debugging if configure makes a mistake. 1785 | 1786 | It was created by $as_me, which was 1787 | generated by GNU Autoconf 2.69. Invocation command line was 1788 | 1789 | $ $0 $@ 1790 | 1791 | _ACEOF 1792 | exec 5>>config.log 1793 | { 1794 | cat <<_ASUNAME 1795 | ## --------- ## 1796 | ## Platform. ## 1797 | ## --------- ## 1798 | 1799 | hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` 1800 | uname -m = `(uname -m) 2>/dev/null || echo unknown` 1801 | uname -r = `(uname -r) 2>/dev/null || echo unknown` 1802 | uname -s = `(uname -s) 2>/dev/null || echo unknown` 1803 | uname -v = `(uname -v) 2>/dev/null || echo unknown` 1804 | 1805 | /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` 1806 | /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` 1807 | 1808 | /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` 1809 | /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` 1810 | /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` 1811 | /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` 1812 | /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` 1813 | /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` 1814 | /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` 1815 | 1816 | _ASUNAME 1817 | 1818 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 1819 | for as_dir in $PATH 1820 | do 1821 | IFS=$as_save_IFS 1822 | test -z "$as_dir" && as_dir=. 1823 | $as_echo "PATH: $as_dir" 1824 | done 1825 | IFS=$as_save_IFS 1826 | 1827 | } >&5 1828 | 1829 | cat >&5 <<_ACEOF 1830 | 1831 | 1832 | ## ----------- ## 1833 | ## Core tests. ## 1834 | ## ----------- ## 1835 | 1836 | _ACEOF 1837 | 1838 | 1839 | # Keep a trace of the command line. 1840 | # Strip out --no-create and --no-recursion so they do not pile up. 1841 | # Strip out --silent because we don't want to record it for future runs. 1842 | # Also quote any args containing shell meta-characters. 1843 | # Make two passes to allow for proper duplicate-argument suppression. 1844 | ac_configure_args= 1845 | ac_configure_args0= 1846 | ac_configure_args1= 1847 | ac_must_keep_next=false 1848 | for ac_pass in 1 2 1849 | do 1850 | for ac_arg 1851 | do 1852 | case $ac_arg in 1853 | -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; 1854 | -q | -quiet | --quiet | --quie | --qui | --qu | --q \ 1855 | | -silent | --silent | --silen | --sile | --sil) 1856 | continue ;; 1857 | *\'*) 1858 | ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; 1859 | esac 1860 | case $ac_pass in 1861 | 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 1862 | 2) 1863 | as_fn_append ac_configure_args1 " '$ac_arg'" 1864 | if test $ac_must_keep_next = true; then 1865 | ac_must_keep_next=false # Got value, back to normal. 1866 | else 1867 | case $ac_arg in 1868 | *=* | --config-cache | -C | -disable-* | --disable-* \ 1869 | | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ 1870 | | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ 1871 | | -with-* | --with-* | -without-* | --without-* | --x) 1872 | case "$ac_configure_args0 " in 1873 | "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; 1874 | esac 1875 | ;; 1876 | -* ) ac_must_keep_next=true ;; 1877 | esac 1878 | fi 1879 | as_fn_append ac_configure_args " '$ac_arg'" 1880 | ;; 1881 | esac 1882 | done 1883 | done 1884 | { ac_configure_args0=; unset ac_configure_args0;} 1885 | { ac_configure_args1=; unset ac_configure_args1;} 1886 | 1887 | # When interrupted or exit'd, cleanup temporary files, and complete 1888 | # config.log. We remove comments because anyway the quotes in there 1889 | # would cause problems or look ugly. 1890 | # WARNING: Use '\'' to represent an apostrophe within the trap. 1891 | # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. 1892 | trap 'exit_status=$? 1893 | # Save into config.log some information that might help in debugging. 1894 | { 1895 | echo 1896 | 1897 | $as_echo "## ---------------- ## 1898 | ## Cache variables. ## 1899 | ## ---------------- ##" 1900 | echo 1901 | # The following way of writing the cache mishandles newlines in values, 1902 | ( 1903 | for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do 1904 | eval ac_val=\$$ac_var 1905 | case $ac_val in #( 1906 | *${as_nl}*) 1907 | case $ac_var in #( 1908 | *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 1909 | $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; 1910 | esac 1911 | case $ac_var in #( 1912 | _ | IFS | as_nl) ;; #( 1913 | BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( 1914 | *) { eval $ac_var=; unset $ac_var;} ;; 1915 | esac ;; 1916 | esac 1917 | done 1918 | (set) 2>&1 | 1919 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( 1920 | *${as_nl}ac_space=\ *) 1921 | sed -n \ 1922 | "s/'\''/'\''\\\\'\'''\''/g; 1923 | s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" 1924 | ;; #( 1925 | *) 1926 | sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" 1927 | ;; 1928 | esac | 1929 | sort 1930 | ) 1931 | echo 1932 | 1933 | $as_echo "## ----------------- ## 1934 | ## Output variables. ## 1935 | ## ----------------- ##" 1936 | echo 1937 | for ac_var in $ac_subst_vars 1938 | do 1939 | eval ac_val=\$$ac_var 1940 | case $ac_val in 1941 | *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; 1942 | esac 1943 | $as_echo "$ac_var='\''$ac_val'\''" 1944 | done | sort 1945 | echo 1946 | 1947 | if test -n "$ac_subst_files"; then 1948 | $as_echo "## ------------------- ## 1949 | ## File substitutions. ## 1950 | ## ------------------- ##" 1951 | echo 1952 | for ac_var in $ac_subst_files 1953 | do 1954 | eval ac_val=\$$ac_var 1955 | case $ac_val in 1956 | *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; 1957 | esac 1958 | $as_echo "$ac_var='\''$ac_val'\''" 1959 | done | sort 1960 | echo 1961 | fi 1962 | 1963 | if test -s confdefs.h; then 1964 | $as_echo "## ----------- ## 1965 | ## confdefs.h. ## 1966 | ## ----------- ##" 1967 | echo 1968 | cat confdefs.h 1969 | echo 1970 | fi 1971 | test "$ac_signal" != 0 && 1972 | $as_echo "$as_me: caught signal $ac_signal" 1973 | $as_echo "$as_me: exit $exit_status" 1974 | } >&5 1975 | rm -f core *.core core.conftest.* && 1976 | rm -f -r conftest* confdefs* conf$$* $ac_clean_files && 1977 | exit $exit_status 1978 | ' 0 1979 | for ac_signal in 1 2 13 15; do 1980 | trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal 1981 | done 1982 | ac_signal=0 1983 | 1984 | # confdefs.h avoids OS command line length limits that DEFS can exceed. 1985 | rm -f -r conftest* confdefs.h 1986 | 1987 | $as_echo "/* confdefs.h */" > confdefs.h 1988 | 1989 | # Predefined preprocessor variables. 1990 | 1991 | cat >>confdefs.h <<_ACEOF 1992 | #define PACKAGE_NAME "$PACKAGE_NAME" 1993 | _ACEOF 1994 | 1995 | cat >>confdefs.h <<_ACEOF 1996 | #define PACKAGE_TARNAME "$PACKAGE_TARNAME" 1997 | _ACEOF 1998 | 1999 | cat >>confdefs.h <<_ACEOF 2000 | #define PACKAGE_VERSION "$PACKAGE_VERSION" 2001 | _ACEOF 2002 | 2003 | cat >>confdefs.h <<_ACEOF 2004 | #define PACKAGE_STRING "$PACKAGE_STRING" 2005 | _ACEOF 2006 | 2007 | cat >>confdefs.h <<_ACEOF 2008 | #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" 2009 | _ACEOF 2010 | 2011 | cat >>confdefs.h <<_ACEOF 2012 | #define PACKAGE_URL "$PACKAGE_URL" 2013 | _ACEOF 2014 | 2015 | 2016 | # Let the site file select an alternate cache file if it wants to. 2017 | # Prefer an explicitly selected file to automatically selected ones. 2018 | ac_site_file1=NONE 2019 | ac_site_file2=NONE 2020 | if test -n "$CONFIG_SITE"; then 2021 | # We do not want a PATH search for config.site. 2022 | case $CONFIG_SITE in #(( 2023 | -*) ac_site_file1=./$CONFIG_SITE;; 2024 | */*) ac_site_file1=$CONFIG_SITE;; 2025 | *) ac_site_file1=./$CONFIG_SITE;; 2026 | esac 2027 | elif test "x$prefix" != xNONE; then 2028 | ac_site_file1=$prefix/share/config.site 2029 | ac_site_file2=$prefix/etc/config.site 2030 | else 2031 | ac_site_file1=$ac_default_prefix/share/config.site 2032 | ac_site_file2=$ac_default_prefix/etc/config.site 2033 | fi 2034 | for ac_site_file in "$ac_site_file1" "$ac_site_file2" 2035 | do 2036 | test "x$ac_site_file" = xNONE && continue 2037 | if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then 2038 | { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 2039 | $as_echo "$as_me: loading site script $ac_site_file" >&6;} 2040 | sed 's/^/| /' "$ac_site_file" >&5 2041 | . "$ac_site_file" \ 2042 | || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2043 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2044 | as_fn_error $? "failed to load site script $ac_site_file 2045 | See \`config.log' for more details" "$LINENO" 5; } 2046 | fi 2047 | done 2048 | 2049 | if test -r "$cache_file"; then 2050 | # Some versions of bash will fail to source /dev/null (special files 2051 | # actually), so we avoid doing that. DJGPP emulates it as a regular file. 2052 | if test /dev/null != "$cache_file" && test -f "$cache_file"; then 2053 | { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 2054 | $as_echo "$as_me: loading cache $cache_file" >&6;} 2055 | case $cache_file in 2056 | [\\/]* | ?:[\\/]* ) . "$cache_file";; 2057 | *) . "./$cache_file";; 2058 | esac 2059 | fi 2060 | else 2061 | { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 2062 | $as_echo "$as_me: creating cache $cache_file" >&6;} 2063 | >$cache_file 2064 | fi 2065 | 2066 | # Check that the precious variables saved in the cache have kept the same 2067 | # value. 2068 | ac_cache_corrupted=false 2069 | for ac_var in $ac_precious_vars; do 2070 | eval ac_old_set=\$ac_cv_env_${ac_var}_set 2071 | eval ac_new_set=\$ac_env_${ac_var}_set 2072 | eval ac_old_val=\$ac_cv_env_${ac_var}_value 2073 | eval ac_new_val=\$ac_env_${ac_var}_value 2074 | case $ac_old_set,$ac_new_set in 2075 | set,) 2076 | { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 2077 | $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} 2078 | ac_cache_corrupted=: ;; 2079 | ,set) 2080 | { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 2081 | $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 2082 | ac_cache_corrupted=: ;; 2083 | ,);; 2084 | *) 2085 | if test "x$ac_old_val" != "x$ac_new_val"; then 2086 | # differences in whitespace do not lead to failure. 2087 | ac_old_val_w=`echo x $ac_old_val` 2088 | ac_new_val_w=`echo x $ac_new_val` 2089 | if test "$ac_old_val_w" != "$ac_new_val_w"; then 2090 | { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 2091 | $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} 2092 | ac_cache_corrupted=: 2093 | else 2094 | { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 2095 | $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} 2096 | eval $ac_var=\$ac_old_val 2097 | fi 2098 | { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 2099 | $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} 2100 | { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 2101 | $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} 2102 | fi;; 2103 | esac 2104 | # Pass precious variables to config.status. 2105 | if test "$ac_new_set" = set; then 2106 | case $ac_new_val in 2107 | *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; 2108 | *) ac_arg=$ac_var=$ac_new_val ;; 2109 | esac 2110 | case " $ac_configure_args " in 2111 | *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. 2112 | *) as_fn_append ac_configure_args " '$ac_arg'" ;; 2113 | esac 2114 | fi 2115 | done 2116 | if $ac_cache_corrupted; then 2117 | { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2118 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2119 | { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 2120 | $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} 2121 | as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 2122 | fi 2123 | ## -------------------- ## 2124 | ## Main body of script. ## 2125 | ## -------------------- ## 2126 | 2127 | ac_ext=c 2128 | ac_cpp='$CPP $CPPFLAGS' 2129 | ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 2130 | ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 2131 | ac_compiler_gnu=$ac_cv_c_compiler_gnu 2132 | 2133 | 2134 | 2135 | ac_ext=c 2136 | ac_cpp='$CPP $CPPFLAGS' 2137 | ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 2138 | ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 2139 | ac_compiler_gnu=$ac_cv_c_compiler_gnu 2140 | if test -n "$ac_tool_prefix"; then 2141 | # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. 2142 | set dummy ${ac_tool_prefix}gcc; ac_word=$2 2143 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 2144 | $as_echo_n "checking for $ac_word... " >&6; } 2145 | if ${ac_cv_prog_CC+:} false; then : 2146 | $as_echo_n "(cached) " >&6 2147 | else 2148 | if test -n "$CC"; then 2149 | ac_cv_prog_CC="$CC" # Let the user override the test. 2150 | else 2151 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 2152 | for as_dir in $PATH 2153 | do 2154 | IFS=$as_save_IFS 2155 | test -z "$as_dir" && as_dir=. 2156 | for ac_exec_ext in '' $ac_executable_extensions; do 2157 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2158 | ac_cv_prog_CC="${ac_tool_prefix}gcc" 2159 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 2160 | break 2 2161 | fi 2162 | done 2163 | done 2164 | IFS=$as_save_IFS 2165 | 2166 | fi 2167 | fi 2168 | CC=$ac_cv_prog_CC 2169 | if test -n "$CC"; then 2170 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 2171 | $as_echo "$CC" >&6; } 2172 | else 2173 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2174 | $as_echo "no" >&6; } 2175 | fi 2176 | 2177 | 2178 | fi 2179 | if test -z "$ac_cv_prog_CC"; then 2180 | ac_ct_CC=$CC 2181 | # Extract the first word of "gcc", so it can be a program name with args. 2182 | set dummy gcc; ac_word=$2 2183 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 2184 | $as_echo_n "checking for $ac_word... " >&6; } 2185 | if ${ac_cv_prog_ac_ct_CC+:} false; then : 2186 | $as_echo_n "(cached) " >&6 2187 | else 2188 | if test -n "$ac_ct_CC"; then 2189 | ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. 2190 | else 2191 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 2192 | for as_dir in $PATH 2193 | do 2194 | IFS=$as_save_IFS 2195 | test -z "$as_dir" && as_dir=. 2196 | for ac_exec_ext in '' $ac_executable_extensions; do 2197 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2198 | ac_cv_prog_ac_ct_CC="gcc" 2199 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 2200 | break 2 2201 | fi 2202 | done 2203 | done 2204 | IFS=$as_save_IFS 2205 | 2206 | fi 2207 | fi 2208 | ac_ct_CC=$ac_cv_prog_ac_ct_CC 2209 | if test -n "$ac_ct_CC"; then 2210 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 2211 | $as_echo "$ac_ct_CC" >&6; } 2212 | else 2213 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2214 | $as_echo "no" >&6; } 2215 | fi 2216 | 2217 | if test "x$ac_ct_CC" = x; then 2218 | CC="" 2219 | else 2220 | case $cross_compiling:$ac_tool_warned in 2221 | yes:) 2222 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 2223 | $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} 2224 | ac_tool_warned=yes ;; 2225 | esac 2226 | CC=$ac_ct_CC 2227 | fi 2228 | else 2229 | CC="$ac_cv_prog_CC" 2230 | fi 2231 | 2232 | if test -z "$CC"; then 2233 | if test -n "$ac_tool_prefix"; then 2234 | # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. 2235 | set dummy ${ac_tool_prefix}cc; ac_word=$2 2236 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 2237 | $as_echo_n "checking for $ac_word... " >&6; } 2238 | if ${ac_cv_prog_CC+:} false; then : 2239 | $as_echo_n "(cached) " >&6 2240 | else 2241 | if test -n "$CC"; then 2242 | ac_cv_prog_CC="$CC" # Let the user override the test. 2243 | else 2244 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 2245 | for as_dir in $PATH 2246 | do 2247 | IFS=$as_save_IFS 2248 | test -z "$as_dir" && as_dir=. 2249 | for ac_exec_ext in '' $ac_executable_extensions; do 2250 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2251 | ac_cv_prog_CC="${ac_tool_prefix}cc" 2252 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 2253 | break 2 2254 | fi 2255 | done 2256 | done 2257 | IFS=$as_save_IFS 2258 | 2259 | fi 2260 | fi 2261 | CC=$ac_cv_prog_CC 2262 | if test -n "$CC"; then 2263 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 2264 | $as_echo "$CC" >&6; } 2265 | else 2266 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2267 | $as_echo "no" >&6; } 2268 | fi 2269 | 2270 | 2271 | fi 2272 | fi 2273 | if test -z "$CC"; then 2274 | # Extract the first word of "cc", so it can be a program name with args. 2275 | set dummy cc; ac_word=$2 2276 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 2277 | $as_echo_n "checking for $ac_word... " >&6; } 2278 | if ${ac_cv_prog_CC+:} false; then : 2279 | $as_echo_n "(cached) " >&6 2280 | else 2281 | if test -n "$CC"; then 2282 | ac_cv_prog_CC="$CC" # Let the user override the test. 2283 | else 2284 | ac_prog_rejected=no 2285 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 2286 | for as_dir in $PATH 2287 | do 2288 | IFS=$as_save_IFS 2289 | test -z "$as_dir" && as_dir=. 2290 | for ac_exec_ext in '' $ac_executable_extensions; do 2291 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2292 | if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then 2293 | ac_prog_rejected=yes 2294 | continue 2295 | fi 2296 | ac_cv_prog_CC="cc" 2297 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 2298 | break 2 2299 | fi 2300 | done 2301 | done 2302 | IFS=$as_save_IFS 2303 | 2304 | if test $ac_prog_rejected = yes; then 2305 | # We found a bogon in the path, so make sure we never use it. 2306 | set dummy $ac_cv_prog_CC 2307 | shift 2308 | if test $# != 0; then 2309 | # We chose a different compiler from the bogus one. 2310 | # However, it has the same basename, so the bogon will be chosen 2311 | # first if we set CC to just the basename; use the full file name. 2312 | shift 2313 | ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" 2314 | fi 2315 | fi 2316 | fi 2317 | fi 2318 | CC=$ac_cv_prog_CC 2319 | if test -n "$CC"; then 2320 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 2321 | $as_echo "$CC" >&6; } 2322 | else 2323 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2324 | $as_echo "no" >&6; } 2325 | fi 2326 | 2327 | 2328 | fi 2329 | if test -z "$CC"; then 2330 | if test -n "$ac_tool_prefix"; then 2331 | for ac_prog in cl.exe 2332 | do 2333 | # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. 2334 | set dummy $ac_tool_prefix$ac_prog; ac_word=$2 2335 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 2336 | $as_echo_n "checking for $ac_word... " >&6; } 2337 | if ${ac_cv_prog_CC+:} false; then : 2338 | $as_echo_n "(cached) " >&6 2339 | else 2340 | if test -n "$CC"; then 2341 | ac_cv_prog_CC="$CC" # Let the user override the test. 2342 | else 2343 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 2344 | for as_dir in $PATH 2345 | do 2346 | IFS=$as_save_IFS 2347 | test -z "$as_dir" && as_dir=. 2348 | for ac_exec_ext in '' $ac_executable_extensions; do 2349 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2350 | ac_cv_prog_CC="$ac_tool_prefix$ac_prog" 2351 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 2352 | break 2 2353 | fi 2354 | done 2355 | done 2356 | IFS=$as_save_IFS 2357 | 2358 | fi 2359 | fi 2360 | CC=$ac_cv_prog_CC 2361 | if test -n "$CC"; then 2362 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 2363 | $as_echo "$CC" >&6; } 2364 | else 2365 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2366 | $as_echo "no" >&6; } 2367 | fi 2368 | 2369 | 2370 | test -n "$CC" && break 2371 | done 2372 | fi 2373 | if test -z "$CC"; then 2374 | ac_ct_CC=$CC 2375 | for ac_prog in cl.exe 2376 | do 2377 | # Extract the first word of "$ac_prog", so it can be a program name with args. 2378 | set dummy $ac_prog; ac_word=$2 2379 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 2380 | $as_echo_n "checking for $ac_word... " >&6; } 2381 | if ${ac_cv_prog_ac_ct_CC+:} false; then : 2382 | $as_echo_n "(cached) " >&6 2383 | else 2384 | if test -n "$ac_ct_CC"; then 2385 | ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. 2386 | else 2387 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 2388 | for as_dir in $PATH 2389 | do 2390 | IFS=$as_save_IFS 2391 | test -z "$as_dir" && as_dir=. 2392 | for ac_exec_ext in '' $ac_executable_extensions; do 2393 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then 2394 | ac_cv_prog_ac_ct_CC="$ac_prog" 2395 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 2396 | break 2 2397 | fi 2398 | done 2399 | done 2400 | IFS=$as_save_IFS 2401 | 2402 | fi 2403 | fi 2404 | ac_ct_CC=$ac_cv_prog_ac_ct_CC 2405 | if test -n "$ac_ct_CC"; then 2406 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 2407 | $as_echo "$ac_ct_CC" >&6; } 2408 | else 2409 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2410 | $as_echo "no" >&6; } 2411 | fi 2412 | 2413 | 2414 | test -n "$ac_ct_CC" && break 2415 | done 2416 | 2417 | if test "x$ac_ct_CC" = x; then 2418 | CC="" 2419 | else 2420 | case $cross_compiling:$ac_tool_warned in 2421 | yes:) 2422 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 2423 | $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} 2424 | ac_tool_warned=yes ;; 2425 | esac 2426 | CC=$ac_ct_CC 2427 | fi 2428 | fi 2429 | 2430 | fi 2431 | 2432 | 2433 | test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2434 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2435 | as_fn_error $? "no acceptable C compiler found in \$PATH 2436 | See \`config.log' for more details" "$LINENO" 5; } 2437 | 2438 | # Provide some information about the compiler. 2439 | $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 2440 | set X $ac_compile 2441 | ac_compiler=$2 2442 | for ac_option in --version -v -V -qversion; do 2443 | { { ac_try="$ac_compiler $ac_option >&5" 2444 | case "(($ac_try" in 2445 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2446 | *) ac_try_echo=$ac_try;; 2447 | esac 2448 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 2449 | $as_echo "$ac_try_echo"; } >&5 2450 | (eval "$ac_compiler $ac_option >&5") 2>conftest.err 2451 | ac_status=$? 2452 | if test -s conftest.err; then 2453 | sed '10a\ 2454 | ... rest of stderr output deleted ... 2455 | 10q' conftest.err >conftest.er1 2456 | cat conftest.er1 >&5 2457 | fi 2458 | rm -f conftest.er1 conftest.err 2459 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 2460 | test $ac_status = 0; } 2461 | done 2462 | 2463 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2464 | /* end confdefs.h. */ 2465 | 2466 | int 2467 | main () 2468 | { 2469 | 2470 | ; 2471 | return 0; 2472 | } 2473 | _ACEOF 2474 | ac_clean_files_save=$ac_clean_files 2475 | ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" 2476 | # Try to create an executable without -o first, disregard a.out. 2477 | # It will help us diagnose broken compilers, and finding out an intuition 2478 | # of exeext. 2479 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 2480 | $as_echo_n "checking whether the C compiler works... " >&6; } 2481 | ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` 2482 | 2483 | # The possible output files: 2484 | ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" 2485 | 2486 | ac_rmfiles= 2487 | for ac_file in $ac_files 2488 | do 2489 | case $ac_file in 2490 | *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; 2491 | * ) ac_rmfiles="$ac_rmfiles $ac_file";; 2492 | esac 2493 | done 2494 | rm -f $ac_rmfiles 2495 | 2496 | if { { ac_try="$ac_link_default" 2497 | case "(($ac_try" in 2498 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2499 | *) ac_try_echo=$ac_try;; 2500 | esac 2501 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 2502 | $as_echo "$ac_try_echo"; } >&5 2503 | (eval "$ac_link_default") 2>&5 2504 | ac_status=$? 2505 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 2506 | test $ac_status = 0; }; then : 2507 | # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. 2508 | # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' 2509 | # in a Makefile. We should not override ac_cv_exeext if it was cached, 2510 | # so that the user can short-circuit this test for compilers unknown to 2511 | # Autoconf. 2512 | for ac_file in $ac_files '' 2513 | do 2514 | test -f "$ac_file" || continue 2515 | case $ac_file in 2516 | *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) 2517 | ;; 2518 | [ab].out ) 2519 | # We found the default executable, but exeext='' is most 2520 | # certainly right. 2521 | break;; 2522 | *.* ) 2523 | if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; 2524 | then :; else 2525 | ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` 2526 | fi 2527 | # We set ac_cv_exeext here because the later test for it is not 2528 | # safe: cross compilers may not add the suffix if given an `-o' 2529 | # argument, so we may need to know it at that point already. 2530 | # Even if this section looks crufty: it has the advantage of 2531 | # actually working. 2532 | break;; 2533 | * ) 2534 | break;; 2535 | esac 2536 | done 2537 | test "$ac_cv_exeext" = no && ac_cv_exeext= 2538 | 2539 | else 2540 | ac_file='' 2541 | fi 2542 | if test -z "$ac_file"; then : 2543 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 2544 | $as_echo "no" >&6; } 2545 | $as_echo "$as_me: failed program was:" >&5 2546 | sed 's/^/| /' conftest.$ac_ext >&5 2547 | 2548 | { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2549 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2550 | as_fn_error 77 "C compiler cannot create executables 2551 | See \`config.log' for more details" "$LINENO" 5; } 2552 | else 2553 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 2554 | $as_echo "yes" >&6; } 2555 | fi 2556 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 2557 | $as_echo_n "checking for C compiler default output file name... " >&6; } 2558 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 2559 | $as_echo "$ac_file" >&6; } 2560 | ac_exeext=$ac_cv_exeext 2561 | 2562 | rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out 2563 | ac_clean_files=$ac_clean_files_save 2564 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 2565 | $as_echo_n "checking for suffix of executables... " >&6; } 2566 | if { { ac_try="$ac_link" 2567 | case "(($ac_try" in 2568 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2569 | *) ac_try_echo=$ac_try;; 2570 | esac 2571 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 2572 | $as_echo "$ac_try_echo"; } >&5 2573 | (eval "$ac_link") 2>&5 2574 | ac_status=$? 2575 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 2576 | test $ac_status = 0; }; then : 2577 | # If both `conftest.exe' and `conftest' are `present' (well, observable) 2578 | # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will 2579 | # work properly (i.e., refer to `conftest.exe'), while it won't with 2580 | # `rm'. 2581 | for ac_file in conftest.exe conftest conftest.*; do 2582 | test -f "$ac_file" || continue 2583 | case $ac_file in 2584 | *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; 2585 | *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` 2586 | break;; 2587 | * ) break;; 2588 | esac 2589 | done 2590 | else 2591 | { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2592 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2593 | as_fn_error $? "cannot compute suffix of executables: cannot compile and link 2594 | See \`config.log' for more details" "$LINENO" 5; } 2595 | fi 2596 | rm -f conftest conftest$ac_cv_exeext 2597 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 2598 | $as_echo "$ac_cv_exeext" >&6; } 2599 | 2600 | rm -f conftest.$ac_ext 2601 | EXEEXT=$ac_cv_exeext 2602 | ac_exeext=$EXEEXT 2603 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2604 | /* end confdefs.h. */ 2605 | #include 2606 | int 2607 | main () 2608 | { 2609 | FILE *f = fopen ("conftest.out", "w"); 2610 | return ferror (f) || fclose (f) != 0; 2611 | 2612 | ; 2613 | return 0; 2614 | } 2615 | _ACEOF 2616 | ac_clean_files="$ac_clean_files conftest.out" 2617 | # Check that the compiler produces executables we can run. If not, either 2618 | # the compiler is broken, or we cross compile. 2619 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 2620 | $as_echo_n "checking whether we are cross compiling... " >&6; } 2621 | if test "$cross_compiling" != yes; then 2622 | { { ac_try="$ac_link" 2623 | case "(($ac_try" in 2624 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2625 | *) ac_try_echo=$ac_try;; 2626 | esac 2627 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 2628 | $as_echo "$ac_try_echo"; } >&5 2629 | (eval "$ac_link") 2>&5 2630 | ac_status=$? 2631 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 2632 | test $ac_status = 0; } 2633 | if { ac_try='./conftest$ac_cv_exeext' 2634 | { { case "(($ac_try" in 2635 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2636 | *) ac_try_echo=$ac_try;; 2637 | esac 2638 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 2639 | $as_echo "$ac_try_echo"; } >&5 2640 | (eval "$ac_try") 2>&5 2641 | ac_status=$? 2642 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 2643 | test $ac_status = 0; }; }; then 2644 | cross_compiling=no 2645 | else 2646 | if test "$cross_compiling" = maybe; then 2647 | cross_compiling=yes 2648 | else 2649 | { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2650 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2651 | as_fn_error $? "cannot run C compiled programs. 2652 | If you meant to cross compile, use \`--host'. 2653 | See \`config.log' for more details" "$LINENO" 5; } 2654 | fi 2655 | fi 2656 | fi 2657 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 2658 | $as_echo "$cross_compiling" >&6; } 2659 | 2660 | rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out 2661 | ac_clean_files=$ac_clean_files_save 2662 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 2663 | $as_echo_n "checking for suffix of object files... " >&6; } 2664 | if ${ac_cv_objext+:} false; then : 2665 | $as_echo_n "(cached) " >&6 2666 | else 2667 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2668 | /* end confdefs.h. */ 2669 | 2670 | int 2671 | main () 2672 | { 2673 | 2674 | ; 2675 | return 0; 2676 | } 2677 | _ACEOF 2678 | rm -f conftest.o conftest.obj 2679 | if { { ac_try="$ac_compile" 2680 | case "(($ac_try" in 2681 | *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; 2682 | *) ac_try_echo=$ac_try;; 2683 | esac 2684 | eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" 2685 | $as_echo "$ac_try_echo"; } >&5 2686 | (eval "$ac_compile") 2>&5 2687 | ac_status=$? 2688 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 2689 | test $ac_status = 0; }; then : 2690 | for ac_file in conftest.o conftest.obj conftest.*; do 2691 | test -f "$ac_file" || continue; 2692 | case $ac_file in 2693 | *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; 2694 | *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` 2695 | break;; 2696 | esac 2697 | done 2698 | else 2699 | $as_echo "$as_me: failed program was:" >&5 2700 | sed 's/^/| /' conftest.$ac_ext >&5 2701 | 2702 | { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 2703 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 2704 | as_fn_error $? "cannot compute suffix of object files: cannot compile 2705 | See \`config.log' for more details" "$LINENO" 5; } 2706 | fi 2707 | rm -f conftest.$ac_cv_objext conftest.$ac_ext 2708 | fi 2709 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 2710 | $as_echo "$ac_cv_objext" >&6; } 2711 | OBJEXT=$ac_cv_objext 2712 | ac_objext=$OBJEXT 2713 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 2714 | $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } 2715 | if ${ac_cv_c_compiler_gnu+:} false; then : 2716 | $as_echo_n "(cached) " >&6 2717 | else 2718 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2719 | /* end confdefs.h. */ 2720 | 2721 | int 2722 | main () 2723 | { 2724 | #ifndef __GNUC__ 2725 | choke me 2726 | #endif 2727 | 2728 | ; 2729 | return 0; 2730 | } 2731 | _ACEOF 2732 | if ac_fn_c_try_compile "$LINENO"; then : 2733 | ac_compiler_gnu=yes 2734 | else 2735 | ac_compiler_gnu=no 2736 | fi 2737 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 2738 | ac_cv_c_compiler_gnu=$ac_compiler_gnu 2739 | 2740 | fi 2741 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 2742 | $as_echo "$ac_cv_c_compiler_gnu" >&6; } 2743 | if test $ac_compiler_gnu = yes; then 2744 | GCC=yes 2745 | else 2746 | GCC= 2747 | fi 2748 | ac_test_CFLAGS=${CFLAGS+set} 2749 | ac_save_CFLAGS=$CFLAGS 2750 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 2751 | $as_echo_n "checking whether $CC accepts -g... " >&6; } 2752 | if ${ac_cv_prog_cc_g+:} false; then : 2753 | $as_echo_n "(cached) " >&6 2754 | else 2755 | ac_save_c_werror_flag=$ac_c_werror_flag 2756 | ac_c_werror_flag=yes 2757 | ac_cv_prog_cc_g=no 2758 | CFLAGS="-g" 2759 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2760 | /* end confdefs.h. */ 2761 | 2762 | int 2763 | main () 2764 | { 2765 | 2766 | ; 2767 | return 0; 2768 | } 2769 | _ACEOF 2770 | if ac_fn_c_try_compile "$LINENO"; then : 2771 | ac_cv_prog_cc_g=yes 2772 | else 2773 | CFLAGS="" 2774 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2775 | /* end confdefs.h. */ 2776 | 2777 | int 2778 | main () 2779 | { 2780 | 2781 | ; 2782 | return 0; 2783 | } 2784 | _ACEOF 2785 | if ac_fn_c_try_compile "$LINENO"; then : 2786 | 2787 | else 2788 | ac_c_werror_flag=$ac_save_c_werror_flag 2789 | CFLAGS="-g" 2790 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2791 | /* end confdefs.h. */ 2792 | 2793 | int 2794 | main () 2795 | { 2796 | 2797 | ; 2798 | return 0; 2799 | } 2800 | _ACEOF 2801 | if ac_fn_c_try_compile "$LINENO"; then : 2802 | ac_cv_prog_cc_g=yes 2803 | fi 2804 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 2805 | fi 2806 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 2807 | fi 2808 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 2809 | ac_c_werror_flag=$ac_save_c_werror_flag 2810 | fi 2811 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 2812 | $as_echo "$ac_cv_prog_cc_g" >&6; } 2813 | if test "$ac_test_CFLAGS" = set; then 2814 | CFLAGS=$ac_save_CFLAGS 2815 | elif test $ac_cv_prog_cc_g = yes; then 2816 | if test "$GCC" = yes; then 2817 | CFLAGS="-g -O2" 2818 | else 2819 | CFLAGS="-g" 2820 | fi 2821 | else 2822 | if test "$GCC" = yes; then 2823 | CFLAGS="-O2" 2824 | else 2825 | CFLAGS= 2826 | fi 2827 | fi 2828 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 2829 | $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } 2830 | if ${ac_cv_prog_cc_c89+:} false; then : 2831 | $as_echo_n "(cached) " >&6 2832 | else 2833 | ac_cv_prog_cc_c89=no 2834 | ac_save_CC=$CC 2835 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2836 | /* end confdefs.h. */ 2837 | #include 2838 | #include 2839 | struct stat; 2840 | /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ 2841 | struct buf { int x; }; 2842 | FILE * (*rcsopen) (struct buf *, struct stat *, int); 2843 | static char *e (p, i) 2844 | char **p; 2845 | int i; 2846 | { 2847 | return p[i]; 2848 | } 2849 | static char *f (char * (*g) (char **, int), char **p, ...) 2850 | { 2851 | char *s; 2852 | va_list v; 2853 | va_start (v,p); 2854 | s = g (p, va_arg (v,int)); 2855 | va_end (v); 2856 | return s; 2857 | } 2858 | 2859 | /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has 2860 | function prototypes and stuff, but not '\xHH' hex character constants. 2861 | These don't provoke an error unfortunately, instead are silently treated 2862 | as 'x'. The following induces an error, until -std is added to get 2863 | proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an 2864 | array size at least. It's necessary to write '\x00'==0 to get something 2865 | that's true only with -std. */ 2866 | int osf4_cc_array ['\x00' == 0 ? 1 : -1]; 2867 | 2868 | /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters 2869 | inside strings and character constants. */ 2870 | #define FOO(x) 'x' 2871 | int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; 2872 | 2873 | int test (int i, double x); 2874 | struct s1 {int (*f) (int a);}; 2875 | struct s2 {int (*f) (double a);}; 2876 | int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); 2877 | int argc; 2878 | char **argv; 2879 | int 2880 | main () 2881 | { 2882 | return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; 2883 | ; 2884 | return 0; 2885 | } 2886 | _ACEOF 2887 | for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ 2888 | -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" 2889 | do 2890 | CC="$ac_save_CC $ac_arg" 2891 | if ac_fn_c_try_compile "$LINENO"; then : 2892 | ac_cv_prog_cc_c89=$ac_arg 2893 | fi 2894 | rm -f core conftest.err conftest.$ac_objext 2895 | test "x$ac_cv_prog_cc_c89" != "xno" && break 2896 | done 2897 | rm -f conftest.$ac_ext 2898 | CC=$ac_save_CC 2899 | 2900 | fi 2901 | # AC_CACHE_VAL 2902 | case "x$ac_cv_prog_cc_c89" in 2903 | x) 2904 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 2905 | $as_echo "none needed" >&6; } ;; 2906 | xno) 2907 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 2908 | $as_echo "unsupported" >&6; } ;; 2909 | *) 2910 | CC="$CC $ac_cv_prog_cc_c89" 2911 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 2912 | $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; 2913 | esac 2914 | if test "x$ac_cv_prog_cc_c89" != xno; then : 2915 | 2916 | fi 2917 | 2918 | ac_ext=c 2919 | ac_cpp='$CPP $CPPFLAGS' 2920 | ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 2921 | ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 2922 | ac_compiler_gnu=$ac_cv_c_compiler_gnu 2923 | 2924 | 2925 | 2926 | ac_config_headers="$ac_config_headers config.h" 2927 | 2928 | 2929 | 2930 | ac_ext=c 2931 | ac_cpp='$CPP $CPPFLAGS' 2932 | ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 2933 | ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 2934 | ac_compiler_gnu=$ac_cv_c_compiler_gnu 2935 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 2936 | $as_echo_n "checking how to run the C preprocessor... " >&6; } 2937 | # On Suns, sometimes $CPP names a directory. 2938 | if test -n "$CPP" && test -d "$CPP"; then 2939 | CPP= 2940 | fi 2941 | if test -z "$CPP"; then 2942 | if ${ac_cv_prog_CPP+:} false; then : 2943 | $as_echo_n "(cached) " >&6 2944 | else 2945 | # Double quotes because CPP needs to be expanded 2946 | for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" 2947 | do 2948 | ac_preproc_ok=false 2949 | for ac_c_preproc_warn_flag in '' yes 2950 | do 2951 | # Use a header file that comes with gcc, so configuring glibc 2952 | # with a fresh cross-compiler works. 2953 | # Prefer to if __STDC__ is defined, since 2954 | # exists even on freestanding compilers. 2955 | # On the NeXT, cc -E runs the code through the compiler's parser, 2956 | # not just through cpp. "Syntax error" is here to catch this case. 2957 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2958 | /* end confdefs.h. */ 2959 | #ifdef __STDC__ 2960 | # include 2961 | #else 2962 | # include 2963 | #endif 2964 | Syntax error 2965 | _ACEOF 2966 | if ac_fn_c_try_cpp "$LINENO"; then : 2967 | 2968 | else 2969 | # Broken: fails on valid input. 2970 | continue 2971 | fi 2972 | rm -f conftest.err conftest.i conftest.$ac_ext 2973 | 2974 | # OK, works on sane cases. Now check whether nonexistent headers 2975 | # can be detected and how. 2976 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 2977 | /* end confdefs.h. */ 2978 | #include 2979 | _ACEOF 2980 | if ac_fn_c_try_cpp "$LINENO"; then : 2981 | # Broken: success on invalid input. 2982 | continue 2983 | else 2984 | # Passes both tests. 2985 | ac_preproc_ok=: 2986 | break 2987 | fi 2988 | rm -f conftest.err conftest.i conftest.$ac_ext 2989 | 2990 | done 2991 | # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. 2992 | rm -f conftest.i conftest.err conftest.$ac_ext 2993 | if $ac_preproc_ok; then : 2994 | break 2995 | fi 2996 | 2997 | done 2998 | ac_cv_prog_CPP=$CPP 2999 | 3000 | fi 3001 | CPP=$ac_cv_prog_CPP 3002 | else 3003 | ac_cv_prog_CPP=$CPP 3004 | fi 3005 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 3006 | $as_echo "$CPP" >&6; } 3007 | ac_preproc_ok=false 3008 | for ac_c_preproc_warn_flag in '' yes 3009 | do 3010 | # Use a header file that comes with gcc, so configuring glibc 3011 | # with a fresh cross-compiler works. 3012 | # Prefer to if __STDC__ is defined, since 3013 | # exists even on freestanding compilers. 3014 | # On the NeXT, cc -E runs the code through the compiler's parser, 3015 | # not just through cpp. "Syntax error" is here to catch this case. 3016 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 3017 | /* end confdefs.h. */ 3018 | #ifdef __STDC__ 3019 | # include 3020 | #else 3021 | # include 3022 | #endif 3023 | Syntax error 3024 | _ACEOF 3025 | if ac_fn_c_try_cpp "$LINENO"; then : 3026 | 3027 | else 3028 | # Broken: fails on valid input. 3029 | continue 3030 | fi 3031 | rm -f conftest.err conftest.i conftest.$ac_ext 3032 | 3033 | # OK, works on sane cases. Now check whether nonexistent headers 3034 | # can be detected and how. 3035 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 3036 | /* end confdefs.h. */ 3037 | #include 3038 | _ACEOF 3039 | if ac_fn_c_try_cpp "$LINENO"; then : 3040 | # Broken: success on invalid input. 3041 | continue 3042 | else 3043 | # Passes both tests. 3044 | ac_preproc_ok=: 3045 | break 3046 | fi 3047 | rm -f conftest.err conftest.i conftest.$ac_ext 3048 | 3049 | done 3050 | # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. 3051 | rm -f conftest.i conftest.err conftest.$ac_ext 3052 | if $ac_preproc_ok; then : 3053 | 3054 | else 3055 | { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 3056 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 3057 | as_fn_error $? "C preprocessor \"$CPP\" fails sanity check 3058 | See \`config.log' for more details" "$LINENO" 5; } 3059 | fi 3060 | 3061 | ac_ext=c 3062 | ac_cpp='$CPP $CPPFLAGS' 3063 | ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' 3064 | ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' 3065 | ac_compiler_gnu=$ac_cv_c_compiler_gnu 3066 | 3067 | 3068 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 3069 | $as_echo_n "checking for grep that handles long lines and -e... " >&6; } 3070 | if ${ac_cv_path_GREP+:} false; then : 3071 | $as_echo_n "(cached) " >&6 3072 | else 3073 | if test -z "$GREP"; then 3074 | ac_path_GREP_found=false 3075 | # Loop through the user's path and test for each of PROGNAME-LIST 3076 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 3077 | for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin 3078 | do 3079 | IFS=$as_save_IFS 3080 | test -z "$as_dir" && as_dir=. 3081 | for ac_prog in grep ggrep; do 3082 | for ac_exec_ext in '' $ac_executable_extensions; do 3083 | ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" 3084 | as_fn_executable_p "$ac_path_GREP" || continue 3085 | # Check for GNU ac_path_GREP and select it if it is found. 3086 | # Check for GNU $ac_path_GREP 3087 | case `"$ac_path_GREP" --version 2>&1` in 3088 | *GNU*) 3089 | ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; 3090 | *) 3091 | ac_count=0 3092 | $as_echo_n 0123456789 >"conftest.in" 3093 | while : 3094 | do 3095 | cat "conftest.in" "conftest.in" >"conftest.tmp" 3096 | mv "conftest.tmp" "conftest.in" 3097 | cp "conftest.in" "conftest.nl" 3098 | $as_echo 'GREP' >> "conftest.nl" 3099 | "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break 3100 | diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break 3101 | as_fn_arith $ac_count + 1 && ac_count=$as_val 3102 | if test $ac_count -gt ${ac_path_GREP_max-0}; then 3103 | # Best one so far, save it but keep looking for a better one 3104 | ac_cv_path_GREP="$ac_path_GREP" 3105 | ac_path_GREP_max=$ac_count 3106 | fi 3107 | # 10*(2^10) chars as input seems more than enough 3108 | test $ac_count -gt 10 && break 3109 | done 3110 | rm -f conftest.in conftest.tmp conftest.nl conftest.out;; 3111 | esac 3112 | 3113 | $ac_path_GREP_found && break 3 3114 | done 3115 | done 3116 | done 3117 | IFS=$as_save_IFS 3118 | if test -z "$ac_cv_path_GREP"; then 3119 | as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 3120 | fi 3121 | else 3122 | ac_cv_path_GREP=$GREP 3123 | fi 3124 | 3125 | fi 3126 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 3127 | $as_echo "$ac_cv_path_GREP" >&6; } 3128 | GREP="$ac_cv_path_GREP" 3129 | 3130 | 3131 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 3132 | $as_echo_n "checking for egrep... " >&6; } 3133 | if ${ac_cv_path_EGREP+:} false; then : 3134 | $as_echo_n "(cached) " >&6 3135 | else 3136 | if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 3137 | then ac_cv_path_EGREP="$GREP -E" 3138 | else 3139 | if test -z "$EGREP"; then 3140 | ac_path_EGREP_found=false 3141 | # Loop through the user's path and test for each of PROGNAME-LIST 3142 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 3143 | for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin 3144 | do 3145 | IFS=$as_save_IFS 3146 | test -z "$as_dir" && as_dir=. 3147 | for ac_prog in egrep; do 3148 | for ac_exec_ext in '' $ac_executable_extensions; do 3149 | ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" 3150 | as_fn_executable_p "$ac_path_EGREP" || continue 3151 | # Check for GNU ac_path_EGREP and select it if it is found. 3152 | # Check for GNU $ac_path_EGREP 3153 | case `"$ac_path_EGREP" --version 2>&1` in 3154 | *GNU*) 3155 | ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; 3156 | *) 3157 | ac_count=0 3158 | $as_echo_n 0123456789 >"conftest.in" 3159 | while : 3160 | do 3161 | cat "conftest.in" "conftest.in" >"conftest.tmp" 3162 | mv "conftest.tmp" "conftest.in" 3163 | cp "conftest.in" "conftest.nl" 3164 | $as_echo 'EGREP' >> "conftest.nl" 3165 | "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break 3166 | diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break 3167 | as_fn_arith $ac_count + 1 && ac_count=$as_val 3168 | if test $ac_count -gt ${ac_path_EGREP_max-0}; then 3169 | # Best one so far, save it but keep looking for a better one 3170 | ac_cv_path_EGREP="$ac_path_EGREP" 3171 | ac_path_EGREP_max=$ac_count 3172 | fi 3173 | # 10*(2^10) chars as input seems more than enough 3174 | test $ac_count -gt 10 && break 3175 | done 3176 | rm -f conftest.in conftest.tmp conftest.nl conftest.out;; 3177 | esac 3178 | 3179 | $ac_path_EGREP_found && break 3 3180 | done 3181 | done 3182 | done 3183 | IFS=$as_save_IFS 3184 | if test -z "$ac_cv_path_EGREP"; then 3185 | as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 3186 | fi 3187 | else 3188 | ac_cv_path_EGREP=$EGREP 3189 | fi 3190 | 3191 | fi 3192 | fi 3193 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 3194 | $as_echo "$ac_cv_path_EGREP" >&6; } 3195 | EGREP="$ac_cv_path_EGREP" 3196 | 3197 | 3198 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 3199 | $as_echo_n "checking for ANSI C header files... " >&6; } 3200 | if ${ac_cv_header_stdc+:} false; then : 3201 | $as_echo_n "(cached) " >&6 3202 | else 3203 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 3204 | /* end confdefs.h. */ 3205 | #include 3206 | #include 3207 | #include 3208 | #include 3209 | 3210 | int 3211 | main () 3212 | { 3213 | 3214 | ; 3215 | return 0; 3216 | } 3217 | _ACEOF 3218 | if ac_fn_c_try_compile "$LINENO"; then : 3219 | ac_cv_header_stdc=yes 3220 | else 3221 | ac_cv_header_stdc=no 3222 | fi 3223 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext 3224 | 3225 | if test $ac_cv_header_stdc = yes; then 3226 | # SunOS 4.x string.h does not declare mem*, contrary to ANSI. 3227 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 3228 | /* end confdefs.h. */ 3229 | #include 3230 | 3231 | _ACEOF 3232 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 3233 | $EGREP "memchr" >/dev/null 2>&1; then : 3234 | 3235 | else 3236 | ac_cv_header_stdc=no 3237 | fi 3238 | rm -f conftest* 3239 | 3240 | fi 3241 | 3242 | if test $ac_cv_header_stdc = yes; then 3243 | # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. 3244 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 3245 | /* end confdefs.h. */ 3246 | #include 3247 | 3248 | _ACEOF 3249 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | 3250 | $EGREP "free" >/dev/null 2>&1; then : 3251 | 3252 | else 3253 | ac_cv_header_stdc=no 3254 | fi 3255 | rm -f conftest* 3256 | 3257 | fi 3258 | 3259 | if test $ac_cv_header_stdc = yes; then 3260 | # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. 3261 | if test "$cross_compiling" = yes; then : 3262 | : 3263 | else 3264 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext 3265 | /* end confdefs.h. */ 3266 | #include 3267 | #include 3268 | #if ((' ' & 0x0FF) == 0x020) 3269 | # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') 3270 | # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) 3271 | #else 3272 | # define ISLOWER(c) \ 3273 | (('a' <= (c) && (c) <= 'i') \ 3274 | || ('j' <= (c) && (c) <= 'r') \ 3275 | || ('s' <= (c) && (c) <= 'z')) 3276 | # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) 3277 | #endif 3278 | 3279 | #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) 3280 | int 3281 | main () 3282 | { 3283 | int i; 3284 | for (i = 0; i < 256; i++) 3285 | if (XOR (islower (i), ISLOWER (i)) 3286 | || toupper (i) != TOUPPER (i)) 3287 | return 2; 3288 | return 0; 3289 | } 3290 | _ACEOF 3291 | if ac_fn_c_try_run "$LINENO"; then : 3292 | 3293 | else 3294 | ac_cv_header_stdc=no 3295 | fi 3296 | rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ 3297 | conftest.$ac_objext conftest.beam conftest.$ac_ext 3298 | fi 3299 | 3300 | fi 3301 | fi 3302 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 3303 | $as_echo "$ac_cv_header_stdc" >&6; } 3304 | if test $ac_cv_header_stdc = yes; then 3305 | 3306 | $as_echo "#define STDC_HEADERS 1" >>confdefs.h 3307 | 3308 | fi 3309 | 3310 | # On IRIX 5.3, sys/types and inttypes.h are conflicting. 3311 | for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ 3312 | inttypes.h stdint.h unistd.h 3313 | do : 3314 | as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` 3315 | ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default 3316 | " 3317 | if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : 3318 | cat >>confdefs.h <<_ACEOF 3319 | #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 3320 | _ACEOF 3321 | 3322 | fi 3323 | 3324 | done 3325 | 3326 | 3327 | ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default" 3328 | if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : 3329 | 3330 | cat >>confdefs.h <<_ACEOF 3331 | #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 3332 | _ACEOF 3333 | 3334 | 3335 | fi 3336 | 3337 | ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" 3338 | if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : 3339 | 3340 | cat >>confdefs.h <<_ACEOF 3341 | #define HAVE_STRUCT_STAT_ST_BLOCKS 1 3342 | _ACEOF 3343 | 3344 | 3345 | fi 3346 | 3347 | ac_fn_c_check_member "$LINENO" "struct stat" "st_rdev" "ac_cv_member_struct_stat_st_rdev" "$ac_includes_default" 3348 | if test "x$ac_cv_member_struct_stat_st_rdev" = xyes; then : 3349 | 3350 | cat >>confdefs.h <<_ACEOF 3351 | #define HAVE_STRUCT_STAT_ST_RDEV 1 3352 | _ACEOF 3353 | 3354 | 3355 | fi 3356 | 3357 | 3358 | ac_fn_c_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default" 3359 | if test "x$ac_cv_member_struct_stat_st_atim" = xyes; then : 3360 | 3361 | cat >>confdefs.h <<_ACEOF 3362 | #define HAVE_STRUCT_STAT_ST_ATIM 1 3363 | _ACEOF 3364 | 3365 | 3366 | fi 3367 | 3368 | ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec" "ac_cv_member_struct_stat_st_atimespec" "$ac_includes_default" 3369 | if test "x$ac_cv_member_struct_stat_st_atimespec" = xyes; then : 3370 | 3371 | cat >>confdefs.h <<_ACEOF 3372 | #define HAVE_STRUCT_STAT_ST_ATIMESPEC 1 3373 | _ACEOF 3374 | 3375 | 3376 | fi 3377 | 3378 | ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "$ac_includes_default" 3379 | if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : 3380 | 3381 | cat >>confdefs.h <<_ACEOF 3382 | #define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 3383 | _ACEOF 3384 | 3385 | 3386 | fi 3387 | 3388 | ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default" 3389 | if test "x$ac_cv_member_struct_stat_st_mtim" = xyes; then : 3390 | 3391 | cat >>confdefs.h <<_ACEOF 3392 | #define HAVE_STRUCT_STAT_ST_MTIM 1 3393 | _ACEOF 3394 | 3395 | 3396 | fi 3397 | 3398 | ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimespec" "ac_cv_member_struct_stat_st_mtimespec" "$ac_includes_default" 3399 | if test "x$ac_cv_member_struct_stat_st_mtimespec" = xyes; then : 3400 | 3401 | cat >>confdefs.h <<_ACEOF 3402 | #define HAVE_STRUCT_STAT_ST_MTIMESPEC 1 3403 | _ACEOF 3404 | 3405 | 3406 | fi 3407 | 3408 | ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimensec" "ac_cv_member_struct_stat_st_mtimensec" "$ac_includes_default" 3409 | if test "x$ac_cv_member_struct_stat_st_mtimensec" = xyes; then : 3410 | 3411 | cat >>confdefs.h <<_ACEOF 3412 | #define HAVE_STRUCT_STAT_ST_MTIMENSEC 1 3413 | _ACEOF 3414 | 3415 | 3416 | fi 3417 | 3418 | ac_fn_c_check_member "$LINENO" "struct stat" "st_ctim" "ac_cv_member_struct_stat_st_ctim" "$ac_includes_default" 3419 | if test "x$ac_cv_member_struct_stat_st_ctim" = xyes; then : 3420 | 3421 | cat >>confdefs.h <<_ACEOF 3422 | #define HAVE_STRUCT_STAT_ST_CTIM 1 3423 | _ACEOF 3424 | 3425 | 3426 | fi 3427 | 3428 | ac_fn_c_check_member "$LINENO" "struct stat" "st_ctimespec" "ac_cv_member_struct_stat_st_ctimespec" "$ac_includes_default" 3429 | if test "x$ac_cv_member_struct_stat_st_ctimespec" = xyes; then : 3430 | 3431 | cat >>confdefs.h <<_ACEOF 3432 | #define HAVE_STRUCT_STAT_ST_CTIMESPEC 1 3433 | _ACEOF 3434 | 3435 | 3436 | fi 3437 | 3438 | ac_fn_c_check_member "$LINENO" "struct stat" "st_ctimensec" "ac_cv_member_struct_stat_st_ctimensec" "$ac_includes_default" 3439 | if test "x$ac_cv_member_struct_stat_st_ctimensec" = xyes; then : 3440 | 3441 | cat >>confdefs.h <<_ACEOF 3442 | #define HAVE_STRUCT_STAT_ST_CTIMENSEC 1 3443 | _ACEOF 3444 | 3445 | 3446 | fi 3447 | 3448 | ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimespec" "ac_cv_member_struct_stat_st_birthtimespec" "$ac_includes_default" 3449 | if test "x$ac_cv_member_struct_stat_st_birthtimespec" = xyes; then : 3450 | 3451 | cat >>confdefs.h <<_ACEOF 3452 | #define HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC 1 3453 | _ACEOF 3454 | 3455 | 3456 | fi 3457 | 3458 | 3459 | for ac_func in getgroups 3460 | do : 3461 | ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" 3462 | if test "x$ac_cv_func_getgroups" = xyes; then : 3463 | cat >>confdefs.h <<_ACEOF 3464 | #define HAVE_GETGROUPS 1 3465 | _ACEOF 3466 | 3467 | fi 3468 | done 3469 | 3470 | for ac_func in lstat 3471 | do : 3472 | ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat" 3473 | if test "x$ac_cv_func_lstat" = xyes; then : 3474 | cat >>confdefs.h <<_ACEOF 3475 | #define HAVE_LSTAT 1 3476 | _ACEOF 3477 | 3478 | fi 3479 | done 3480 | 3481 | 3482 | for ac_header in sys/sysmacros.h 3483 | do : 3484 | ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" 3485 | if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then : 3486 | cat >>confdefs.h <<_ACEOF 3487 | #define HAVE_SYS_SYSMACROS_H 1 3488 | _ACEOF 3489 | 3490 | fi 3491 | 3492 | done 3493 | 3494 | 3495 | cat >confcache <<\_ACEOF 3496 | # This file is a shell script that caches the results of configure 3497 | # tests run on this system so they can be shared between configure 3498 | # scripts and configure runs, see configure's option --config-cache. 3499 | # It is not useful on other systems. If it contains results you don't 3500 | # want to keep, you may remove or edit it. 3501 | # 3502 | # config.status only pays attention to the cache file if you give it 3503 | # the --recheck option to rerun configure. 3504 | # 3505 | # `ac_cv_env_foo' variables (set or unset) will be overridden when 3506 | # loading this file, other *unset* `ac_cv_foo' will be assigned the 3507 | # following values. 3508 | 3509 | _ACEOF 3510 | 3511 | # The following way of writing the cache mishandles newlines in values, 3512 | # but we know of no workaround that is simple, portable, and efficient. 3513 | # So, we kill variables containing newlines. 3514 | # Ultrix sh set writes to stderr and can't be redirected directly, 3515 | # and sets the high bit in the cache file unless we assign to the vars. 3516 | ( 3517 | for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do 3518 | eval ac_val=\$$ac_var 3519 | case $ac_val in #( 3520 | *${as_nl}*) 3521 | case $ac_var in #( 3522 | *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 3523 | $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; 3524 | esac 3525 | case $ac_var in #( 3526 | _ | IFS | as_nl) ;; #( 3527 | BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( 3528 | *) { eval $ac_var=; unset $ac_var;} ;; 3529 | esac ;; 3530 | esac 3531 | done 3532 | 3533 | (set) 2>&1 | 3534 | case $as_nl`(ac_space=' '; set) 2>&1` in #( 3535 | *${as_nl}ac_space=\ *) 3536 | # `set' does not quote correctly, so add quotes: double-quote 3537 | # substitution turns \\\\ into \\, and sed turns \\ into \. 3538 | sed -n \ 3539 | "s/'/'\\\\''/g; 3540 | s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" 3541 | ;; #( 3542 | *) 3543 | # `set' quotes correctly as required by POSIX, so do not add quotes. 3544 | sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" 3545 | ;; 3546 | esac | 3547 | sort 3548 | ) | 3549 | sed ' 3550 | /^ac_cv_env_/b end 3551 | t clear 3552 | :clear 3553 | s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ 3554 | t end 3555 | s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ 3556 | :end' >>confcache 3557 | if diff "$cache_file" confcache >/dev/null 2>&1; then :; else 3558 | if test -w "$cache_file"; then 3559 | if test "x$cache_file" != "x/dev/null"; then 3560 | { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 3561 | $as_echo "$as_me: updating cache $cache_file" >&6;} 3562 | if test ! -f "$cache_file" || test -h "$cache_file"; then 3563 | cat confcache >"$cache_file" 3564 | else 3565 | case $cache_file in #( 3566 | */* | ?:*) 3567 | mv -f confcache "$cache_file"$$ && 3568 | mv -f "$cache_file"$$ "$cache_file" ;; #( 3569 | *) 3570 | mv -f confcache "$cache_file" ;; 3571 | esac 3572 | fi 3573 | fi 3574 | else 3575 | { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 3576 | $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} 3577 | fi 3578 | fi 3579 | rm -f confcache 3580 | 3581 | test "x$prefix" = xNONE && prefix=$ac_default_prefix 3582 | # Let make expand exec_prefix. 3583 | test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' 3584 | 3585 | DEFS=-DHAVE_CONFIG_H 3586 | 3587 | ac_libobjs= 3588 | ac_ltlibobjs= 3589 | U= 3590 | for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue 3591 | # 1. Remove the extension, and $U if already installed. 3592 | ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' 3593 | ac_i=`$as_echo "$ac_i" | sed "$ac_script"` 3594 | # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR 3595 | # will be set to the directory where LIBOBJS objects are built. 3596 | as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" 3597 | as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' 3598 | done 3599 | LIBOBJS=$ac_libobjs 3600 | 3601 | LTLIBOBJS=$ac_ltlibobjs 3602 | 3603 | 3604 | 3605 | : "${CONFIG_STATUS=./config.status}" 3606 | ac_write_fail=0 3607 | ac_clean_files_save=$ac_clean_files 3608 | ac_clean_files="$ac_clean_files $CONFIG_STATUS" 3609 | { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 3610 | $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} 3611 | as_write_fail=0 3612 | cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 3613 | #! $SHELL 3614 | # Generated by $as_me. 3615 | # Run this file to recreate the current configuration. 3616 | # Compiler output produced by configure, useful for debugging 3617 | # configure, is in config.log if it exists. 3618 | 3619 | debug=false 3620 | ac_cs_recheck=false 3621 | ac_cs_silent=false 3622 | 3623 | SHELL=\${CONFIG_SHELL-$SHELL} 3624 | export SHELL 3625 | _ASEOF 3626 | cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 3627 | ## -------------------- ## 3628 | ## M4sh Initialization. ## 3629 | ## -------------------- ## 3630 | 3631 | # Be more Bourne compatible 3632 | DUALCASE=1; export DUALCASE # for MKS sh 3633 | if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : 3634 | emulate sh 3635 | NULLCMD=: 3636 | # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which 3637 | # is contrary to our usage. Disable this feature. 3638 | alias -g '${1+"$@"}'='"$@"' 3639 | setopt NO_GLOB_SUBST 3640 | else 3641 | case `(set -o) 2>/dev/null` in #( 3642 | *posix*) : 3643 | set -o posix ;; #( 3644 | *) : 3645 | ;; 3646 | esac 3647 | fi 3648 | 3649 | 3650 | as_nl=' 3651 | ' 3652 | export as_nl 3653 | # Printing a long string crashes Solaris 7 /usr/bin/printf. 3654 | as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' 3655 | as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo 3656 | as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo 3657 | # Prefer a ksh shell builtin over an external printf program on Solaris, 3658 | # but without wasting forks for bash or zsh. 3659 | if test -z "$BASH_VERSION$ZSH_VERSION" \ 3660 | && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then 3661 | as_echo='print -r --' 3662 | as_echo_n='print -rn --' 3663 | elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then 3664 | as_echo='printf %s\n' 3665 | as_echo_n='printf %s' 3666 | else 3667 | if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then 3668 | as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' 3669 | as_echo_n='/usr/ucb/echo -n' 3670 | else 3671 | as_echo_body='eval expr "X$1" : "X\\(.*\\)"' 3672 | as_echo_n_body='eval 3673 | arg=$1; 3674 | case $arg in #( 3675 | *"$as_nl"*) 3676 | expr "X$arg" : "X\\(.*\\)$as_nl"; 3677 | arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; 3678 | esac; 3679 | expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" 3680 | ' 3681 | export as_echo_n_body 3682 | as_echo_n='sh -c $as_echo_n_body as_echo' 3683 | fi 3684 | export as_echo_body 3685 | as_echo='sh -c $as_echo_body as_echo' 3686 | fi 3687 | 3688 | # The user is always right. 3689 | if test "${PATH_SEPARATOR+set}" != set; then 3690 | PATH_SEPARATOR=: 3691 | (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { 3692 | (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || 3693 | PATH_SEPARATOR=';' 3694 | } 3695 | fi 3696 | 3697 | 3698 | # IFS 3699 | # We need space, tab and new line, in precisely that order. Quoting is 3700 | # there to prevent editors from complaining about space-tab. 3701 | # (If _AS_PATH_WALK were called with IFS unset, it would disable word 3702 | # splitting by setting IFS to empty value.) 3703 | IFS=" "" $as_nl" 3704 | 3705 | # Find who we are. Look in the path if we contain no directory separator. 3706 | as_myself= 3707 | case $0 in #(( 3708 | *[\\/]* ) as_myself=$0 ;; 3709 | *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR 3710 | for as_dir in $PATH 3711 | do 3712 | IFS=$as_save_IFS 3713 | test -z "$as_dir" && as_dir=. 3714 | test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break 3715 | done 3716 | IFS=$as_save_IFS 3717 | 3718 | ;; 3719 | esac 3720 | # We did not find ourselves, most probably we were run as `sh COMMAND' 3721 | # in which case we are not to be found in the path. 3722 | if test "x$as_myself" = x; then 3723 | as_myself=$0 3724 | fi 3725 | if test ! -f "$as_myself"; then 3726 | $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 3727 | exit 1 3728 | fi 3729 | 3730 | # Unset variables that we do not need and which cause bugs (e.g. in 3731 | # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" 3732 | # suppresses any "Segmentation fault" message there. '((' could 3733 | # trigger a bug in pdksh 5.2.14. 3734 | for as_var in BASH_ENV ENV MAIL MAILPATH 3735 | do eval test x\${$as_var+set} = xset \ 3736 | && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : 3737 | done 3738 | PS1='$ ' 3739 | PS2='> ' 3740 | PS4='+ ' 3741 | 3742 | # NLS nuisances. 3743 | LC_ALL=C 3744 | export LC_ALL 3745 | LANGUAGE=C 3746 | export LANGUAGE 3747 | 3748 | # CDPATH. 3749 | (unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3750 | 3751 | 3752 | # as_fn_error STATUS ERROR [LINENO LOG_FD] 3753 | # ---------------------------------------- 3754 | # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are 3755 | # provided, also output the error to LOG_FD, referencing LINENO. Then exit the 3756 | # script with STATUS, using 1 if that was 0. 3757 | as_fn_error () 3758 | { 3759 | as_status=$1; test $as_status -eq 0 && as_status=1 3760 | if test "$4"; then 3761 | as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 3762 | $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 3763 | fi 3764 | $as_echo "$as_me: error: $2" >&2 3765 | as_fn_exit $as_status 3766 | } # as_fn_error 3767 | 3768 | 3769 | # as_fn_set_status STATUS 3770 | # ----------------------- 3771 | # Set $? to STATUS, without forking. 3772 | as_fn_set_status () 3773 | { 3774 | return $1 3775 | } # as_fn_set_status 3776 | 3777 | # as_fn_exit STATUS 3778 | # ----------------- 3779 | # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. 3780 | as_fn_exit () 3781 | { 3782 | set +e 3783 | as_fn_set_status $1 3784 | exit $1 3785 | } # as_fn_exit 3786 | 3787 | # as_fn_unset VAR 3788 | # --------------- 3789 | # Portably unset VAR. 3790 | as_fn_unset () 3791 | { 3792 | { eval $1=; unset $1;} 3793 | } 3794 | as_unset=as_fn_unset 3795 | # as_fn_append VAR VALUE 3796 | # ---------------------- 3797 | # Append the text in VALUE to the end of the definition contained in VAR. Take 3798 | # advantage of any shell optimizations that allow amortized linear growth over 3799 | # repeated appends, instead of the typical quadratic growth present in naive 3800 | # implementations. 3801 | if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : 3802 | eval 'as_fn_append () 3803 | { 3804 | eval $1+=\$2 3805 | }' 3806 | else 3807 | as_fn_append () 3808 | { 3809 | eval $1=\$$1\$2 3810 | } 3811 | fi # as_fn_append 3812 | 3813 | # as_fn_arith ARG... 3814 | # ------------------ 3815 | # Perform arithmetic evaluation on the ARGs, and store the result in the 3816 | # global $as_val. Take advantage of shells that can avoid forks. The arguments 3817 | # must be portable across $(()) and expr. 3818 | if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : 3819 | eval 'as_fn_arith () 3820 | { 3821 | as_val=$(( $* )) 3822 | }' 3823 | else 3824 | as_fn_arith () 3825 | { 3826 | as_val=`expr "$@" || test $? -eq 1` 3827 | } 3828 | fi # as_fn_arith 3829 | 3830 | 3831 | if expr a : '\(a\)' >/dev/null 2>&1 && 3832 | test "X`expr 00001 : '.*\(...\)'`" = X001; then 3833 | as_expr=expr 3834 | else 3835 | as_expr=false 3836 | fi 3837 | 3838 | if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then 3839 | as_basename=basename 3840 | else 3841 | as_basename=false 3842 | fi 3843 | 3844 | if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then 3845 | as_dirname=dirname 3846 | else 3847 | as_dirname=false 3848 | fi 3849 | 3850 | as_me=`$as_basename -- "$0" || 3851 | $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ 3852 | X"$0" : 'X\(//\)$' \| \ 3853 | X"$0" : 'X\(/\)' \| . 2>/dev/null || 3854 | $as_echo X/"$0" | 3855 | sed '/^.*\/\([^/][^/]*\)\/*$/{ 3856 | s//\1/ 3857 | q 3858 | } 3859 | /^X\/\(\/\/\)$/{ 3860 | s//\1/ 3861 | q 3862 | } 3863 | /^X\/\(\/\).*/{ 3864 | s//\1/ 3865 | q 3866 | } 3867 | s/.*/./; q'` 3868 | 3869 | # Avoid depending upon Character Ranges. 3870 | as_cr_letters='abcdefghijklmnopqrstuvwxyz' 3871 | as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' 3872 | as_cr_Letters=$as_cr_letters$as_cr_LETTERS 3873 | as_cr_digits='0123456789' 3874 | as_cr_alnum=$as_cr_Letters$as_cr_digits 3875 | 3876 | ECHO_C= ECHO_N= ECHO_T= 3877 | case `echo -n x` in #((((( 3878 | -n*) 3879 | case `echo 'xy\c'` in 3880 | *c*) ECHO_T=' ';; # ECHO_T is single tab character. 3881 | xy) ECHO_C='\c';; 3882 | *) echo `echo ksh88 bug on AIX 6.1` > /dev/null 3883 | ECHO_T=' ';; 3884 | esac;; 3885 | *) 3886 | ECHO_N='-n';; 3887 | esac 3888 | 3889 | rm -f conf$$ conf$$.exe conf$$.file 3890 | if test -d conf$$.dir; then 3891 | rm -f conf$$.dir/conf$$.file 3892 | else 3893 | rm -f conf$$.dir 3894 | mkdir conf$$.dir 2>/dev/null 3895 | fi 3896 | if (echo >conf$$.file) 2>/dev/null; then 3897 | if ln -s conf$$.file conf$$ 2>/dev/null; then 3898 | as_ln_s='ln -s' 3899 | # ... but there are two gotchas: 3900 | # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. 3901 | # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. 3902 | # In both cases, we have to default to `cp -pR'. 3903 | ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || 3904 | as_ln_s='cp -pR' 3905 | elif ln conf$$.file conf$$ 2>/dev/null; then 3906 | as_ln_s=ln 3907 | else 3908 | as_ln_s='cp -pR' 3909 | fi 3910 | else 3911 | as_ln_s='cp -pR' 3912 | fi 3913 | rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file 3914 | rmdir conf$$.dir 2>/dev/null 3915 | 3916 | 3917 | # as_fn_mkdir_p 3918 | # ------------- 3919 | # Create "$as_dir" as a directory, including parents if necessary. 3920 | as_fn_mkdir_p () 3921 | { 3922 | 3923 | case $as_dir in #( 3924 | -*) as_dir=./$as_dir;; 3925 | esac 3926 | test -d "$as_dir" || eval $as_mkdir_p || { 3927 | as_dirs= 3928 | while :; do 3929 | case $as_dir in #( 3930 | *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( 3931 | *) as_qdir=$as_dir;; 3932 | esac 3933 | as_dirs="'$as_qdir' $as_dirs" 3934 | as_dir=`$as_dirname -- "$as_dir" || 3935 | $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 3936 | X"$as_dir" : 'X\(//\)[^/]' \| \ 3937 | X"$as_dir" : 'X\(//\)$' \| \ 3938 | X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || 3939 | $as_echo X"$as_dir" | 3940 | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 3941 | s//\1/ 3942 | q 3943 | } 3944 | /^X\(\/\/\)[^/].*/{ 3945 | s//\1/ 3946 | q 3947 | } 3948 | /^X\(\/\/\)$/{ 3949 | s//\1/ 3950 | q 3951 | } 3952 | /^X\(\/\).*/{ 3953 | s//\1/ 3954 | q 3955 | } 3956 | s/.*/./; q'` 3957 | test -d "$as_dir" && break 3958 | done 3959 | test -z "$as_dirs" || eval "mkdir $as_dirs" 3960 | } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" 3961 | 3962 | 3963 | } # as_fn_mkdir_p 3964 | if mkdir -p . 2>/dev/null; then 3965 | as_mkdir_p='mkdir -p "$as_dir"' 3966 | else 3967 | test -d ./-p && rmdir ./-p 3968 | as_mkdir_p=false 3969 | fi 3970 | 3971 | 3972 | # as_fn_executable_p FILE 3973 | # ----------------------- 3974 | # Test if FILE is an executable regular file. 3975 | as_fn_executable_p () 3976 | { 3977 | test -f "$1" && test -x "$1" 3978 | } # as_fn_executable_p 3979 | as_test_x='test -x' 3980 | as_executable_p=as_fn_executable_p 3981 | 3982 | # Sed expression to map a string onto a valid CPP name. 3983 | as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" 3984 | 3985 | # Sed expression to map a string onto a valid variable name. 3986 | as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" 3987 | 3988 | 3989 | exec 6>&1 3990 | ## ----------------------------------- ## 3991 | ## Main body of $CONFIG_STATUS script. ## 3992 | ## ----------------------------------- ## 3993 | _ASEOF 3994 | test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 3995 | 3996 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 3997 | # Save the log message, to keep $0 and so on meaningful, and to 3998 | # report actual input values of CONFIG_FILES etc. instead of their 3999 | # values after options handling. 4000 | ac_log=" 4001 | This file was extended by $as_me, which was 4002 | generated by GNU Autoconf 2.69. Invocation command line was 4003 | 4004 | CONFIG_FILES = $CONFIG_FILES 4005 | CONFIG_HEADERS = $CONFIG_HEADERS 4006 | CONFIG_LINKS = $CONFIG_LINKS 4007 | CONFIG_COMMANDS = $CONFIG_COMMANDS 4008 | $ $0 $@ 4009 | 4010 | on `(hostname || uname -n) 2>/dev/null | sed 1q` 4011 | " 4012 | 4013 | _ACEOF 4014 | 4015 | 4016 | case $ac_config_headers in *" 4017 | "*) set x $ac_config_headers; shift; ac_config_headers=$*;; 4018 | esac 4019 | 4020 | 4021 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 4022 | # Files that config.status was made for. 4023 | config_headers="$ac_config_headers" 4024 | 4025 | _ACEOF 4026 | 4027 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 4028 | ac_cs_usage="\ 4029 | \`$as_me' instantiates files and other configuration actions 4030 | from templates according to the current configuration. Unless the files 4031 | and actions are specified as TAGs, all are instantiated by default. 4032 | 4033 | Usage: $0 [OPTION]... [TAG]... 4034 | 4035 | -h, --help print this help, then exit 4036 | -V, --version print version number and configuration settings, then exit 4037 | --config print configuration, then exit 4038 | -q, --quiet, --silent 4039 | do not print progress messages 4040 | -d, --debug don't remove temporary files 4041 | --recheck update $as_me by reconfiguring in the same conditions 4042 | --header=FILE[:TEMPLATE] 4043 | instantiate the configuration header FILE 4044 | 4045 | Configuration headers: 4046 | $config_headers 4047 | 4048 | Report bugs to the package provider." 4049 | 4050 | _ACEOF 4051 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 4052 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" 4053 | ac_cs_version="\\ 4054 | config.status 4055 | configured by $0, generated by GNU Autoconf 2.69, 4056 | with options \\"\$ac_cs_config\\" 4057 | 4058 | Copyright (C) 2012 Free Software Foundation, Inc. 4059 | This config.status script is free software; the Free Software Foundation 4060 | gives unlimited permission to copy, distribute and modify it." 4061 | 4062 | ac_pwd='$ac_pwd' 4063 | srcdir='$srcdir' 4064 | test -n "\$AWK" || AWK=awk 4065 | _ACEOF 4066 | 4067 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 4068 | # The default lists apply if the user does not specify any file. 4069 | ac_need_defaults=: 4070 | while test $# != 0 4071 | do 4072 | case $1 in 4073 | --*=?*) 4074 | ac_option=`expr "X$1" : 'X\([^=]*\)='` 4075 | ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` 4076 | ac_shift=: 4077 | ;; 4078 | --*=) 4079 | ac_option=`expr "X$1" : 'X\([^=]*\)='` 4080 | ac_optarg= 4081 | ac_shift=: 4082 | ;; 4083 | *) 4084 | ac_option=$1 4085 | ac_optarg=$2 4086 | ac_shift=shift 4087 | ;; 4088 | esac 4089 | 4090 | case $ac_option in 4091 | # Handling of the options. 4092 | -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) 4093 | ac_cs_recheck=: ;; 4094 | --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) 4095 | $as_echo "$ac_cs_version"; exit ;; 4096 | --config | --confi | --conf | --con | --co | --c ) 4097 | $as_echo "$ac_cs_config"; exit ;; 4098 | --debug | --debu | --deb | --de | --d | -d ) 4099 | debug=: ;; 4100 | --header | --heade | --head | --hea ) 4101 | $ac_shift 4102 | case $ac_optarg in 4103 | *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; 4104 | esac 4105 | as_fn_append CONFIG_HEADERS " '$ac_optarg'" 4106 | ac_need_defaults=false;; 4107 | --he | --h) 4108 | # Conflict between --help and --header 4109 | as_fn_error $? "ambiguous option: \`$1' 4110 | Try \`$0 --help' for more information.";; 4111 | --help | --hel | -h ) 4112 | $as_echo "$ac_cs_usage"; exit ;; 4113 | -q | -quiet | --quiet | --quie | --qui | --qu | --q \ 4114 | | -silent | --silent | --silen | --sile | --sil | --si | --s) 4115 | ac_cs_silent=: ;; 4116 | 4117 | # This is an error. 4118 | -*) as_fn_error $? "unrecognized option: \`$1' 4119 | Try \`$0 --help' for more information." ;; 4120 | 4121 | *) as_fn_append ac_config_targets " $1" 4122 | ac_need_defaults=false ;; 4123 | 4124 | esac 4125 | shift 4126 | done 4127 | 4128 | ac_configure_extra_args= 4129 | 4130 | if $ac_cs_silent; then 4131 | exec 6>/dev/null 4132 | ac_configure_extra_args="$ac_configure_extra_args --silent" 4133 | fi 4134 | 4135 | _ACEOF 4136 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 4137 | if \$ac_cs_recheck; then 4138 | set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion 4139 | shift 4140 | \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 4141 | CONFIG_SHELL='$SHELL' 4142 | export CONFIG_SHELL 4143 | exec "\$@" 4144 | fi 4145 | 4146 | _ACEOF 4147 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 4148 | exec 5>>config.log 4149 | { 4150 | echo 4151 | sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX 4152 | ## Running $as_me. ## 4153 | _ASBOX 4154 | $as_echo "$ac_log" 4155 | } >&5 4156 | 4157 | _ACEOF 4158 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 4159 | _ACEOF 4160 | 4161 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 4162 | 4163 | # Handling of arguments. 4164 | for ac_config_target in $ac_config_targets 4165 | do 4166 | case $ac_config_target in 4167 | "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; 4168 | 4169 | *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; 4170 | esac 4171 | done 4172 | 4173 | 4174 | # If the user did not use the arguments to specify the items to instantiate, 4175 | # then the envvar interface is used. Set only those that are not. 4176 | # We use the long form for the default assignment because of an extremely 4177 | # bizarre bug on SunOS 4.1.3. 4178 | if $ac_need_defaults; then 4179 | test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers 4180 | fi 4181 | 4182 | # Have a temporary directory for convenience. Make it in the build tree 4183 | # simply because there is no reason against having it here, and in addition, 4184 | # creating and moving files from /tmp can sometimes cause problems. 4185 | # Hook for its removal unless debugging. 4186 | # Note that there is a small window in which the directory will not be cleaned: 4187 | # after its creation but before its name has been assigned to `$tmp'. 4188 | $debug || 4189 | { 4190 | tmp= ac_tmp= 4191 | trap 'exit_status=$? 4192 | : "${ac_tmp:=$tmp}" 4193 | { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status 4194 | ' 0 4195 | trap 'as_fn_exit 1' 1 2 13 15 4196 | } 4197 | # Create a (secure) tmp directory for tmp files. 4198 | 4199 | { 4200 | tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && 4201 | test -d "$tmp" 4202 | } || 4203 | { 4204 | tmp=./conf$$-$RANDOM 4205 | (umask 077 && mkdir "$tmp") 4206 | } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 4207 | ac_tmp=$tmp 4208 | 4209 | # Set up the scripts for CONFIG_HEADERS section. 4210 | # No need to generate them if there are no CONFIG_HEADERS. 4211 | # This happens for instance with `./config.status Makefile'. 4212 | if test -n "$CONFIG_HEADERS"; then 4213 | cat >"$ac_tmp/defines.awk" <<\_ACAWK || 4214 | BEGIN { 4215 | _ACEOF 4216 | 4217 | # Transform confdefs.h into an awk script `defines.awk', embedded as 4218 | # here-document in config.status, that substitutes the proper values into 4219 | # config.h.in to produce config.h. 4220 | 4221 | # Create a delimiter string that does not exist in confdefs.h, to ease 4222 | # handling of long lines. 4223 | ac_delim='%!_!# ' 4224 | for ac_last_try in false false :; do 4225 | ac_tt=`sed -n "/$ac_delim/p" confdefs.h` 4226 | if test -z "$ac_tt"; then 4227 | break 4228 | elif $ac_last_try; then 4229 | as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 4230 | else 4231 | ac_delim="$ac_delim!$ac_delim _$ac_delim!! " 4232 | fi 4233 | done 4234 | 4235 | # For the awk script, D is an array of macro values keyed by name, 4236 | # likewise P contains macro parameters if any. Preserve backslash 4237 | # newline sequences. 4238 | 4239 | ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* 4240 | sed -n ' 4241 | s/.\{148\}/&'"$ac_delim"'/g 4242 | t rset 4243 | :rset 4244 | s/^[ ]*#[ ]*define[ ][ ]*/ / 4245 | t def 4246 | d 4247 | :def 4248 | s/\\$// 4249 | t bsnl 4250 | s/["\\]/\\&/g 4251 | s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ 4252 | D["\1"]=" \3"/p 4253 | s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p 4254 | d 4255 | :bsnl 4256 | s/["\\]/\\&/g 4257 | s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ 4258 | D["\1"]=" \3\\\\\\n"\\/p 4259 | t cont 4260 | s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p 4261 | t cont 4262 | d 4263 | :cont 4264 | n 4265 | s/.\{148\}/&'"$ac_delim"'/g 4266 | t clear 4267 | :clear 4268 | s/\\$// 4269 | t bsnlc 4270 | s/["\\]/\\&/g; s/^/"/; s/$/"/p 4271 | d 4272 | :bsnlc 4273 | s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p 4274 | b cont 4275 | ' >$CONFIG_STATUS || ac_write_fail=1 4278 | 4279 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 4280 | for (key in D) D_is_set[key] = 1 4281 | FS = "" 4282 | } 4283 | /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { 4284 | line = \$ 0 4285 | split(line, arg, " ") 4286 | if (arg[1] == "#") { 4287 | defundef = arg[2] 4288 | mac1 = arg[3] 4289 | } else { 4290 | defundef = substr(arg[1], 2) 4291 | mac1 = arg[2] 4292 | } 4293 | split(mac1, mac2, "(") #) 4294 | macro = mac2[1] 4295 | prefix = substr(line, 1, index(line, defundef) - 1) 4296 | if (D_is_set[macro]) { 4297 | # Preserve the white space surrounding the "#". 4298 | print prefix "define", macro P[macro] D[macro] 4299 | next 4300 | } else { 4301 | # Replace #undef with comments. This is necessary, for example, 4302 | # in the case of _POSIX_SOURCE, which is predefined and required 4303 | # on some systems where configure will not decide to define it. 4304 | if (defundef == "undef") { 4305 | print "/*", prefix defundef, macro, "*/" 4306 | next 4307 | } 4308 | } 4309 | } 4310 | { print } 4311 | _ACAWK 4312 | _ACEOF 4313 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 4314 | as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 4315 | fi # test -n "$CONFIG_HEADERS" 4316 | 4317 | 4318 | eval set X " :H $CONFIG_HEADERS " 4319 | shift 4320 | for ac_tag 4321 | do 4322 | case $ac_tag in 4323 | :[FHLC]) ac_mode=$ac_tag; continue;; 4324 | esac 4325 | case $ac_mode$ac_tag in 4326 | :[FHL]*:*);; 4327 | :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; 4328 | :[FH]-) ac_tag=-:-;; 4329 | :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; 4330 | esac 4331 | ac_save_IFS=$IFS 4332 | IFS=: 4333 | set x $ac_tag 4334 | IFS=$ac_save_IFS 4335 | shift 4336 | ac_file=$1 4337 | shift 4338 | 4339 | case $ac_mode in 4340 | :L) ac_source=$1;; 4341 | :[FH]) 4342 | ac_file_inputs= 4343 | for ac_f 4344 | do 4345 | case $ac_f in 4346 | -) ac_f="$ac_tmp/stdin";; 4347 | *) # Look for the file first in the build tree, then in the source tree 4348 | # (if the path is not absolute). The absolute path cannot be DOS-style, 4349 | # because $ac_f cannot contain `:'. 4350 | test -f "$ac_f" || 4351 | case $ac_f in 4352 | [\\/$]*) false;; 4353 | *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; 4354 | esac || 4355 | as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; 4356 | esac 4357 | case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac 4358 | as_fn_append ac_file_inputs " '$ac_f'" 4359 | done 4360 | 4361 | # Let's still pretend it is `configure' which instantiates (i.e., don't 4362 | # use $as_me), people would be surprised to read: 4363 | # /* config.h. Generated by config.status. */ 4364 | configure_input='Generated from '` 4365 | $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' 4366 | `' by configure.' 4367 | if test x"$ac_file" != x-; then 4368 | configure_input="$ac_file. $configure_input" 4369 | { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 4370 | $as_echo "$as_me: creating $ac_file" >&6;} 4371 | fi 4372 | # Neutralize special characters interpreted by sed in replacement strings. 4373 | case $configure_input in #( 4374 | *\&* | *\|* | *\\* ) 4375 | ac_sed_conf_input=`$as_echo "$configure_input" | 4376 | sed 's/[\\\\&|]/\\\\&/g'`;; #( 4377 | *) ac_sed_conf_input=$configure_input;; 4378 | esac 4379 | 4380 | case $ac_tag in 4381 | *:-:* | *:-) cat >"$ac_tmp/stdin" \ 4382 | || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; 4383 | esac 4384 | ;; 4385 | esac 4386 | 4387 | ac_dir=`$as_dirname -- "$ac_file" || 4388 | $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ 4389 | X"$ac_file" : 'X\(//\)[^/]' \| \ 4390 | X"$ac_file" : 'X\(//\)$' \| \ 4391 | X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || 4392 | $as_echo X"$ac_file" | 4393 | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ 4394 | s//\1/ 4395 | q 4396 | } 4397 | /^X\(\/\/\)[^/].*/{ 4398 | s//\1/ 4399 | q 4400 | } 4401 | /^X\(\/\/\)$/{ 4402 | s//\1/ 4403 | q 4404 | } 4405 | /^X\(\/\).*/{ 4406 | s//\1/ 4407 | q 4408 | } 4409 | s/.*/./; q'` 4410 | as_dir="$ac_dir"; as_fn_mkdir_p 4411 | ac_builddir=. 4412 | 4413 | case "$ac_dir" in 4414 | .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; 4415 | *) 4416 | ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` 4417 | # A ".." for each directory in $ac_dir_suffix. 4418 | ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` 4419 | case $ac_top_builddir_sub in 4420 | "") ac_top_builddir_sub=. ac_top_build_prefix= ;; 4421 | *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; 4422 | esac ;; 4423 | esac 4424 | ac_abs_top_builddir=$ac_pwd 4425 | ac_abs_builddir=$ac_pwd$ac_dir_suffix 4426 | # for backward compatibility: 4427 | ac_top_builddir=$ac_top_build_prefix 4428 | 4429 | case $srcdir in 4430 | .) # We are building in place. 4431 | ac_srcdir=. 4432 | ac_top_srcdir=$ac_top_builddir_sub 4433 | ac_abs_top_srcdir=$ac_pwd ;; 4434 | [\\/]* | ?:[\\/]* ) # Absolute name. 4435 | ac_srcdir=$srcdir$ac_dir_suffix; 4436 | ac_top_srcdir=$srcdir 4437 | ac_abs_top_srcdir=$srcdir ;; 4438 | *) # Relative name. 4439 | ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix 4440 | ac_top_srcdir=$ac_top_build_prefix$srcdir 4441 | ac_abs_top_srcdir=$ac_pwd/$srcdir ;; 4442 | esac 4443 | ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix 4444 | 4445 | 4446 | case $ac_mode in 4447 | 4448 | :H) 4449 | # 4450 | # CONFIG_HEADER 4451 | # 4452 | if test x"$ac_file" != x-; then 4453 | { 4454 | $as_echo "/* $configure_input */" \ 4455 | && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" 4456 | } >"$ac_tmp/config.h" \ 4457 | || as_fn_error $? "could not create $ac_file" "$LINENO" 5 4458 | if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then 4459 | { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 4460 | $as_echo "$as_me: $ac_file is unchanged" >&6;} 4461 | else 4462 | rm -f "$ac_file" 4463 | mv "$ac_tmp/config.h" "$ac_file" \ 4464 | || as_fn_error $? "could not create $ac_file" "$LINENO" 5 4465 | fi 4466 | else 4467 | $as_echo "/* $configure_input */" \ 4468 | && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ 4469 | || as_fn_error $? "could not create -" "$LINENO" 5 4470 | fi 4471 | ;; 4472 | 4473 | 4474 | esac 4475 | 4476 | done # for ac_tag 4477 | 4478 | 4479 | as_fn_exit 0 4480 | _ACEOF 4481 | ac_clean_files=$ac_clean_files_save 4482 | 4483 | test $ac_write_fail = 0 || 4484 | as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 4485 | 4486 | 4487 | # configure is writing to config.log, and then calls config.status. 4488 | # config.status does its own redirection, appending to config.log. 4489 | # Unfortunately, on DOS this fails, as config.log is still kept open 4490 | # by configure, so config.status won't be able to write to it; its 4491 | # output is simply discarded. So we exec the FD to /dev/null, 4492 | # effectively closing config.log, so it can be properly (re)opened and 4493 | # appended to by config.status. When coming back to configure, we 4494 | # need to make the FD available again. 4495 | if test "$no_create" != yes; then 4496 | ac_cs_success=: 4497 | ac_config_status_args= 4498 | test "$silent" = yes && 4499 | ac_config_status_args="$ac_config_status_args --quiet" 4500 | exec 5>/dev/null 4501 | $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false 4502 | exec 5>>config.log 4503 | # Use ||, not &&, to avoid exiting from the if with $? = 1, which 4504 | # would make configure fail if this is the last instruction. 4505 | $ac_cs_success || as_fn_exit 1 4506 | fi 4507 | if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then 4508 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 4509 | $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} 4510 | fi 4511 | 4512 | -------------------------------------------------------------------------------- /configure.ac: -------------------------------------------------------------------------------- 1 | # -*- Autoconf -*- 2 | # Process this file with autoconf to produce a configure script. 3 | 4 | AC_PREREQ([2.69]) 5 | AC_INIT() 6 | 7 | AC_PROG_CC 8 | 9 | AC_CONFIG_SRCDIR([src/file-stat.c]) 10 | AC_CONFIG_HEADERS([config.h]) 11 | 12 | AC_CHECK_MEMBERS([struct stat.st_blksize]) 13 | AC_CHECK_MEMBERS([struct stat.st_blocks]) 14 | AC_CHECK_MEMBERS([struct stat.st_rdev]) 15 | 16 | AC_CHECK_MEMBERS([struct stat.st_atim]) 17 | AC_CHECK_MEMBERS([struct stat.st_atimespec]) 18 | AC_CHECK_MEMBERS([struct stat.st_atimensec]) 19 | AC_CHECK_MEMBERS([struct stat.st_mtim]) 20 | AC_CHECK_MEMBERS([struct stat.st_mtimespec]) 21 | AC_CHECK_MEMBERS([struct stat.st_mtimensec]) 22 | AC_CHECK_MEMBERS([struct stat.st_ctim]) 23 | AC_CHECK_MEMBERS([struct stat.st_ctimespec]) 24 | AC_CHECK_MEMBERS([struct stat.st_ctimensec]) 25 | AC_CHECK_MEMBERS([struct stat.st_birthtimespec]) 26 | 27 | AC_CHECK_FUNCS(getgroups) 28 | AC_CHECK_FUNCS(lstat) 29 | 30 | AC_CHECK_HEADERS(sys/sysmacros.h) 31 | 32 | AC_OUTPUT 33 | -------------------------------------------------------------------------------- /mrbgem.rake: -------------------------------------------------------------------------------- 1 | MRuby::Gem::Specification.new('mruby-file-stat') do |spec| 2 | spec.license = 'MIT' 3 | spec.author = 'ksss ' 4 | spec.add_dependency('mruby-time') 5 | 6 | env = { 7 | 'CC' => "#{build.cc.command} #{build.cc.flags.join(' ')}", 8 | 'CXX' => "#{build.cxx.command} #{build.cxx.flags.join(' ')}", 9 | 'LD' => "#{build.linker.command} #{build.linker.flags.join(' ')}", 10 | 'AR' => build.archiver.command 11 | } 12 | config = "#{build_dir}/config.h" 13 | 14 | file config do 15 | FileUtils.mkdir_p build_dir, :verbose => true 16 | Dir.chdir build_dir do 17 | if ENV['OS'] == 'Windows_NT' 18 | _pp 'on Windows', dir 19 | FileUtils.touch "#{build_dir}/config.h", :verbose => true 20 | else 21 | _pp './configure', dir 22 | host = '' 23 | if build.kind_of?(MRuby::CrossBuild) && build.host_target 24 | host = "--host #{build.host_target}" 25 | end 26 | system env, "#{dir}/configure #{host}" 27 | end 28 | end 29 | end 30 | 31 | # build hook 32 | file "#{dir}/src/file-stat.c" => config 33 | 34 | task :clean do 35 | FileUtils.rm_f config, :verbose => true 36 | end 37 | 38 | cc.include_paths << build_dir 39 | end 40 | -------------------------------------------------------------------------------- /mrblib/ext.rb: -------------------------------------------------------------------------------- 1 | class File 2 | def self.stat(fname) 3 | File::Stat.new(fname) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /mrblib/file-stat.rb: -------------------------------------------------------------------------------- 1 | class File 2 | class Stat 3 | include Comparable 4 | 5 | def <=>(other) 6 | if other.kind_of?(self.class) 7 | self.mtime <=> other.mtime 8 | else 9 | nil 10 | end 11 | end 12 | 13 | def inspect 14 | _dev = dev 15 | _dev = "0x#{_dev.to_s(16)}" if _dev.kind_of?(Fixnum) 16 | _mode = mode 17 | _mode = "0#{_mode.to_s(8)}" if _mode.kind_of?(Fixnum) 18 | _rdev = rdev 19 | _rdev = "0x#{_rdev.to_s(16)}" if _rdev.kind_of?(Fixnum) 20 | 21 | stats = { 22 | 'dev' => _dev, 23 | 'ino' => ino, 24 | 'mode' => _mode, 25 | 'nlink' => nlink, 26 | 'uid' => uid, 27 | 'gid' => gid, 28 | 'rdev' => _rdev, 29 | 'size' => size, 30 | 'blksize' => blksize, 31 | 'blocks' => blocks, 32 | 'atime' => atime, 33 | 'mtime' => mtime, 34 | 'ctime' => ctime, 35 | } 36 | begin 37 | stats['birthtime'] = birthtime 38 | rescue NotImplementedError 39 | # skip 40 | end 41 | 42 | "#<#{self.class.to_s} #{stats.map{|k, v| "#{k}=#{v}"}.join(', ')}>" 43 | end 44 | 45 | def size? 46 | s = size 47 | s == 0 ? nil : s 48 | end 49 | 50 | def zero? 51 | size == 0 52 | end 53 | end 54 | end 55 | -------------------------------------------------------------------------------- /src/file-stat.c: -------------------------------------------------------------------------------- 1 | /** 2 | * original is https://github.com/ruby/ruby/blob/trunk/file.c 3 | */ 4 | 5 | #include "config.h" 6 | 7 | #include "mruby.h" 8 | #include "mruby/string.h" 9 | #include "mruby/data.h" 10 | #include "mruby/error.h" 11 | #include "mruby/class.h" 12 | 13 | #include 14 | #ifdef HAVE_SYS_SYSMACROS_H 15 | #include 16 | #endif 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | #if defined(_WIN32) || defined(_WIN64) 23 | 24 | #if !defined S_IXUSR && !defined __MINGW32__ 25 | # define S_IXUSR 0100 26 | #endif 27 | #ifndef S_IXGRP 28 | # define S_IXGRP 0010 29 | #endif 30 | #ifndef S_IXOTH 31 | # define S_IXOTH 0001 32 | #endif 33 | 34 | #else 35 | #include 36 | #endif 37 | 38 | #ifndef S_IRUGO 39 | # define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) 40 | #endif 41 | 42 | #ifndef S_IWUGO 43 | # define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) 44 | #endif 45 | 46 | #ifndef S_IXUGO 47 | # define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) 48 | #endif 49 | 50 | #ifndef S_ISLNK 51 | # ifdef _S_ISLNK 52 | # define S_ISLNK(m) _S_ISLNK(m) 53 | # else 54 | # ifdef _S_IFLNK 55 | # define S_ISLNK(m) (((m) & S_IFMT) == _S_IFLNK) 56 | # else 57 | # ifdef S_IFLNK 58 | # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 59 | # endif 60 | # endif 61 | # endif 62 | #endif 63 | 64 | #ifdef S_IFIFO 65 | # ifndef S_ISFIFO 66 | # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 67 | # endif 68 | #endif 69 | 70 | #ifndef S_ISSOCK 71 | # ifdef _S_ISSOCK 72 | # define S_ISSOCK(m) _S_ISSOCK(m) 73 | # else 74 | # ifdef _S_IFSOCK 75 | # define S_ISSOCK(m) (((m) & S_IFMT) == _S_IFSOCK) 76 | # else 77 | # ifdef S_IFSOCK 78 | # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 79 | # endif 80 | # endif 81 | # endif 82 | #endif 83 | 84 | #ifndef S_ISBLK 85 | # ifdef S_IFBLK 86 | # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 87 | # else 88 | # define S_ISBLK(m) (0) /* anytime false */ 89 | # endif 90 | #endif 91 | 92 | #ifndef S_ISCHR 93 | # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 94 | #endif 95 | 96 | #ifndef S_ISREG 97 | # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 98 | #endif 99 | 100 | #ifndef S_ISDIR 101 | # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 102 | #endif 103 | 104 | #define STAT(p,s) stat(p,s) 105 | #ifdef HAVE_LSTAT 106 | # define LSTAT(p,s) lstat(p,s) 107 | #else 108 | # define LSTAT(p,s) stat(p,s) 109 | #endif 110 | #define MRB_MAX_GROUPS (65536) 111 | 112 | #if defined(_WIN32) || defined(_WIN64) 113 | typedef unsigned int uid_t; 114 | typedef unsigned int gid_t; 115 | uid_t 116 | getuid(void) 117 | { 118 | return 0; 119 | } 120 | uid_t 121 | geteuid(void) 122 | { 123 | return 0; 124 | } 125 | gid_t 126 | getgid(void) 127 | { 128 | return 0; 129 | } 130 | gid_t 131 | getegid(void) 132 | { 133 | return 0; 134 | } 135 | #endif 136 | #define GETGROUPS_T gid_t 137 | 138 | #if defined(S_IXGRP) && !defined(_WIN32) && !defined(__CYGWIN__) 139 | # define USE_GETEUID 1 140 | #endif 141 | 142 | #ifdef __native_client__ 143 | # undef USE_GETEUID 144 | #endif 145 | 146 | struct mrb_data_type mrb_stat_type = { "File::Stat", mrb_free }; 147 | 148 | static struct stat * 149 | mrb_stat_alloc(mrb_state *mrb) 150 | { 151 | return (struct stat *)mrb_malloc(mrb, sizeof(struct stat)); 152 | } 153 | 154 | static mrb_value 155 | file_s_lstat(mrb_state *mrb, mrb_value klass) 156 | { 157 | struct RClass *file_class; 158 | struct RClass *stat_class; 159 | struct stat st, *ptr; 160 | mrb_value fname, tmp; 161 | char *path; 162 | 163 | mrb_get_args(mrb, "o", &fname); 164 | 165 | tmp = mrb_check_convert_type(mrb, fname, MRB_TT_STRING, "String", "to_path"); 166 | if (mrb_nil_p(tmp)) { 167 | tmp = mrb_convert_type(mrb, fname, MRB_TT_STRING, "String", "to_str"); 168 | } 169 | path = mrb_str_to_cstr(mrb, tmp); 170 | { 171 | char *locale_path; 172 | int lstat_result; 173 | 174 | locale_path = mrb_locale_from_utf8(path, -1); 175 | lstat_result = LSTAT(locale_path, &st); 176 | mrb_locale_free(locale_path); 177 | if (lstat_result == -1) { 178 | mrb_sys_fail(mrb, path); 179 | } 180 | } 181 | 182 | file_class = mrb_class_ptr(klass); 183 | stat_class = mrb_class_get_under(mrb, file_class, "Stat"); 184 | ptr = mrb_stat_alloc(mrb); 185 | *ptr = st; 186 | 187 | return mrb_obj_value(Data_Wrap_Struct(mrb, stat_class, &mrb_stat_type, ptr)); 188 | } 189 | 190 | static mrb_value 191 | stat_initialize(mrb_state *mrb, mrb_value self) 192 | { 193 | struct stat st, *ptr; 194 | mrb_value fname, tmp; 195 | char *path; 196 | 197 | mrb_get_args(mrb, "o", &fname); 198 | 199 | tmp = mrb_check_convert_type(mrb, fname, MRB_TT_STRING, "String", "to_path"); 200 | if (mrb_nil_p(tmp)) { 201 | tmp = mrb_convert_type(mrb, fname, MRB_TT_STRING, "String", "to_str"); 202 | } 203 | path = mrb_str_to_cstr(mrb, tmp); 204 | { 205 | char *locale_path; 206 | int stat_result; 207 | 208 | locale_path = mrb_locale_from_utf8(path, -1); 209 | stat_result = STAT(locale_path, &st); 210 | mrb_locale_free(locale_path); 211 | if (stat_result == -1) { 212 | mrb_sys_fail(mrb, path); 213 | } 214 | } 215 | 216 | ptr = (struct stat *)DATA_PTR(self); 217 | if (ptr) { 218 | mrb_free(mrb, ptr); 219 | } 220 | 221 | ptr = mrb_stat_alloc(mrb); 222 | *ptr = st; 223 | 224 | DATA_TYPE(self) = &mrb_stat_type; 225 | DATA_PTR(self) = ptr; 226 | 227 | return mrb_nil_value(); 228 | } 229 | 230 | static mrb_value 231 | stat_initialize_copy(mrb_state *mrb, mrb_value copy) 232 | { 233 | mrb_value orig; 234 | 235 | mrb_get_args(mrb, "o", &orig); 236 | 237 | if (mrb_obj_equal(mrb, copy, orig)) return copy; 238 | 239 | if (!mrb_obj_is_instance_of(mrb, orig, mrb_obj_class(mrb, copy))) { 240 | mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class"); 241 | } 242 | 243 | if (DATA_PTR(copy)) { 244 | mrb_free(mrb, DATA_PTR(copy)); 245 | DATA_PTR(copy) = 0; 246 | } 247 | 248 | if (DATA_PTR(orig)) { 249 | DATA_PTR(copy) = mrb_malloc(mrb, sizeof(struct stat)); 250 | DATA_TYPE(copy) = &mrb_stat_type; 251 | *(struct stat *)DATA_PTR(copy) = *(struct stat *)DATA_PTR(orig); 252 | } 253 | return copy; 254 | } 255 | 256 | static struct stat * 257 | get_stat(mrb_state *mrb, mrb_value self) 258 | { 259 | struct stat *st; 260 | 261 | st = (struct stat *)mrb_data_get_ptr(mrb, self, &mrb_stat_type); 262 | if (!st) mrb_raise(mrb, E_TYPE_ERROR, "uninitialized File::Stat"); 263 | return st; 264 | } 265 | 266 | static mrb_value 267 | mrb_ll2num(mrb_state *mrb, long long t) 268 | { 269 | if (MRB_INT_MIN <= t && t <= MRB_INT_MAX) { 270 | /* mruby is 2b188ed8a191257f23ddf6f8a27bf1d3964587ed or later. */ 271 | #ifdef SET_FIXNUM_VALUE 272 | return mrb_int_value(mrb, (mrb_int)t); 273 | #else 274 | return mrb_fixnum_value((mrb_int)t); 275 | #endif 276 | } else { 277 | return mrb_float_value(mrb, (mrb_float)t); 278 | } 279 | } 280 | 281 | static mrb_value 282 | io_stat(mrb_state *mrb, mrb_value self) 283 | { 284 | struct RClass *file_class; 285 | struct RClass *stat_class; 286 | struct stat st, *ptr; 287 | mrb_value fileno; 288 | 289 | if (mrb_respond_to(mrb, self, mrb_intern_lit(mrb, "fileno"))) { 290 | fileno = mrb_funcall(mrb, self, "fileno", 0); 291 | } 292 | else { 293 | mrb_raise(mrb, E_NOTIMP_ERROR, "`fileno' is not implemented"); 294 | } 295 | 296 | if (fstat(mrb_fixnum(fileno), &st) == -1) { 297 | mrb_sys_fail(mrb, "fstat"); 298 | } 299 | 300 | file_class = mrb_class_get(mrb, "File"); 301 | stat_class = mrb_class_get_under(mrb, file_class, "Stat"); 302 | ptr = mrb_stat_alloc(mrb); 303 | *ptr = st; 304 | 305 | return mrb_obj_value(Data_Wrap_Struct(mrb, stat_class, &mrb_stat_type, ptr)); 306 | } 307 | 308 | static mrb_value 309 | stat_dev(mrb_state *mrb, mrb_value self) 310 | { 311 | return mrb_fixnum_value(get_stat(mrb, self)->st_dev); 312 | } 313 | 314 | static mrb_value 315 | stat_dev_major(mrb_state *mrb, mrb_value self) 316 | { 317 | #if defined(major) 318 | return mrb_fixnum_value(major(get_stat(mrb, self)->st_dev)); 319 | #else 320 | return mrb_nil_value(); // NotImplemented 321 | #endif 322 | } 323 | 324 | static mrb_value 325 | stat_dev_minor(mrb_state *mrb, mrb_value self) 326 | { 327 | #if defined(minor) 328 | return mrb_fixnum_value(minor(get_stat(mrb, self)->st_dev)); 329 | #else 330 | return mrb_nil_value(); // NotImplemented 331 | #endif 332 | } 333 | 334 | static mrb_value 335 | stat_ino(mrb_state *mrb, mrb_value self) 336 | { 337 | return mrb_ll2num(mrb, get_stat(mrb, self)->st_ino); 338 | } 339 | 340 | static mrb_value 341 | stat_mode(mrb_state *mrb, mrb_value self) 342 | { 343 | return mrb_fixnum_value(get_stat(mrb, self)->st_mode); 344 | } 345 | 346 | static mrb_value 347 | stat_nlink(mrb_state *mrb, mrb_value self) 348 | { 349 | return mrb_fixnum_value(get_stat(mrb, self)->st_nlink); 350 | } 351 | 352 | static mrb_value 353 | stat_uid(mrb_state *mrb, mrb_value self) 354 | { 355 | return mrb_ll2num(mrb, get_stat(mrb, self)->st_uid); 356 | } 357 | 358 | static mrb_value 359 | stat_gid(mrb_state *mrb, mrb_value self) 360 | { 361 | return mrb_ll2num(mrb, get_stat(mrb, self)->st_gid); 362 | } 363 | 364 | static mrb_value 365 | stat_rdev(mrb_state *mrb, mrb_value self) 366 | { 367 | return mrb_fixnum_value(get_stat(mrb, self)->st_rdev); 368 | } 369 | 370 | static mrb_value 371 | stat_rdev_major(mrb_state *mrb, mrb_value self) 372 | { 373 | #if defined(major) 374 | return mrb_fixnum_value(major(get_stat(mrb, self)->st_rdev)); 375 | #else 376 | return mrb_nil_value(); // NotImplemented 377 | #endif 378 | } 379 | 380 | static mrb_value 381 | stat_rdev_minor(mrb_state *mrb, mrb_value self) 382 | { 383 | #if defined(minor) 384 | return mrb_fixnum_value(minor(get_stat(mrb, self)->st_rdev)); 385 | #else 386 | return mrb_nil_value(); // NotImplemented 387 | #endif 388 | } 389 | 390 | static mrb_value 391 | time_at_with_sec_nsec(mrb_state *mrb, time_t sec, long nsec) 392 | { 393 | return mrb_funcall(mrb, mrb_obj_value(mrb_class_get(mrb, "Time")), "at", 2, mrb_ll2num(mrb, sec), mrb_ll2num(mrb, nsec / 1000)); 394 | } 395 | 396 | static struct timespec 397 | stat_atimespec(const struct stat *st) 398 | { 399 | struct timespec ts; 400 | ts.tv_sec = st->st_atime; 401 | #if defined(HAVE_STRUCT_STAT_ST_ATIM) 402 | ts.tv_nsec = st->st_atim.tv_nsec; 403 | #elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC) 404 | ts.tv_nsec = st->st_atimespec.tv_nsec; 405 | #elif defined(HAVE_STRUCT_STAT_ST_ATIMENSEC) 406 | ts.tv_nsec = (long)st->st_atimensec; 407 | #else 408 | ts.tv_nsec = 0; 409 | #endif 410 | return ts; 411 | } 412 | 413 | static mrb_value 414 | stat_atime(mrb_state *mrb, mrb_value self) 415 | { 416 | struct timespec ts = stat_atimespec(get_stat(mrb, self)); 417 | return time_at_with_sec_nsec(mrb, ts.tv_sec, ts.tv_nsec); 418 | } 419 | 420 | static struct timespec 421 | stat_mtimespec(const struct stat *st) 422 | { 423 | struct timespec ts; 424 | ts.tv_sec = st->st_mtime; 425 | #if defined(HAVE_STRUCT_STAT_ST_MTIM) 426 | ts.tv_nsec = st->st_mtim.tv_nsec; 427 | #elif defined(HAVE_STRUCT_STAT_ST_MTIMESPEC) 428 | ts.tv_nsec = st->st_mtimespec.tv_nsec; 429 | #elif defined(HAVE_STRUCT_STAT_ST_MTIMENSEC) 430 | ts.tv_nsec = (long)st->st_mtimensec; 431 | #else 432 | ts.tv_nsec = 0; 433 | #endif 434 | return ts; 435 | } 436 | 437 | static mrb_value 438 | stat_mtime(mrb_state *mrb, mrb_value self) 439 | { 440 | struct timespec ts = stat_mtimespec(get_stat(mrb, self)); 441 | return time_at_with_sec_nsec(mrb, ts.tv_sec, ts.tv_nsec); 442 | } 443 | 444 | static struct timespec 445 | stat_ctimespec(const struct stat *st) 446 | { 447 | struct timespec ts; 448 | ts.tv_sec = st->st_ctime; 449 | #if defined(HAVE_STRUCT_STAT_ST_CTIM) 450 | ts.tv_nsec = st->st_ctim.tv_nsec; 451 | #elif defined(HAVE_STRUCT_STAT_ST_CTIMESPEC) 452 | ts.tv_nsec = st->st_ctimespec.tv_nsec; 453 | #elif defined(HAVE_STRUCT_STAT_ST_CTIMENSEC) 454 | ts.tv_nsec = (long)st->st_ctimensec; 455 | #else 456 | ts.tv_nsec = 0; 457 | #endif 458 | return ts; 459 | } 460 | 461 | static mrb_value 462 | stat_ctime(mrb_state *mrb, mrb_value self) 463 | { 464 | struct timespec ts = stat_ctimespec(get_stat(mrb, self)); 465 | return time_at_with_sec_nsec(mrb, ts.tv_sec, ts.tv_nsec); 466 | } 467 | 468 | #if defined(HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC) 469 | static mrb_value 470 | stat_birthtime(mrb_state *mrb, mrb_value self) 471 | { 472 | struct stat *st = get_stat(mrb, self); 473 | const struct timespec *ts = &st->st_birthtimespec; 474 | return time_at_with_sec_nsec(mrb, ts->tv_sec, ts->tv_nsec); 475 | } 476 | #elif defined(_WIN32) 477 | # define stat_birthtime stat_ctime 478 | #else 479 | # define stat_birthtime mrb_notimplement_m 480 | #endif 481 | 482 | static mrb_value 483 | stat_size(mrb_state *mrb, mrb_value self) 484 | { 485 | return mrb_ll2num(mrb, get_stat(mrb, self)->st_size); 486 | } 487 | 488 | static mrb_value 489 | stat_blksize(mrb_state *mrb, mrb_value self) 490 | { 491 | #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE 492 | return mrb_fixnum_value(get_stat(mrb, self)->st_blksize); 493 | #else 494 | return mrb_nil_value(); 495 | #endif 496 | } 497 | 498 | static mrb_value 499 | stat_blocks(mrb_state *mrb, mrb_value self) 500 | { 501 | #ifdef HAVE_STRUCT_STAT_ST_BLOCKS 502 | return mrb_ll2num(mrb, get_stat(mrb, self)->st_blocks); 503 | #else 504 | return mrb_nil_value(); 505 | #endif 506 | } 507 | 508 | static int 509 | mrb_group_member(mrb_state *mrb, GETGROUPS_T gid) 510 | { 511 | #if defined(_WIN32) || !defined(HAVE_GETGROUPS) 512 | return FALSE; 513 | #else 514 | int rv = FALSE; 515 | int groups = 16; 516 | GETGROUPS_T *gary = NULL; 517 | int anum = -1; 518 | 519 | if (getgid() == gid || getegid() == gid) 520 | return TRUE; 521 | 522 | /* 523 | * On Mac OS X (Mountain Lion), NGROUPS is 16. But libc and kernel 524 | * accept more larger value. 525 | * So we don't trunk NGROUPS anymore. 526 | */ 527 | while (groups <= MRB_MAX_GROUPS) { 528 | gary = (GETGROUPS_T*)mrb_malloc(mrb, sizeof(GETGROUPS_T) * (unsigned int)groups); 529 | anum = getgroups(groups, gary); 530 | if (anum != -1 && anum != groups) 531 | break; 532 | groups *= 2; 533 | if (gary) { 534 | mrb_free(mrb, gary); 535 | gary = 0; 536 | } 537 | } 538 | if (anum == -1) 539 | return FALSE; 540 | 541 | while (--anum >= 0) { 542 | if (gary[anum] == gid) { 543 | rv = TRUE; 544 | break; 545 | } 546 | } 547 | 548 | if (gary) { 549 | mrb_free(mrb, gary); 550 | } 551 | return rv; 552 | #endif 553 | } 554 | 555 | static mrb_value 556 | stat_grpowned_p(mrb_state *mrb, mrb_value self) 557 | { 558 | #ifndef _WIN32 559 | if (mrb_group_member(mrb, get_stat(mrb, self)->st_gid)) return mrb_true_value(); 560 | #endif 561 | return mrb_false_value(); 562 | } 563 | 564 | static mrb_value 565 | stat_readable_p(mrb_state *mrb, mrb_value self) 566 | { 567 | struct stat *st; 568 | #ifdef USE_GETEUID 569 | if (geteuid() == 0) 570 | return mrb_true_value(); 571 | #endif 572 | st = get_stat(mrb, self); 573 | #ifdef S_IRUSR 574 | if (st->st_uid == geteuid()) 575 | return st->st_mode & S_IRUSR ? mrb_true_value() : mrb_false_value(); 576 | #endif 577 | #ifdef S_IRGRP 578 | if (mrb_group_member(mrb, st->st_gid)) 579 | return st->st_mode & S_IRGRP ? mrb_true_value() : mrb_false_value(); 580 | #endif 581 | #ifdef S_IROTH 582 | if (!(st->st_mode & S_IROTH)) 583 | return mrb_false_value(); 584 | #endif 585 | return mrb_true_value(); 586 | } 587 | 588 | static mrb_value 589 | stat_readable_real_p(mrb_state *mrb, mrb_value self) 590 | { 591 | struct stat *st; 592 | 593 | #ifdef USE_GETEUID 594 | if (getuid() == 0) 595 | return mrb_true_value(); 596 | #endif 597 | st = get_stat(mrb, self); 598 | #ifdef S_IRUSR 599 | if (st->st_uid == getuid()) 600 | return st->st_mode & S_IRUSR ? mrb_true_value() : mrb_false_value(); 601 | #endif 602 | #ifdef S_IRGRP 603 | if (mrb_group_member(mrb, st->st_gid)) 604 | return st->st_mode & S_IRGRP ? mrb_true_value() : mrb_false_value(); 605 | #endif 606 | #ifdef S_IROTH 607 | if (!(st->st_mode & S_IROTH)) return mrb_false_value(); 608 | #endif 609 | return mrb_true_value(); 610 | } 611 | 612 | static mrb_value 613 | stat_world_readable_p(mrb_state *mrb, mrb_value self) 614 | { 615 | #ifdef S_IROTH 616 | struct stat *st = get_stat(mrb, self); 617 | if ((st->st_mode & (S_IROTH)) == S_IROTH) { 618 | return mrb_fixnum_value(st->st_mode & (S_IRUGO|S_IWUGO|S_IXUGO)); 619 | } 620 | else { 621 | return mrb_nil_value(); 622 | } 623 | #else 624 | return mrb_nil_value(); 625 | #endif 626 | } 627 | 628 | 629 | static mrb_value 630 | stat_writable_p(mrb_state *mrb, mrb_value self) 631 | { 632 | struct stat *st; 633 | 634 | #ifdef USE_GETEUID 635 | if (geteuid() == 0) 636 | return mrb_true_value(); 637 | #endif 638 | st = get_stat(mrb, self); 639 | #ifdef S_IWUSR 640 | if (st->st_uid == geteuid()) 641 | return st->st_mode & S_IWUSR ? mrb_true_value() : mrb_false_value(); 642 | #endif 643 | #ifdef S_IWGRP 644 | if (mrb_group_member(mrb, st->st_gid)) 645 | return st->st_mode & S_IWGRP ? mrb_true_value() : mrb_false_value(); 646 | #endif 647 | #ifdef S_IWOTH 648 | if (!(st->st_mode & S_IWOTH)) 649 | return mrb_false_value(); 650 | #endif 651 | return mrb_true_value(); 652 | } 653 | 654 | static mrb_value 655 | stat_writable_real_p(mrb_state *mrb, mrb_value self) 656 | { 657 | struct stat *st; 658 | 659 | #ifdef USE_GETEUID 660 | if (getuid() == 0) 661 | return mrb_true_value(); 662 | #endif 663 | st = get_stat(mrb, self); 664 | #ifdef S_IWUSR 665 | if (st->st_uid == getuid()) 666 | return st->st_mode & S_IWUSR ? mrb_true_value() : mrb_false_value(); 667 | #endif 668 | #ifdef S_IWGRP 669 | if (mrb_group_member(mrb, st->st_gid)) 670 | return st->st_mode & S_IWGRP ? mrb_true_value() : mrb_false_value(); 671 | #endif 672 | #ifdef S_IWOTH 673 | if (!(st->st_mode & S_IWOTH)) return mrb_false_value(); 674 | #endif 675 | return mrb_true_value(); 676 | } 677 | 678 | static mrb_value 679 | stat_world_writable_p(mrb_state *mrb, mrb_value self) 680 | { 681 | #ifdef S_IWOTH 682 | struct stat *st = get_stat(mrb, self); 683 | if ((st->st_mode & (S_IWOTH)) == S_IWOTH) { 684 | return mrb_fixnum_value(st->st_mode & (S_IRUGO|S_IWUGO|S_IXUGO)); 685 | } 686 | else { 687 | return mrb_nil_value(); 688 | } 689 | #else 690 | return mrb_nil_value(); 691 | #endif 692 | } 693 | 694 | static mrb_value 695 | stat_executable_p(mrb_state *mrb, mrb_value self) 696 | { 697 | struct stat *st = get_stat(mrb, self); 698 | 699 | #ifdef USE_GETEUID 700 | if (geteuid() == 0) { 701 | return st->st_mode & S_IXUGO ? mrb_true_value() : mrb_false_value(); 702 | } 703 | #endif 704 | #ifdef S_IXUSR 705 | if (st->st_uid == geteuid()) 706 | return st->st_mode & S_IXUSR ? mrb_true_value() : mrb_false_value(); 707 | #endif 708 | #ifdef S_IXGRP 709 | if (mrb_group_member(mrb, st->st_gid)) 710 | return st->st_mode & S_IXGRP ? mrb_true_value() : mrb_false_value(); 711 | #endif 712 | #ifdef S_IXOTH 713 | if (!(st->st_mode & S_IXOTH)) 714 | return mrb_false_value(); 715 | #endif 716 | return mrb_true_value(); 717 | } 718 | 719 | static mrb_value 720 | stat_executable_real_p(mrb_state *mrb, mrb_value self) 721 | { 722 | struct stat *st = get_stat(mrb, self); 723 | 724 | #ifdef USE_GETEUID 725 | if (getuid() == 0) 726 | return st->st_mode & S_IXUGO ? mrb_true_value() : mrb_false_value(); 727 | #endif 728 | #ifdef S_IXUSR 729 | if (st->st_uid == getuid()) 730 | return st->st_mode & S_IXUSR ? mrb_true_value() : mrb_false_value(); 731 | #endif 732 | #ifdef S_IXGRP 733 | if (mrb_group_member(mrb, st->st_gid)) 734 | return st->st_mode & S_IXGRP ? mrb_true_value() : mrb_false_value(); 735 | #endif 736 | #ifdef S_IXOTH 737 | if (!(st->st_mode & S_IXOTH)) return mrb_false_value(); 738 | #endif 739 | return mrb_true_value(); 740 | } 741 | 742 | static mrb_value 743 | stat_symlink_p(mrb_state *mrb, mrb_value self) 744 | { 745 | #ifdef S_ISLNK 746 | if (S_ISLNK(get_stat(mrb, self)->st_mode)) 747 | return mrb_true_value(); 748 | #endif 749 | return mrb_false_value(); 750 | } 751 | 752 | static mrb_value 753 | stat_file_p(mrb_state *mrb, mrb_value self) 754 | { 755 | if (S_ISREG(get_stat(mrb, self)->st_mode)) 756 | return mrb_true_value(); 757 | return mrb_false_value(); 758 | } 759 | 760 | static mrb_value 761 | stat_directory_p(mrb_state *mrb, mrb_value self) 762 | { 763 | if (S_ISDIR(get_stat(mrb, self)->st_mode)) 764 | return mrb_true_value(); 765 | return mrb_false_value(); 766 | } 767 | 768 | static mrb_value 769 | stat_chardev_p(mrb_state *mrb, mrb_value self) 770 | { 771 | if (S_ISCHR(get_stat(mrb, self)->st_mode)) 772 | return mrb_true_value(); 773 | return mrb_false_value(); 774 | } 775 | 776 | static mrb_value 777 | stat_blockdev_p(mrb_state *mrb, mrb_value self) 778 | { 779 | #ifdef S_ISBLK 780 | if (S_ISBLK(get_stat(mrb, self)->st_mode)) 781 | return mrb_true_value(); 782 | #endif 783 | return mrb_false_value(); 784 | } 785 | 786 | static mrb_value 787 | stat_pipe_p(mrb_state *mrb, mrb_value self) 788 | { 789 | #ifdef S_ISFIFO 790 | if (S_ISFIFO(get_stat(mrb, self)->st_mode)) 791 | return mrb_true_value(); 792 | #endif 793 | return mrb_false_value(); 794 | } 795 | 796 | static mrb_value 797 | stat_socket_p(mrb_state *mrb, mrb_value self) 798 | { 799 | #ifdef S_ISSOCK 800 | if (S_ISSOCK(get_stat(mrb, self)->st_mode)) 801 | return mrb_true_value(); 802 | #endif 803 | return mrb_false_value(); 804 | } 805 | 806 | static mrb_value 807 | stat_setuid_p(mrb_state *mrb, mrb_value self) 808 | { 809 | #ifdef S_ISUID 810 | if (get_stat(mrb, self)->st_mode & S_ISUID) 811 | return mrb_true_value(); 812 | #endif 813 | return mrb_false_value(); 814 | } 815 | 816 | static mrb_value 817 | stat_setgid_p(mrb_state *mrb, mrb_value self) 818 | { 819 | #ifdef S_ISGID 820 | if (get_stat(mrb, self)->st_mode & S_ISGID) 821 | return mrb_true_value(); 822 | #endif 823 | return mrb_false_value(); 824 | } 825 | 826 | static mrb_value 827 | stat_sticky_p(mrb_state *mrb, mrb_value self) 828 | { 829 | #ifdef S_ISVTX 830 | if (get_stat(mrb, self)->st_mode & S_ISVTX) 831 | return mrb_true_value(); 832 | #endif 833 | return mrb_false_value(); 834 | } 835 | 836 | static mrb_value 837 | stat_ftype(mrb_state *mrb, mrb_value self) 838 | { 839 | struct stat *st = get_stat(mrb, self); 840 | const char *t; 841 | 842 | if (S_ISREG(st->st_mode)) { 843 | t = "file"; 844 | } 845 | else if (S_ISDIR(st->st_mode)) { 846 | t = "directory"; 847 | } 848 | else if (S_ISCHR(st->st_mode)) { 849 | t = "characterSpecial"; 850 | } 851 | #ifdef S_ISBLK 852 | else if (S_ISBLK(st->st_mode)) { 853 | t = "blockSpecial"; 854 | } 855 | #endif 856 | #ifdef S_ISFIFO 857 | else if (S_ISFIFO(st->st_mode)) { 858 | t = "fifo"; 859 | } 860 | #endif 861 | #ifdef S_ISLNK 862 | else if (S_ISLNK(st->st_mode)) { 863 | t = "link"; 864 | } 865 | #endif 866 | #ifdef S_ISSOCK 867 | else if (S_ISSOCK(st->st_mode)) { 868 | t = "socket"; 869 | } 870 | #endif 871 | else { 872 | t = "unknown"; 873 | } 874 | return mrb_str_new_static(mrb, t, (size_t)strlen(t)); 875 | } 876 | 877 | static mrb_value 878 | stat_owned_p(mrb_state *mrb, mrb_value self) 879 | { 880 | return get_stat(mrb, self)->st_uid == geteuid() ? mrb_true_value() : mrb_false_value(); 881 | } 882 | 883 | static mrb_value 884 | stat_owned_real_p(mrb_state *mrb, mrb_value self) 885 | { 886 | return get_stat(mrb, self)->st_uid == getuid() ? mrb_true_value() : mrb_false_value(); 887 | } 888 | 889 | void 890 | mrb_mruby_file_stat_gem_init(mrb_state* mrb) 891 | { 892 | struct RClass *io = mrb_define_class(mrb, "IO", mrb->object_class); 893 | struct RClass *file = mrb_define_class(mrb, "File", io); 894 | struct RClass *stat = mrb_define_class_under(mrb, file, "Stat", mrb->object_class); 895 | 896 | MRB_SET_INSTANCE_TT(stat, MRB_TT_DATA); 897 | 898 | mrb_define_method(mrb, io, "stat", io_stat, MRB_ARGS_NONE()); 899 | 900 | mrb_define_class_method(mrb, file, "lstat", file_s_lstat, MRB_ARGS_REQ(1)); 901 | 902 | mrb_define_method(mrb, stat, "initialize", stat_initialize, MRB_ARGS_REQ(1)); 903 | mrb_define_method(mrb, stat, "initialize_copy", stat_initialize_copy, MRB_ARGS_REQ(1)); 904 | mrb_define_method(mrb, stat, "dev", stat_dev, MRB_ARGS_NONE()); 905 | mrb_define_method(mrb, stat, "dev_major", stat_dev_major, MRB_ARGS_NONE()); 906 | mrb_define_method(mrb, stat, "dev_minor", stat_dev_minor, MRB_ARGS_NONE()); 907 | mrb_define_method(mrb, stat, "ino", stat_ino, MRB_ARGS_NONE()); 908 | mrb_define_method(mrb, stat, "mode", stat_mode, MRB_ARGS_NONE()); 909 | mrb_define_method(mrb, stat, "nlink", stat_nlink, MRB_ARGS_NONE()); 910 | mrb_define_method(mrb, stat, "uid", stat_uid, MRB_ARGS_NONE()); 911 | mrb_define_method(mrb, stat, "gid", stat_gid, MRB_ARGS_NONE()); 912 | mrb_define_method(mrb, stat, "rdev", stat_rdev, MRB_ARGS_NONE()); 913 | mrb_define_method(mrb, stat, "rdev_major", stat_rdev_major, MRB_ARGS_NONE()); 914 | mrb_define_method(mrb, stat, "rdev_minor", stat_rdev_minor, MRB_ARGS_NONE()); 915 | mrb_define_method(mrb, stat, "atime", stat_atime, MRB_ARGS_NONE()); 916 | mrb_define_method(mrb, stat, "mtime", stat_mtime, MRB_ARGS_NONE()); 917 | mrb_define_method(mrb, stat, "ctime", stat_ctime, MRB_ARGS_NONE()); 918 | mrb_define_method(mrb, stat, "birthtime", stat_birthtime, MRB_ARGS_NONE()); 919 | mrb_define_method(mrb, stat, "size", stat_size, MRB_ARGS_NONE()); 920 | mrb_define_method(mrb, stat, "blksize", stat_blksize, MRB_ARGS_NONE()); 921 | mrb_define_method(mrb, stat, "blocks", stat_blocks, MRB_ARGS_NONE()); 922 | mrb_define_method(mrb, stat, "grpowned?", stat_grpowned_p, MRB_ARGS_NONE()); 923 | mrb_define_method(mrb, stat, "readable?", stat_readable_p, MRB_ARGS_NONE()); 924 | mrb_define_method(mrb, stat, "readable_real?", stat_readable_real_p, MRB_ARGS_NONE()); 925 | mrb_define_method(mrb, stat, "world_readable?", stat_world_readable_p, MRB_ARGS_NONE()); 926 | mrb_define_method(mrb, stat, "writable?", stat_writable_p, MRB_ARGS_NONE()); 927 | mrb_define_method(mrb, stat, "writable_real?", stat_writable_real_p, MRB_ARGS_NONE()); 928 | mrb_define_method(mrb, stat, "world_writable?", stat_world_writable_p, MRB_ARGS_NONE()); 929 | mrb_define_method(mrb, stat, "executable?", stat_executable_p, MRB_ARGS_NONE()); 930 | mrb_define_method(mrb, stat, "executable_real?", stat_executable_real_p, MRB_ARGS_NONE()); 931 | 932 | mrb_define_method(mrb, stat, "symlink?", stat_symlink_p, MRB_ARGS_NONE()); 933 | mrb_define_method(mrb, stat, "file?", stat_file_p, MRB_ARGS_NONE()); 934 | mrb_define_method(mrb, stat, "directory?", stat_directory_p, MRB_ARGS_NONE()); 935 | mrb_define_method(mrb, stat, "chardev?", stat_chardev_p, MRB_ARGS_NONE()); 936 | mrb_define_method(mrb, stat, "blockdev?", stat_blockdev_p, MRB_ARGS_NONE()); 937 | mrb_define_method(mrb, stat, "pipe?", stat_pipe_p, MRB_ARGS_NONE()); 938 | mrb_define_method(mrb, stat, "socket?", stat_socket_p, MRB_ARGS_NONE()); 939 | 940 | mrb_define_method(mrb, stat, "setuid?", stat_setuid_p, MRB_ARGS_NONE()); 941 | mrb_define_method(mrb, stat, "setgid?", stat_setgid_p, MRB_ARGS_NONE()); 942 | mrb_define_method(mrb, stat, "sticky?", stat_sticky_p, MRB_ARGS_NONE()); 943 | 944 | mrb_define_method(mrb, stat, "ftype", stat_ftype, MRB_ARGS_NONE()); 945 | 946 | mrb_define_method(mrb, stat, "owned?", stat_owned_p, MRB_ARGS_NONE()); 947 | mrb_define_method(mrb, stat, "owned_real?", stat_owned_real_p, MRB_ARGS_NONE()); 948 | } 949 | 950 | void 951 | mrb_mruby_file_stat_gem_final(mrb_state* mrb) 952 | { 953 | } 954 | -------------------------------------------------------------------------------- /test/executable: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksss/mruby-file-stat/bb773da39517f3ae7232538c7e9c476d45f3d9b7/test/executable -------------------------------------------------------------------------------- /test/file-stat.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | static mrb_value 5 | test_system(mrb_state *mrb, mrb_value klass) 6 | { 7 | char *cmd = NULL; 8 | mrb_get_args(mrb, "z", &cmd); 9 | system(cmd); 10 | return mrb_nil_value(); 11 | } 12 | 13 | static mrb_value 14 | test_win_p(mrb_state *mrb, mrb_value klass) 15 | { 16 | #if defined(_WIN32) 17 | return mrb_true_value(); 18 | #else 19 | return mrb_false_value(); 20 | #endif 21 | } 22 | 23 | void mrb_mruby_file_stat_gem_test(mrb_state *mrb) 24 | { 25 | struct RClass *t; 26 | 27 | t = mrb_define_class(mrb, "FileStatTest", mrb->object_class); 28 | mrb_define_module_function(mrb, t, "system", test_system, MRB_ARGS_REQ(1)); 29 | mrb_define_module_function(mrb, t, "win?", test_win_p, MRB_ARGS_NONE()); 30 | } 31 | -------------------------------------------------------------------------------- /test/file-stat.rb: -------------------------------------------------------------------------------- 1 | class FileStatTest 2 | class << self 3 | def chmod(mode, path) 4 | system("chmod #{mode} #{path}") 5 | yield 6 | ensure 7 | system("chmod 644 #{path}") 8 | end 9 | end 10 | end 11 | 12 | assert 'File::Stat.new' do 13 | assert_kind_of File::Stat, File::Stat.new('README.md') 14 | assert_raise(RuntimeError){ File::Stat.new('unknown.file') } 15 | end 16 | 17 | assert 'File.stat' do 18 | assert_kind_of File::Stat, File.stat('README.md') 19 | end 20 | 21 | assert 'File.lstat' do 22 | assert_kind_of File::Stat, File.lstat('README.md') 23 | end 24 | 25 | assert 'File::Stat#initialize_copy' do 26 | orig = File::Stat.new('README.md') 27 | copy = orig.dup 28 | assert_equal orig.inspect, copy.inspect 29 | end 30 | 31 | assert 'File::Stat#<=>' do 32 | stat1 = File::Stat.new('README.md') 33 | stat2 = File::Stat.new('README.md') 34 | assert_equal 0, stat1.<=>(stat2) 35 | assert_equal nil, stat1.<=>(1) 36 | assert_raise(ArgumentError) { stat1 < 1 } 37 | end 38 | 39 | assert 'File::Stat#dev' do 40 | stat = File::Stat.new('README.md') 41 | assert_kind_of Fixnum, stat.dev 42 | end 43 | 44 | assert 'File::Stat#dev_major' do 45 | stat = File::Stat.new('README.md') 46 | if stat.dev_major 47 | assert_equal Fixnum, stat.dev_major.class 48 | else 49 | assert_nil stat.dev_major ## not supported 50 | end 51 | end 52 | 53 | assert 'File::Stat#dev_minor' do 54 | stat = File::Stat.new('README.md') 55 | if stat.dev_minor 56 | assert_equal Fixnum, stat.dev_minor.class 57 | else 58 | assert_nil stat.dev_minor ## not supported 59 | end 60 | end 61 | 62 | assert 'File::Stat#ino' do 63 | stat = File::Stat.new('README.md') 64 | assert_kind_of Numeric, stat.ino 65 | end 66 | 67 | assert 'File::Stat#mode' do 68 | stat = File::Stat.new('README.md') 69 | assert_kind_of Fixnum, stat.mode 70 | end 71 | 72 | assert 'File::Stat#nlink' do 73 | stat = File::Stat.new('README.md') 74 | assert_kind_of Fixnum, stat.nlink 75 | end 76 | 77 | assert 'File::Stat#uid' do 78 | stat = File::Stat.new('README.md') 79 | assert_kind_of Numeric, stat.uid 80 | end 81 | 82 | assert 'File::Stat#gid' do 83 | stat = File::Stat.new('README.md') 84 | assert_kind_of Numeric, stat.gid 85 | end 86 | 87 | assert 'File::Stat#rdev' do 88 | stat = File::Stat.new('README.md') 89 | assert_kind_of Fixnum, stat.rdev 90 | end 91 | 92 | assert 'File::Stat#rdev_major' do 93 | stat = File::Stat.new('README.md') 94 | if stat.rdev_major 95 | assert_equal Fixnum, stat.rdev_major.class 96 | else 97 | assert_nil stat.rdev_major ## not supported 98 | end 99 | end 100 | 101 | assert 'File::Stat#rdev_minor' do 102 | stat = File::Stat.new('README.md') 103 | if stat.rdev_minor 104 | assert_equal Fixnum, stat.rdev_minor.class 105 | else 106 | assert_nil stat.rdev_minor ## not supported 107 | end 108 | end 109 | 110 | assert 'File::Stat#blocks' do 111 | stat = File::Stat.new('README.md') 112 | blocks = stat.blocks 113 | skip "This system not support `struct stat.st_blocks`" if blocks.nil? 114 | 115 | assert_kind_of Integer, blocks 116 | end 117 | 118 | assert 'File::Stat#atime' do 119 | stat = File::Stat.new('README.md') 120 | assert_kind_of Time, stat.atime 121 | end 122 | 123 | assert 'File::Stat#mtime' do 124 | stat = File::Stat.new('README.md') 125 | assert_kind_of Time, stat.mtime 126 | end 127 | 128 | assert 'File::Stat#ctime' do 129 | stat = File::Stat.new('README.md') 130 | assert_kind_of Time, stat.ctime 131 | end 132 | 133 | assert 'File::Stat#birthtime' do 134 | stat = File::Stat.new('README.md') 135 | begin 136 | assert_kind_of Time, stat.birthtime 137 | rescue NotImplementedError 138 | skip 'This system not support `struct stat.birthtimespec`' 139 | end 140 | end 141 | 142 | assert 'File::Stat#size' do 143 | stat = File::Stat.new('README.md') 144 | assert_true 0 < stat.size 145 | end 146 | 147 | assert 'File::Stat#blksize' do 148 | stat = File::Stat.new('README.md') 149 | blksize = stat.blksize 150 | skip "This system not support `struct stat.st_blksize`" if blksize.nil? 151 | 152 | assert_kind_of Integer, blksize 153 | end 154 | 155 | assert 'File::Stat#inspect' do 156 | stat = File::Stat.new('README.md') 157 | %w(dev ino mode nlink uid gid size blksize blocks atime mtime ctime).all? do |name| 158 | assert_include stat.inspect, name 159 | end 160 | end 161 | 162 | assert 'File::Stat#ftype' do 163 | stat = File::Stat.new('README.md') 164 | assert_equal "file", stat.ftype 165 | 166 | stat = File::Stat.new('bin') 167 | assert_equal "directory", stat.ftype 168 | end 169 | 170 | assert 'File::Stat#directory?' do 171 | stat = File::Stat.new('README.md') 172 | assert_false stat.directory? 173 | 174 | stat = File::Stat.new('bin') 175 | assert_true stat.directory? 176 | end 177 | 178 | assert 'File::Stat#readable?' do 179 | skip "when windows" if FileStatTest.win? 180 | 181 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 182 | FileStatTest.chmod("+r-w-x", "#{dir}/test/readable") do 183 | assert_true File::Stat.new("#{dir}/test/readable").readable? 184 | end 185 | FileStatTest.chmod("-r+w-x", "#{dir}/test/writable") do 186 | assert_false File::Stat.new("#{dir}/test/writable").readable? 187 | end 188 | FileStatTest.chmod("-r-w+x", "#{dir}/test/executable") do 189 | assert_false File::Stat.new("#{dir}/test/executable").readable? 190 | end 191 | end 192 | 193 | assert 'File::Stat#readable_real?' do 194 | skip "when windows" if FileStatTest.win? 195 | 196 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 197 | FileStatTest.chmod("+r-w-x", "#{dir}/test/readable") do 198 | assert_true File::Stat.new("#{dir}/test/readable").readable_real? 199 | end 200 | FileStatTest.chmod("-r+w-x", "#{dir}/test/writable") do 201 | assert_false File::Stat.new("#{dir}/test/writable").readable_real? 202 | end 203 | FileStatTest.chmod("-r-w+x", "#{dir}/test/executable") do 204 | assert_false File::Stat.new("#{dir}/test/executable").readable_real? 205 | end 206 | end 207 | 208 | assert 'File::Stat#world_readable?' do 209 | skip "when windows" if FileStatTest.win? 210 | 211 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 212 | FileStatTest.system("chmod 0400 #{dir}/test/readable") 213 | assert_equal nil, File::Stat.new("#{dir}/test/readable").world_readable? 214 | FileStatTest.system("chmod 0444 #{dir}/test/readable") 215 | assert_equal 0444, File::Stat.new("#{dir}/test/readable").world_readable? 216 | end 217 | 218 | assert 'File::Stat#writable?' do 219 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 220 | FileStatTest.chmod("+r-w-x", "#{dir}/test/readable") do 221 | assert_false File::Stat.new("#{dir}/test/readable").writable? 222 | end 223 | FileStatTest.chmod("-r+w-x", "#{dir}/test/writable") do 224 | assert_true File::Stat.new("#{dir}/test/writable").writable? 225 | end 226 | FileStatTest.chmod("-r-w+x", "#{dir}/test/executable") do 227 | assert_false File::Stat.new("#{dir}/test/executable").writable? 228 | end 229 | end 230 | 231 | assert 'File::Stat#writable_real?' do 232 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 233 | FileStatTest.chmod("+r-w-x", "#{dir}/test/readable") do 234 | assert_false File::Stat.new("#{dir}/test/readable").writable_real? 235 | end 236 | FileStatTest.chmod("-r+w-x", "#{dir}/test/writable") do 237 | assert_true File::Stat.new("#{dir}/test/writable").writable_real? 238 | end 239 | FileStatTest.chmod("-r-w+x", "#{dir}/test/executable") do 240 | assert_false File::Stat.new("#{dir}/test/executable").writable_real? 241 | end 242 | end 243 | 244 | assert 'File::Stat#world_writable?' do 245 | skip "when windows" if FileStatTest.win? 246 | 247 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 248 | FileStatTest.chmod("0600", "#{dir}/test/writable") do 249 | assert_equal nil, File::Stat.new("#{dir}/test/writable").world_writable? 250 | end 251 | FileStatTest.chmod("0666", "#{dir}/test/writable") do 252 | assert_equal 0666, File::Stat.new("#{dir}/test/writable").world_writable? 253 | end 254 | end 255 | 256 | assert 'File::Stat#executable?' do 257 | skip "when windows" if FileStatTest.win? 258 | 259 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 260 | FileStatTest.chmod("+r-w-x", "#{dir}/test/readable") do 261 | assert_false File::Stat.new("#{dir}/test/readable").executable? 262 | end 263 | FileStatTest.chmod("-r+w-x", "#{dir}/test/writable") do 264 | assert_false File::Stat.new("#{dir}/test/writable").executable? 265 | end 266 | FileStatTest.chmod("-r-w+x", "#{dir}/test/executable") do 267 | assert_true File::Stat.new("#{dir}/test/executable").executable? 268 | end 269 | end 270 | 271 | assert 'File::Stat#executable_real?' do 272 | skip "when windows" if FileStatTest.win? 273 | 274 | dir = __FILE__[0..-18] # 18 = /test/file-stat.rb 275 | FileStatTest.chmod("+r-w-x", "#{dir}/test/readable") do 276 | assert_false File::Stat.new("#{dir}/test/readable").executable_real? 277 | end 278 | FileStatTest.chmod("-r+w-x", "#{dir}/test/writable") do 279 | assert_false File::Stat.new("#{dir}/test/writable").executable_real? 280 | end 281 | FileStatTest.chmod("-r-w+x", "#{dir}/test/executable") do 282 | assert_true File::Stat.new("#{dir}/test/executable").executable_real? 283 | end 284 | end 285 | 286 | assert 'File::Stat#file?' do 287 | stat = File::Stat.new('README.md') 288 | assert_true stat.file? 289 | 290 | stat = File::Stat.new('bin') 291 | assert_false stat.file? 292 | end 293 | 294 | assert 'File::Stat#zero?' do 295 | stat = File::Stat.new('README.md') 296 | assert_false stat.zero? 297 | end 298 | 299 | assert 'File::Stat#size?' do 300 | stat = File::Stat.new('README.md') 301 | assert_true 0 < stat.size? 302 | end 303 | 304 | assert 'File::Stat#owned?' do 305 | stat = File::Stat.new('README.md') 306 | assert_true stat.owned? 307 | end 308 | 309 | assert 'File::Stat#owned_real?' do 310 | stat = File::Stat.new('README.md') 311 | assert_true stat.owned_real? 312 | end 313 | 314 | assert 'File::Stat#grpowned?' do 315 | is_unix = File::Stat.new('/dev/tty') rescue false 316 | if is_unix 317 | stat = File::Stat.new('README.md') 318 | assert_true stat.grpowned? 319 | else 320 | skip "is not supported" 321 | end 322 | end 323 | 324 | assert 'File::Stat#pipe?' do 325 | stat = File::Stat.new('README.md') 326 | assert_false stat.pipe? 327 | end 328 | 329 | assert 'File::Stat#symlink?' do 330 | stat = File::Stat.new('README.md') 331 | assert_false stat.symlink? 332 | end 333 | 334 | assert 'File::Stat#socket?' do 335 | stat = File::Stat.new('README.md') 336 | assert_false stat.socket? 337 | end 338 | 339 | assert 'File::Stat#blockdev?' do 340 | stat = File::Stat.new('README.md') 341 | assert_false stat.blockdev? 342 | end 343 | 344 | assert 'File::Stat#chardev?' do 345 | stat = File::Stat.new('README.md') 346 | assert_false stat.chardev? 347 | 348 | begin 349 | stat = File::Stat.new('/dev/tty') 350 | assert_true stat.chardev? 351 | rescue RuntimeError 352 | skip '/dev/tty is not found' 353 | end 354 | end 355 | 356 | assert 'File::Stat#setuid?' do 357 | stat = File::Stat.new('README.md') 358 | assert_false stat.setuid? 359 | end 360 | 361 | assert 'File::Stat#setgid?' do 362 | stat = File::Stat.new('README.md') 363 | assert_false stat.setgid? 364 | end 365 | 366 | assert 'File::Stat#sticky?' do 367 | stat = File::Stat.new('README.md') 368 | assert_false stat.sticky? 369 | end 370 | -------------------------------------------------------------------------------- /test/readable: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksss/mruby-file-stat/bb773da39517f3ae7232538c7e9c476d45f3d9b7/test/readable -------------------------------------------------------------------------------- /test/writable: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ksss/mruby-file-stat/bb773da39517f3ae7232538c7e9c476d45f3d9b7/test/writable --------------------------------------------------------------------------------