newudpl-1.7/bcb/obj/dummy.obj
newudpl-1.7/bcb/newudpl_bcb.bpf
newudpl-1.7/bcb/newudpl_bcb.bpr
newudpl-1.7/msc/newudpl.dsp
newudpl-1.7/msc/newudpl.dsw
newudpl-1.7/Makefile.am
newudpl-1.7/configure
newudpl-1.7/configure.ac
newudpl-1.7/aclocal.m4
newudpl-1.7/Makefile.in
newudpl-1.7/AUTHORS
newudpl-1.7/ChangeLog
newudpl-1.7/INSTALL
newudpl-1.7/NEWS
newudpl-1.7/README
newudpl-1.7/compile
newudpl-1.7/depcomp
newudpl-1.7/install-sh
newudpl-1.7/missing
newudpl-1.7/mkinstalldirs
newudpl-1.7/newudpl.c
newudpl-1.7/newudpl.h
newudpl-1.7/akiralib.c
newudpl-1.7/akiralib.h
newudpl-1.7/akiramath.c
newudpl-1.7/akiramath.h
newudpl-1.7/queue.c
newudpl-1.7/queue.h
newudpl-1.7/item.h
newudpl-1.7/host2ip.c
newudpl-1.7/host2ip.h
newudpl-1.7/multimer.c
newudpl-1.7/multimer.h
newudpl-1.7/notify.c
newudpl-1.7/notify.h
newudpl-1.7/sysdep.h
newudpl-1.7/ChangeLog.html
newudpl-1.7/newudpl.html
newudpl-1.7/COPYRIGHT
newudpl-1.7/detour_rat
newudpl-1.7/getopt.c
newudpl-1.7/getopt.h
newudpl-1.7/uname.c
newudpl-1.7/uname.h
newudpl-1.7/gettimeofday.c
newudpl-1.7/gettimeofday.h
newudpl-1.7/winsocklib.c
newudpl-1.7/winsocklib.h
newudpl-1.7/win32_stdc_off.h
newudpl-1.7/win32_stdc_on.h
newudpl-1.7/win32std.h
newudpl-1.7/config_msc.h
newudpl-1.7/config_bc.h
USEUNIT(“..\newudpl.c”);
USEUNIT(“..\winsocklib.c”);
USEUNIT(“..\akiramath.c”);
USEUNIT(“..\getopt.c”);
USEUNIT(“..\gettimeofday.c”);
USEUNIT(“..\host2ip.c”);
USEUNIT(“..\multimer.c”);
USEUNIT(“..\notify.c”);
USEUNIT(“..\queue.c”);
USEUNIT(“..\uname.c”);
USEUNIT(“..\akiralib.c”);
//—————————————————————————
This file is used by the project manager only and should be treated like the project file
main
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1033
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlIncludePath]
Count=6
Item0=..\..\newudpl;C:\newudpl\;$(BCB)\include;$(BCB)\include\vcl
Item1=..;C:\newudpl\;$(BCB)\include;$(BCB)\include\vcl
Item2=..\;..\..\newudpl;$(BCB)\include;$(BCB)\include\vcl
Item3=..;$(BCB)\include;$(BCB)\include\vcl
Item4=$(BCB)\include;$(BCB)\include\vcl
Item5=C:\C\P23\AKIRA;$(BCB)\include;$(BCB)\include\vcl
[HistoryLists\hlLibraryPath]
Count=6
Item0=..\..\newudpl;C:\newudpl\;$(BCB)\lib\obj;$(BCB)\lib
Item1=..;C:\newudpl\;$(BCB)\lib\obj;$(BCB)\lib
Item2=..\;..\..\newudpl;$(BCB)\lib\obj;$(BCB)\lib
Item3=..;$(BCB)\lib\obj;$(BCB)\lib
Item4=$(BCB)\lib\obj;$(BCB)\lib
Item5=C:\C\P23\AKIRA;$(BCB)\lib\obj;$(BCB)\lib
[HistoryLists\hlDebugSourcePath]
Count=1
Item0=$(BCB)\source\vcl
[HistoryLists\hlConditionals]
Count=1
Item0=_DEBUG
[HistoryLists\hlIntOutputDir]
Count=3
Item0=obj
Item1=..\..\..\obj
Item2=obj\
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
HostApplication=
RemoteHost=
RemotePath=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[Language]
ActiveLang=
ProjectLang=
RootDir=
# Microsoft Developer Studio Project File – Name=”newudpl” – Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE “Win32 (x86) Console Application” 0x0103
CFG=newudpl – Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f “newudpl.mak”.
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f “newudpl.mak” CFG=”newudpl – Win32 Debug”
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE “newudpl – Win32 Release” (based on “Win32 (x86) Console Application”)
!MESSAGE “newudpl – Win32 Debug” (based on “Win32 (x86) Console Application”)
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName “”
# PROP Scc_LocalPath “”
CPP=cl.exe
RSC=rc.exe
!IF “$(CFG)” == “newudpl – Win32 Release”
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir “Release”
# PROP BASE Intermediate_Dir “Release”
# PROP BASE Target_Dir “”
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir “Release”
# PROP Intermediate_Dir “Release”
# PROP Ignore_Export_Lib 0
# PROP Target_Dir “”
# ADD BASE CPP /nologo /W3 /GX /O2 /D “WIN32” /D “NDEBUG” /D “_CONSOLE” /D “_MBCS” /YX /FD /c
# ADD CPP /nologo /w /W0 /GX /O2 /D “WIN32” /D “NDEBUG” /D “_CONSOLE” /D “_MBCS” /YX /FD /c
# ADD BASE RSC /l 0x411 /d “NDEBUG”
# ADD RSC /l 0x411 /d “NDEBUG”
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386
!ELSEIF “$(CFG)” == “newudpl – Win32 Debug”
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir “Debug”
# PROP BASE Intermediate_Dir “Debug”
# PROP BASE Target_Dir “”
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir “Debug”
# PROP Intermediate_Dir “Debug”
# PROP Ignore_Export_Lib 0
# PROP Target_Dir “”
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D “WIN32” /D “_DEBUG” /D “_CONSOLE” /D “_MBCS” /YX /FD /GZ /c
# ADD CPP /nologo /w /W0 /Gm /GX /ZI /Od /D “WIN32” /D “_DEBUG” /D “_CONSOLE” /D “_MBCS” /YX /FD /GZ /c
# ADD BASE RSC /l 0x411 /d “_DEBUG”
# ADD RSC /l 0x411 /d “_DEBUG”
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name “newudpl – Win32 Release”
# Name “newudpl – Win32 Debug”
# Begin Group “Source Files”
# PROP Default_Filter “cpp;c;cxx;rc;def;r;odl;idl;hpj;bat”
# Begin Source File
SOURCE=..\akiralib.c
# End Source File
# Begin Source File
SOURCE=..\akiramath.c
# End Source File
# Begin Source File
SOURCE=..\getopt.c
# End Source File
# Begin Source File
SOURCE=..\gettimeofday.c
# End Source File
# Begin Source File
SOURCE=..\host2ip.c
# End Source File
# Begin Source File
SOURCE=..\multimer.c
# End Source File
# Begin Source File
SOURCE=..\newudpl.c
# End Source File
# Begin Source File
SOURCE=..\notify.c
# End Source File
# Begin Source File
SOURCE=..\queue.c
# End Source File
# Begin Source File
SOURCE=..\uname.c
# End Source File
# Begin Source File
SOURCE=..\winsocklib.c
# End Source File
# End Group
# Begin Group “Header Files”
# PROP Default_Filter “h;hpp;hxx;hm;inl”
# Begin Source File
SOURCE=..\akiralib.h
# End Source File
# Begin Source File
SOURCE=..\akiramath.h
# End Source File
# Begin Source File
SOURCE=..\getopt.h
# End Source File
# Begin Source File
SOURCE=..\gettimeofday.h
# End Source File
# Begin Source File
SOURCE=..\host2ip.h
# End Source File
# Begin Source File
SOURCE=..\item.h
# End Source File
# Begin Source File
SOURCE=..\multimer.h
# End Source File
# End Group
# Begin Group “Resource Files”
# PROP Default_Filter “ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe”
# End Group
# End Target
# End Project
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: “newudpl”=”.\newudpl.dsp” – Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = newudpl
newudpl_SOURCES = newudpl.c newudpl.h \
akiralib.c akiralib.h \
akiramath.c akiramath.h \
queue.c queue.h item.h \
host2ip.c host2ip.h \
multimer.c multimer.h \
notify.c notify.h \
sysdep.h
EXTRA_DIST = ChangeLog.html newudpl.html COPYRIGHT \
detour_rat \
notify.c notify.h \
getopt.c getopt.h \
uname.c uname.h \
gettimeofday.c gettimeofday.h \
winsocklib.c winsocklib.h \
win32_stdc_off.h win32_stdc_on.h \
win32std.h config_msc.h config_bc.h\
msc/*.ds? \
bcb/*.bp? bcb/obj/*
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for newudpl 1.7.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## ——————– ##
## M4sh Initialization. ##
## ——————– ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n “${ZSH_VERSION+set}” && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+”$@”}, which
# is contrary to our usage. Disable this feature.
alias -g ‘${1+”$@”}’='”$@”‘
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
as_nl=’
‘
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo=’\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z “$BASH_VERSION$ZSH_VERSION” \
&& (test “X`print -r — $as_echo`” = “X$as_echo”) 2>/dev/null; then
as_echo=’print -r –‘
as_echo_n=’print -rn –‘
elif (test “X`printf %s $as_echo`” = “X$as_echo”) 2>/dev/null; then
as_echo=’printf %s\n’
as_echo_n=’printf %s’
else
if test “X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`” = “X-n $as_echo”; then
as_echo_body=’eval /usr/ucb/echo -n “$1$as_nl”‘
as_echo_n=’/usr/ucb/echo -n’
else
as_echo_body=’eval expr “X$1” : “X\\(.*\\)”‘
as_echo_n_body=’eval
arg=$1;
case $arg in #(
*”$as_nl”*)
expr “X$arg” : “X\\(.*\\)$as_nl”;
arg=`expr “X$arg” : “.*$as_nl\\(.*\\)”`;;
esac;
expr “X$arg” : “X\\(.*\\)” | tr -d “$as_nl”
‘
export as_echo_n_body
as_echo_n=’sh -c $as_echo_n_body as_echo’
fi
export as_echo_body
as_echo=’sh -c $as_echo_body as_echo’
fi
# The user is always right.
if test “${PATH_SEPARATOR+set}” != set; then
PATH_SEPARATOR=:
(PATH=’/bin;/bin’; FPATH=$PATH; sh -c 🙂 >/dev/null 2>&1 && {
(PATH=’/bin:/bin’; FPATH=$PATH; sh -c 🙂 >/dev/null 2>&1 ||
PATH_SEPARATOR=’;’
}
fi
# IFS
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=” “” $as_nl”
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
test -r “$as_dir/$0” && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND’
# in which case we are not to be found in the path.
if test “x$as_myself” = x; then
as_myself=$0
fi
if test ! -f “$as_myself”; then
$as_echo “$as_myself: error: cannot find myself; rerun with an absolute file name” >&2
exit 1
fi
# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the “|| exit 1”
# suppresses any “Segmentation fault” message there. ‘((‘ could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1=’$ ‘
PS2=’> ‘
PS4=’+ ‘
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don’t fall
# into an infinite loop, continuously re-executing ourselves.
if test x”${_as_can_reexec}” != xno && test “x$CONFIG_SHELL” != x; then
_as_can_reexec=no; export _as_can_reexec;
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts “$as_myself” ${1+”$@”}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec’.
$as_echo “$0: could not re-execute with $CONFIG_SHELL” >&2
as_fn_exit 255
fi
# We don’t want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test “x$CONFIG_SHELL” = x; then
as_bourne_compatible=”if test -n \”\${ZSH_VERSION+set}\” && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\”\$@\”}, which
# is contrary to our usage. Disable this feature.
alias -g ‘\${1+\”\$@\”}’=’\”\$@\”‘
setopt NO_GLOB_SUBST
else
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
”
as_required=”as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }
exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \”\$1\” ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
test -x / || exit 1″
as_suggested=” as_lineno_1=”;as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested” as_lineno_1a=\$LINENO
as_lineno_2=”;as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested” as_lineno_2a=\$LINENO
eval ‘test \”x\$as_lineno_1’\$as_run’\” != \”x\$as_lineno_2’\$as_run’\” &&
test \”x\`expr \$as_lineno_1’\$as_run’ + 1\`\” = \”x\$as_lineno_2’\$as_run’\”‘ || exit 1
test \$(( 1 + 1 )) = 2 || exit 1″
if (eval “$as_required”) 2>/dev/null; then :
as_have_required=yes
else
as_have_required=no
fi
if test x$as_have_required = xyes && (eval “$as_suggested”) 2>/dev/null; then :
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
as_shell=$as_dir/$as_base
if { test -f “$as_shell” || test -f “$as_shell.exe”; } &&
{ $as_echo “$as_bourne_compatible””$as_required” | as_run=a “$as_shell”; } 2>/dev/null; then :
CONFIG_SHELL=$as_shell as_have_required=yes
if { $as_echo “$as_bourne_compatible””$as_suggested” | as_run=a “$as_shell”; } 2>/dev/null; then :
break 2
fi
fi
done;;
esac
as_found=false
done
$as_found || { if { test -f “$SHELL” || test -f “$SHELL.exe”; } &&
{ $as_echo “$as_bourne_compatible””$as_required” | as_run=a “$SHELL”; } 2>/dev/null; then :
CONFIG_SHELL=$SHELL as_have_required=yes
fi; }
IFS=$as_save_IFS
if test “x$CONFIG_SHELL” != x; then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
*v*x* | *x*v* ) as_opts=-vx ;;
*v* ) as_opts=-v ;;
*x* ) as_opts=-x ;;
* ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts “$as_myself” ${1+”$@”}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec’.
$as_echo “$0: could not re-execute with $CONFIG_SHELL” >&2
exit 255
fi
if test x$as_have_required = xno; then :
$as_echo “$0: This script requires a shell more modern than all”
$as_echo “$0: the shells that I found on your system.”
if test x${ZSH_VERSION+set} = xset ; then
$as_echo “$0: In particular, zsh $ZSH_VERSION has bugs and should”
$as_echo “$0: be upgraded to zsh 4.3.4 or later.”
else
$as_echo “$0: Please tell bug- about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one.”
fi
exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS
## ——————— ##
## M4sh Shell Functions. ##
## ——————— ##
# as_fn_unset VAR
# —————
# Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
# as_fn_set_status STATUS
# ———————–
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# as_fn_exit STATUS
# —————–
# Exit the shell with STATUS, even in a “trap 0” or “set -e” context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_mkdir_p
# ————-
# Create “$as_dir” as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
case $as_dir in #(
-*) as_dir=./$as_dir;;
esac
test -d “$as_dir” || eval $as_mkdir_p || {
as_dirs=
while :; do
case $as_dir in #(
*\’*) as_qdir=`$as_echo “$as_dir” | sed “s/’/’\\\\\\\\”/g”`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs=”‘$as_qdir’ $as_dirs”
as_dir=`$as_dirname — “$as_dir” ||
$as_expr X”$as_dir” : ‘X\(.*[^/]\)//*[^/][^/]*/*$’ \| \
X”$as_dir” : ‘X\(//\)[^/]’ \| \
X”$as_dir” : ‘X\(//\)$’ \| \
X”$as_dir” : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X”$as_dir” |
sed ‘/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
test -d “$as_dir” && break
done
test -z “$as_dirs” || eval “mkdir $as_dirs”
} || test -d “$as_dir” || as_fn_error $? “cannot create directory $as_dir”
} # as_fn_mkdir_p
# as_fn_executable_p FILE
# ———————–
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f “$1” && test -x “$1”
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ———————-
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval “as_var=1; as_var+=2; test x\$as_var = x12”) 2>/dev/null; then :
eval ‘as_fn_append ()
{
eval $1+=\$2
}’
else
as_fn_append ()
{
eval $1=\$$1\$2
}
fi # as_fn_append
# as_fn_arith ARG…
# ——————
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval “test \$(( 1 + 1 )) = 2”) 2>/dev/null; then :
eval ‘as_fn_arith ()
{
as_val=$(( $* ))
}’
else
as_fn_arith ()
{
as_val=`expr “$@” || test $? -eq 1`
}
fi # as_fn_arith
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# —————————————-
# Output “`basename $0`: error: ERROR” to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test “$4”; then
as_lineno=${as_lineno-“$3”} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo “$as_me:${as_lineno-$LINENO}: error: $2” >&$4
fi
$as_echo “$as_me: error: $2” >&2
as_fn_exit $as_status
} # as_fn_error
if expr a : ‘\(a\)’ >/dev/null 2>&1 &&
test “X`expr 00001 : ‘.*\(…\)’`” = X001; then
as_expr=expr
else
as_expr=false
fi
if (basename — /) >/dev/null 2>&1 && test “X`basename — / 2>&1`” = “X/”; then
as_basename=basename
else
as_basename=false
fi
if (as_dir=`dirname — /` && test “X$as_dir” = X/) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
fi
as_me=`$as_basename — “$0″ ||
$as_expr X/”$0″ : ‘.*/\([^/][^/]*\)/*$’ \| \
X”$0″ : ‘X\(//\)$’ \| \
X”$0″ : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X/”$0” |
sed ‘/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
# Avoid depending upon Character Ranges.
as_cr_letters=’abcdefghijklmnopqrstuvwxyz’
as_cr_LETTERS=’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits=’0123456789′
as_cr_alnum=$as_cr_Letters$as_cr_digits
as_lineno_1=$LINENO as_lineno_1a=$LINENO
as_lineno_2=$LINENO as_lineno_2a=$LINENO
eval ‘test “x$as_lineno_1’$as_run'” != “x$as_lineno_2’$as_run'” &&
test “x`expr $as_lineno_1’$as_run’ + 1`” = “x$as_lineno_2’$as_run'”‘ || {
# Blame Lee E. McMahon (1931-1989) for sed’s syntax. 🙂
sed -n ‘
p
/[$]LINENO/=
‘ <$as_myself |
sed '
s/[$]LINENO.*/&-/
t lineno
b
:lineno
N
:loop
s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
t loop
s/-\n.*//
' >$as_me.lineno &&
chmod +x “$as_me.lineno” ||
{ $as_echo “$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell” >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we’re ensured to have
# already done that, so ensure we don’t try to do so again and fall
# in an infinite loop. This has already happened in practice.
_as_can_reexec=no; export _as_can_reexec
# Don’t try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
. “./$as_me.lineno”
# Exit status is that of the last command.
exit
}
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
case `echo ‘xy\c’` in
*c*) ECHO_T=’ ‘;; # ECHO_T is single tab character.
xy) ECHO_C=’\c’;;
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
ECHO_T=’ ‘;;
esac;;
*)
ECHO_N=’-n’;;
esac
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s=’ln -s’
# … but there are two gotchas:
# 1) On MSYS, both `ln -s file dir’ and `ln file dir’ fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s=’cp -pR’
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s=’cp -pR’
fi
else
as_ln_s=’cp -pR’
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
if mkdir -p . 2>/dev/null; then
as_mkdir_p=’mkdir -p “$as_dir”‘
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_test_x=’test -x’
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp=”eval sed ‘y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'”
# Sed expression to map a string onto a valid variable name.
as_tr_sh=”eval sed ‘y%*+%pp%;s%[^_$as_cr_alnum]%_%g'”
test -n “$DJDIR” || exec 7<&0 &1
# Name of the host.
# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
#
# Initializations.
#
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
cross_compiling=no
subdirs=
MFLAGS=
MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME=’newudpl’
PACKAGE_TARNAME=’newudpl’
PACKAGE_VERSION=’1.7′
PACKAGE_STRING=’newudpl 1.7′
PACKAGE_BUGREPORT=”
PACKAGE_URL=”
ac_unique_file=”newudpl.c”
# Factoring default headers for most tests.
ac_includes_default=”\
#include
#ifdef HAVE_SYS_TYPES_H
# include
#endif
#ifdef HAVE_SYS_STAT_H
# include
#endif
#ifdef STDC_HEADERS
# include
# include
#else
# ifdef HAVE_STDLIB_H
# include
# endif
#endif
#ifdef HAVE_STRING_H
# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
# include
# endif
# include
#endif
#ifdef HAVE_STRINGS_H
# include
#endif
#ifdef HAVE_INTTYPES_H
# include
#endif
#ifdef HAVE_STDINT_H
# include
#endif
#ifdef HAVE_UNISTD_H
# include
#endif”
ac_subst_vars=’am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
EGREP
GREP
CPP
LN_S
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
am__quote
am__include
DEPDIR
OBJEXT
EXEEXT
ac_ct_CC
CPPFLAGS
LDFLAGS
CFLAGS
CC
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
AM_V
am__untar
am__tar
AMTAR
am__leading_dot
SET_MAKE
AWK
mkdir_p
MKDIR_P
INSTALL_STRIP_PROGRAM
STRIP
install_sh
MAKEINFO
AUTOHEADER
AUTOMAKE
AUTOCONF
ACLOCAL
VERSION
PACKAGE
CYGPATH_W
am__isrc
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
target_alias
host_alias
build_alias
LIBS
ECHO_T
ECHO_N
ECHO_C
DEFS
mandir
localedir
libdir
psdir
pdfdir
dvidir
htmldir
infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
datadir
datarootdir
libexecdir
sbindir
bindir
program_transform_name
prefix
exec_prefix
PACKAGE_URL
PACKAGE_BUGREPORT
PACKAGE_STRING
PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
SHELL’
ac_subst_files=”
ac_user_opts=’
enable_option_checking
enable_silent_rules
enable_dependency_tracking
‘
ac_precious_vars=’build_alias
host_alias
target_alias
CC
CFLAGS
LDFLAGS
LIBS
CPPFLAGS
CPP’
# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
ac_unrecognized_opts=
ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
exec_prefix=NONE
no_create=
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
verbose=
x_includes=NONE
x_libraries=NONE
# Installation directory options.
# These are left unexpanded so users can “make install exec_prefix=/foo”
# and all the variables that are supposed to be based on exec_prefix
# by default will actually change.
# Use braces instead of parens because sh, perl, etc. also accept them.
# (The list follows the same order as the GNU Coding Standards.)
bindir=’${exec_prefix}/bin’
sbindir=’${exec_prefix}/sbin’
libexecdir=’${exec_prefix}/libexec’
datarootdir=’${prefix}/share’
datadir=’${datarootdir}’
sysconfdir=’${prefix}/etc’
sharedstatedir=’${prefix}/com’
localstatedir=’${prefix}/var’
runstatedir=’${localstatedir}/run’
includedir=’${prefix}/include’
oldincludedir=’/usr/include’
docdir=’${datarootdir}/doc/${PACKAGE_TARNAME}’
infodir=’${datarootdir}/info’
htmldir=’${docdir}’
dvidir=’${docdir}’
pdfdir=’${docdir}’
psdir=’${docdir}’
libdir=’${exec_prefix}/lib’
localedir=’${datarootdir}/locale’
mandir=’${datarootdir}/man’
ac_prev=
ac_dashdash=
for ac_option
do
# If the previous option needs an argument, assign it.
if test -n “$ac_prev”; then
eval $ac_prev=\$ac_option
ac_prev=
continue
fi
case $ac_option in
*=?*) ac_optarg=`expr “X$ac_option” : ‘[^=]*=\(.*\)’` ;;
*=) ac_optarg= ;;
*) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
case $ac_dashdash$ac_option in
–)
ac_dashdash=yes ;;
-bindir | –bindir | –bindi | –bind | –bin | –bi)
ac_prev=bindir ;;
-bindir=* | –bindir=* | –bindi=* | –bind=* | –bin=* | –bi=*)
bindir=$ac_optarg ;;
-build | –build | –buil | –bui | –bu)
ac_prev=build_alias ;;
-build=* | –build=* | –buil=* | –bui=* | –bu=*)
build_alias=$ac_optarg ;;
-cache-file | –cache-file | –cache-fil | –cache-fi \
| –cache-f | –cache- | –cache | –cach | –cac | –ca | –c)
ac_prev=cache_file ;;
-cache-file=* | –cache-file=* | –cache-fil=* | –cache-fi=* \
| –cache-f=* | –cache-=* | –cache=* | –cach=* | –cac=* | –ca=* | –c=*)
cache_file=$ac_optarg ;;
–config-cache | -C)
cache_file=config.cache ;;
-datadir | –datadir | –datadi | –datad)
ac_prev=datadir ;;
-datadir=* | –datadir=* | –datadi=* | –datad=*)
datadir=$ac_optarg ;;
-datarootdir | –datarootdir | –datarootdi | –datarootd | –dataroot \
| –dataroo | –dataro | –datar)
ac_prev=datarootdir ;;
-datarootdir=* | –datarootdir=* | –datarootdi=* | –datarootd=* \
| –dataroot=* | –dataroo=* | –dataro=* | –datar=*)
datarootdir=$ac_optarg ;;
-disable-* | –disable-*)
ac_useropt=`expr “x$ac_option” : ‘x-*disable-\(.*\)’`
# Reject names that are not valid shell variable names.
expr “x$ac_useropt” : “.*[^-+._$as_cr_alnum]” >/dev/null &&
as_fn_error $? “invalid feature name: $ac_useropt”
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo “$ac_useropt” | sed ‘s/[-+.]/_/g’`
case $ac_user_opts in
*”
“enable_$ac_useropt”
“*) ;;
*) ac_unrecognized_opts=”$ac_unrecognized_opts$ac_unrecognized_sep–disable-$ac_useropt_orig”
ac_unrecognized_sep=’, ‘;;
esac
eval enable_$ac_useropt=no ;;
-docdir | –docdir | –docdi | –doc | –do)
ac_prev=docdir ;;
-docdir=* | –docdir=* | –docdi=* | –doc=* | –do=*)
docdir=$ac_optarg ;;
-dvidir | –dvidir | –dvidi | –dvid | –dvi | –dv)
ac_prev=dvidir ;;
-dvidir=* | –dvidir=* | –dvidi=* | –dvid=* | –dvi=* | –dv=*)
dvidir=$ac_optarg ;;
-enable-* | –enable-*)
ac_useropt=`expr “x$ac_option” : ‘x-*enable-\([^=]*\)’`
# Reject names that are not valid shell variable names.
expr “x$ac_useropt” : “.*[^-+._$as_cr_alnum]” >/dev/null &&
as_fn_error $? “invalid feature name: $ac_useropt”
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo “$ac_useropt” | sed ‘s/[-+.]/_/g’`
case $ac_user_opts in
*”
“enable_$ac_useropt”
“*) ;;
*) ac_unrecognized_opts=”$ac_unrecognized_opts$ac_unrecognized_sep–enable-$ac_useropt_orig”
ac_unrecognized_sep=’, ‘;;
esac
eval enable_$ac_useropt=\$ac_optarg ;;
-exec-prefix | –exec_prefix | –exec-prefix | –exec-prefi \
| –exec-pref | –exec-pre | –exec-pr | –exec-p | –exec- \
| –exec | –exe | –ex)
ac_prev=exec_prefix ;;
-exec-prefix=* | –exec_prefix=* | –exec-prefix=* | –exec-prefi=* \
| –exec-pref=* | –exec-pre=* | –exec-pr=* | –exec-p=* | –exec-=* \
| –exec=* | –exe=* | –ex=*)
exec_prefix=$ac_optarg ;;
-gas | –gas | –ga | –g)
# Obsolete; use –with-gas.
with_gas=yes ;;
-help | –help | –hel | –he | -h)
ac_init_help=long ;;
-help=r* | –help=r* | –hel=r* | –he=r* | -hr*)
ac_init_help=recursive ;;
-help=s* | –help=s* | –hel=s* | –he=s* | -hs*)
ac_init_help=short ;;
-host | –host | –hos | –ho)
ac_prev=host_alias ;;
-host=* | –host=* | –hos=* | –ho=*)
host_alias=$ac_optarg ;;
-htmldir | –htmldir | –htmldi | –htmld | –html | –htm | –ht)
ac_prev=htmldir ;;
-htmldir=* | –htmldir=* | –htmldi=* | –htmld=* | –html=* | –htm=* \
| –ht=*)
htmldir=$ac_optarg ;;
-includedir | –includedir | –includedi | –included | –include \
| –includ | –inclu | –incl | –inc)
ac_prev=includedir ;;
-includedir=* | –includedir=* | –includedi=* | –included=* | –include=* \
| –includ=* | –inclu=* | –incl=* | –inc=*)
includedir=$ac_optarg ;;
-infodir | –infodir | –infodi | –infod | –info | –inf)
ac_prev=infodir ;;
-infodir=* | –infodir=* | –infodi=* | –infod=* | –info=* | –inf=*)
infodir=$ac_optarg ;;
-libdir | –libdir | –libdi | –libd)
ac_prev=libdir ;;
-libdir=* | –libdir=* | –libdi=* | –libd=*)
libdir=$ac_optarg ;;
-libexecdir | –libexecdir | –libexecdi | –libexecd | –libexec \
| –libexe | –libex | –libe)
ac_prev=libexecdir ;;
-libexecdir=* | –libexecdir=* | –libexecdi=* | –libexecd=* | –libexec=* \
| –libexe=* | –libex=* | –libe=*)
libexecdir=$ac_optarg ;;
-localedir | –localedir | –localedi | –localed | –locale)
ac_prev=localedir ;;
-localedir=* | –localedir=* | –localedi=* | –localed=* | –locale=*)
localedir=$ac_optarg ;;
-localstatedir | –localstatedir | –localstatedi | –localstated \
| –localstate | –localstat | –localsta | –localst | –locals)
ac_prev=localstatedir ;;
-localstatedir=* | –localstatedir=* | –localstatedi=* | –localstated=* \
| –localstate=* | –localstat=* | –localsta=* | –localst=* | –locals=*)
localstatedir=$ac_optarg ;;
-mandir | –mandir | –mandi | –mand | –man | –ma | –m)
ac_prev=mandir ;;
-mandir=* | –mandir=* | –mandi=* | –mand=* | –man=* | –ma=* | –m=*)
mandir=$ac_optarg ;;
-nfp | –nfp | –nf)
# Obsolete; use –without-fp.
with_fp=no ;;
-no-create | –no-create | –no-creat | –no-crea | –no-cre \
| –no-cr | –no-c | -n)
no_create=yes ;;
-no-recursion | –no-recursion | –no-recursio | –no-recursi \
| –no-recurs | –no-recur | –no-recu | –no-rec | –no-re | –no-r)
no_recursion=yes ;;
-oldincludedir | –oldincludedir | –oldincludedi | –oldincluded \
| –oldinclude | –oldinclud | –oldinclu | –oldincl | –oldinc \
| –oldin | –oldi | –old | –ol | –o)
ac_prev=oldincludedir ;;
-oldincludedir=* | –oldincludedir=* | –oldincludedi=* | –oldincluded=* \
| –oldinclude=* | –oldinclud=* | –oldinclu=* | –oldincl=* | –oldinc=* \
| –oldin=* | –oldi=* | –old=* | –ol=* | –o=*)
oldincludedir=$ac_optarg ;;
-prefix | –prefix | –prefi | –pref | –pre | –pr | –p)
ac_prev=prefix ;;
-prefix=* | –prefix=* | –prefi=* | –pref=* | –pre=* | –pr=* | –p=*)
prefix=$ac_optarg ;;
-program-prefix | –program-prefix | –program-prefi | –program-pref \
| –program-pre | –program-pr | –program-p)
ac_prev=program_prefix ;;
-program-prefix=* | –program-prefix=* | –program-prefi=* \
| –program-pref=* | –program-pre=* | –program-pr=* | –program-p=*)
program_prefix=$ac_optarg ;;
-program-suffix | –program-suffix | –program-suffi | –program-suff \
| –program-suf | –program-su | –program-s)
ac_prev=program_suffix ;;
-program-suffix=* | –program-suffix=* | –program-suffi=* \
| –program-suff=* | –program-suf=* | –program-su=* | –program-s=*)
program_suffix=$ac_optarg ;;
-program-transform-name | –program-transform-name \
| –program-transform-nam | –program-transform-na \
| –program-transform-n | –program-transform- \
| –program-transform | –program-transfor \
| –program-transfo | –program-transf \
| –program-trans | –program-tran \
| –progr-tra | –program-tr | –program-t)
ac_prev=program_transform_name ;;
-program-transform-name=* | –program-transform-name=* \
| –program-transform-nam=* | –program-transform-na=* \
| –program-transform-n=* | –program-transform-=* \
| –program-transform=* | –program-transfor=* \
| –program-transfo=* | –program-transf=* \
| –program-trans=* | –program-tran=* \
| –progr-tra=* | –program-tr=* | –program-t=*)
program_transform_name=$ac_optarg ;;
-pdfdir | –pdfdir | –pdfdi | –pdfd | –pdf | –pd)
ac_prev=pdfdir ;;
-pdfdir=* | –pdfdir=* | –pdfdi=* | –pdfd=* | –pdf=* | –pd=*)
pdfdir=$ac_optarg ;;
-psdir | –psdir | –psdi | –psd | –ps)
ac_prev=psdir ;;
-psdir=* | –psdir=* | –psdi=* | –psd=* | –ps=*)
psdir=$ac_optarg ;;
-q | -quiet | –quiet | –quie | –qui | –qu | –q \
| -silent | –silent | –silen | –sile | –sil)
silent=yes ;;
-runstatedir | –runstatedir | –runstatedi | –runstated \
| –runstate | –runstat | –runsta | –runst | –runs \
| –run | –ru | –r)
ac_prev=runstatedir ;;
-runstatedir=* | –runstatedir=* | –runstatedi=* | –runstated=* \
| –runstate=* | –runstat=* | –runsta=* | –runst=* | –runs=* \
| –run=* | –ru=* | –r=*)
runstatedir=$ac_optarg ;;
-sbindir | –sbindir | –sbindi | –sbind | –sbin | –sbi | –sb)
ac_prev=sbindir ;;
-sbindir=* | –sbindir=* | –sbindi=* | –sbind=* | –sbin=* \
| –sbi=* | –sb=*)
sbindir=$ac_optarg ;;
-sharedstatedir | –sharedstatedir | –sharedstatedi \
| –sharedstated | –sharedstate | –sharedstat | –sharedsta \
| –sharedst | –shareds | –shared | –share | –shar \
| –sha | –sh)
ac_prev=sharedstatedir ;;
-sharedstatedir=* | –sharedstatedir=* | –sharedstatedi=* \
| –sharedstated=* | –sharedstate=* | –sharedstat=* | –sharedsta=* \
| –sharedst=* | –shareds=* | –shared=* | –share=* | –shar=* \
| –sha=* | –sh=*)
sharedstatedir=$ac_optarg ;;
-site | –site | –sit)
ac_prev=site ;;
-site=* | –site=* | –sit=*)
site=$ac_optarg ;;
-srcdir | –srcdir | –srcdi | –srcd | –src | –sr)
ac_prev=srcdir ;;
-srcdir=* | –srcdir=* | –srcdi=* | –srcd=* | –src=* | –sr=*)
srcdir=$ac_optarg ;;
-sysconfdir | –sysconfdir | –sysconfdi | –sysconfd | –sysconf \
| –syscon | –sysco | –sysc | –sys | –sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | –sysconfdir=* | –sysconfdi=* | –sysconfd=* | –sysconf=* \
| –syscon=* | –sysco=* | –sysc=* | –sys=* | –sy=*)
sysconfdir=$ac_optarg ;;
-target | –target | –targe | –targ | –tar | –ta | –t)
ac_prev=target_alias ;;
-target=* | –target=* | –targe=* | –targ=* | –tar=* | –ta=* | –t=*)
target_alias=$ac_optarg ;;
-v | -verbose | –verbose | –verbos | –verbo | –verb)
verbose=yes ;;
-version | –version | –versio | –versi | –vers | -V)
ac_init_version=: ;;
-with-* | –with-*)
ac_useropt=`expr “x$ac_option” : ‘x-*with-\([^=]*\)’`
# Reject names that are not valid shell variable names.
expr “x$ac_useropt” : “.*[^-+._$as_cr_alnum]” >/dev/null &&
as_fn_error $? “invalid package name: $ac_useropt”
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo “$ac_useropt” | sed ‘s/[-+.]/_/g’`
case $ac_user_opts in
*”
“with_$ac_useropt”
“*) ;;
*) ac_unrecognized_opts=”$ac_unrecognized_opts$ac_unrecognized_sep–with-$ac_useropt_orig”
ac_unrecognized_sep=’, ‘;;
esac
eval with_$ac_useropt=\$ac_optarg ;;
-without-* | –without-*)
ac_useropt=`expr “x$ac_option” : ‘x-*without-\(.*\)’`
# Reject names that are not valid shell variable names.
expr “x$ac_useropt” : “.*[^-+._$as_cr_alnum]” >/dev/null &&
as_fn_error $? “invalid package name: $ac_useropt”
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo “$ac_useropt” | sed ‘s/[-+.]/_/g’`
case $ac_user_opts in
*”
“with_$ac_useropt”
“*) ;;
*) ac_unrecognized_opts=”$ac_unrecognized_opts$ac_unrecognized_sep–without-$ac_useropt_orig”
ac_unrecognized_sep=’, ‘;;
esac
eval with_$ac_useropt=no ;;
–x)
# Obsolete; use –with-x.
with_x=yes ;;
-x-includes | –x-includes | –x-include | –x-includ | –x-inclu \
| –x-incl | –x-inc | –x-in | –x-i)
ac_prev=x_includes ;;
-x-includes=* | –x-includes=* | –x-include=* | –x-includ=* | –x-inclu=* \
| –x-incl=* | –x-inc=* | –x-in=* | –x-i=*)
x_includes=$ac_optarg ;;
-x-libraries | –x-libraries | –x-librarie | –x-librari \
| –x-librar | –x-libra | –x-libr | –x-lib | –x-li | –x-l)
ac_prev=x_libraries ;;
-x-libraries=* | –x-libraries=* | –x-librarie=* | –x-librari=* \
| –x-librar=* | –x-libra=* | –x-libr=* | –x-lib=* | –x-li=* | –x-l=*)
x_libraries=$ac_optarg ;;
-*) as_fn_error $? “unrecognized option: \`$ac_option’
Try \`$0 –help’ for more information”
;;
*=*)
ac_envvar=`expr “x$ac_option” : ‘x\([^=]*\)=’`
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
” | [0-9]* | *[!_$as_cr_alnum]* )
as_fn_error $? “invalid variable name: \`$ac_envvar'” ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
*)
# FIXME: should be removed in autoconf 3.0.
$as_echo “$as_me: WARNING: you should use –build, –host, –target” >&2
expr “x$ac_option” : “.*[^-._$as_cr_alnum]” >/dev/null &&
$as_echo “$as_me: WARNING: invalid host type: $ac_option” >&2
: “${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}”
;;
esac
done
if test -n “$ac_prev”; then
ac_option=–`echo $ac_prev | sed ‘s/_/-/g’`
as_fn_error $? “missing argument to $ac_option”
fi
if test -n “$ac_unrecognized_opts”; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? “unrecognized options: $ac_unrecognized_opts” ;;
*) $as_echo “$as_me: WARNING: unrecognized options: $ac_unrecognized_opts” >&2 ;;
esac
fi
# Check all directory arguments for consistency.
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
case $ac_val in
*/ )
ac_val=`expr “X$ac_val” : ‘X\(.*[^/]\)’ \| “X$ac_val” : ‘X\(.*\)’`
eval $ac_var=\$ac_val;;
esac
# Be sure to have absolute directory names.
case $ac_val in
[\\/$]* | ?:[\\/]* ) continue;;
NONE | ” ) case $ac_var in *prefix ) continue;; esac;;
esac
as_fn_error $? “expected an absolute directory name for –$ac_var: $ac_val”
done
# There might be people who depend on the old broken behavior: `$host’
# used to hold the argument of –host etc.
# FIXME: To remove some day.
build=$build_alias
host=$host_alias
target=$target_alias
# FIXME: To remove some day.
if test “x$host_alias” != x; then
if test “x$build_alias” = x; then
cross_compiling=maybe
elif test “x$build_alias” != “x$host_alias”; then
cross_compiling=yes
fi
fi
ac_tool_prefix=
test -n “$host_alias” && ac_tool_prefix=$host_alias-
test “$silent” = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n “$ac_pwd” &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd “$ac_pwd” && ls -di .` ||
as_fn_error $? “working directory cannot be determined”
test “X$ac_ls_di” = “X$ac_pwd_ls_di” ||
as_fn_error $? “pwd does not report name of working directory”
# Find the source files, if location was not specified.
if test -z “$srcdir”; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then the parent directory.
ac_confdir=`$as_dirname — “$as_myself” ||
$as_expr X”$as_myself” : ‘X\(.*[^/]\)//*[^/][^/]*/*$’ \| \
X”$as_myself” : ‘X\(//\)[^/]’ \| \
X”$as_myself” : ‘X\(//\)$’ \| \
X”$as_myself” : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X”$as_myself” |
sed ‘/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
srcdir=$ac_confdir
if test ! -r “$srcdir/$ac_unique_file”; then
srcdir=..
fi
else
ac_srcdir_defaulted=no
fi
if test ! -r “$srcdir/$ac_unique_file”; then
test “$ac_srcdir_defaulted” = yes && srcdir=”$ac_confdir or ..”
as_fn_error $? “cannot find sources ($ac_unique_file) in $srcdir”
fi
ac_msg=”sources are in $srcdir, but \`cd $srcdir’ does not work”
ac_abs_confdir=`(
cd “$srcdir” && test -r “./$ac_unique_file” || as_fn_error $? “$ac_msg”
pwd)`
# When building in place, set srcdir=.
if test “$ac_abs_confdir” = “$ac_pwd”; then
srcdir=.
fi
# Remove unnecessary trailing slashes from srcdir.
# Double slashes in file names in object file debugging info
# mess up M-x gdb in Emacs.
case $srcdir in
*/) srcdir=`expr “X$srcdir” : ‘X\(.*[^/]\)’ \| “X$srcdir” : ‘X\(.*\)’`;;
esac
for ac_var in $ac_precious_vars; do
eval ac_env_${ac_var}_set=\${${ac_var}+set}
eval ac_env_${ac_var}_value=\$${ac_var}
eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
eval ac_cv_env_${ac_var}_value=\$${ac_var}
done
#
# Report the –help message.
#
if test “$ac_init_help” = “long”; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures newudpl 1.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or \`..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/newudpl]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
_ACEOF
cat <<\_ACEOF
Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
_ACEOF
fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of newudpl 1.7:";;
esac
cat <<\_ACEOF
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
--enable-dependency-tracking
do not reject slow dependency extractors
--disable-dependency-tracking
speeds up one-time build
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L
nonstandard directory
you have headers in a nonstandard directory
CPP C preprocessor
Use these variables to override the choices made by `configure’ or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to the package provider.
_ACEOF
ac_status=$?
fi
if test “$ac_init_help” = “recursive”; then
# If there are subdirs, report their specific –help.
for ac_dir in : $ac_subdirs_all; do test “x$ac_dir” = x: && continue
test -d “$ac_dir” ||
{ cd “$srcdir” && ac_pwd=`pwd` && srcdir=. && test -d “$ac_dir”; } ||
continue
ac_builddir=.
case “$ac_dir” in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
ac_dir_suffix=/`$as_echo “$ac_dir” | sed ‘s|^\.[\\/]||’`
# A “..” for each directory in $ac_dir_suffix.
ac_top_builddir_sub=`$as_echo “$ac_dir_suffix” | sed ‘s|/[^\\/]*|/..|g;s|/||’`
case $ac_top_builddir_sub in
“”) ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix
case $srcdir in
.) # We are building in place.
ac_srcdir=.
ac_top_srcdir=$ac_top_builddir_sub
ac_abs_top_srcdir=$ac_pwd ;;
[\\/]* | ?:[\\/]* ) # Absolute name.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir
ac_abs_top_srcdir=$srcdir ;;
*) # Relative name.
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_build_prefix$srcdir
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd “$ac_dir” || { ac_status=$?; continue; }
# Check for guested configure.
if test -f “$ac_srcdir/configure.gnu”; then
echo &&
$SHELL “$ac_srcdir/configure.gnu” –help=recursive
elif test -f “$ac_srcdir/configure”; then
echo &&
$SHELL “$ac_srcdir/configure” –help=recursive
else
$as_echo “$as_me: WARNING: no configuration information is in $ac_dir” >&2
fi || ac_status=$?
cd “$ac_pwd” || { ac_status=$?; break; }
done
fi
test -n “$ac_init_help” && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
newudpl configure 1.7
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
exit
fi
## ------------------------ ##
## Autoconf initialization. ##
## ------------------------ ##
# ac_fn_c_try_compile LINENO
# --------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
rm -f conftest.$ac_objext
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval “$ac_compile”) 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v ‘^ *+’ conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; } && {
test -z “$ac_c_werror_flag” ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then :
ac_retval=0
else
$as_echo “$as_me: failed program was:” >&5
sed ‘s/^/| /’ conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
# ac_fn_c_try_link LINENO
# ———————–
# Try to link conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-“$1″} as_lineno_stack=as_lineno_stack=$as_lineno_stack
rm -f conftest.$ac_objext conftest$ac_exeext
if { { ac_try=”$ac_link”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_link”) 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v ‘^ *+’ conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; } && {
test -z “$ac_c_werror_flag” ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test “$cross_compiling” = yes ||
test -x conftest$ac_exeext
}; then :
ac_retval=0
else
$as_echo “$as_me: failed program was:” >&5
sed ‘s/^/| /’ conftest.$ac_ext >&5
ac_retval=1
fi
# Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
# created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
# interfere with the next link command; also delete a directory that is
# left behind by Apple’s compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
# ac_fn_c_try_cpp LINENO
# ———————-
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-“$1″} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try=”$ac_cpp conftest.$ac_ext”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_cpp conftest.$ac_ext”) 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v ‘^ *+’ conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; } > conftest.i && {
test -z “$ac_c_preproc_warn_flag$ac_c_werror_flag” ||
test ! -s conftest.err
}; then :
ac_retval=0
else
$as_echo “$as_me: failed program was:” >&5
sed ‘s/^/| /’ conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
# ac_fn_c_try_run LINENO
# ———————-
# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
# that executables *can* be run.
ac_fn_c_try_run ()
{
as_lineno=${as_lineno-“$1″} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if { { ac_try=”$ac_link”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_link”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; } && { ac_try=’./conftest$ac_exeext’
{ { case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_try”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }; }; then :
ac_retval=0
else
$as_echo “$as_me: program exited with status $ac_status” >&5
$as_echo “$as_me: failed program was:” >&5
sed ‘s/^/| /’ conftest.$ac_ext >&5
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
# ——————————————————-
# Tests whether HEADER exists, giving a warning if it cannot be compiled using
# the include files in INCLUDES and setting the cache variable VAR
# accordingly.
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-“$1”} as_lineno_stack=as_lineno_stack=$as_lineno_stack
if eval \${$3+:} false; then :
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $2” >&5
$as_echo_n “checking for $2… ” >&6; }
if eval \${$3+:} false; then :
$as_echo_n “(cached) ” >&6
fi
eval ac_res=\$$3
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_res” >&5
$as_echo “$ac_res” >&6; }
else
# Is the header compilable?
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking $2 usability” >&5
$as_echo_n “checking $2 usability… ” >&6; }
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_header_compiler=yes
else
ac_header_compiler=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler” >&5
$as_echo “$ac_header_compiler” >&6; }
# Is the header present?
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking $2 presence” >&5
$as_echo_n “checking $2 presence… ” >&6; }
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <$2>
_ACEOF
if ac_fn_c_try_cpp “$LINENO”; then :
ac_header_preproc=yes
else
ac_header_preproc=no
fi
rm -f conftest.err conftest.i conftest.$ac_ext
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc” >&5
$as_echo “$ac_header_preproc” >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
yes:no: )
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!” >&5
$as_echo “$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler’s result” >&5
$as_echo “$as_me: WARNING: $2: proceeding with the compiler’s result” >&2;}
;;
no:yes:* )
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled” >&5
$as_echo “$as_me: WARNING: $2: present but cannot be compiled” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?” >&5
$as_echo “$as_me: WARNING: $2: check for missing prerequisite headers?” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation” >&5
$as_echo “$as_me: WARNING: $2: see the Autoconf documentation” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: section \”Present But Cannot Be Compiled\”” >&5
$as_echo “$as_me: WARNING: $2: section \”Present But Cannot Be Compiled\”” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler’s result” >&5
$as_echo “$as_me: WARNING: $2: proceeding with the compiler’s result” >&2;}
;;
esac
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $2” >&5
$as_echo_n “checking for $2… ” >&6; }
if eval \${$3+:} false; then :
$as_echo_n “(cached) ” >&6
else
eval “$3=\$ac_header_compiler”
fi
eval ac_res=\$$3
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_res” >&5
$as_echo “$ac_res” >&6; }
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# ——————————————————-
# Tests whether HEADER exists and can be compiled using the include files in
# INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-“$1”} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $2” >&5
$as_echo_n “checking for $2… ” >&6; }
if eval \${$3+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
eval “$3=yes”
else
eval “$3=no”
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_res” >&5
$as_echo “$ac_res” >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# ——————————————-
# Tests whether TYPE exists after having included INCLUDES, setting cache
# variable VAR accordingly.
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-“$1”} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $2” >&5
$as_echo_n “checking for $2… ” >&6; }
if eval \${$3+:} false; then :
$as_echo_n “(cached) ” >&6
else
eval “$3=no”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main ()
{
if (sizeof ($2))
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
main ()
{
if (sizeof (($2)))
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
else
eval “$3=yes”
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_res” >&5
$as_echo “$ac_res” >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
# ac_fn_c_check_func LINENO FUNC VAR
# ———————————-
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-“$1”} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $2” >&5
$as_echo_n “checking for $2… ” >&6; }
if eval \${$3+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case
For example, HP-UX 11i
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $2 (); below.
Prefer
#ifdef __STDC__
# include
# include
#endif
#undef $2
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern “C”
#endif
char $2 ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined __stub_$2 || defined __stub___$2
choke me
#endif
int
main ()
{
return $2 ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link “$LINENO”; then :
eval “$3=yes”
else
eval “$3=no”
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_res” >&5
$as_echo “$ac_res” >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by newudpl $as_me 1.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
_ACEOF
exec 5>>config.log
{
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##
hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`
/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
_ASUNAME
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
$as_echo “PATH: $as_dir”
done
IFS=$as_save_IFS
} >&5
cat >&5 <<_ACEOF
## ----------- ##
## Core tests. ##
## ----------- ##
_ACEOF
# Keep a trace of the command line.
# Strip out --no-create and --no-recursion so they do not pile up.
# Strip out --silent because we don't want to record it for future runs.
# Also quote any args containing shell meta-characters.
# Make two passes to allow for proper duplicate-argument suppression.
ac_configure_args=
ac_configure_args0=
ac_configure_args1=
ac_must_keep_next=false
for ac_pass in 1 2
do
for ac_arg
do
case $ac_arg in
-no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
2)
as_fn_append ac_configure_args1 " '$ac_arg'"
if test $ac_must_keep_next = true; then
ac_must_keep_next=false # Got value, back to normal.
else
case $ac_arg in
*=* | --config-cache | -C | -disable-* | --disable-* \
| -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
| -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
| -with-* | --with-* | -without-* | --without-* | --x)
case "$ac_configure_args0 " in
"$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
esac
;;
-* ) ac_must_keep_next=true ;;
esac
fi
as_fn_append ac_configure_args " '$ac_arg'"
;;
esac
done
done
{ ac_configure_args0=; unset ac_configure_args0;}
{ ac_configure_args1=; unset ac_configure_args1;}
# When interrupted or exit'd, cleanup temporary files, and complete
# config.log. We remove comments because anyway the quotes in there
# would cause problems or look ugly.
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
# Save into config.log some information that might help in debugging.
{
echo
$as_echo "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
for ac_var in `(set) 2>&1 | sed -n ‘\”s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p’\”`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
*_cv_*) { $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline” >&5
$as_echo “$as_me: WARNING: cache variable $ac_var contains a newline” >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
(set) 2>&1 |
case $as_nl`(ac_space=’\” ‘\”; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
sed -n \
“s/’\”/’\”\\\\’\”’\”/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=’\”\\2’\”/p”
;; #(
*)
sed -n “/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p”
;;
esac |
sort
)
echo
$as_echo “## —————– ##
## Output variables. ##
## —————– ##”
echo
for ac_var in $ac_subst_vars
do
eval ac_val=\$$ac_var
case $ac_val in
*\’\”*) ac_val=`$as_echo “$ac_val” | sed “s/’\”/’\”\\\\\\\\’\”’\”/g”`;;
esac
$as_echo “$ac_var=’\”$ac_val’\””
done | sort
echo
if test -n “$ac_subst_files”; then
$as_echo “## ——————- ##
## File substitutions. ##
## ——————- ##”
echo
for ac_var in $ac_subst_files
do
eval ac_val=\$$ac_var
case $ac_val in
*\’\”*) ac_val=`$as_echo “$ac_val” | sed “s/’\”/’\”\\\\\\\\’\”’\”/g”`;;
esac
$as_echo “$ac_var=’\”$ac_val’\””
done | sort
echo
fi
if test -s confdefs.h; then
$as_echo “## ———– ##
## confdefs.h. ##
## ———– ##”
echo
cat confdefs.h
echo
fi
test “$ac_signal” != 0 &&
$as_echo “$as_me: caught signal $ac_signal”
$as_echo “$as_me: exit $exit_status”
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
‘ 0
for ac_signal in 1 2 13 15; do
trap ‘ac_signal=’$ac_signal’; as_fn_exit 1′ $ac_signal
done
ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
$as_echo “/* confdefs.h */” > confdefs.h
# Predefined preprocessor variables.
cat >>confdefs.h <<_ACEOF
#define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_VERSION "$PACKAGE_VERSION"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_STRING "$PACKAGE_STRING"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define PACKAGE_URL "$PACKAGE_URL"
_ACEOF
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
# We do not want a PATH search for config.site.
case $CONFIG_SITE in #((
-*) ac_site_file1=./$CONFIG_SITE;;
*/*) ac_site_file1=$CONFIG_SITE;;
*) ac_site_file1=./$CONFIG_SITE;;
esac
elif test "x$prefix" != xNONE; then
ac_site_file1=$prefix/share/config.site
ac_site_file2=$prefix/etc/config.site
else
ac_site_file1=$ac_default_prefix/share/config.site
ac_site_file2=$ac_default_prefix/etc/config.site
fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo “$as_me: loading site script $ac_site_file” >&6;}
sed ‘s/^/| /’ “$ac_site_file” >&5
. “$ac_site_file” \
|| { { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error $? “failed to load site script $ac_site_file
See \`config.log’ for more details” “$LINENO” 5; }
fi
done
if test -r “$cache_file”; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != “$cache_file” && test -f “$cache_file”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: loading cache $cache_file” >&5
$as_echo “$as_me: loading cache $cache_file” >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . “$cache_file”;;
*) . “./$cache_file”;;
esac
fi
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: creating cache $cache_file” >&5
$as_echo “$as_me: creating cache $cache_file” >&6;}
>$cache_file
fi
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
for ac_var in $ac_precious_vars; do
eval ac_old_set=\$ac_cv_env_${ac_var}_set
eval ac_new_set=\$ac_env_${ac_var}_set
eval ac_old_val=\$ac_cv_env_${ac_var}_value
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
{ $as_echo “$as_me:${as_lineno-$LINENO}: error: \`$ac_var’ was set to \`$ac_old_val’ in the previous run” >&5
$as_echo “$as_me: error: \`$ac_var’ was set to \`$ac_old_val’ in the previous run” >&2;}
ac_cache_corrupted=: ;;
,set)
{ $as_echo “$as_me:${as_lineno-$LINENO}: error: \`$ac_var’ was not set in the previous run” >&5
$as_echo “$as_me: error: \`$ac_var’ was not set in the previous run” >&2;}
ac_cache_corrupted=: ;;
,);;
*)
if test “x$ac_old_val” != “x$ac_new_val”; then
# differences in whitespace do not lead to failure.
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test “$ac_old_val_w” != “$ac_new_val_w”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: error: \`$ac_var’ has changed since the previous run:” >&5
$as_echo “$as_me: error: \`$ac_var’ has changed since the previous run:” >&2;}
ac_cache_corrupted=:
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var’ since the previous run:” >&5
$as_echo “$as_me: warning: ignoring whitespace changes in \`$ac_var’ since the previous run:” >&2;}
eval $ac_var=\$ac_old_val
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'” >&5
$as_echo “$as_me: former value: \`$ac_old_val'” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'” >&5
$as_echo “$as_me: current value: \`$ac_new_val'” >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test “$ac_new_set” = set; then
case $ac_new_val in
*\’*) ac_arg=$ac_var=`$as_echo “$ac_new_val” | sed “s/’/’\\\\\\\\”/g”` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case ” $ac_configure_args ” in
*” ‘$ac_arg’ “*) ;; # Avoid dups. Use of quotes ensures accuracy.
*) as_fn_append ac_configure_args ” ‘$ac_arg'” ;;
esac
fi
done
if $ac_cache_corrupted; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
{ $as_echo “$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build” >&5
$as_echo “$as_me: error: changes in the environment can compromise the build” >&2;}
as_fn_error $? “run \`make distclean’ and/or \`rm $cache_file’ and start over” “$LINENO” 5
fi
## ——————– ##
## Main body of script. ##
## ——————– ##
ac_ext=c
ac_cpp=’$CPP $CPPFLAGS’
ac_compile=’$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
#AM_CONFIG_HEADER([config.h])
am__api_version=’1.15′
ac_aux_dir=
for ac_dir in “$srcdir” “$srcdir/..” “$srcdir/../..”; do
if test -f “$ac_dir/install-sh”; then
ac_aux_dir=$ac_dir
ac_install_sh=”$ac_aux_dir/install-sh -c”
break
elif test -f “$ac_dir/install.sh”; then
ac_aux_dir=$ac_dir
ac_install_sh=”$ac_aux_dir/install.sh -c”
break
elif test -f “$ac_dir/shtool”; then
ac_aux_dir=$ac_dir
ac_install_sh=”$ac_aux_dir/shtool install -c”
break
fi
done
if test -z “$ac_aux_dir”; then
as_fn_error $? “cannot find install-sh, install.sh, or shtool in \”$srcdir\” \”$srcdir/..\” \”$srcdir/../..\”” “$LINENO” 5
fi
# These three variables are undocumented and unsupported,
# and are intended to be withdrawn in a future Autoconf release.
# They can cause serious problems if a builder’s source tree is in a directory
# whose full name contains unusual characters.
ac_config_guess=”$SHELL $ac_aux_dir/config.guess” # Please don’t use this var.
ac_config_sub=”$SHELL $ac_aux_dir/config.sub” # Please don’t use this var.
ac_configure=”$SHELL $ac_aux_dir/configure” # Please don’t use this var.
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
# SunOS /usr/etc/install
# IRIX /sbin/install
# AIX /bin/install
# AmigaOS /C/install, which installs bootblocks on floppy discs
# AIX 4 /usr/bin/installbsd, which doesn’t work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group “staff”
# OS/2’s system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install” >&5
$as_echo_n “checking for a BSD-compatible install… ” >&6; }
if test -z “$INSTALL”; then
if ${ac_cv_path_install+:} false; then :
$as_echo_n “(cached) ” >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
# Account for people who put trailing slashes in PATH elements.
case $as_dir/ in #((
./ | .// | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
# Don’t use installbsd from OSF since it installs stuff as root
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_prog$ac_exec_ext”; then
if test $ac_prog = install &&
grep dspmsg “$as_dir/$ac_prog$ac_exec_ext” >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
grep pwplus “$as_dir/$ac_prog$ac_exec_ext” >/dev/null 2>&1; then
# program-specific install script used by HP pwplus–don’t use.
:
else
rm -rf conftest.one conftest.two conftest.dir
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
if “$as_dir/$ac_prog$ac_exec_ext” -c conftest.one conftest.two “`pwd`/conftest.dir” &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
ac_cv_path_install=”$as_dir/$ac_prog$ac_exec_ext -c”
break 3
fi
fi
fi
done
done
;;
esac
done
IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
if test “${ac_cv_path_install+set}” = set; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don’t cache a
# value for INSTALL within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
INSTALL=$ac_install_sh
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $INSTALL” >&5
$as_echo “$INSTALL” >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z “$INSTALL_PROGRAM” && INSTALL_PROGRAM=’${INSTALL}’
test -z “$INSTALL_SCRIPT” && INSTALL_SCRIPT=’${INSTALL}’
test -z “$INSTALL_DATA” && INSTALL_DATA=’${INSTALL} -m 644′
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether build environment is sane” >&5
$as_echo_n “checking whether build environment is sane… ” >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf=’
‘
case `pwd` in
*[\\\”\#\$\&\’\`$am_lf]*)
as_fn_error $? “unsafe absolute working directory name” “$LINENO” 5;;
esac
case $srcdir in
*[\\\”\#\$\&\’\`$am_lf\ \ ]*)
as_fn_error $? “unsafe srcdir value: ‘$srcdir'” “$LINENO” 5;;
esac
# Do ‘set’ in a subshell so we don’t clobber the current shell’s
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink’s containing
# directory).
if (
am_has_slept=no
for am_try in 1 2; do
echo “timestamp, slept: $am_has_slept” > conftest.file
set X `ls -Lt “$srcdir/configure” conftest.file 2> /dev/null`
if test “$*” = “X”; then
# -L didn’t work.
set X `ls -t “$srcdir/configure” conftest.file`
fi
if test “$*” != “X $srcdir/configure conftest.file” \
&& test “$*” != “X conftest.file $srcdir/configure”; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered “sane”.
as_fn_error $? “ls -t appears to fail. Make sure there is not a broken
alias in your environment” “$LINENO” 5
fi
if test “$2” = conftest.file || test $am_try -eq 2; then
break
fi
# Just in case.
sleep 1
am_has_slept=yes
done
test “$2” = conftest.file
)
then
# Ok.
:
else
as_fn_error $? “newly created file is older than distributed files!
Check your system clock” “$LINENO” 5
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: yes” >&5
$as_echo “yes” >&6; }
# If we didn’t sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
if grep ‘slept: no’ conftest.file >/dev/null 2>&1; then
( sleep 1 ) &
am_sleep_pid=$!
fi
rm -f conftest.file
test “$program_prefix” != NONE &&
program_transform_name=”s&^&$program_prefix&;$program_transform_name”
# Use a double $ so make ignores it.
test “$program_suffix” != NONE &&
program_transform_name=”s&\$&$program_suffix&;$program_transform_name”
# Double any \ or $.
# By default was `s,x,x’, remove it if useless.
ac_script=’s/[\\$]/&&/g;s/;s,x,x,$//’
program_transform_name=`$as_echo “$program_transform_name” | sed “$ac_script”`
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd “$ac_aux_dir” && pwd`
if test x”${MISSING+set}” != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING=”\${SHELL} \”$am_aux_dir/missing\”” ;;
*)
MISSING=”\${SHELL} $am_aux_dir/missing” ;;
esac
fi
# Use eval to expand $SHELL
if eval “$MISSING –is-lightweight”; then
am_missing_run=”$MISSING ”
else
am_missing_run=
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: ‘missing’ script is too old or missing” >&5
$as_echo “$as_me: WARNING: ‘missing’ script is too old or missing” >&2;}
fi
if test x”${install_sh+set}” != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh=”\${SHELL} ‘$am_aux_dir/install-sh'” ;;
*)
install_sh=”\${SHELL} $am_aux_dir/install-sh”
esac
fi
# Installed binaries are usually stripped using ‘strip’ when the user
# run “make install-strip”. However ‘strip’ might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the ‘STRIP’ environment variable to overrule this program.
if test “$cross_compiling” != no; then
if test -n “$ac_tool_prefix”; then
# Extract the first word of “${ac_tool_prefix}strip”, so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_STRIP+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$STRIP”; then
ac_cv_prog_STRIP=”$STRIP” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_STRIP=”${ac_tool_prefix}strip”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
STRIP=$ac_cv_prog_STRIP
if test -n “$STRIP”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $STRIP” >&5
$as_echo “$STRIP” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
fi
if test -z “$ac_cv_prog_STRIP”; then
ac_ct_STRIP=$STRIP
# Extract the first word of “strip”, so it can be a program name with args.
set dummy strip; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$ac_ct_STRIP”; then
ac_cv_prog_ac_ct_STRIP=”$ac_ct_STRIP” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_ac_ct_STRIP=”strip”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n “$ac_ct_STRIP”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP” >&5
$as_echo “$ac_ct_STRIP” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
if test “x$ac_ct_STRIP” = x; then
STRIP=”:”
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet” >&5
$as_echo “$as_me: WARNING: using cross tools not prefixed with host triplet” >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
fi
else
STRIP=”$ac_cv_prog_STRIP”
fi
fi
INSTALL_STRIP_PROGRAM=”\$(install_sh) -c -s”
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p” >&5
$as_echo_n “checking for a thread-safe mkdir -p… ” >&6; }
if test -z “$MKDIR_P”; then
if ${ac_cv_path_mkdir+:} false; then :
$as_echo_n “(cached) ” >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in ” $ac_executable_extensions; do
as_fn_executable_p “$as_dir/$ac_prog$ac_exec_ext” || continue
case `”$as_dir/$ac_prog$ac_exec_ext” –version 2>&1` in #(
‘mkdir (GNU coreutils) ‘* | \
‘mkdir (coreutils) ‘* | \
‘mkdir (fileutils) ‘4.1*)
ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
break 3;;
esac
done
done
done
IFS=$as_save_IFS
fi
test -d ./–version && rmdir ./–version
if test “${ac_cv_path_mkdir+set}” = set; then
MKDIR_P=”$ac_cv_path_mkdir -p”
else
# As a last resort, use the slow shell script. Don’t cache a
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
MKDIR_P=”$ac_install_sh -d”
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $MKDIR_P” >&5
$as_echo “$MKDIR_P” >&6; }
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of “$ac_prog”, so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$AWK”; then
ac_cv_prog_AWK=”$AWK” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_AWK=”$ac_prog”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
AWK=$ac_cv_prog_AWK
if test -n “$AWK”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $AWK” >&5
$as_echo “$AWK” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
test -n “$AWK” && break
done
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)” >&5
$as_echo_n “checking whether ${MAKE-make} sets \$(MAKE)… ” >&6; }
set x ${MAKE-make}
ac_make=`$as_echo “$2” | sed ‘s/+/p/g; s/[^a-zA-Z0-9_]/_/g’`
if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
*@@@%%%=?*=@@@%%%*)
eval ac_cv_prog_make_${ac_make}_set=yes;;
*)
eval ac_cv_prog_make_${ac_make}_set=no;;
esac
rm -f conftest.make
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: yes” >&5
$as_echo “yes” >&6; }
SET_MAKE=
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
SET_MAKE=”MAKE=${MAKE-make}”
fi
rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
# Check whether –enable-silent-rules was given.
if test “${enable_silent_rules+set}” = set; then :
enableval=$enable_silent_rules;
fi
case $enable_silent_rules in # (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=1;;
esac
am_make=${MAKE-make}
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables” >&5
$as_echo_n “checking whether $am_make supports nested variables… ” >&6; }
if ${am_cv_make_support_nested_variables+:} false; then :
$as_echo_n “(cached) ” >&6
else
if $as_echo ‘TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit’ | $am_make -f – >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables” >&5
$as_echo “$am_cv_make_support_nested_variables” >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V=’$(V)’
AM_DEFAULT_V=’$(AM_DEFAULT_VERBOSITY)’
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AM_BACKSLASH=’\’
if test “`cd $srcdir && pwd`” != “`pwd`”; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make’s output
# is not polluted with repeated “-I.”
am__isrc=’ -I$(srcdir)’
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
as_fn_error $? “source directory already configured; run \”make distclean\” there first” “$LINENO” 5
fi
fi
# test whether we have cygpath
if test -z “$CYGPATH_W”; then
if (cygpath –version) >/dev/null 2>/dev/null; then
CYGPATH_W=’cygpath -w’
else
CYGPATH_W=echo
fi
fi
# Define the identity of the package.
PACKAGE=’newudpl’
VERSION=’1.7′
cat >>confdefs.h <<_ACEOF
#define PACKAGE "$PACKAGE"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define VERSION "$VERSION"
_ACEOF
# Some tools Automake needs.
ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
#
#
mkdir_p=’$(MKDIR_P)’
# We need awk for the “check” target (and possibly the TAP driver). The
# system “awk” is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it’s still used
# in the wild 🙁 We should find a proper way to deprecate it …
AMTAR=’$${TAR-tar}’
# We’ll loop over all known methods to create a tar archive until one works.
_am_tools=’gnutar pax cpio none’
am__tar=’$${TAR-tar} chof – “$$tardir”‘ am__untar=’$${TAR-tar} xf -‘
# POSIX will say in a future version that running “rm -f” with no argument
# is OK; and we want to be able to make that assumption in our Makefile
# recipes. So use an aggressive probe to check that the usage we want is
# actually supported “in the wild” to an acceptable degree.
# See automake bug#10828.
# To make any issue more visible, cause the running configure to be aborted
# by default if the ‘rm’ program in use doesn’t match our expectations; the
# user can still override this though.
if rm -f && rm -fr && rm -rf; then : OK; else
cat >&2 <<'END'
Oops!
Your 'rm' program seems unable to run without file operands specified
on the command line, even when the '-f' option is present. This is contrary
to the behaviour of most rm programs out there, and not conforming with
the upcoming POSIX standard:
Please tell bug- about your system, including the value
of your $PATH and any error possibly output before this message. This
can help us improve future automake versions.
END
if test x”$ACCEPT_INFERIOR_RM_PROGRAM” = x”yes”; then
echo ‘Configuration will proceed anyway, since you have set the’ >&2
echo ‘ACCEPT_INFERIOR_RM_PROGRAM variable to “yes”‘ >&2
echo >&2
else
cat >&2 <<'END'
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly:
If you want to complete the configuration process using your problematic
‘rm’ anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
to “yes”, and re-run configure.
END
as_fn_error $? “Your ‘rm’ program is bad, sorry.” “$LINENO” 5
fi
fi
# Checks for programs.
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of “$ac_prog”, so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_AWK+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$AWK”; then
ac_cv_prog_AWK=”$AWK” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_AWK=”$ac_prog”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
AWK=$ac_cv_prog_AWK
if test -n “$AWK”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $AWK” >&5
$as_echo “$AWK” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
test -n “$AWK” && break
done
ac_ext=c
ac_cpp=’$CPP $CPPFLAGS’
ac_compile=’$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n “$ac_tool_prefix”; then
# Extract the first word of “${ac_tool_prefix}gcc”, so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_CC+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$CC”; then
ac_cv_prog_CC=”$CC” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_CC=”${ac_tool_prefix}gcc”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
CC=$ac_cv_prog_CC
if test -n “$CC”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $CC” >&5
$as_echo “$CC” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
fi
if test -z “$ac_cv_prog_CC”; then
ac_ct_CC=$CC
# Extract the first word of “gcc”, so it can be a program name with args.
set dummy gcc; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$ac_ct_CC”; then
ac_cv_prog_ac_ct_CC=”$ac_ct_CC” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_ac_ct_CC=”gcc”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n “$ac_ct_CC”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC” >&5
$as_echo “$ac_ct_CC” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
if test “x$ac_ct_CC” = x; then
CC=””
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet” >&5
$as_echo “$as_me: WARNING: using cross tools not prefixed with host triplet” >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
else
CC=”$ac_cv_prog_CC”
fi
if test -z “$CC”; then
if test -n “$ac_tool_prefix”; then
# Extract the first word of “${ac_tool_prefix}cc”, so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_CC+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$CC”; then
ac_cv_prog_CC=”$CC” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_CC=”${ac_tool_prefix}cc”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
CC=$ac_cv_prog_CC
if test -n “$CC”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $CC” >&5
$as_echo “$CC” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
fi
fi
if test -z “$CC”; then
# Extract the first word of “cc”, so it can be a program name with args.
set dummy cc; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_CC+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$CC”; then
ac_cv_prog_CC=”$CC” # Let the user override the test.
else
ac_prog_rejected=no
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
if test “$as_dir/$ac_word$ac_exec_ext” = “/usr/ucb/cc”; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC=”cc”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy $ac_cv_prog_CC
shift
if test $# != 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
ac_cv_prog_CC=”$as_dir/$ac_word${1+’ ‘}$@”
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n “$CC”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $CC” >&5
$as_echo “$CC” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
fi
if test -z “$CC”; then
if test -n “$ac_tool_prefix”; then
for ac_prog in cl.exe
do
# Extract the first word of “$ac_tool_prefix$ac_prog”, so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_CC+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$CC”; then
ac_cv_prog_CC=”$CC” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_CC=”$ac_tool_prefix$ac_prog”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
CC=$ac_cv_prog_CC
if test -n “$CC”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $CC” >&5
$as_echo “$CC” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
test -n “$CC” && break
done
fi
if test -z “$CC”; then
ac_ct_CC=$CC
for ac_prog in cl.exe
do
# Extract the first word of “$ac_prog”, so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $ac_word” >&5
$as_echo_n “checking for $ac_word… ” >&6; }
if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -n “$ac_ct_CC”; then
ac_cv_prog_ac_ct_CC=”$ac_ct_CC” # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_exec_ext in ” $ac_executable_extensions; do
if as_fn_executable_p “$as_dir/$ac_word$ac_exec_ext”; then
ac_cv_prog_ac_ct_CC=”$ac_prog”
$as_echo “$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext” >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n “$ac_ct_CC”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC” >&5
$as_echo “$ac_ct_CC” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
fi
test -n “$ac_ct_CC” && break
done
if test “x$ac_ct_CC” = x; then
CC=””
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet” >&5
$as_echo “$as_me: WARNING: using cross tools not prefixed with host triplet” >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
fi
fi
test -z “$CC” && { { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error $? “no acceptable C compiler found in \$PATH
See \`config.log’ for more details” “$LINENO” 5; }
# Provide some information about the compiler.
$as_echo “$as_me:${as_lineno-$LINENO}: checking for C compiler version” >&5
set X $ac_compile
ac_compiler=$2
for ac_option in –version -v -V -qversion; do
{ { ac_try=”$ac_compiler $ac_option >&5″
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_compiler $ac_option >&5”) 2>conftest.err
ac_status=$?
if test -s conftest.err; then
sed ’10a\
… rest of stderr output deleted …
10q’ conftest.err >conftest.er1
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }
done
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
ac_clean_files_save=$ac_clean_files
ac_clean_files=”$ac_clean_files a.out a.out.dSYM a.exe b.out”
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether the C compiler works” >&5
$as_echo_n “checking whether the C compiler works… ” >&6; }
ac_link_default=`$as_echo “$ac_link” | sed ‘s/ -o *conftest[^ ]*//’`
# The possible output files:
ac_files=”a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*”
ac_rmfiles=
for ac_file in $ac_files
do
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
* ) ac_rmfiles=”$ac_rmfiles $ac_file”;;
esac
done
rm -f $ac_rmfiles
if { { ac_try=”$ac_link_default”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_link_default”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }; then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no’.
# So ignore a value of `no’, otherwise this would lead to `EXEEXT = no’
# in a Makefile. We should not override ac_cv_exeext if it was cached,
# so that the user can short-circuit this test for compilers unknown to
# Autoconf.
for ac_file in $ac_files ”
do
test -f “$ac_file” || continue
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
;;
[ab].out )
# We found the default executable, but exeext=” is most
# certainly right.
break;;
*.* )
if test “${ac_cv_exeext+set}” = set && test “$ac_cv_exeext” != no;
then :; else
ac_cv_exeext=`expr “$ac_file” : ‘[^.]*\(\..*\)’`
fi
# We set ac_cv_exeext here because the later test for it is not
# safe: cross compilers may not add the suffix if given an `-o’
# argument, so we may need to know it at that point already.
# Even if this section looks crufty: it has the advantage of
# actually working.
break;;
* )
break;;
esac
done
test “$ac_cv_exeext” = no && ac_cv_exeext=
else
ac_file=”
fi
if test -z “$ac_file”; then :
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no” >&5
$as_echo “no” >&6; }
$as_echo “$as_me: failed program was:” >&5
sed ‘s/^/| /’ conftest.$ac_ext >&5
{ { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error 77 “C compiler cannot create executables
See \`config.log’ for more details” “$LINENO” 5; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: yes” >&5
$as_echo “yes” >&6; }
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name” >&5
$as_echo_n “checking for C compiler default output file name… ” >&6; }
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_file” >&5
$as_echo “$ac_file” >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for suffix of executables” >&5
$as_echo_n “checking for suffix of executables… ” >&6; }
if { { ac_try=”$ac_link”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_link”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }; then :
# If both `conftest.exe’ and `conftest’ are `present’ (well, observable)
# catch `conftest.exe’. For instance with Cygwin, `ls conftest’ will
# work properly (i.e., refer to `conftest.exe’), while it won’t with
# `rm’.
for ac_file in conftest.exe conftest conftest.*; do
test -f “$ac_file” || continue
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
*.* ) ac_cv_exeext=`expr “$ac_file” : ‘[^.]*\(\..*\)’`
break;;
* ) break;;
esac
done
else
{ { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error $? “cannot compute suffix of executables: cannot compile and link
See \`config.log’ for more details” “$LINENO” 5; }
fi
rm -f conftest conftest$ac_cv_exeext
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext” >&5
$as_echo “$ac_cv_exeext” >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
int
main ()
{
FILE *f = fopen (“conftest.out”, “w”);
return ferror (f) || fclose (f) != 0;
;
return 0;
}
_ACEOF
ac_clean_files=”$ac_clean_files conftest.out”
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling” >&5
$as_echo_n “checking whether we are cross compiling… ” >&6; }
if test “$cross_compiling” != yes; then
{ { ac_try=”$ac_link”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_link”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }
if { ac_try=’./conftest$ac_cv_exeext’
{ { case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_try”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test “$cross_compiling” = maybe; then
cross_compiling=yes
else
{ { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error $? “cannot run C compiled programs.
If you meant to cross compile, use \`–host’.
See \`config.log’ for more details” “$LINENO” 5; }
fi
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $cross_compiling” >&5
$as_echo “$cross_compiling” >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for suffix of object files” >&5
$as_echo_n “checking for suffix of object files… ” >&6; }
if ${ac_cv_objext+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
rm -f conftest.o conftest.obj
if { { ac_try=”$ac_compile”
case “(($ac_try” in
*\”* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo=”\”\$as_me:${as_lineno-$LINENO}: $ac_try_echo\””
$as_echo “$ac_try_echo”; } >&5
(eval “$ac_compile”) 2>&5
ac_status=$?
$as_echo “$as_me:${as_lineno-$LINENO}: \$? = $ac_status” >&5
test $ac_status = 0; }; then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f “$ac_file” || continue;
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
*) ac_cv_objext=`expr “$ac_file” : ‘.*\.\(.*\)’`
break;;
esac
done
else
$as_echo “$as_me: failed program was:” >&5
sed ‘s/^/| /’ conftest.$ac_ext >&5
{ { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error $? “cannot compute suffix of object files: cannot compile
See \`config.log’ for more details” “$LINENO” 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext” >&5
$as_echo “$ac_cv_objext” >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler” >&5
$as_echo_n “checking whether we are using the GNU C compiler… ” >&6; }
if ${ac_cv_c_compiler_gnu+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
#ifndef __GNUC__
choke me
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_compiler_gnu=yes
else
ac_compiler_gnu=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu” >&5
$as_echo “$ac_cv_c_compiler_gnu” >&6; }
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
ac_test_CFLAGS=${CFLAGS+set}
ac_save_CFLAGS=$CFLAGS
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g” >&5
$as_echo_n “checking whether $CC accepts -g… ” >&6; }
if ${ac_cv_prog_cc_g+:} false; then :
$as_echo_n “(cached) ” >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
CFLAGS=”-g”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_cv_prog_cc_g=yes
else
CFLAGS=””
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
else
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS=”-g”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_cv_prog_cc_g=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g” >&5
$as_echo “$ac_cv_prog_cc_g” >&6; }
if test “$ac_test_CFLAGS” = set; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test “$GCC” = yes; then
CFLAGS=”-g -O2″
else
CFLAGS=”-g”
fi
else
if test “$GCC” = yes; then
CFLAGS=”-O2″
else
CFLAGS=
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89” >&5
$as_echo_n “checking for $CC option to accept ISO C89… ” >&6; }
if ${ac_cv_prog_cc_c89+:} false; then :
$as_echo_n “(cached) ” >&6
else
ac_cv_prog_cc_c89=no
ac_save_CC=$CC
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include
struct stat;
/* Most of the following tests are stolen from RCS 5.7’s src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
static char *e (p, i)
char **p;
int i;
{
return p[i];
}
static char *f (char * (*g) (char **, int), char **p, …)
{
char *s;
va_list v;
va_start (v,p);
s = g (p, va_arg (v,int));
va_end (v);
return s;
}
/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
function prototypes and stuff, but not ‘\xHH’ hex character constants.
These don’t provoke an error unfortunately, instead are silently treated
as ‘x’. The following induces an error, until -std is added to get
proper ANSI mode. Curiously ‘\x00′!=’x’ always comes out true, for an
array size at least. It’s necessary to write ‘\x00’==0 to get something
that’s true only with -std. */
int osf4_cc_array [‘\x00’ == 0 ? 1 : -1];
/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
inside strings and character constants. */
#define FOO(x) ‘x’
int xlc6_cc_array[FOO(a) == ‘x’ ? 1 : -1];
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
int argc;
char **argv;
int
main ()
{
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
;
return 0;
}
_ACEOF
for ac_arg in ” -qlanglvl=extc89 -qlanglvl=ansi -std \
-Ae “-Aa -D_HPUX_SOURCE” “-Xc -D__EXTENSIONS__”
do
CC=”$ac_save_CC $ac_arg”
if ac_fn_c_try_compile “$LINENO”; then :
ac_cv_prog_cc_c89=$ac_arg
fi
rm -f core conftest.err conftest.$ac_objext
test “x$ac_cv_prog_cc_c89” != “xno” && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
fi
# AC_CACHE_VAL
case “x$ac_cv_prog_cc_c89” in
x)
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: none needed” >&5
$as_echo “none needed” >&6; } ;;
xno)
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: unsupported” >&5
$as_echo “unsupported” >&6; } ;;
*)
CC=”$CC $ac_cv_prog_cc_c89″
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89” >&5
$as_echo “$ac_cv_prog_cc_c89” >&6; } ;;
esac
if test “x$ac_cv_prog_cc_c89” != xno; then :
fi
ac_ext=c
ac_cpp=’$CPP $CPPFLAGS’
ac_compile=’$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_ext=c
ac_cpp=’$CPP $CPPFLAGS’
ac_compile=’$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together” >&5
$as_echo_n “checking whether $CC understands -c and -o together… ” >&6; }
if ${am_cv_prog_cc_c_o+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
# Make sure it works both with $CC and with simple cc.
# Following AC_PROG_CC_C_O, we do the test twice because some
# compilers refuse to overwrite an existing .o file with -o,
# though they will create one.
am_cv_prog_cc_c_o=yes
for am_i in 1 2; do
if { echo “$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext” >&5
($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
ac_status=$?
echo “$as_me:$LINENO: \$? = $ac_status” >&5
(exit $ac_status); } \
&& test -f conftest2.$ac_objext; then
: OK
else
am_cv_prog_cc_c_o=no
break
fi
done
rm -f core conftest*
unset am_i
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o” >&5
$as_echo “$am_cv_prog_cc_c_o” >&6; }
if test “$am_cv_prog_cc_c_o” != yes; then
# Losing compiler, so override with the script.
# FIXME: It is wrong to rewrite CC.
# But if we don’t then we get into trouble of one sort or another.
# A longer-term fix would be to have automake use am__CC in this case,
# and then we could set am__CC=”\$(top_srcdir)/compile \$(CC)”
CC=”$am_aux_dir/compile $CC”
fi
ac_ext=c
ac_cpp=’$CPP $CPPFLAGS’
ac_compile=’$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
DEPDIR=”${am__leading_dot}deps”
ac_config_commands=”$ac_config_commands depfiles”
am_make=${MAKE-make}
cat > confinc << 'END'
am__doit:
@echo this is the am__doit target
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
$as_echo_n “checking for style of include used by $am_make… ” >&6; }
am__include=”#”
am__quote=
_am_result=none
# First try GNU make style include.
echo “include confinc” > confmf
# Ignore all kinds of additional output from ‘make’.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
am__quote=
_am_result=GNU
;;
esac
# Now try BSD make style include.
if test “$am__include” = “#”; then
echo ‘.include “confinc”‘ > confmf
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=.include
am__quote=”\””
_am_result=BSD
;;
esac
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $_am_result” >&5
$as_echo “$_am_result” >&6; }
rm -f confinc confmf
# Check whether –enable-dependency-tracking was given.
if test “${enable_dependency_tracking+set}” = set; then :
enableval=$enable_dependency_tracking;
fi
if test “x$enable_dependency_tracking” != xno; then
am_depcomp=”$ac_aux_dir/depcomp”
AMDEPBACKSLASH=’\’
am__nodep=’_no’
fi
if test “x$enable_dependency_tracking” != xno; then
AMDEP_TRUE=
AMDEP_FALSE=’#’
else
AMDEP_TRUE=’#’
AMDEP_FALSE=
fi
depcc=”$CC” am_compiler_list=
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc” >&5
$as_echo_n “checking dependency style of $depcc… ” >&6; }
if ${am_cv_CC_dependencies_compiler_type+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -z “$AMDEP_TRUE” && test -f “$am_depcomp”; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don’t know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named ‘D’ — because ‘-MD’ means “put the output
# in D”.
rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won’t find it if we’re
# using a relative directory.
cp “$am_depcomp” conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64’s cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_CC_dependencies_compiler_type=none
if test “$am_compiler_list” = “”; then
am_compiler_list=`sed -n ‘s/^#*\([a-zA-Z0-9]*\))$/\1/p’ < ./depcomp`
fi
am__universal=false
case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo ‘#include “conftst’$i’.h”‘ >> sub/conftest.c
# Using “: > sub/conftst$i.h” creates only sub/conftst1.h with
# Solaris 10 /bin/sh.
echo ‘/* dummy */’ > sub/conftst$i.h
done
echo “${am__include} ${am__quote}sub/conftest.Po${am__quote}” > confmf
# We check with ‘-c’ and ‘-o’ for the sake of the “dashmstdout”
# mode. It turns out that the SunPro C++ compiler does not properly
# handle ‘-M -o’, and we need to detect this. Also, some Intel
# versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj=”-o $am__obj”
case $depmode in
gcc)
# This depmode causes a compiler race in universal mode.
test “$am__universal” = false || continue
;;
nosideeffect)
# After this tag, mechanisms are not by side-effect, so they’ll
# only be used when explicitly requested.
if test “x$enable_dependency_tracking” = xyes; then
continue
else
break
fi
;;
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won’t grok ‘-c -o’, but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
am__minus_obj=
;;
none) break ;;
esac
if depmode=$depmode \
source=sub/conftest.c object=$am__obj \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn’t choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option ‘-M’; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option ‘-MP’ not supported
if (grep ‘ignoring option’ conftest.err ||
grep ‘not supported’ conftest.err) >/dev/null 2>&1; then :; else
am_cv_CC_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_CC_dependencies_compiler_type=none
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type” >&5
$as_echo “$am_cv_CC_dependencies_compiler_type” >&6; }
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
if
test “x$enable_dependency_tracking” != xno \
&& test “$am_cv_CC_dependencies_compiler_type” = gcc3; then
am__fastdepCC_TRUE=
am__fastdepCC_FALSE=’#’
else
am__fastdepCC_TRUE=’#’
am__fastdepCC_FALSE=
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether ln -s works” >&5
$as_echo_n “checking whether ln -s works… ” >&6; }
LN_S=$as_ln_s
if test “$LN_S” = “ln -s”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: yes” >&5
$as_echo “yes” >&6; }
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: no, using $LN_S” >&5
$as_echo “no, using $LN_S” >&6; }
fi
if [ “x$GCC” = “xyes” ]; then
CFLAGS=”$CFLAGS -Wall”
fi
# Checks for libraries.
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for floor in -lm” >&5
$as_echo_n “checking for floor in -lm… ” >&6; }
if ${ac_cv_lib_m_floor+:} false; then :
$as_echo_n “(cached) ” >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS=”-lm $LIBS”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern “C”
#endif
char floor ();
int
main ()
{
return floor ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link “$LINENO”; then :
ac_cv_lib_m_floor=yes
else
ac_cv_lib_m_floor=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_floor” >&5
$as_echo “$ac_cv_lib_m_floor” >&6; }
if test “x$ac_cv_lib_m_floor” = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBM 1
_ACEOF
LIBS="-lm $LIBS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
$as_echo_n “checking for gethostbyname in -lnsl… ” >&6; }
if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
$as_echo_n “(cached) ” >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS=”-lnsl $LIBS”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern “C”
#endif
char gethostbyname ();
int
main ()
{
return gethostbyname ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link “$LINENO”; then :
ac_cv_lib_nsl_gethostbyname=yes
else
ac_cv_lib_nsl_gethostbyname=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname” >&5
$as_echo “$ac_cv_lib_nsl_gethostbyname” >&6; }
if test “x$ac_cv_lib_nsl_gethostbyname” = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBNSL 1
_ACEOF
LIBS="-lnsl $LIBS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bind in -lsocket" >&5
$as_echo_n “checking for bind in -lsocket… ” >&6; }
if ${ac_cv_lib_socket_bind+:} false; then :
$as_echo_n “(cached) ” >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS=”-lsocket $LIBS”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern “C”
#endif
char bind ();
int
main ()
{
return bind ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link “$LINENO”; then :
ac_cv_lib_socket_bind=yes
else
ac_cv_lib_socket_bind=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_bind” >&5
$as_echo “$ac_cv_lib_socket_bind” >&6; }
if test “x$ac_cv_lib_socket_bind” = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBSOCKET 1
_ACEOF
LIBS="-lsocket $LIBS"
fi
# Checks for header files.
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor” >&5
$as_echo_n “checking how to run the C preprocessor… ” >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n “$CPP” && test -d “$CPP”; then
CPP=
fi
if test -z “$CPP”; then
if ${ac_cv_prog_CPP+:} false; then :
$as_echo_n “(cached) ” >&6
else
# Double quotes because CPP needs to be expanded
for CPP in “$CC -E” “$CC -E -traditional-cpp” “/lib/cpp”
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in ” yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# Prefer
#
# On the NeXT, cc -E runs the code through the compiler’s parser,
# not just through cpp. “Syntax error” is here to catch this case.
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __STDC__
# include
# include
#endif
Syntax error
_ACEOF
if ac_fn_c_try_cpp “$LINENO”; then :
else
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
if ac_fn_c_try_cpp “$LINENO”; then :
# Broken: success on invalid input.
continue
else
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break’, _AC_PREPROC_IFELSE’s cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
done
ac_cv_prog_CPP=$CPP
fi
CPP=$ac_cv_prog_CPP
else
ac_cv_prog_CPP=$CPP
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $CPP” >&5
$as_echo “$CPP” >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in ” yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
# Prefer
#
# On the NeXT, cc -E runs the code through the compiler’s parser,
# not just through cpp. “Syntax error” is here to catch this case.
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __STDC__
# include
# include
#endif
Syntax error
_ACEOF
if ac_fn_c_try_cpp “$LINENO”; then :
else
# Broken: fails on valid input.
continue
fi
rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
if ac_fn_c_try_cpp “$LINENO”; then :
# Broken: success on invalid input.
continue
else
# Passes both tests.
ac_preproc_ok=:
break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break’, _AC_PREPROC_IFELSE’s cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
else
{ { $as_echo “$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd’:” >&5
$as_echo “$as_me: error: in \`$ac_pwd’:” >&2;}
as_fn_error $? “C preprocessor \”$CPP\” fails sanity check
See \`config.log’ for more details” “$LINENO” 5; }
fi
ac_ext=c
ac_cpp=’$CPP $CPPFLAGS’
ac_compile=’$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5′
ac_link=’$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5′
ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e” >&5
$as_echo_n “checking for grep that handles long lines and -e… ” >&6; }
if ${ac_cv_path_GREP+:} false; then :
$as_echo_n “(cached) ” >&6
else
if test -z “$GREP”; then
ac_path_GREP_found=false
# Loop through the user’s path and test for each of PROGNAME-LIST
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_prog in grep ggrep; do
for ac_exec_ext in ” $ac_executable_extensions; do
ac_path_GREP=”$as_dir/$ac_prog$ac_exec_ext”
as_fn_executable_p “$ac_path_GREP” || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `”$ac_path_GREP” –version 2>&1` in
*GNU*)
ac_cv_path_GREP=”$ac_path_GREP” ac_path_GREP_found=:;;
*)
ac_count=0
$as_echo_n 0123456789 >”conftest.in”
while :
do
cat “conftest.in” “conftest.in” >”conftest.tmp”
mv “conftest.tmp” “conftest.in”
cp “conftest.in” “conftest.nl”
$as_echo ‘GREP’ >> “conftest.nl”
“$ac_path_GREP” -e ‘GREP$’ -e ‘-(cannot match)-‘ < "conftest.nl" >“conftest.out” 2>/dev/null || break
diff “conftest.out” “conftest.nl” >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
if test $ac_count -gt ${ac_path_GREP_max-0}; then
# Best one so far, save it but keep looking for a better one
ac_cv_path_GREP=”$ac_path_GREP”
ac_path_GREP_max=$ac_count
fi
# 10*(2^10) chars as input seems more than enough
test $ac_count -gt 10 && break
done
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
$ac_path_GREP_found && break 3
done
done
done
IFS=$as_save_IFS
if test -z “$ac_cv_path_GREP”; then
as_fn_error $? “no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin” “$LINENO” 5
fi
else
ac_cv_path_GREP=$GREP
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP” >&5
$as_echo “$ac_cv_path_GREP” >&6; }
GREP=”$ac_cv_path_GREP”
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for egrep” >&5
$as_echo_n “checking for egrep… ” >&6; }
if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n “(cached) ” >&6
else
if echo a | $GREP -E ‘(a|b)’ >/dev/null 2>&1
then ac_cv_path_EGREP=”$GREP -E”
else
if test -z “$EGREP”; then
ac_path_EGREP_found=false
# Loop through the user’s path and test for each of PROGNAME-LIST
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
for ac_prog in egrep; do
for ac_exec_ext in ” $ac_executable_extensions; do
ac_path_EGREP=”$as_dir/$ac_prog$ac_exec_ext”
as_fn_executable_p “$ac_path_EGREP” || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `”$ac_path_EGREP” –version 2>&1` in
*GNU*)
ac_cv_path_EGREP=”$ac_path_EGREP” ac_path_EGREP_found=:;;
*)
ac_count=0
$as_echo_n 0123456789 >”conftest.in”
while :
do
cat “conftest.in” “conftest.in” >”conftest.tmp”
mv “conftest.tmp” “conftest.in”
cp “conftest.in” “conftest.nl”
$as_echo ‘EGREP’ >> “conftest.nl”
“$ac_path_EGREP” ‘EGREP$’ < "conftest.nl" >“conftest.out” 2>/dev/null || break
diff “conftest.out” “conftest.nl” >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
if test $ac_count -gt ${ac_path_EGREP_max-0}; then
# Best one so far, save it but keep looking for a better one
ac_cv_path_EGREP=”$ac_path_EGREP”
ac_path_EGREP_max=$ac_count
fi
# 10*(2^10) chars as input seems more than enough
test $ac_count -gt 10 && break
done
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
esac
$ac_path_EGREP_found && break 3
done
done
done
IFS=$as_save_IFS
if test -z “$ac_cv_path_EGREP”; then
as_fn_error $? “no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin” “$LINENO” 5
fi
else
ac_cv_path_EGREP=$EGREP
fi
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP” >&5
$as_echo “$ac_cv_path_EGREP” >&6; }
EGREP=”$ac_cv_path_EGREP”
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking for ANSI C header files” >&5
$as_echo_n “checking for ANSI C header files… ” >&6; }
if ${ac_cv_header_stdc+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include
#include
#include
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_cv_header_stdc=yes
else
ac_cv_header_stdc=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
if (eval “$ac_cpp conftest.$ac_ext”) 2>&5 |
$EGREP “memchr” >/dev/null 2>&1; then :
else
ac_cv_header_stdc=no
fi
rm -f conftest*
fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
_ACEOF
if (eval “$ac_cpp conftest.$ac_ext”) 2>&5 |
$EGREP “free” >/dev/null 2>&1; then :
else
ac_cv_header_stdc=no
fi
rm -f conftest*
fi
if test $ac_cv_header_stdc = yes; then
# /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
if test “$cross_compiling” = yes; then :
:
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include
#if ((‘ ‘ & 0x0FF) == 0x020)
# define ISLOWER(c) (‘a’ <= (c) && (c) <= 'z')
# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#else
# define ISLOWER(c) \
(('a' <= (c) && (c) <= 'i') \
|| ('j' <= (c) && (c) <= 'r') \
|| ('s' <= (c) && (c) <= 'z'))
# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
#endif
#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int
main ()
{
int i;
for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i))
|| toupper (i) != TOUPPER (i))
return 2;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
else
ac_cv_header_stdc=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
$as_echo “$ac_cv_header_stdc” >&6; }
if test $ac_cv_header_stdc = yes; then
$as_echo “#define STDC_HEADERS 1” >>confdefs.h
fi
# On IRIX 5.3, sys/types and inttypes.h are conflicting.
for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
inttypes.h stdint.h unistd.h
do :
as_ac_Header=`$as_echo “ac_cv_header_$ac_header” | $as_tr_sh`
ac_fn_c_check_header_compile “$LINENO” “$ac_header” “$as_ac_Header” “$ac_includes_default
”
if eval test \”x\$”$as_ac_Header”\” = x”yes”; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
done
for ac_header in arpa/inet.h netdb.h netinet/in.h sys/socket.h sys/select.h sys/time.h sys/timeb.h time.h unistd.h limits.h sys/utsname.h sys/param.h rpcsvc/ypclnt.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
$as_echo_n “checking whether time.h and sys/time.h may both be included… ” >&6; }
if ${ac_cv_header_time+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include
#include
int
main ()
{
if ((struct tm *) 0)
return 0;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_cv_header_time=yes
else
ac_cv_header_time=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time” >&5
$as_echo “$ac_cv_header_time” >&6; }
if test $ac_cv_header_time = yes; then
$as_echo “#define TIME_WITH_SYS_TIME 1” >>confdefs.h
fi
# Checks for typedefs, structures, and compiler characteristics.
#AC_C_CONST
#AC_TYPE_UID_T
#AC_TYPE_OFF_T
#AC_TYPE_PID_T
#AC_TYPE_SIZE_T
ac_fn_c_check_type “$LINENO” “int8_t” “ac_cv_type_int8_t” “$ac_includes_default”
if test “x$ac_cv_type_int8_t” = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_INT8_T 1
_ACEOF
fi
ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default"
if test "x$ac_cv_type_uint8_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_UINT8_T 1
_ACEOF
fi
ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default"
if test "x$ac_cv_type_uint16_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_UINT16_T 1
_ACEOF
fi
ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default"
if test "x$ac_cv_type_uint32_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_UINT32_T 1
_ACEOF
fi
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
if test "x$ac_cv_type_ssize_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_SSIZE_T 1
_ACEOF
fi
ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include
”
if test “x$ac_cv_type_socklen_t” = xyes; then :
$as_echo “#define HAVE_SOCKLEN_T 1” >>confdefs.h
fi
ac_fn_c_check_type “$LINENO” “in_addr_t” “ac_cv_type_in_addr_t” “#include
”
if test “x$ac_cv_type_in_addr_t” = xyes; then :
$as_echo “#define HAVE_IN_ADDR_T 1” >>confdefs.h
fi
ac_fn_c_check_type “$LINENO” “in_port_t” “ac_cv_type_in_port_t” “#include
”
if test “x$ac_cv_type_in_port_t” = xyes; then :
$as_echo “#define HAVE_IN_PORT_T 1” >>confdefs.h
fi
#AC_STRUCT_TM
# Checks for library functions.
if test $ac_cv_c_compiler_gnu = yes; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional” >&5
$as_echo_n “checking whether $CC needs -traditional… ” >&6; }
if ${ac_cv_prog_gcc_traditional+:} false; then :
$as_echo_n “(cached) ” >&6
else
ac_pattern=”Autoconf.*’x'”
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
Autoconf TIOCGETP
_ACEOF
if (eval “$ac_cpp conftest.$ac_ext”) 2>&5 |
$EGREP “$ac_pattern” >/dev/null 2>&1; then :
ac_cv_prog_gcc_traditional=yes
else
ac_cv_prog_gcc_traditional=no
fi
rm -f conftest*
if test $ac_cv_prog_gcc_traditional = no; then
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
Autoconf TCGETA
_ACEOF
if (eval “$ac_cpp conftest.$ac_ext”) 2>&5 |
$EGREP “$ac_pattern” >/dev/null 2>&1; then :
ac_cv_prog_gcc_traditional=yes
fi
rm -f conftest*
fi
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional” >&5
$as_echo “$ac_cv_prog_gcc_traditional” >&6; }
if test $ac_cv_prog_gcc_traditional = yes; then
CC=”$CC -traditional”
fi
fi
#AC_FUNC_MALLOC
#AC_FUNC_MKTIME
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking return type of signal handlers” >&5
$as_echo_n “checking return type of signal handlers… ” >&6; }
if ${ac_cv_type_signal+:} false; then :
$as_echo_n “(cached) ” >&6
else
cat confdefs.h – <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include
#include
int
main ()
{
return *(signal (0, 0)) (0) == 1;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile “$LINENO”; then :
ac_cv_type_signal=int
else
ac_cv_type_signal=void
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal” >&5
$as_echo “$ac_cv_type_signal” >&6; }
cat >>confdefs.h <<_ACEOF
#define RETSIGTYPE $ac_cv_type_signal
_ACEOF
#AC_FUNC_STRFTIME
#AC_FUNC_VPRINTF
for ac_func in floor ftruncate gethostbyaddr gethostbyname gethostname gettimeofday inet_ntoa memset select socket sqrt strcasecmp strerror strncasecmp strtol uname ftime getopt setitimer yp_match
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
fi
done
case " $LIBOBJS " in
*" gettimeofday.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS gettimeofday.$ac_objext"
;;
esac
case " $LIBOBJS " in
*" uname.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS uname.$ac_objext"
;;
esac
case " $LIBOBJS " in
*" getopt.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS getopt.$ac_objext"
;;
esac
#AC_CONFIG_FILES([Makefile])
#AC_OUTPUT
ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs, see configure's option --config-cache.
# It is not useful on other systems. If it contains results you don't
# want to keep, you may remove or edit it.
#
# config.status only pays attention to the cache file if you give it
# the --recheck option to rerun configure.
#
# `ac_cv_env_foo' variables (set or unset) will be overridden when
# loading this file, other *unset* `ac_cv_foo' will be assigned the
# following values.
_ACEOF
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, we kill variables containing newlines.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(
for ac_var in `(set) 2>&1 | sed -n ‘s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p’`; do
eval ac_val=\$$ac_var
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
*_cv_*) { $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline” >&5
$as_echo “$as_me: WARNING: cache variable $ac_var contains a newline” >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
*) { eval $ac_var=; unset $ac_var;} ;;
esac ;;
esac
done
(set) 2>&1 |
case $as_nl`(ac_space=’ ‘; set) 2>&1` in #(
*${as_nl}ac_space=\ *)
# `set’ does not quote correctly, so add quotes: double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \.
sed -n \
“s/’/’\\\\”/g;
s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=’\\2’/p”
;; #(
*)
# `set’ quotes correctly as required by POSIX, so do not add quotes.
sed -n “/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p”
;;
esac |
sort
) |
sed ‘
/^ac_cv_env_/b end
t clear
:clear
s/^\([^=]*\)=\(.*[{}].*\)$/test “${\1+set}” = set || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end’ >>confcache
if diff “$cache_file” confcache >/dev/null 2>&1; then :; else
if test -w “$cache_file”; then
if test “x$cache_file” != “x/dev/null”; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: updating cache $cache_file” >&5
$as_echo “$as_me: updating cache $cache_file” >&6;}
if test ! -f “$cache_file” || test -h “$cache_file”; then
cat confcache >”$cache_file”
else
case $cache_file in #(
*/* | ?:*)
mv -f confcache “$cache_file”$$ &&
mv -f “$cache_file”$$ “$cache_file” ;; #(
*)
mv -f confcache “$cache_file” ;;
esac
fi
fi
else
{ $as_echo “$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file” >&5
$as_echo “$as_me: not updating unwritable cache $cache_file” >&6;}
fi
fi
rm -f confcache
test “x$prefix” = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test “x$exec_prefix” = xNONE && exec_prefix=’${prefix}’
# Transform confdefs.h into DEFS.
# Protect against shell expansion while executing Makefile rules.
# Protect against Makefile macro expansion.
#
# If the first sed substitution is executed (which looks for macros that
# take arguments), then branch to the quote section. Otherwise,
# look for a macro that doesn’t take arguments.
ac_script=’
:mline
/\\$/{
N
s,\\\n,,
b mline
}
t clear
:clear
s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
t quote
s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
t quote
b any
:quote
s/[ `~#$^&*(){}\\|;’\””<>?]/\\&/g
s/\[/\\&/g
s/\]/\\&/g
s/\$/$$/g
H
:any
${
g
s/^\n//
s/\n/ /g
p
}
‘
DEFS=`sed -n “$ac_script” confdefs.h`
ac_libobjs=
ac_ltlibobjs=
U=
for ac_i in : $LIBOBJS; do test “x$ac_i” = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script=’s/\$U\././;s/\.o$//;s/\.obj$//’
ac_i=`$as_echo “$ac_i” | sed “$ac_script”`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs ” \${LIBOBJDIR}$ac_i\$U.$ac_objext”
as_fn_append ac_ltlibobjs ” \${LIBOBJDIR}$ac_i”‘$U.lo’
done
LIBOBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
{ $as_echo “$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure” >&5
$as_echo_n “checking that generated files are newer than configure… ” >&6; }
if test -n “$am_sleep_pid”; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
{ $as_echo “$as_me:${as_lineno-$LINENO}: result: done” >&5
$as_echo “done” >&6; }
if test -n “$EXEEXT”; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE=’#’
else
am__EXEEXT_TRUE=’#’
am__EXEEXT_FALSE=
fi
if test -z “${AMDEP_TRUE}” && test -z “${AMDEP_FALSE}”; then
as_fn_error $? “conditional \”AMDEP\” was never defined.
Usually this means the macro was only invoked conditionally.” “$LINENO” 5
fi
if test -z “${am__fastdepCC_TRUE}” && test -z “${am__fastdepCC_FALSE}”; then
as_fn_error $? “conditional \”am__fastdepCC\” was never defined.
Usually this means the macro was only invoked conditionally.” “$LINENO” 5
fi
: “${CONFIG_STATUS=./config.status}”
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files=”$ac_clean_files $CONFIG_STATUS”
{ $as_echo “$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS” >&5
$as_echo “$as_me: creating $CONFIG_STATUS” >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.
debug=false
ac_cs_recheck=false
ac_cs_silent=false
SHELL=\${CONFIG_SHELL-$SHELL}
export SHELL
_ASEOF
cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+”$@”}, which
# is contrary to our usage. Disable this feature.
alias -g ‘${1+”$@”}’='”$@”‘
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
*) :
;;
esac
fi
as_nl=’
‘
export as_nl
# Printing a long string crashes Solaris 7 /usr/bin/printf.
as_echo=’\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\’
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
# Prefer a ksh shell builtin over an external printf program on Solaris,
# but without wasting forks for bash or zsh.
if test -z “$BASH_VERSION$ZSH_VERSION” \
&& (test “X`print -r — $as_echo`” = “X$as_echo”) 2>/dev/null; then
as_echo=’print -r –‘
as_echo_n=’print -rn –‘
elif (test “X`printf %s $as_echo`” = “X$as_echo”) 2>/dev/null; then
as_echo=’printf %s\n’
as_echo_n=’printf %s’
else
if test “X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`” = “X-n $as_echo”; then
as_echo_body=’eval /usr/ucb/echo -n “$1$as_nl”‘
as_echo_n=’/usr/ucb/echo -n’
else
as_echo_body=’eval expr “X$1” : “X\\(.*\\)”‘
as_echo_n_body=’eval
arg=$1;
case $arg in #(
*”$as_nl”*)
expr “X$arg” : “X\\(.*\\)$as_nl”;
arg=`expr “X$arg” : “.*$as_nl\\(.*\\)”`;;
esac;
expr “X$arg” : “X\\(.*\\)” | tr -d “$as_nl”
‘
export as_echo_n_body
as_echo_n=’sh -c $as_echo_n_body as_echo’
fi
export as_echo_body
as_echo=’sh -c $as_echo_body as_echo’
fi
# The user is always right.
if test “${PATH_SEPARATOR+set}” != set; then
PATH_SEPARATOR=:
(PATH=’/bin;/bin’; FPATH=$PATH; sh -c 🙂 >/dev/null 2>&1 && {
(PATH=’/bin:/bin’; FPATH=$PATH; sh -c 🙂 >/dev/null 2>&1 ||
PATH_SEPARATOR=’;’
}
fi
# IFS
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
IFS=” “” $as_nl”
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z “$as_dir” && as_dir=.
test -r “$as_dir/$0” && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS
;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND’
# in which case we are not to be found in the path.
if test “x$as_myself” = x; then
as_myself=$0
fi
if test ! -f “$as_myself”; then
$as_echo “$as_myself: error: cannot find myself; rerun with an absolute file name” >&2
exit 1
fi
# Unset variables that we do not need and which cause bugs (e.g. in
# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the “|| exit 1”
# suppresses any “Segmentation fault” message there. ‘((‘ could
# trigger a bug in pdksh 5.2.14.
for as_var in BASH_ENV ENV MAIL MAILPATH
do eval test x\${$as_var+set} = xset \
&& ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done
PS1=’$ ‘
PS2=’> ‘
PS4=’+ ‘
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# —————————————-
# Output “`basename $0`: error: ERROR” to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
as_status=$1; test $as_status -eq 0 && as_status=1
if test “$4”; then
as_lineno=${as_lineno-“$3”} as_lineno_stack=as_lineno_stack=$as_lineno_stack
$as_echo “$as_me:${as_lineno-$LINENO}: error: $2” >&$4
fi
$as_echo “$as_me: error: $2” >&2
as_fn_exit $as_status
} # as_fn_error
# as_fn_set_status STATUS
# ———————–
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
return $1
} # as_fn_set_status
# as_fn_exit STATUS
# —————–
# Exit the shell with STATUS, even in a “trap 0” or “set -e” context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
} # as_fn_exit
# as_fn_unset VAR
# —————
# Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
# as_fn_append VAR VALUE
# ———————-
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval “as_var=1; as_var+=2; test x\$as_var = x12”) 2>/dev/null; then :
eval ‘as_fn_append ()
{
eval $1+=\$2
}’
else
as_fn_append ()
{
eval $1=\$$1\$2
}
fi # as_fn_append
# as_fn_arith ARG…
# ——————
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval “test \$(( 1 + 1 )) = 2”) 2>/dev/null; then :
eval ‘as_fn_arith ()
{
as_val=$(( $* ))
}’
else
as_fn_arith ()
{
as_val=`expr “$@” || test $? -eq 1`
}
fi # as_fn_arith
if expr a : ‘\(a\)’ >/dev/null 2>&1 &&
test “X`expr 00001 : ‘.*\(…\)’`” = X001; then
as_expr=expr
else
as_expr=false
fi
if (basename — /) >/dev/null 2>&1 && test “X`basename — / 2>&1`” = “X/”; then
as_basename=basename
else
as_basename=false
fi
if (as_dir=`dirname — /` && test “X$as_dir” = X/) >/dev/null 2>&1; then
as_dirname=dirname
else
as_dirname=false
fi
as_me=`$as_basename — “$0″ ||
$as_expr X/”$0″ : ‘.*/\([^/][^/]*\)/*$’ \| \
X”$0″ : ‘X\(//\)$’ \| \
X”$0″ : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X/”$0” |
sed ‘/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
/^X\/\(\/\/\)$/{
s//\1/
q
}
/^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
# Avoid depending upon Character Ranges.
as_cr_letters=’abcdefghijklmnopqrstuvwxyz’
as_cr_LETTERS=’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits=’0123456789′
as_cr_alnum=$as_cr_Letters$as_cr_digits
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
case `echo ‘xy\c’` in
*c*) ECHO_T=’ ‘;; # ECHO_T is single tab character.
xy) ECHO_C=’\c’;;
*) echo `echo ksh88 bug on AIX 6.1` > /dev/null
ECHO_T=’ ‘;;
esac;;
*)
ECHO_N=’-n’;;
esac
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
else
rm -f conf$$.dir
mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
if ln -s conf$$.file conf$$ 2>/dev/null; then
as_ln_s=’ln -s’
# … but there are two gotchas:
# 1) On MSYS, both `ln -s file dir’ and `ln file dir’ fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
# In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
as_ln_s=’cp -pR’
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
as_ln_s=’cp -pR’
fi
else
as_ln_s=’cp -pR’
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
# as_fn_mkdir_p
# ————-
# Create “$as_dir” as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
case $as_dir in #(
-*) as_dir=./$as_dir;;
esac
test -d “$as_dir” || eval $as_mkdir_p || {
as_dirs=
while :; do
case $as_dir in #(
*\’*) as_qdir=`$as_echo “$as_dir” | sed “s/’/’\\\\\\\\”/g”`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs=”‘$as_qdir’ $as_dirs”
as_dir=`$as_dirname — “$as_dir” ||
$as_expr X”$as_dir” : ‘X\(.*[^/]\)//*[^/][^/]*/*$’ \| \
X”$as_dir” : ‘X\(//\)[^/]’ \| \
X”$as_dir” : ‘X\(//\)$’ \| \
X”$as_dir” : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X”$as_dir” |
sed ‘/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
test -d “$as_dir” && break
done
test -z “$as_dirs” || eval “mkdir $as_dirs”
} || test -d “$as_dir” || as_fn_error $? “cannot create directory $as_dir”
} # as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
as_mkdir_p=’mkdir -p “$as_dir”‘
else
test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
# as_fn_executable_p FILE
# ———————–
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
test -f “$1” && test -x “$1″
} # as_fn_executable_p
as_test_x=’test -x’
as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp=”eval sed ‘y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'”
# Sed expression to map a string onto a valid variable name.
as_tr_sh=”eval sed ‘y%*+%pp%;s%[^_$as_cr_alnum]%_%g'”
exec 6>&1
## ———————————– ##
## Main body of $CONFIG_STATUS script. ##
## ———————————– ##
_ASEOF
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by newudpl $as_me 1.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
CONFIG_COMMANDS = $CONFIG_COMMANDS
$ $0 $@
on `(hostname || uname -n) 2>/dev/null | sed 1q`
”
_ACEOF
case $ac_config_files in *”
“*) set x $ac_config_files; shift; ac_config_files=$*;;
esac
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"
config_commands="$ac_config_commands"
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
\`$as_me' instantiates files and other configuration actions
from templates according to the current configuration. Unless the files
and actions are specified as TAGs, all are instantiated by default.
Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
--config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
instantiate the configuration file FILE
Configuration files:
$config_files
Configuration commands:
$config_commands
Report bugs to the package provider."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
newudpl config.status 1.7
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
MKDIR_P='$MKDIR_P'
AWK='$AWK'
test -n "\$AWK" || AWK=awk
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
do
case $1 in
--*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
--*=)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=
ac_shift=:
;;
*)
ac_option=$1
ac_optarg=$2
ac_shift=shift
;;
esac
case $ac_option in
# Handling of the options.
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
$as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
--he | --h | --help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
# This is an error.
-*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
ac_need_defaults=false ;;
esac
shift
done
ac_configure_extra_args=
if $ac_cs_silent; then
exec 6>/dev/null
ac_configure_extra_args=”$ac_configure_extra_args –silent”
fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL=’$SHELL’
export CONFIG_SHELL
exec “\$@”
fi
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
sed ‘h;s/./-/g;s/^…/## /;s/…$/ ##/;p;x;p;x’ <<_ASBOX
## Running $as_me. ##
_ASBOX
$as_echo "$ac_log"
} >&5
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
#
# INIT-COMMANDS
#
AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Handling of arguments.
for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
done
# If the user did not use the arguments to specify the items to instantiate,
# then the envvar interface is used. Set only those that are not.
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
# simply because there is no reason against having it here, and in addition,
# creating and moving files from /tmp can sometimes cause problems.
# Hook for its removal unless debugging.
# Note that there is a small window in which the directory will not be cleaned:
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
tmp= ac_tmp=
trap 'exit_status=$?
: "${ac_tmp:=$tmp}"
{ test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
test -d “$tmp”
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir “$tmp”)
} || as_fn_error $? “cannot create a temporary directory in .” “$LINENO” 5
ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
# This happens for instance with `./config.status config.h’.
if test -n “$CONFIG_FILES”; then
ac_cr=`echo X | tr X ‘\015’`
# On cygwin, bash can eat \r inside “ if the user requested igncr.
# But we know of no other shell where ac_cr would be empty at this
# point, so we can use a bashism as a fallback.
if test “x$ac_cr” = x; then
eval ac_cr=\$\’\\r\’
fi
ac_cs_awk_cr=`$AWK ‘BEGIN { print “a\rb” }’ /dev/null`
if test “$ac_cs_awk_cr” = “a${ac_cr}b”; then
ac_cs_awk_cr=’\\r’
else
ac_cs_awk_cr=$ac_cr
fi
echo ‘BEGIN {‘ >”$ac_tmp/subs1.awk” &&
_ACEOF
{
echo “cat >conf$$subs.awk <<_ACEOF" &&
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
as_fn_error $? “could not make $CONFIG_STATUS” “$LINENO” 5
ac_delim_num=`echo “$ac_subst_vars” | grep -c ‘^’`
ac_delim=’%!_!# ‘
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
as_fn_error $? “could not make $CONFIG_STATUS” “$LINENO” 5
ac_delim_n=`sed -n “s/.*$ac_delim\$/X/p” conf$$subs.awk | grep -c X`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
as_fn_error $? “could not make $CONFIG_STATUS” “$LINENO” 5
else
ac_delim=”$ac_delim!$ac_delim _$ac_delim!! ”
fi
done
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
cat >>”\$ac_tmp/subs1.awk” <<\\_ACAWK &&
_ACEOF
sed -n '
h
s/^/S["/; s/!.*/"]=/
p
g
s/^[^!]*!//
:repl
t repl
s/'"$ac_delim"'$//
t delim
:nl
h
s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
n
b repl
:more1
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t nl
:delim
h
s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
b
:more2
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t delim
'
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
cat >>”\$ac_tmp/subs1.awk” <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = "�"
}
{
line = $ 0
nfields = split(line, field, "@")
substed = 0
len = length(field[1])
for (i = 2; i < nfields; i++) {
key = field[i]
keylen = length(key)
if (S_is_set[key]) {
value = S[key]
line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
len += length(value) + length(field[++i])
substed = 1
} else
len += 1 + keylen
}
print line
}
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
sed “s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g”
else
cat
fi < "$ac_tmp/subs1.awk" > “$ac_tmp/subs.awk” \
|| as_fn_error $? “could not setup config files machinery” “$LINENO” 5
_ACEOF
# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
# ${srcdir} and @srcdir@ entries from VPATH if srcdir is “.”, strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test “x$srcdir” = x.; then
ac_vpsub=’/^[ ]*VPATH[ ]*=[ ]*/{
h
s///
s/^/:/
s/[ ]*$/:/
s/:\$(srcdir):/:/g
s/:\${srcdir}:/:/g
s/:@srcdir@:/:/g
s/^:*//
s/:*$//
x
s/\(=[ ]*\).*/\1/
G
s/\n//
s/^[^=]*=[ ]*$//
}’
fi
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"
eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS"
shift
for ac_tag
do
case $ac_tag in
:[FHLC]) ac_mode=$ac_tag; continue;;
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
:L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
ac_save_IFS=$IFS
IFS=:
set x $ac_tag
IFS=$ac_save_IFS
shift
ac_file=$1
shift
case $ac_mode in
:L) ac_source=$1;;
:[FH])
ac_file_inputs=
for ac_f
do
case $ac_f in
-) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
test -f "$ac_f" ||
case $ac_f in
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
$as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
$as_echo “$as_me: creating $ac_file” >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
ac_sed_conf_input=`$as_echo “$configure_input” |
sed ‘s/[\\\\&|]/\\\\&/g’`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
case $ac_tag in
*:-:* | *:-) cat >”$ac_tmp/stdin” \
|| as_fn_error $? “could not create $ac_file” “$LINENO” 5 ;;
esac
;;
esac
ac_dir=`$as_dirname — “$ac_file” ||
$as_expr X”$ac_file” : ‘X\(.*[^/]\)//*[^/][^/]*/*$’ \| \
X”$ac_file” : ‘X\(//\)[^/]’ \| \
X”$ac_file” : ‘X\(//\)$’ \| \
X”$ac_file” : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X”$ac_file” |
sed ‘/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
as_dir=”$ac_dir”; as_fn_mkdir_p
ac_builddir=.
case “$ac_dir” in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
ac_dir_suffix=/`$as_echo “$ac_dir” | sed ‘s|^\.[\\/]||’`
# A “..” for each directory in $ac_dir_suffix.
ac_top_builddir_sub=`$as_echo “$ac_dir_suffix” | sed ‘s|/[^\\/]*|/..|g;s|/||’`
case $ac_top_builddir_sub in
“”) ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix
case $srcdir in
.) # We are building in place.
ac_srcdir=.
ac_top_srcdir=$ac_top_builddir_sub
ac_abs_top_srcdir=$ac_pwd ;;
[\\/]* | ?:[\\/]* ) # Absolute name.
ac_srcdir=$srcdir$ac_dir_suffix;
ac_top_srcdir=$srcdir
ac_abs_top_srcdir=$srcdir ;;
*) # Relative name.
ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_build_prefix$srcdir
ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
case $ac_mode in
:F)
#
# CONFIG_FILE
#
case $INSTALL in
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
esac
ac_MKDIR_P=$MKDIR_P
case $MKDIR_P in
[\\/$]* | ?:[\\/]* ) ;;
*/*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
ac_sed_dataroot='
/datarootdir/ {
p
q
}
/@datadir@/p
/@docdir@/p
/@infodir@/p
/@localedir@/p
/@mandir@/p'
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
$as_echo “$as_me: WARNING: $ac_file_inputs seems to ignore the –datarootdir setting” >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
s&@datadir@&$datadir&g
s&@docdir@&$docdir&g
s&@infodir@&$infodir&g
s&@localedir@&$localedir&g
s&@mandir@&$mandir&g
s&\\\${datarootdir}&$datarootdir&g' ;;
esac
_ACEOF
# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s|@configure_input@|$ac_sed_conf_input|;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
>$ac_tmp/out || as_fn_error $? “could not create $ac_file” “$LINENO” 5
test -z “$ac_datarootdir_hack$ac_datarootdir_seen” &&
{ ac_out=`sed -n ‘/\${datarootdir}/p’ “$ac_tmp/out”`; test -n “$ac_out”; } &&
{ ac_out=`sed -n ‘/^[ ]*datarootdir[ ]*:*=/p’ \
“$ac_tmp/out”`; test -z “$ac_out”; } &&
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir’
which seems to be undefined. Please make sure it is defined” >&5
$as_echo “$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir’
which seems to be undefined. Please make sure it is defined” >&2;}
rm -f “$ac_tmp/stdin”
case $ac_file in
-) cat “$ac_tmp/out” && rm -f “$ac_tmp/out”;;
*) rm -f “$ac_file” && mv “$ac_tmp/out” “$ac_file”;;
esac \
|| as_fn_error $? “could not create $ac_file” “$LINENO” 5
;;
:C) { $as_echo “$as_me:${as_lineno-$LINENO}: executing $ac_file commands” >&5
$as_echo “$as_me: executing $ac_file commands” >&6;}
;;
esac
case $ac_file$ac_mode in
“depfiles”:C) test x”$AMDEP_TRUE” != x”” || {
# Older Autoconf quotes –file arguments for eval, but not when files
# are listed without –file. Let’s play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
*\’*) eval set x “$CONFIG_FILES” ;;
*) set x $CONFIG_FILES ;;
esac
shift
for mf
do
# Strip MF so we end up with the name of the file.
mf=`echo “$mf” | sed -e ‘s/:.*$//’`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named ‘Makefile.in’, but
# some people rename them; so instead we look at the file content.
# Grep’ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep’ing the whole file is not good either: AIX grep has a line
# limit of 2048, but all sed’s we know have understand at least 4000.
if sed -n ‘s,^#.*generated by automake.*,X,p’ “$mf” | grep X >/dev/null 2>&1; then
dirpart=`$as_dirname — “$mf” ||
$as_expr X”$mf” : ‘X\(.*[^/]\)//*[^/][^/]*/*$’ \| \
X”$mf” : ‘X\(//\)[^/]’ \| \
X”$mf” : ‘X\(//\)$’ \| \
X”$mf” : ‘X\(/\)’ \| . 2>/dev/null ||
$as_echo X”$mf” |
sed ‘/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running ‘make’.
DEPDIR=`sed -n ‘s/^DEPDIR = //p’ < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`$as_dirname -- "$file" ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$file" : 'X\(//\)[^/]' \| \
X"$file" : 'X\(//\)$' \| \
X"$file" : 'X\(/\)' \| . 2>/dev/null ||
$as_echo X”$file” |
sed ‘/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q’`
as_dir=$dirpart/$fdir; as_fn_mkdir_p
# echo “creating $dirpart/$file”
echo ‘# dummy’ > “$dirpart/$file”
done
done
}
;;
esac
done # for ac_tag
as_fn_exit 0
_ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
as_fn_error $? “write failure creating $CONFIG_STATUS” “$LINENO” 5
# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
# Unfortunately, on DOS this fails, as config.log is still kept open
# by configure, so config.status won’t be able to write to it; its
# output is simply discarded. So we exec the FD to /dev/null,
# effectively closing config.log, so it can be properly (re)opened and
# appended to by config.status. When coming back to configure, we
# need to make the FD available again.
if test “$no_create” != yes; then
ac_cs_success=:
ac_config_status_args=
test “$silent” = yes &&
ac_config_status_args=”$ac_config_status_args –quiet”
exec 5>/dev/null
$SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
$ac_cs_success || as_fn_exit 1
fi
if test -n “$ac_unrecognized_opts” && test “$enable_option_checking” != no; then
{ $as_echo “$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts” >&5
$as_echo “$as_me: WARNING: unrecognized options: $ac_unrecognized_opts” >&2;}
fi
# Process this file with autoconf to produce a configure script.
#AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_INIT([newudpl], [1.7])
AC_CONFIG_SRCDIR([newudpl.c])
#AM_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE
# Checks for programs.
AC_PROG_AWK
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
if [[ “x$GCC” = “xyes” ]]; then
CFLAGS=”$CFLAGS -Wall”
fi
# Checks for libraries.
AC_CHECK_LIB(m, floor)
AC_CHECK_LIB(nsl, gethostbyname)
AC_CHECK_LIB(socket, bind)
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h sys/socket.h sys/select.h sys/time.h sys/timeb.h time.h unistd.h limits.h sys/utsname.h sys/param.h rpcsvc/ypclnt.h])
AC_HEADER_TIME
# Checks for typedefs, structures, and compiler characteristics.
#AC_C_CONST
#AC_TYPE_UID_T
#AC_TYPE_OFF_T
#AC_TYPE_PID_T
#AC_TYPE_SIZE_T
AC_CHECK_TYPES([int8_t, uint8_t, uint16_t, uint32_t, ssize_t])
AC_CHECK_TYPE(socklen_t, [AC_DEFINE(HAVE_SOCKLEN_T)],, [#include
AC_CHECK_TYPE(in_addr_t, [AC_DEFINE(HAVE_IN_ADDR_T)],, [#include
AC_CHECK_TYPE(in_port_t, [AC_DEFINE(HAVE_IN_PORT_T)],, [#include
#AC_STRUCT_TM
# Checks for library functions.
AC_PROG_GCC_TRADITIONAL
#AC_FUNC_MALLOC
#AC_FUNC_MKTIME
AC_TYPE_SIGNAL
#AC_FUNC_STRFTIME
#AC_FUNC_VPRINTF
AC_CHECK_FUNCS([floor ftruncate gethostbyaddr gethostbyname gethostname gettimeofday inet_ntoa memset select socket sqrt strcasecmp strerror strncasecmp strtol uname ftime getopt setitimer yp_match])
AC_LIBOBJ(gettimeofday)
AC_LIBOBJ(uname)
AC_LIBOBJ(getopt)
#AC_CONFIG_FILES([Makefile])
#AC_OUTPUT
AC_OUTPUT([Makefile])
# generated automatically by aclocal 1.15 -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
[m4_warning([this file was generated for autoconf 2.69.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically ‘autoreconf’.])])
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_AUTOMAKE_VERSION(VERSION)
# —————————-
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version=’1.15′
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.15], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# _AM_AUTOCONF_VERSION(VERSION)
# —————————–
# aclocal traces this macro to find the Autoconf version.
# This is a private macro too. Using m4_define simplifies
# the logic in aclocal, which can simply ignore this definition.
m4_define([_AM_AUTOCONF_VERSION], [])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# ——————————-
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.15])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to ‘$srcdir/foo’. In other projects, it is set to
# ‘$srcdir’, ‘$srcdir/..’, or ‘$srcdir/../..’.
#
# Of course, Automake must honor this variable whenever it calls a
# tool from the auxiliary directory. The problem is that $srcdir (and
# therefore $ac_aux_dir as well) can be either absolute or relative,
# depending on how configure is run. This is pretty annoying, since
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
# source directory, any form will work fine, but in subdirectories a
# relative path needs to be adjusted first.
#
# $ac_aux_dir/missing
# fails when called from a subdirectory if $ac_aux_dir is relative
# $top_srcdir/$ac_aux_dir/missing
# fails if $ac_aux_dir is absolute,
# fails when called from a subdirectory in a VPATH build with
# a relative $ac_aux_dir
#
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
# are both prefixed by $srcdir. In an in-source build this is usually
# harmless because $srcdir is ‘.’, but things will broke when you
# start a VPATH build or use an absolute $srcdir.
#
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
# am_aux_dir=’\$(top_srcdir)/’`expr “$ac_aux_dir” : “$srcdir//*\(.*\)”`
# and then we would define $MISSING as
# MISSING=”\${SHELL} $am_aux_dir/missing”
# This will work as long as MISSING is not called from configure, because
# unfortunately $(top_srcdir) has no meaning in configure.
# However there are other variables, like CC, which are often used in
# configure, and could therefore not use this “fixed” $ac_aux_dir.
#
# Another solution, used here, is to always expand $ac_aux_dir to an
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
AC_DEFUN([AM_AUX_DIR_EXPAND],
[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd “$ac_aux_dir” && pwd`
])
# AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# ————————————-
# Define a conditional.
AC_DEFUN([AM_CONDITIONAL],
[AC_PREREQ([2.52])dnl
m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
AC_SUBST([$1_TRUE])dnl
AC_SUBST([$1_FALSE])dnl
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
m4_define([_AM_COND_VALUE_$1], [$2])dnl
if $2; then
$1_TRUE=
$1_FALSE=’#’
else
$1_TRUE=’#’
$1_FALSE=
fi
AC_CONFIG_COMMANDS_PRE(
[if test -z “${$1_TRUE}” && test -z “${$1_FALSE}”; then
AC_MSG_ERROR([[conditional “$1” was never defined.
Usually this means the macro was only invoked conditionally.]])
fi])])
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# There are a few dirty hacks below to avoid letting ‘AC_PROG_CC’ be
# written in clear, in which case automake, when reading aclocal.m4,
# will think it sees a *use*, and therefore will trigger all it’s
# C support machinery. Also note that it means that autoscan, seeing
# CC etc. in the Makefile, will ask for an AC_PROG_CC use…
# _AM_DEPENDENCIES(NAME)
# ———————-
# See how the compiler implements dependency checking.
# NAME is “CC”, “CXX”, “OBJC”, “OBJCXX”, “UPC”, or “GJC”.
# We try a few techniques and use that to set a single cache variable.
#
# We don’t AC_REQUIRE the corresponding AC_PROG_CC since the latter was
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
# dependency, and given that the user is not expected to run this macro,
# just rely on AC_PROG_CC.
AC_DEFUN([_AM_DEPENDENCIES],
[AC_REQUIRE([AM_SET_DEPDIR])dnl
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
AC_REQUIRE([AM_DEP_TRACK])dnl
m4_if([$1], [CC], [depcc=”$CC” am_compiler_list=],
[$1], [CXX], [depcc=”$CXX” am_compiler_list=],
[$1], [OBJC], [depcc=”$OBJC” am_compiler_list=’gcc3 gcc’],
[$1], [OBJCXX], [depcc=”$OBJCXX” am_compiler_list=’gcc3 gcc’],
[$1], [UPC], [depcc=”$UPC” am_compiler_list=],
[$1], [GCJ], [depcc=”$GCJ” am_compiler_list=’gcc3 gcc’],
[depcc=”$$1″ am_compiler_list=])
AC_CACHE_CHECK([dependency style of $depcc],
[am_cv_$1_dependencies_compiler_type],
[if test -z “$AMDEP_TRUE” && test -f “$am_depcomp”; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don’t know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named ‘D’ — because ‘-MD’ means “put the output
# in D”.
rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won’t find it if we’re
# using a relative directory.
cp “$am_depcomp” conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64’s cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_$1_dependencies_compiler_type=none
if test “$am_compiler_list” = “”; then
am_compiler_list=`sed -n [‘s/^#*\([a-zA-Z0-9]*\))$/\1/p’] < ./depcomp`
fi
am__universal=false
m4_case([$1], [CC],
[case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac],
[CXX],
[case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac])
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo ‘#include “conftst’$i’.h”‘ >> sub/conftest.c
# Using “: > sub/conftst$i.h” creates only sub/conftst1.h with
# Solaris 10 /bin/sh.
echo ‘/* dummy */’ > sub/conftst$i.h
done
echo “${am__include} ${am__quote}sub/conftest.Po${am__quote}” > confmf
# We check with ‘-c’ and ‘-o’ for the sake of the “dashmstdout”
# mode. It turns out that the SunPro C++ compiler does not properly
# handle ‘-M -o’, and we need to detect this. Also, some Intel
# versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj=”-o $am__obj”
case $depmode in
gcc)
# This depmode causes a compiler race in universal mode.
test “$am__universal” = false || continue
;;
nosideeffect)
# After this tag, mechanisms are not by side-effect, so they’ll
# only be used when explicitly requested.
if test “x$enable_dependency_tracking” = xyes; then
continue
else
break
fi
;;
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won’t grok ‘-c -o’, but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
am__minus_obj=
;;
none) break ;;
esac
if depmode=$depmode \
source=sub/conftest.c object=$am__obj \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn’t choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option ‘-M’; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option ‘-MP’ not supported
if (grep ‘ignoring option’ conftest.err ||
grep ‘not supported’ conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_$1_dependencies_compiler_type=none
fi
])
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
AM_CONDITIONAL([am__fastdep$1], [
test “x$enable_dependency_tracking” != xno \
&& test “$am_cv_$1_dependencies_compiler_type” = gcc3])
])
# AM_SET_DEPDIR
# ————-
# Choose a directory name for dependency files.
# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
AC_DEFUN([AM_SET_DEPDIR],
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
AC_SUBST([DEPDIR], [“${am__leading_dot}deps”])dnl
])
# AM_DEP_TRACK
# ————
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE([dependency-tracking], [dnl
AS_HELP_STRING(
[–enable-dependency-tracking],
[do not reject slow dependency extractors])
AS_HELP_STRING(
[–disable-dependency-tracking],
[speeds up one-time build])])
if test “x$enable_dependency_tracking” != xno; then
am_depcomp=”$ac_aux_dir/depcomp”
AMDEPBACKSLASH=’\’
am__nodep=’_no’
fi
AM_CONDITIONAL([AMDEP], [test “x$enable_dependency_tracking” != xno])
AC_SUBST([AMDEPBACKSLASH])dnl
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
AC_SUBST([am__nodep])dnl
_AM_SUBST_NOTMAKE([am__nodep])dnl
])
# Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ——————————
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{
# Older Autoconf quotes –file arguments for eval, but not when files
# are listed without –file. Let’s play safe and only enable the eval
# if we detect the quoting.
case $CONFIG_FILES in
*\’*) eval set x “$CONFIG_FILES” ;;
*) set x $CONFIG_FILES ;;
esac
shift
for mf
do
# Strip MF so we end up with the name of the file.
mf=`echo “$mf” | sed -e ‘s/:.*$//’`
# Check whether this is an Automake generated Makefile or not.
# We used to match only the files named ‘Makefile.in’, but
# some people rename them; so instead we look at the file content.
# Grep’ing the first line is not enough: some people post-process
# each Makefile.in and add a new line on top of each file to say so.
# Grep’ing the whole file is not good either: AIX grep has a line
# limit of 2048, but all sed’s we know have understand at least 4000.
if sed -n ‘s,^#.*generated by automake.*,X,p’ “$mf” | grep X >/dev/null 2>&1; then
dirpart=`AS_DIRNAME(“$mf”)`
else
continue
fi
# Extract the definition of DEPDIR, am__include, and am__quote
# from the Makefile without running ‘make’.
DEPDIR=`sed -n ‘s/^DEPDIR = //p’ < "$mf"`
test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the
# simplest approach to changing $(DEPDIR) to its actual value in the
# expansion.
for file in `sed -n "
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`AS_DIRNAME(["$file"])`
AS_MKDIR_P([$dirpart/$fdir])
# echo "creating $dirpart/$file"
echo '# dummy' > “$dirpart/$file”
done
done
}
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
# AM_OUTPUT_DEPENDENCY_COMMANDS
# —————————–
# This macro should only be invoked once — use via AC_REQUIRE.
#
# This code is only required when automatic dependency tracking
# is enabled. FIXME. This creates each ‘.P’ file that we will
# need in order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x”$AMDEP_TRUE” != x”” || _AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE=”$AMDEP_TRUE” ac_aux_dir=”$ac_aux_dir”])
])
# Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn’t really a big deal.
dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
m4_define([AC_PROG_CC],
m4_defn([AC_PROG_CC])
[_AM_PROG_CC_C_O
])
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
# AM_INIT_AUTOMAKE([OPTIONS])
# ———————————————–
# The call with PACKAGE and VERSION arguments is the old style
# call (pre autoconf-2.50), which is being phased out. PACKAGE
# and VERSION should now be passed to AC_INIT and removed from
# the call to AM_INIT_AUTOMAKE.
# We support both call styles for the transition. After
# the next Automake release, Autoconf can make the AC_INIT
# arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
if test “`cd $srcdir && pwd`” != “`pwd`”; then
# Use -I$(srcdir) only when $(srcdir) != ., so that make’s output
# is not polluted with repeated “-I.”
AC_SUBST([am__isrc], [‘ -I$(srcdir)’])_AM_SUBST_NOTMAKE([am__isrc])dnl
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
AC_MSG_ERROR([source directory already configured; run “make distclean” there first])
fi
fi
# test whether we have cygpath
if test -z “$CYGPATH_W”; then
if (cygpath –version) >/dev/null 2>/dev/null; then
CYGPATH_W=’cygpath -w’
else
CYGPATH_W=echo
fi
fi
AC_SUBST([CYGPATH_W])
# Define the identity of the package.
dnl Distinguish between old-style and new-style calls.
m4_ifval([$2],
[AC_DIAGNOSE([obsolete],
[$0: two- and three-arguments forms are deprecated.])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(
m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
[ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], [‘AC_PACKAGE_TARNAME’])dnl
AC_SUBST([VERSION], [‘AC_PACKAGE_VERSION’])])dnl
_AM_IF_OPTION([no-define],,
[AC_DEFINE_UNQUOTED([PACKAGE], [“$PACKAGE”], [Name of package])
AC_DEFINE_UNQUOTED([VERSION], [“$VERSION”], [Version number of package])])dnl
# Some tools Automake needs.
AC_REQUIRE([AM_SANITY_CHECK])dnl
AC_REQUIRE([AC_ARG_PROGRAM])dnl
AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
AM_MISSING_PROG([AUTOCONF], [autoconf])
AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
AM_MISSING_PROG([AUTOHEADER], [autoheader])
AM_MISSING_PROG([MAKEINFO], [makeinfo])
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
#
#
AC_SUBST([mkdir_p], [‘$(MKDIR_P)’])
# We need awk for the “check” target (and possibly the TAP driver). The
# system “awk” is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
[_AM_PROG_TAR([v7])])])
_AM_IF_OPTION([no-dependencies],,
[AC_PROVIDE_IFELSE([AC_PROG_CC],
[_AM_DEPENDENCIES([CC])],
[m4_define([AC_PROG_CC],
m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_CXX],
[_AM_DEPENDENCIES([CXX])],
[m4_define([AC_PROG_CXX],
m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([OBJCXX])],
[m4_define([AC_PROG_OBJCXX],
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl ‘am__EXEEXT’ conditional if _AM_COMPILER_EXEEXT was seen. This
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n “$EXEEXT”])])])dnl
# POSIX will say in a future version that running “rm -f” with no argument
# is OK; and we want to be able to make that assumption in our Makefile
# recipes. So use an aggressive probe to check that the usage we want is
# actually supported “in the wild” to an acceptable degree.
# See automake bug#10828.
# To make any issue more visible, cause the running configure to be aborted
# by default if the ‘rm’ program in use doesn’t match our expectations; the
# user can still override this though.
if rm -f && rm -fr && rm -rf; then : OK; else
cat >&2 <<'END'
Oops!
Your 'rm' program seems unable to run without file operands specified
on the command line, even when the '-f' option is present. This is contrary
to the behaviour of most rm programs out there, and not conforming with
the upcoming POSIX standard:
Please tell bug- about your system, including the value
of your $PATH and any error possibly output before this message. This
can help us improve future automake versions.
END
if test x”$ACCEPT_INFERIOR_RM_PROGRAM” = x”yes”; then
echo ‘Configuration will proceed anyway, since you have set the’ >&2
echo ‘ACCEPT_INFERIOR_RM_PROGRAM variable to “yes”‘ >&2
echo >&2
else
cat >&2 <<'END'
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
that behaves properly:
If you want to complete the configuration process using your problematic
‘rm’ anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
to “yes”, and re-run configure.
END
AC_MSG_ERROR([Your ‘rm’ program is bad, sorry.])
fi
fi
dnl The trailing newline in this macro’s definition is deliberate, for
dnl backward compatibility and to allow trailing ‘dnl’-style comments
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into ‘_AC_COMPILER_EXEEXT’ early to learn its expansion. Do not
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
dnl mangled by Autoconf and run in a shell conditional statement.
m4_define([_AC_COMPILER_EXEEXT],
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
# When config.status generates a header, we must update the stamp-h file.
# This file resides in the same directory as the config header
# that is generated. The stamp files are numbered to have different names.
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
# loop where config.status creates the headers, so we can generate
# our stamp files there.
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
[# Compute $1’s index in $config_headers.
_am_arg=$1
_am_stamp_count=1
for _am_header in $config_headers :; do
case $_am_header in
$_am_arg | $_am_arg:* )
break ;;
* )
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
esac
done
echo “timestamp for $_am_arg” >`AS_DIRNAME([“$_am_arg”])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_SH
# ——————
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
if test x”${install_sh+set}” != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh=”\${SHELL} ‘$am_aux_dir/install-sh'” ;;
*)
install_sh=”\${SHELL} $am_aux_dir/install-sh”
esac
fi
AC_SUBST([install_sh])])
# Copyright (C) 2003-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn’t.
AC_DEFUN([AM_SET_LEADING_DOT],
[rm -rf .tst 2>/dev/null
mkdir .tst 2>/dev/null
if test -d .tst; then
am__leading_dot=.
else
am__leading_dot=_
fi
rmdir .tst 2>/dev/null
AC_SUBST([am__leading_dot])])
# Check to see how ‘make’ treats includes. -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_MAKE_INCLUDE()
# —————–
# Check to see how make treats includes.
AC_DEFUN([AM_MAKE_INCLUDE],
[am_make=${MAKE-make}
cat > confinc << 'END'
am__doit:
@echo this is the am__doit target
.PHONY: am__doit
END
# If we don't find an include directive, just comment out the code.
AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
_am_result=none
# First try GNU make style include.
echo "include confinc" > confmf
# Ignore all kinds of additional output from ‘make’.
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=include
am__quote=
_am_result=GNU
;;
esac
# Now try BSD make style include.
if test “$am__include” = “#”; then
echo ‘.include “confinc”‘ > confmf
case `$am_make -s -f confmf 2> /dev/null` in #(
*the\ am__doit\ target*)
am__include=.include
am__quote=”\””
_am_result=BSD
;;
esac
fi
AC_SUBST([am__include])
AC_SUBST([am__quote])
AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_MISSING_PROG(NAME, PROGRAM)
# ——————————
AC_DEFUN([AM_MISSING_PROG],
[AC_REQUIRE([AM_MISSING_HAS_RUN])
$1=${$1-“${am_missing_run}$2″}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ——————
# Define MISSING if not defined so far and test if it is modern enough.
# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
if test x”${MISSING+set}” != xset; then
case $am_aux_dir in
*\ * | *\ *)
MISSING=”\${SHELL} \”$am_aux_dir/missing\”” ;;
*)
MISSING=”\${SHELL} $am_aux_dir/missing” ;;
esac
fi
# Use eval to expand $SHELL
if eval “$MISSING –is-lightweight”; then
am_missing_run=”$MISSING ”
else
am_missing_run=
AC_MSG_WARN([‘missing’ script is too old or missing])
fi
])
# Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_MANGLE_OPTION(NAME)
# ———————–
AC_DEFUN([_AM_MANGLE_OPTION],
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
# _AM_SET_OPTION(NAME)
# ——————–
# Set option NAME. Presently that only means defining a flag for this option.
AC_DEFUN([_AM_SET_OPTION],
[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
# _AM_SET_OPTIONS(OPTIONS)
# ————————
# OPTIONS is a space-separated list of Automake options.
AC_DEFUN([_AM_SET_OPTIONS],
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
# ——————————————-
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_PROG_CC_C_O
# —————
# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
# to automatically call this.
AC_DEFUN([_AM_PROG_CC_C_O],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([compile])dnl
AC_LANG_PUSH([C])dnl
AC_CACHE_CHECK(
[whether $CC understands -c and -o together],
[am_cv_prog_cc_c_o],
[AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
# Make sure it works both with $CC and with simple cc.
# Following AC_PROG_CC_C_O, we do the test twice because some
# compilers refuse to overwrite an existing .o file with -o,
# though they will create one.
am_cv_prog_cc_c_o=yes
for am_i in 1 2; do
if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
&& test -f conftest2.$ac_objext; then
: OK
else
am_cv_prog_cc_c_o=no
break
fi
done
rm -f core conftest*
unset am_i])
if test “$am_cv_prog_cc_c_o” != yes; then
# Losing compiler, so override with the script.
# FIXME: It is wrong to rewrite CC.
# But if we don’t then we get into trouble of one sort or another.
# A longer-term fix would be to have automake use am__CC in this case,
# and then we could set am__CC=”\$(top_srcdir)/compile \$(CC)”
CC=”$am_aux_dir/compile $CC”
fi
AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_RUN_LOG(COMMAND)
# ——————-
# Run COMMAND, save the exit status in ac_status, and log it.
# (This has been adapted from Autoconf’s _AC_RUN_LOG macro.)
AC_DEFUN([AM_RUN_LOG],
[{ echo “$as_me:$LINENO: $1” >&AS_MESSAGE_LOG_FD
($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
ac_status=$?
echo “$as_me:$LINENO: \$? = $ac_status” >&AS_MESSAGE_LOG_FD
(exit $ac_status); }])
# Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_SANITY_CHECK
# —————
AC_DEFUN([AM_SANITY_CHECK],
[AC_MSG_CHECKING([whether build environment is sane])
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf=’
‘
case `pwd` in
*[[\\\”\#\$\&\’\`$am_lf]]*)
AC_MSG_ERROR([unsafe absolute working directory name]);;
esac
case $srcdir in
*[[\\\”\#\$\&\’\`$am_lf\ \ ]]*)
AC_MSG_ERROR([unsafe srcdir value: ‘$srcdir’]);;
esac
# Do ‘set’ in a subshell so we don’t clobber the current shell’s
# arguments. Must try -L first in case configure is actually a
# symlink; some systems play weird games with the mod time of symlinks
# (eg FreeBSD returns the mod time of the symlink’s containing
# directory).
if (
am_has_slept=no
for am_try in 1 2; do
echo “timestamp, slept: $am_has_slept” > conftest.file
set X `ls -Lt “$srcdir/configure” conftest.file 2> /dev/null`
if test “$[*]” = “X”; then
# -L didn’t work.
set X `ls -t “$srcdir/configure” conftest.file`
fi
if test “$[*]” != “X $srcdir/configure conftest.file” \
&& test “$[*]” != “X conftest.file $srcdir/configure”; then
# If neither matched, then we have a broken ls. This can happen
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered “sane”.
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
alias in your environment])
fi
if test “$[2]” = conftest.file || test $am_try -eq 2; then
break
fi
# Just in case.
sleep 1
am_has_slept=yes
done
test “$[2]” = conftest.file
)
then
# Ok.
:
else
AC_MSG_ERROR([newly created file is older than distributed files!
Check your system clock])
fi
AC_MSG_RESULT([yes])
# If we didn’t sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
if grep ‘slept: no’ conftest.file >/dev/null 2>&1; then
( sleep 1 ) &
am_sleep_pid=$!
fi
AC_CONFIG_COMMANDS_PRE(
[AC_MSG_CHECKING([that generated files are newer than configure])
if test -n “$am_sleep_pid”; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
AC_MSG_RESULT([done])])
rm -f conftest.file
])
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_SILENT_RULES([DEFAULT])
# ————————–
# Enable less verbose build rules; with the default set to DEFAULT
# (“yes” being less verbose, “no” or empty being verbose).
AC_DEFUN([AM_SILENT_RULES],
[AC_ARG_ENABLE([silent-rules], [dnl
AS_HELP_STRING(
[–enable-silent-rules],
[less verbose build output (undo: “make V=1”)])
AS_HELP_STRING(
[–disable-silent-rules],
[verbose build output (undo: “make V=0”)])dnl
])
case $enable_silent_rules in @%:@ (((
yes) AM_DEFAULT_VERBOSITY=0;;
no) AM_DEFAULT_VERBOSITY=1;;
*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
esac
dnl
dnl A few ‘make’ implementations (e.g., NonStop OS and NextStep)
dnl do not support nested variable expansions.
dnl See automake bug#9928 and bug#10237.
am_make=${MAKE-make}
AC_CACHE_CHECK([whether $am_make supports nested variables],
[am_cv_make_support_nested_variables],
[if AS_ECHO([[‘TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am__doit:
@$(TRUE)
.PHONY: am__doit’]]) | $am_make -f – >/dev/null 2>&1; then
am_cv_make_support_nested_variables=yes
else
am_cv_make_support_nested_variables=no
fi])
if test $am_cv_make_support_nested_variables = yes; then
dnl Using ‘$V’ instead of ‘$(V)’ breaks IRIX make.
AM_V=’$(V)’
AM_DEFAULT_V=’$(AM_DEFAULT_VERBOSITY)’
else
AM_V=$AM_DEFAULT_VERBOSITY
AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
fi
AC_SUBST([AM_V])dnl
AM_SUBST_NOTMAKE([AM_V])dnl
AC_SUBST([AM_DEFAULT_V])dnl
AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
AM_BACKSLASH=’\’
AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# AM_PROG_INSTALL_STRIP
# ———————
# One issue with vendor ‘install’ (even GNU) is that you can’t
# specify the program used to strip binaries. This is especially
# annoying in cross-compiling environments, where the build’s strip
# is unlikely to handle the host’s binaries.
# Fortunately install-sh will honor a STRIPPROG variable, so we
# always use install-sh in “make install-strip”, and initialize
# STRIPPROG with the value of the STRIP variable (set by the user).
AC_DEFUN([AM_PROG_INSTALL_STRIP],
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
# Installed binaries are usually stripped using ‘strip’ when the user
# run “make install-strip”. However ‘strip’ might not be the right
# tool to use in cross-compilation environments, therefore Automake
# will honor the ‘STRIP’ environment variable to overrule this program.
dnl Don’t test for $cross_compiling = yes, because it might be ‘maybe’.
if test “$cross_compiling” != no; then
AC_CHECK_TOOL([STRIP], [strip], 🙂
fi
INSTALL_STRIP_PROGRAM=”\$(install_sh) -c -s”
AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_SUBST_NOTMAKE(VARIABLE)
# —————————
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
# This macro is traced by Automake.
AC_DEFUN([_AM_SUBST_NOTMAKE])
# AM_SUBST_NOTMAKE(VARIABLE)
# ————————–
# Public sister of _AM_SUBST_NOTMAKE.
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2014 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# _AM_PROG_TAR(FORMAT)
# ——————–
# Check how to create a tarball in format FORMAT.
# FORMAT should be one of ‘v7’, ‘ustar’, or ‘pax’.
#
# Substitute a variable $(am__tar) that is a command
# writing to stdout a FORMAT-tarball containing the directory
# $tardir.
# tardir=directory && $(am__tar) > result.tar
#
# Substitute a variable $(am__untar) that extract such
# a tarball read from stdin.
# $(am__untar) < result.tar
#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild 🙁 We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[m4_case([$1],
[ustar],
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
# There is notably a 21 bits limit for the UID and the GID. In fact,
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
# and bug#13588).
am_max_uid=2097151 # 2^21 - 1
am_max_gid=$am_max_uid
# The $UID and $GID variables are not portable, so we need to resort
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
# below are definitely unexpected, so allow the users to see them
# (that is, avoid stderr redirection).
am_uid=`id -u || echo unknown`
am_gid=`id -g || echo unknown`
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
if test $am_uid -le $am_max_uid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
if test $am_gid -le $am_max_gid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi],
[pax],
[],
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Go ahead even if we have the value already cached. We do so because we
# need to set the values for the 'am__tar' and 'am__untar' variables.
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
for _am_tool in $_am_tools; do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar; do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar=’tar chf – “$$tardir”‘
am__tar_=’tar chf – “$tardir”‘
am__untar=’tar xf -‘
;;
pax)
am__tar=’pax -L -x $1 -w “$$tardir”‘
am__tar_=’pax -L -x $1 -w “$tardir”‘
am__untar=’pax -r’
;;
cpio)
am__tar=’find “$$tardir” -print | cpio -o -H $1 -L’
am__tar_=’find “$tardir” -print | cpio -o -H $1 -L’
am__untar=’cpio -i -H $1 -d’
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n “${am_cv_prog_tar_$1}” && break
# tar/untar a dummy directory, and stop if the command works.
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z ‘$(MAKELEVEL)’; then \
false; \
elif test -n ‘$(MAKE_HOST)’; then \
true; \
elif test -n ‘$(MAKE_VERSION)’ && test -n ‘$(CURDIR)’; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo “am__make_running_with_option: internal error: invalid” \
“target option ‘$${target_option-}’ specified” >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf ‘%s\n’ “$$MAKEFLAGS” \
| sed “s/$$bs$$bs[$$bs $$bs ]*//g”`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf ‘%s\n’ “$$flg” | sed “s/$$1.*$$//”`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|–*) continue;; \
-*I) strip_trailopt ‘I’; skip_next=yes;; \
-*I?*) strip_trailopt ‘I’;; \
-*O) strip_trailopt ‘O’; skip_next=yes;; \
-*O?*) strip_trailopt ‘O’;; \
-*l) strip_trailopt ‘l’; skip_next=yes;; \
-*l?*) strip_trailopt ‘l’;; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH=”$${ZSH_VERSION+.}$(PATH_SEPARATOR)” && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = newudpl$(EXEEXT)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = “$(DESTDIR)$(bindir)”
PROGRAMS = $(bin_PROGRAMS)
am_newudpl_OBJECTS = newudpl.$(OBJEXT) akiralib.$(OBJEXT) \
akiramath.$(OBJEXT) queue.$(OBJEXT) host2ip.$(OBJEXT) \
multimer.$(OBJEXT) notify.$(OBJEXT)
newudpl_OBJECTS = $(am_newudpl_OBJECTS)
newudpl_LDADD = $(LDADD)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo ” GEN ” $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo ” CC ” $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo ” CCLD ” $@;
am__v_CCLD_1 =
SOURCES = $(newudpl_SOURCES)
DIST_SOURCES = $(newudpl_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info –version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) ‘\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
‘
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list=’$(am__tagged_files)’; \
unique=`for i in $$list; do \
if test -f “$$i”; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
AM_RECURSIVE_TARGETS = cscope
am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS ChangeLog INSTALL NEWS \
README compile depcomp install-sh missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d “$(distdir)”; then \
find “$(distdir)” -type d ! -perm -200 -exec chmod u+w {} ‘;’ \
&& rm -rf “$(distdir)” \
|| { sleep 5 && rm -rf “$(distdir)”; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = –best
DIST_TARGETS = dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed ‘s|^\./|$(prefix)/|’ | grep -v ‘$(infodir)/dir$$’
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign
newudpl_SOURCES = newudpl.c newudpl.h \
akiralib.c akiralib.h \
akiramath.c akiramath.h \
queue.c queue.h item.h \
host2ip.c host2ip.h \
multimer.c multimer.h \
notify.c notify.h \
sysdep.h
EXTRA_DIST = ChangeLog.html newudpl.html COPYRIGHT \
detour_rat \
notify.c notify.h \
getopt.c getopt.h \
uname.c uname.h \
gettimeofday.c gettimeofday.h \
winsocklib.c winsocklib.h \
win32_stdc_off.h win32_stdc_on.h \
win32std.h config_msc.h config_bc.h\
msc/*.ds? \
bcb/*.bp? bcb/obj/*
all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
am–refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case ‘$(am__configure_deps)’ in \
*$$dep*) \
echo ‘ cd $(srcdir) && $(AUTOMAKE) –foreign’; \
$(am__cd) $(srcdir) && $(AUTOMAKE) –foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ‘ cd $(top_srcdir) && $(AUTOMAKE) –foreign Makefile’; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) –foreign Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case ‘$?’ in \
*config.status*) \
echo ‘ $(SHELL) ./config.status’; \
$(SHELL) ./config.status;; \
*) \
echo ‘ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)’; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status –recheck
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list=’$(bin_PROGRAMS)’; test -n “$(bindir)” || list=; \
if test -n “$$list”; then \
echo ” $(MKDIR_P) ‘$(DESTDIR)$(bindir)'”; \
$(MKDIR_P) “$(DESTDIR)$(bindir)” || exit 1; \
fi; \
for p in $$list; do echo “$$p $$p”; done | \
sed ‘s/$(EXEEXT)$$//’ | \
while read p p1; do if test -f $$p \
; then echo “$$p”; echo “$$p”; else :; fi; \
done | \
sed -e ‘p;s,.*/,,;n;h’ \
-e ‘s|.*|.|’ \
-e ‘p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/’ | \
sed ‘N;N;N;s,\n, ,g’ | \
$(AWK) ‘BEGIN { files[“.”] = “”; dirs[“.”] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print “d”, d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] ” ” $$1; \
else { print “f”, $$3 “/” $$4, $$1; } } \
END { for (d in files) print “f”, d, files[d] }’ | \
while read type dir files; do \
if test “$$dir” = .; then dir=; else dir=/$$dir; fi; \
test -z “$$files” || { \
echo ” $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files ‘$(DESTDIR)$(bindir)$$dir'”; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files “$(DESTDIR)$(bindir)$$dir” || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list=’$(bin_PROGRAMS)’; test -n “$(bindir)” || list=; \
files=`for p in $$list; do echo “$$p”; done | \
sed -e ‘h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)’ \
-e ‘s/$$/$(EXEEXT)/’ \
`; \
test -n “$$list” || exit 0; \
echo ” ( cd ‘$(DESTDIR)$(bindir)’ && rm -f” $$files “)”; \
cd “$(DESTDIR)$(bindir)” && rm -f $$files
clean-binPROGRAMS:
-test -z “$(bin_PROGRAMS)” || rm -f $(bin_PROGRAMS)
newudpl$(EXEEXT): $(newudpl_OBJECTS) $(newudpl_DEPENDENCIES) $(EXTRA_newudpl_DEPENDENCIES)
@rm -f newudpl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(newudpl_OBJECTS) $(newudpl_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/akiralib.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/akiramath.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/host2ip.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multimer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newudpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notify.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queue.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d “$(distdir)” || mkdir “$(distdir)”
@srcdirstrip=`echo “$(srcdir)” | sed ‘s/[].[^$$\\*]/\\\\&/g’`; \
topsrcdirstrip=`echo “$(top_srcdir)” | sed ‘s/[].[^$$\\*]/\\\\&/g’`; \
list=’$(DISTFILES)’; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e “s|^$$srcdirstrip/||;t” \
-e “s|^$$topsrcdirstrip/|$(top_builddir)/|;t”`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo “$$dist_files” | \
sed ‘/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,’ | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo “/$$file” | sed -e ‘s,/[^/]*$$,,’`; \
if test -d “$(distdir)/$$file”; then \
find “$(distdir)/$$file” -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file “$(distdir)$$dir” || exit 1; \
find “$(distdir)/$$file” -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file “$(distdir)$$dir” || exit 1; \
else \
test -f “$(distdir)/$$file” \
|| cp -p $$d/$$file “$(distdir)/$$file” \
|| exit 1; \
fi; \
done
-test -n “$(am__skip_mode_fix)” \
|| find “$(distdir)” -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r “$(distdir)”
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2–9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT–9} >$(distdir).tar.lz
$(am__post_remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT–e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-tarZ: distdir
@echo WARNING: “Support for distribution archives compressed with” \
“legacy program ‘compress’ is deprecated.” >&2
@echo WARNING: “It will be removed altogether in Automake 2.0” >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
@echo WARNING: “Support for shar distribution archives is” \
“deprecated.” >&2
@echo WARNING: “It will be removed altogether in Automake 2.0″ >&2
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__post_remove_distdir)
dist dist-all:
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir=’@:’
$(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case ‘$(DIST_ARCHIVES)’ in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e ‘s,^[^:\\/]:[\\/],/,’` \
&& dc_destdir=”$${TMPDIR-/tmp}/am-dc-$$$$/” \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build/sub \
&& ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
–srcdir=../.. –prefix=”$$dc_install_base” \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir=”$$dc_install_base” \
distuninstallcheck \
&& chmod -R a-w “$$dc_install_base” \
&& ({ \
(cd ../.. && umask 077 && mkdir “$$dc_destdir”) \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR=”$$dc_destdir” install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR=”$$dc_destdir” uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR=”$$dc_destdir” \
distuninstallcheck_dir=”$$dc_destdir” distuninstallcheck; \
} || { rm -rf “$$dc_destdir”; exit 1; }) \
&& rm -rf “$$dc_destdir” \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd “$$am__cwd” \
|| exit 1
$(am__post_remove_distdir)
@(echo “$(distdir) archives ready for distribution: “; \
list=’$(DIST_ARCHIVES)’; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e ‘$$p’ -e ‘$$x’
distuninstallcheck:
@test -n ‘$(distuninstallcheck_dir)’ || { \
echo ‘ERROR: trying to run $@ with an empty’ \
‘$$(distuninstallcheck_dir)’ >&2; \
exit 1; \
}; \
$(am__cd) ‘$(distuninstallcheck_dir)’ || { \
echo ‘ERROR: cannot chdir into $(distuninstallcheck_dir)’ >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo “ERROR: files left after uninstall:” ; \
if test -n “$(DESTDIR)”; then \
echo ” (check DESTDIR support)”; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test ‘$(srcdir)’ = . ; then \
echo “ERROR: distcleancheck can only run from a VPATH build” ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo “ERROR: files left in build directory after distclean:” ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in “$(DESTDIR)$(bindir)”; do \
test -z “$$dir” || $(MKDIR_P) “$$dir”; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z ‘$(STRIP)’; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM=”$(INSTALL_STRIP_PROGRAM)” \
install_sh_PROGRAM=”$(INSTALL_STRIP_PROGRAM)” INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM=”$(INSTALL_STRIP_PROGRAM)” \
install_sh_PROGRAM=”$(INSTALL_STRIP_PROGRAM)” INSTALL_STRIP_FLAG=-s \
“INSTALL_PROGRAM_ENV=STRIPPROG=’$(STRIP)'” install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z “$(CONFIG_CLEAN_FILES)” || rm -f $(CONFIG_CLEAN_FILES)
-test . = “$(srcdir)” || test -z “$(CONFIG_CLEAN_VPATH_FILES)” || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo “This command is intended for maintainers to use”
@echo “it deletes files that may require special tools to rebuild.”
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am–refresh check check-am clean \
clean-binPROGRAMS clean-cscope clean-generic cscope \
cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-compile distclean-generic \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
AUTHOR
Akira Tsukamoto
1.5 (2002-01-16)
Ported on Windows98/NT.
Rewrote sysdep.h totally for better handling of autoconf and ease of porting.
Fixed that timeval was having out of range some times, caused the jitter.
Disclosed Gilbert packet loss in a doc.
Many small fixes in codes and docs.
1.4 (2001-12-12)
Fixed high CPU utilization.
Lower jitter.
Added transmission delay.
Changed all the messages from kbps to kb/s.
1.3 (2001-11-04)
Fixed core dump on Cunix machine.
Better verbose mode.
Improved precision on statistics printout.
Add checking the size of RAND_MAX.
1.2 (2001-10-29)
Better autoconf handling. Compiles on SunOS 5.5.1.
Deleted redundant code.
Minor updates in documents.
1.1 (2001-10-14)
Uses autoconf to make compiling easier.
1.0 (2001-09-04)
Initial release.
INSTALLATION
Source codes are available from:
http://www.columbia.edu/~at541/src
To build, unpack the tar file, then type:
./configure
make
NEWUDPL
NAME
newudpl – Network Emulator With UDP Link
SYNOPSIS
newudpl [-[v|vv]] [-p [recv_port]:[send_port]]
[-i sorce_host[[:|/][port|*]]] [-o dest_host[[:|/]port] ]
[-s link_speed] [-d delay] [-e Ethernet_speed] [-q queue_buf_size]
[-[B|L|C|U|O] error_rate]
DESCRIPTION
This is a tool to create various condition of packet switching behavior
artificially for UDP packets.
The emulator receives UDP packets on a designated port and then delays
them, drops some randomly, corrupts the content, swaps the order of
sending and emulates a finite-bandwidth link by queuing packets. It should
be useful to examine an efficiency of network protocols or codecs.
INSTALLATION
Source codes are available from:
http://www.columbia.edu/~at541/src
To build, unpack the tar file, then type:
./configure
make
I have only tested on SunOS 5.7, 5.8 system and Linux but it should
compile on other Posix-compliant platforms.
OPTIONS
-v
-vv
Verbose output
With a single -v,
the information of dropping packets by congestion and creating
random packet loss/bit error/out of order will be displayed;
with a second one, receiving and sending packets will also be shown.
-p receiving port : sending port
Specifies the binding ip-port for receiving and sending UDP packets.
Otherwise, default values will be used.
Available range: 1024 – 65535 or 0x400 – 0xFFFF
Default: receiving 41192, sending 41193
-s emulating link speed
Specifies a finite-bandwidth. The speed of Transferring UDP packets
will not exceed this speed. Unit is in kb/s.
Available range: 1 – 50000(MAX_KBPS)
Default: 1000
-e Ethernet speed
Specifies a Ethernet speed on the machine. It is used to calculate a
tranmission delay, which makes difference especially when the emulating
link speed is slow.
Available range: 1 for 10M, 2 for 100M, 3 for Gigabit Ethernet
Default: 10M(b/s)
-d delay
Specifies delay time. All the packets will have minimum delay. The
deley for each packet could be varies, depenging on the link speed.
For example, -d2 is 2 (sec) and -d1.345678 is 1.345678 (sec).
Available range: 0 – 10(MAX_DELAYSEC)
Default: 0
-q queue-buffer size
Specifies the size of queueing buffer for receiving packets. If you
large this number, less likly to have packet loss by congestion for the
same link speed.
Available range: 1 – 16384 or 0x1 – 0x4000(MAX_QBUFSIZE)
Default: 8192
-i source host [[ : | / ] port | * ]
Specifies the source host for receiving packets. If the emulater
receives a packet from a different host then the packet will be
rejected. The host name could be either IP number with dotted-decimal
notation (e.g., 128.59.16.8) or the host name (e.g., cs.columbia.edu).
If the port is not sepcified then it will accept only packets from the
the port 41191, default values, with corrsponding source host, but you
could rule out this checking by using ‘*’.
Default: host – localhost, port 41191
Example,
-i dynamo.cs.columbia.edu/32768
-i dynamo.cs.columbia.edu/0x8000
-> accepts packets only from dynamo.cs.columbia.edu/32768
-i diamond.cs.columbia.edu
-> accepts packets only from diamond.cs.columbia.edu/41191
-i 128.59.16.7:*
-> accepts packets any port from disco.cs.columbia.edu(128.59.16.7)
-o destination host [[ : | / ] port ]
Specifies a destination host for outgoing packets.
Default: host – localhost, port 41194
-B bit error rate
Specifies a rate of genarating bit errors for outgoing packets.
The rate is in 1/100000(BITERRDENOM).
Available range: 1 – 99999(BITERRDENOM – 1)
Default: 0
-L random packet loss rate
Specifies a rate of genarating random packet loss for outgoing packets.
The rate is in percentage.
Available range: 1 – 99
Default: 0
-C conditional Gilbert packet loss rate
Specifies a rate of conditional Gilbert packet loss
Available range: 0.0 – 1.0
Default: 0.0
-U average overall Gilbert packet loss
Specifies an average rate of unconditional overall Gilbert packet loss
Available range: 0.0 – 1.0
Default: 0.0
-O out of order rate
Specifies a rate of randomizing oreder of packets. The distination host
will receive some packets in out of order in certain rate.
The rate is in percentage.
Available range: 1 – 99
Default: 0
USAGE
To create condition under following parameters,
from: dynamo.cs.columbia.edu(128.59.16.4)/41191
to: disco.cs.columbia.edu(128.59.16.7)/41194
link speed : 50(kb/s)
delay : 2.004000(sec)
no packet errors
type,
newudpl -idynamo.cs.columbia.edu -odisco.cs.columbia.edu -s50 -d2.004
For,
verbose mode
from: any port of dynamo.cs.columbia.edu(128.59.16.4)
to: disco.cs.columbia.edu(128.59.16.7)/32768
with error rate
random packet loss: 7(1/100 per packet)
bit error : 5(1/100000 per bit)
out of order : 9(1/100 per packet)
newudpl -idynamo.cs.columbia.edu/* -odisco.cs.columbia.edu:0x8000 -v -L7
-B5 -O9
To stop the emulator,
1) press ctr-c
2) type any ‘q’ ‘quit’ ‘stop’ ‘exit’ from the console
AUTHUR
Akira Tsukamoto
ACKNOWLEDGEMENTS
For genarating a random variable corresponding to binomial distribution ,
I used the bnldev() function from
William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T.
Vetterling, ‘Numerical Recipes in C’ The Press Syndicate of the University
of Cambridge, 1992.
This emulator was developed under supervising by,
Wenyu Jiang http://www.cs.columbia.edu/~wenyu/
Henning Schulzrinne http://www.cs.columbia.edu/~hgs/
I referred many codes in rtptools to understand the multitimer function.
http://www.cs.columbia.edu/IRT/software/rtptools/
Tetsu Iwama, He is good at math and taught me the rejection method.
Manager, Credit Risk Trading, Derivative Products Division, The Fuji Bank
Limited, Mizuho Financial Group
Kuniyoshi Murata, He corrected my many English mistakes.
English-Japanese Interpreter mailto:kuni@ej-interpreter.net
Macintosh Webcast Specialist http://www.macwebcaster.com
COPYRIGHT
Copyright (C) 2001 by Columbia University; all rights reserved
Permission to use, copy, modify, and distribute this software and its
documentation for not-for-profit research and educational purposes and
without fee is hereby granted, provided that the above copyright notice
appear in all copies and that both that the copyright notice and warranty
disclaimer appear in supporting documentation, and that the names of the
copyright holders or any of their entities not be used in advertising or
publicity pertaining to distribution of the software without specific,
written prior permission. Use of this software in whole or in parts for
commercial advantage and by for-profit organizations requires a license.
The copyright holders disclaim all warranties with regard to this
software, including all implied warranties of merchantability and fitness.
In no event shall the copyright holders be liable for any special,
indirect or consequential damages or any damages whatsoever resulting from
loss of use, data or profits, whether in an action of contract, negligence
or other tortuous action, arising out of or in connection with the use or
performance of this software.
Last updated: 2002-01-16 by Akira Tsukamoto
#! /bin/sh
# Wrapper for compilers which do not understand ‘-c -o’.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey < >.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to
#
nl=’
‘
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=” “” $nl”
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z “$file_conv”; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo “$file ” | sed -e ‘s/”\(.*\) ” *$/\1/’`
;;
cygwin/*)
file=`cygpath -m “$file” || echo “$file”`
;;
wine/*)
file=`winepath -w “$file” || echo “$file”`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv “$1”
if test -z “$lib_path”; then
lib_path=$file
else
lib_path=”$lib_path;$file”
fi
linker_opts=”$linker_opts -LIBPATH:$file”
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=’;’
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f “$dir/$lib.dll.lib”; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f “$dir/$lib.lib”; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f “$dir/lib$lib.a”; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test “$found” != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg…
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n “$eat”; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as ‘compile cc -o foo foo.c’.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv “$2”
set x “$@” -Fo”$file”
shift
;;
*)
func_file_conv “$2”
set x “$@” -Fe”$file”
shift
;;
esac
;;
-I)
eat=1
func_file_conv “$2” mingw
set x “$@” -I”$file”
shift
;;
-I*)
func_file_conv “${1#-I}” mingw
set x “$@” -I”$file”
shift
;;
-l)
eat=1
func_cl_dashl “$2”
set x “$@” “$lib”
shift
;;
-l*)
func_cl_dashl “${1#-l}”
set x “$@” “$lib”
shift
;;
-L)
eat=1
func_cl_dashL “$2”
;;
-L*)
func_cl_dashL “${1#-L}”
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs=”$IFS”; IFS=’,’
for flag in $arg; do
IFS=”$save_ifs”
linker_opts=”$linker_opts $flag”
done
IFS=”$save_ifs”
;;
-Xlinker)
eat=1
linker_opts=”$linker_opts $2″
;;
-*)
set x “$@” “$1”
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv “$1”
set x “$@” -Tp”$file”
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv “$1” mingw
set x “$@” “$file”
shift
;;
*)
set x “$@” “$1”
shift
;;
esac
fi
shift
done
if test -n “$linker_opts”; then
linker_opts=”-link$linker_opts”
fi
exec “$@” $linker_opts
exit 1
}
eat=
case $1 in
”)
echo “$0: No command. Try ‘$0 –help’ for more information.” 1>&2
exit 1;
;;
-h | –h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to
EOF
exit $?
;;
-v | –v*)
echo “compile $scriptversion”
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper “$@” # Doesn’t return…
;;
esac
ofile=
cfile=
for arg
do
if test -n “$eat”; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as ‘compile cc -o foo foo.c’.
# So we strip ‘-o arg’ only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x “$@” -o “$2”
shift
;;
esac
;;
*.c)
cfile=$1
set x “$@” “$1”
shift
;;
*)
set x “$@” “$1”
shift
;;
esac
fi
shift
done
if test -z “$ofile” || test -z “$cfile”; then
# If no ‘-o’ option was seen then we might have been invoked from a
# pattern rule where we don’t need one. That is ok — this is a
# normal compilation that the losing compiler can handle. If no
# ‘.c’ file was seen then we are probably linking. That is also
# ok.
exec “$@”
fi
# Name of file we expect compiler to create.
cofile=`echo “$cfile” | sed ‘s|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/’`
# Create the lock directory.
# Note: use ‘[/\\:.-]’ here to ensure that we don’t use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo “$cofile” | sed -e ‘s|[/\\:.-]|_|g’`.d
while true; do
if mkdir “$lockdir” >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap “rmdir ‘$lockdir’; exit 1” 1 2 15
# Run the compile.
“$@”
ret=$?
if test -f “$cofile”; then
test “$cofile” = “$ofile” || mv “$cofile” “$ofile”
elif test -f “${cofile}bj”; then
test “${cofile}bj” = “$ofile” || mv “${cofile}bj” “$ofile”
fi
rmdir “$lockdir”
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook ‘write-file-hooks ‘time-stamp)
# time-stamp-start: “scriptversion=”
# time-stamp-format: “%:y-%02m-%02d.%02H”
# time-stamp-time-zone: “UTC”
# time-stamp-end: “; # UTC”
# End:
#! /bin/sh
# depcomp – compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva < .br>.
case $1 in
”)
echo “$0: No command. Try ‘$0 –help’ for more information.” 1>&2
exit 1;
;;
-h | –h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by 'PROGRAMS ARGS'.
object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to
EOF
exit $?
;;
-v | –v*)
echo “depcomp $scriptversion”
exit $?
;;
esac
# Get the directory component of the given path, and save it in the
# global variables ‘$dir’. Note that this directory component will
# be either empty or ending with a ‘/’ character. This is deliberate.
set_dir_from ()
{
case $1 in
*/*) dir=`echo “$1” | sed -e ‘s|/[^/]*$|/|’`;;
*) dir=;;
esac
}
# Get the suffix-stripped basename of the given path, and save it the
# global variable ‘$base’.
set_base_from ()
{
base=`echo “$1” | sed -e ‘s|^.*/||’ -e ‘s/\.[^.]*$//’`
}
# If no dependency file was actually created by the compiler invocation,
# we still have to create a dummy depfile, to avoid errors with the
# Makefile “include basename.Plo” scheme.
make_dummy_depfile ()
{
echo “#dummy” > “$depfile”
}
# Factor out some common post-processing of the generated depfile.
# Requires the auxiliary global variable ‘$tmpdepfile’ to be set.
aix_post_process_depfile ()
{
# If the compiler actually managed to produce a dependency file,
# post-process it.
if test -f “$tmpdepfile”; then
# Each line is of the form ‘foo.o: dependency.h’.
# Do two passes, one to just change these to
# $object: dependency.h
# and one to simply output
# dependency.h:
# which is needed to avoid the deleted-header problem.
{ sed -e “s,^.*\.[$lower]*:,$object:,” < "$tmpdepfile"
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
} > “$depfile”
rm -f “$tmpdepfile”
else
make_dummy_depfile
fi
}
# A tabulation character.
tab=’ ‘
# A newline character.
nl=’
‘
# Character ranges might be problematic outside the C locale.
# These definitions help.
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
lower=abcdefghijklmnopqrstuvwxyz
digits=0123456789
alpha=${upper}${lower}
if test -z “$depmode” || test -z “$source” || test -z “$object”; then
echo “depcomp: Variables source, object and depmode must be set” 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo “$object” |
sed ‘s|[^\\/]*$|’${DEPDIR-.deps}’/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|’`}
tmpdepfile=${tmpdepfile-`echo “$depfile” | sed ‘s/\.\([^.]*\)$/.T\1/’`}
rm -f “$tmpdepfile”
# Avoid interferences from the environment.
gccflag= dashmflag=
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test “$depmode” = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test “$depmode” = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u=”cygpath -u -f -”
if test “$depmode” = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u=’sed s,\\\\,/,g’
depmode=msvisualcpp
fi
if test “$depmode” = msvc7msys; then
# This is just like msvc7 but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u=’sed s,\\\\,/,g’
depmode=msvc7
fi
if test “$depmode” = xlc; then
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
gccflag=-qmakedep=gcc,-MF
depmode=gcc
fi
case “$depmode” in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn’t like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord “$@” -MT “$object” -MD -MP -MF “$tmpdepfile” “$arg” ;;
*) set fnord “$@” “$arg” ;;
esac
shift # fnord
shift # $arg
done
“$@”
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile”
exit $stat
fi
mv “$tmpdepfile” “$depfile”
;;
gcc)
## Note that this doesn’t just cater to obsosete pre-3.x GCC compilers.
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here’s
## why we pick this rather obscure method:
## – Don’t want to use -MD because we’d like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## – The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say). Also, it might not be
## supported by the other compilers which use the ‘gcc’ depmode.
## – Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z “$gccflag”; then
gccflag=-MD,
fi
“$@” -Wp,”$gccflag$tmpdepfile”
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile”
exit $stat
fi
rm -f “$depfile”
echo “$object : \\” > “$depfile”
# The second -e expression handles DOS-style file names with drive
# letters.
sed -e ‘s/^[^:]*: / /’ \
-e ‘s/^[‘$alpha’]:\/[^:]*: / /’ < "$tmpdepfile" >> “$depfile”
## This next piece of magic avoids the “deleted header file” problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn’t do
## this for us directly.
## Some versions of gcc put a space before the ‘:’. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can’t process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
tr ‘ ‘ “$nl” < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
| sed -e 's/$/ :/' >> “$depfile”
rm -f “$tmpdepfile”
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test “$libtool” = yes; then
“$@” “-Wp,-MDupdate,$tmpdepfile”
else
“$@” -MDupdate “$tmpdepfile”
fi
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile”
exit $stat
fi
rm -f “$depfile”
if test -f “$tmpdepfile”; then # yes, the sourcefile depend on other files
echo “$object : \\” > “$depfile”
# Clip off the initial element (the dependent). Don’t try to be
# clever and replace this with sed code, as IRIX sed won’t handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like ‘#:fec’ to the end of the
# dependency line.
tr ‘ ‘ “$nl” < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
| tr "$nl" ' ' >> “$depfile”
echo >> “$depfile”
# The second pass generates a dummy entry for each header file.
tr ‘ ‘ “$nl” < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> “$depfile”
else
make_dummy_depfile
fi
rm -f “$tmpdepfile”
;;
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts ‘$object:’ at the
# start of each line; $object doesn’t have directory information.
# Version 6 uses the directory in both cases.
set_dir_from “$object”
set_base_from “$object”
if test “$libtool” = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
“$@” -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
“$@” -M
fi
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile1” “$tmpdepfile2” “$tmpdepfile3”
exit $stat
fi
for tmpdepfile in “$tmpdepfile1” “$tmpdepfile2” “$tmpdepfile3”
do
test -f “$tmpdepfile” && break
done
aix_post_process_depfile
;;
tcc)
# tcc (Tiny C Compiler) understand ‘-MD -MF file’ since version 0.9.26
# FIXME: That version still under development at the moment of writing.
# Make that this statement remains true also for stable, released
# versions.
# It will wrap lines (doesn’t matter whether long or short) with a
# trailing ‘\’, as in:
#
# foo.o : \
# foo.c \
# foo.h \
#
# It will put a trailing ‘\’ even on the last line, and will use leading
# spaces rather than leading tabs (at least since its commit 0394caf7
# “Emit spaces for -MD”).
“$@” -MD -MF “$tmpdepfile”
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile”
exit $stat
fi
rm -f “$depfile”
# Each non-empty line is of the form ‘foo.o : \’ or ‘ dep.h \’.
# We have to change lines of the first kind to ‘$object: \’.
sed -e “s|.*:|$object :|” < "$tmpdepfile" > “$depfile”
# And for each line of the second kind, we have to emit a ‘dep.h:’
# dummy dependency, to avoid the deleted-header problem.
sed -n -e ‘s|^ *\(.*\) *\\$|\1:|p’ < "$tmpdepfile" >> “$depfile”
rm -f “$tmpdepfile”
;;
## The order of this option in the case statement is important, since the
## shell code in configure will try each of these formats in the order
## listed in this file. A plain ‘-MD’ option would be understood by many
## compilers, so we must ensure this comes after the gcc and icc options.
pgcc)
# Portland’s C compiler understands ‘-MD’.
# Will always output deps to ‘file.d’ where file is the root name of the
# source file under compilation, even if file resides in a subdirectory.
# The object file name does not affect the name of the ‘.d’ file.
# pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using ‘\’ :
# foo.o: sub/foo.c … \
# sub/foo.h … \
# …
set_dir_from “$object”
# Use the source, not the object, to determine the base name, since
# that’s sadly what pgcc will do too.
set_base_from “$source”
tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
lockdir=$base.d-lock
trap ”
echo ‘$0: caught signal, cleaning up…’ >&2
rmdir ‘$lockdir’
exit 1
” 1 2 13 15
numtries=100
i=$numtries
while test $i -gt 0; do
# mkdir is a portable test-and-set.
if mkdir “$lockdir” 2>/dev/null; then
# This process acquired the lock.
“$@” -MD
stat=$?
# Release the lock.
rmdir “$lockdir”
break
else
# If the lock is being held by a different process, wait
# until the winning process is done or we timeout.
while test -d “$lockdir” && test $i -gt 0; do
sleep 1
i=`expr $i – 1`
done
fi
i=`expr $i – 1`
done
trap – 1 2 13 15
if test $i -le 0; then
echo “$0: failed to acquire lock after $numtries attempts” >&2
echo “$0: check lockdir ‘$lockdir'” >&2
exit 1
fi
if test $stat -ne 0; then
rm -f “$tmpdepfile”
exit $stat
fi
rm -f “$depfile”
# Each line is of the form `foo.o: dependent.h’,
# or `foo.o: dep1.h dep2.h \’, or ` dep3.h dep4.h \’.
# Do two passes, one to just change these to
# `$object: dependent.h’ and one to simply `dependent.h:’.
sed “s,^[^:]*:,$object :,” < "$tmpdepfile" > “$depfile”
# Some versions of the HPUX 10.20 sed can’t process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed ‘s,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d’ < "$tmpdepfile" \
| sed -e 's/$/ :/' >> “$depfile”
rm -f “$tmpdepfile”
;;
hp2)
# The “hp” stanza above does not work with aCC (C++) and HP’s ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# ‘foo.d’, which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
set_dir_from “$object”
set_base_from “$object”
if test “$libtool” = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
“$@” -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
“$@” +Maked
fi
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile1” “$tmpdepfile2”
exit $stat
fi
for tmpdepfile in “$tmpdepfile1” “$tmpdepfile2”
do
test -f “$tmpdepfile” && break
done
if test -f “$tmpdepfile”; then
sed -e “s,^.*\.[$lower]*:,$object:,” “$tmpdepfile” > “$depfile”
# Add ‘dependent.h:’ lines.
sed -ne ‘2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}’ “$tmpdepfile” >> “$depfile”
else
make_dummy_depfile
fi
rm -f “$tmpdepfile” “$tmpdepfile2”
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. ‘cc -MD -o foo.o …’ puts the dependencies into ‘foo.o.d’.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in ‘foo.d’ instead, so we check for that too.
# Subdirectories are respected.
set_dir_from “$object”
set_base_from “$object”
if test “$libtool” = yes; then
# Libtool generates 2 separate objects for the 2 libraries. These
# two compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir$base.o.d # libtool 1.5
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
“$@” -Wc,-MD
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
“$@” -MD
fi
stat=$?
if test $stat -ne 0; then
rm -f “$tmpdepfile1” “$tmpdepfile2” “$tmpdepfile3”
exit $stat
fi
for tmpdepfile in “$tmpdepfile1” “$tmpdepfile2” “$tmpdepfile3”
do
test -f “$tmpdepfile” && break
done
# Same post-processing that is required for AIX mode.
aix_post_process_depfile
;;
msvc7)
if test “$libtool” = yes; then
showIncludes=-Wc,-showIncludes
else
showIncludes=-showIncludes
fi
“$@” $showIncludes > “$tmpdepfile”
stat=$?
grep -v ‘^Note: including file: ‘ “$tmpdepfile”
if test $stat -ne 0; then
rm -f “$tmpdepfile”
exit $stat
fi
rm -f “$depfile”
echo “$object : \\” > “$depfile”
# The first sed program below extracts the file names and escapes
# backslashes for cygpath. The second sed program outputs the file
# name when reading, but also accumulates all include files in the
# hold buffer in order to output them again at the end. This only
# works with sed implementations that can handle large buffers.
sed < "$tmpdepfile" -n '
/^Note: including file: *\(.*\)/ {
s//\1/
s/\\/\\\\/g
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
s/.*/'"$tab"'/
G
p
}' >> “$depfile”
echo >> “$depfile” # make sure the fragment doesn’t end with a backslash
rm -f “$tmpdepfile”
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
“$@” || exit $?
# Remove the call to Libtool.
if test “$libtool” = yes; then
while test “X$1″ != ‘X–mode=compile’; do
shift
done
shift
fi
# Remove ‘-o $object’.
IFS=” ”
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord “$@” “$arg”
shift # fnord
shift # $arg
;;
esac
done
test -z “$dashmflag” && dashmflag=-M
# Require at least two characters before searching for ‘:’
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as ‘c:/foo/bar’ could be seen as target ‘c’ otherwise.
“$@” $dashmflag |
sed “s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |” > “$tmpdepfile”
rm -f “$depfile”
cat < "$tmpdepfile" > “$depfile”
# Some versions of the HPUX 10.20 sed can’t process this sed invocation
# correctly. Breaking it into two sed invocations is a workaround.
tr ‘ ‘ “$nl” < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> “$depfile”
rm -f “$tmpdepfile”
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
“$@” || exit $?
# Remove any Libtool call
if test “$libtool” = yes; then
while test “X$1” != ‘X–mode=compile’; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set “”; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case “$arg” in
-D*|-I*)
set fnord “$@” “$arg”; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord “$@” “$arg”; shift ;;
esac
done
obj_suffix=`echo “$object” | sed ‘s/^.*\././’`
touch “$tmpdepfile”
${MAKEDEPEND-makedepend} -o”$obj_suffix” -f”$tmpdepfile” “$@”
rm -f “$depfile”
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of ‘.’ is harmless.
sed “s|^.*\($object *:\)|\1|” “$tmpdepfile” > “$depfile”
# Some versions of the HPUX 10.20 sed can’t process the last invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed ‘1,2d’ “$tmpdepfile” \
| tr ‘ ‘ “$nl” \
| sed -e ‘s/^\\$//’ -e ‘/^$/d’ -e ‘/:$/d’ \
| sed -e ‘s/$/ :/’ >> “$depfile”
rm -f “$tmpdepfile” “$tmpdepfile”.bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
“$@” || exit $?
# Remove the call to Libtool.
if test “$libtool” = yes; then
while test “X$1″ != ‘X–mode=compile’; do
shift
done
shift
fi
# Remove ‘-o $object’.
IFS=” ”
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord “$@” “$arg”
shift # fnord
shift # $arg
;;
esac
done
“$@” -E \
| sed -n -e ‘/^# [0-9][0-9]* “\([^”]*\)”.*/ s:: \1 \\:p’ \
-e ‘/^#line [0-9][0-9]* “\([^”]*\)”.*/ s:: \1 \\:p’ \
| sed ‘$ s: \\$::’ > “$tmpdepfile”
rm -f “$depfile”
echo “$object : \\” > “$depfile”
cat < "$tmpdepfile" >> “$depfile”
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> “$depfile”
rm -f “$tmpdepfile”
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
“$@” || exit $?
# Remove the call to Libtool.
if test “$libtool” = yes; then
while test “X$1″ != ‘X–mode=compile’; do
shift
done
shift
fi
IFS=” ”
for arg
do
case “$arg” in
-o)
shift
;;
$object)
shift
;;
“-Gm”|”/Gm”|”-Gi”|”/Gi”|”-ZI”|”/ZI”)
set fnord “$@”
shift
shift
;;
*)
set fnord “$@” “$arg”
shift
shift
;;
esac
done
“$@” -E 2>/dev/null |
sed -n ‘/^#line [0-9][0-9]* “\([^”]*\)”/ s::\1:p’ | $cygpath_u | sort -u > “$tmpdepfile”
rm -f “$depfile”
echo “$object : \\” > “$depfile”
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> “$depfile”
echo “$tab” >> “$depfile”
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> “$depfile”
rm -f “$tmpdepfile”
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec “$@”
;;
*)
echo “Unknown depmode $depmode” 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook ‘write-file-hooks ‘time-stamp)
# time-stamp-start: “scriptversion=”
# time-stamp-format: “%:y-%02m-%02d.%02H”
# time-stamp-time-zone: “UTC”
# time-stamp-end: “; # UTC”
# End:
#!/bin/sh
#
# install – install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided “as is”
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make’ implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS’s install programs.
# set DOITPROG to echo to test this script
# Don’t use :- since 4.3BSD and earlier shells don’t like it.
doit=”${DOITPROG-}”
# put in absolute paths if you don’t have them in your path; or use env. vars.
mvprog=”${MVPROG-mv}”
cpprog=”${CPPROG-cp}”
chmodprog=”${CHMODPROG-chmod}”
chownprog=”${CHOWNPROG-chown}”
chgrpprog=”${CHGRPPROG-chgrp}”
stripprog=”${STRIPPROG-strip}”
rmprog=”${RMPROG-rm}”
mkdirprog=”${MKDIRPROG-mkdir}”
transformbasename=””
transform_arg=””
instcmd=”$mvprog”
chmodcmd=”$chmodprog 0755″
chowncmd=””
chgrpcmd=””
stripcmd=””
rmcmd=”$rmprog -f”
mvcmd=”$mvprog”
src=””
dst=””
dir_arg=””
while [ x”$1″ != x ]; do
case $1 in
-c) instcmd=”$cpprog”
shift
continue;;
-d) dir_arg=true
shift
continue;;
-m) chmodcmd=”$chmodprog $2″
shift
shift
continue;;
-o) chowncmd=”$chownprog $2″
shift
shift
continue;;
-g) chgrpcmd=”$chgrpprog $2″
shift
shift
continue;;
-s) stripcmd=”$stripprog”
shift
continue;;
-t=*) transformarg=`echo $1 | sed ‘s/-t=//’`
shift
continue;;
-b=*) transformbasename=`echo $1 | sed ‘s/-b=//’`
shift
continue;;
*) if [ x”$src” = x ]
then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if [ x”$src” = x ]
then
echo “install: no input file specified”
exit 1
else
true
fi
if [ x”$dir_arg” != x ]; then
dst=$src
src=””
if [ -d $dst ]; then
instcmd=:
chmodcmd=””
else
instcmd=mkdir
fi
else
# Waiting for this to be detected by the “$instcmd $src $dsttmp” command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains ‘*’.
if [ -f $src -o -d $src ]
then
true
else
echo “install: $src does not exist”
exit 1
fi
if [ x”$dst” = x ]
then
echo “install: no destination specified”
exit 1
else
true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d $dst ]
then
dst=”$dst”/`basename $src`
else
true
fi
fi
## this sed command emulates the dirname command
dstdir=`echo $dst | sed -e ‘s,[^/]*$,,;s,/$,,;s,^$,.,’`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman’s mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d “$dstdir” ]; then
defaultIFS=’
‘
IFS=”${IFS-${defaultIFS}}”
oIFS=”${IFS}”
# Some sh’s can’t handle IFS=/ for some reason.
IFS=’%’
set – `echo ${dstdir} | sed -e ‘s@/@%@g’ -e ‘s@^%@/@’`
IFS=”${oIFS}”
pathcomp=”
while [ $# -ne 0 ] ; do
pathcomp=”${pathcomp}${1}”
shift
if [ ! -d “${pathcomp}” ] ;
then
$mkdirprog “${pathcomp}”
else
true
fi
pathcomp=”${pathcomp}/”
done
fi
if [ x”$dir_arg” != x ]
then
$doit $instcmd $dst &&
if [ x”$chowncmd” != x ]; then $doit $chowncmd $dst; else true ; fi &&
if [ x”$chgrpcmd” != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
if [ x”$stripcmd” != x ]; then $doit $stripcmd $dst; else true ; fi &&
if [ x”$chmodcmd” != x ]; then $doit $chmodcmd $dst; else true ; fi
else
# If we’re going to rename the final executable, determine the name now.
if [ x”$transformarg” = x ]
then
dstfile=`basename $dst`
else
dstfile=`basename $dst $transformbasename |
sed $transformarg`$transformbasename
fi
# don’t allow the sed command to completely eliminate the filename
if [ x”$dstfile” = x ]
then
dstfile=`basename $dst`
else
true
fi
# Make a temp file name in the proper directory.
dsttmp=$dstdir/#inst.$$#
# Move or copy the file name to the temp name
$doit $instcmd $src $dsttmp &&
trap “rm -f ${dsttmp}” 0 &&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above “$doit $instcmd $src $dsttmp” command.
if [ x”$chowncmd” != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
if [ x”$chgrpcmd” != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
if [ x”$stripcmd” != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
if [ x”$chmodcmd” != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
# Now rename the file to the real destination.
$doit $rmcmd -f $dstdir/$dstfile &&
$doit $mvcmd $dsttmp $dstdir/$dstfile
fi &&
exit 0
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
# Franc,ois Pinard < .ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place – Suite 330, Boston, MA
# 02111-1307, USA.
if test $# -eq 0; then
echo 1>&2 “Try \`$0 –help’ for more information”
exit 1
fi
case “$1” in
-h|–h|–he|–hel|–help)
echo “\
$0 [OPTION]… PROGRAM [ARGUMENT]…
Handle \`PROGRAM [ARGUMENT]…’ for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, –help display this help and exit
-v, –version output version information and exit
Supported PROGRAM values:
aclocal touch file \`aclocal.m4′
autoconf touch file \`configure’
autoheader touch file \`config.h.in’
automake touch all \`Makefile.in’ files
bison create \`y.tab.[ch]’, if possible, from existing .[ch]
flex create \`lex.yy.c’, if possible, from existing .c
lex create \`lex.yy.c’, if possible, from existing .c
makeinfo touch the output file
yacc create \`y.tab.[ch]’, if possible, from existing .[ch]”
;;
-v|–v|–ve|–ver|–vers|–versi|–versio|–version)
echo “missing – GNU libit 0.0”
;;
-*)
echo 1>&2 “$0: Unknown \`$1′ option”
echo 1>&2 “Try \`$0 –help’ for more information”
exit 1
;;
aclocal)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified \`acinclude.m4′ or \`configure.in’. You might want
to install the \`Automake’ and \`Perl’ packages. Grab them from
any GNU archive site.”
touch aclocal.m4
;;
autoconf)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified \`configure.in’. You might want to install the
\`Autoconf’ and \`GNU m4′ packages. Grab them from any GNU
archive site.”
touch configure
;;
autoheader)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified \`acconfig.h’ or \`configure.in’. You might want
to install the \`Autoconf’ and \`GNU m4′ packages. Grab them
from any GNU archive site.”
files=`sed -n ‘s/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p’ configure.in`
test -z “$files” && files=”config.h”
touch_files=
for f in $files; do
case “$f” in
*:*) touch_files=”$touch_files “`echo “$f” |
sed -e ‘s/^[^:]*://’ -e ‘s/:.*//’`;;
*) touch_files=”$touch_files $f.in”;;
esac
done
touch $touch_files
;;
automake)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified \`Makefile.am’, \`acinclude.m4′ or \`configure.in’.
You might want to install the \`Automake’ and \`Perl’ packages.
Grab them from any GNU archive site.”
find . -type f -name Makefile.am -print |
sed ‘s/\.am$/.in/’ |
while read f; do touch “$f”; done
;;
bison|yacc)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified a \`.y’ file. You may need the \`Bison’ package
in order for those modifications to take effect. You can get
\`Bison’ from any GNU archive site.”
rm -f y.tab.c y.tab.h
if [ $# -ne 1 ]; then
eval LASTARG=”\${$#}”
case “$LASTARG” in
*.y)
SRCFILE=`echo “$LASTARG” | sed ‘s/y$/c/’`
if [ -f “$SRCFILE” ]; then
cp “$SRCFILE” y.tab.c
fi
SRCFILE=`echo “$LASTARG” | sed ‘s/y$/h/’`
if [ -f “$SRCFILE” ]; then
cp “$SRCFILE” y.tab.h
fi
;;
esac
fi
if [ ! -f y.tab.h ]; then
echo >y.tab.h
fi
if [ ! -f y.tab.c ]; then
echo ‘main() { return 0; }’ >y.tab.c
fi
;;
lex|flex)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified a \`.l’ file. You may need the \`Flex’ package
in order for those modifications to take effect. You can get
\`Flex’ from any GNU archive site.”
rm -f lex.yy.c
if [ $# -ne 1 ]; then
eval LASTARG=”\${$#}”
case “$LASTARG” in
*.l)
SRCFILE=`echo “$LASTARG” | sed ‘s/l$/c/’`
if [ -f “$SRCFILE” ]; then
cp “$SRCFILE” lex.yy.c
fi
;;
esac
fi
if [ ! -f lex.yy.c ]; then
echo ‘main() { return 0; }’ >lex.yy.c
fi
;;
makeinfo)
echo 1>&2 “\
WARNING: \`$1′ is missing on your system. You should only need it if
you modified a \`.texi’ or \`.texinfo’ file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make’ (AIX,
DU, IRIX). You might want to install the \`Texinfo’ package or
the \`GNU make’ package. Grab either from any GNU archive site.”
file=`echo “$*” | sed -n ‘s/.*-o \([^ ]*\).*/\1/p’`
if test -z “$file”; then
file=`echo “$*” | sed ‘s/.* \([^ ]*\) *$/\1/’`
file=`sed -n ‘/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }’ $file`
fi
touch $file
;;
*)
echo 1>&2 “\
WARNING: \`$1′ is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them. Check the \`README’ file,
it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1′ program.”
exit 1
;;
esac
exit 0
#! /bin/sh
# mkinstalldirs — make directory hierarchy
# Author: Noah Friedman < .mit.edu>
# Created: 1993-05-16
# Public domain
# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
errstatus=0
for file
do
set fnord `echo “:$file” | sed -ne ‘s/^:\//#/;s/^://;s/\// /g;s/^#/\//;p’`
shift
pathcomp=
for d
do
pathcomp=”$pathcomp$d”
case “$pathcomp” in
-* ) pathcomp=./$pathcomp ;;
esac
if test ! -d “$pathcomp”; then
echo “mkdir $pathcomp”
mkdir “$pathcomp” || lasterr=$?
if test ! -d “$pathcomp”; then
errstatus=$lasterr
fi
fi
pathcomp=”$pathcomp/”
done
done
exit $errstatus
# mkinstalldirs ends here
/***************************************************************************
*
* Network Emulator With UDP Link
* newudpl.c
*
* Copyright (c) 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
#include “sysdep.h”
#include “notify.h”
#include “multimer.h”
#include “host2ip.h”
#include “queue.h”
#include “akiralib.h”
#include “akiramath.h”
#include “newudpl.h”
//#define DEBUG 1
/** string buffer size, no less then 128 */
#define STRSIZE 1024
/** buffer for sendto() recvfrom() sockets.
* don’t forget to chage MAX_QBUFSIZE at the same time */
#define BUFSIZE 16384
/** UDP segment size, no more then 2048 (not used)*/
#define MAX_UDP 1500
/** maximum delay time */
#define MAX_DELAYSEC 10
/** = 50 (Mbps) */
#define MAX_KBPS 50000
/** maximum queue buffer size */
#define MAX_QBUFSIZE 16384
/** denominator of the bit error rate */
#define BITERRDENOM 100000
/*** global Variables ******************************************************/
/** getopt() */
extern char *optarg;
/** getopt() */
extern int optind;
/*** private Variables *****************************************************/
static int debug = 0;
/** counter of received UDP bytes, ID for notify() */
static uint32_t rUdpC = 0;
/** counter of send UDP bytes */
static uint32_t sUdpC = 0;
/** pointers to handle UDP packets queue */
static UdpQueue uq;
/** struct to hold statistics */
static Statistics g_stat;
/** ran1() */
static long idum;
/** probability of Gilbert over all packet loss */
static float gilOverAllLoss;
/*** private functions prototyp for mian() ********************************/
static int initOptions(Options * o, char *arg0);
static int parseCmdLine(Options * o, int argc, char *argv[]);
static int init(Options * options);
static int destroy(void);
static int printTitle(Options * options);
static int printStatistics();
static Notify_value readHandler(Notify_client client, int dummyfd);
static Notify_value sendHandler(Notify_client client);
static Notify_value sigHandler(Notify_client client, int sig,
Notify_signal_mode when);
static Notify_value stdinHandler(Notify_client client, int dummyfd);
/***************************************************************************
*** Private function definition ***
***************************************************************************/
/** initialize options.
* set the default value to struct Options */
static int initOptions(Options * o, char *argv0)
{
struct hostent *host;
struct in_addr *local;
char *p;
#ifndef WIN32
if ( (p = strrchr(argv0, ‘/’)) != NULL) {
argv0 = ++p;
}
#else
if ( (p = strrchr(argv0, ‘\\’)) != NULL) {
argv0 = ++p;
}
#endif
/* get local IP address for default srce/dest host */
if ((host = gethostbyname(“localhost”)) == NULL) {
perror(“initOptions(): gethostbyname()”);
return -1;
}
local = (struct in_addr *) host->h_addr_list[0];
/* default values for all the parameters */
strncpy(o->argv0, argv0, NAME_MAX – 1);
o->argv0[NAME_MAX – 1] = ‘\0’;
o->readPort = htons(41192);
o->writPort = htons(41193); /* -p */
o->srceHostIpN = *local;
o->srceHostPort = htons(41191); /* -i */
o->destHostIpN = *local;
o->destHostPort = htons(41194); /* -o */
o->speed = 1000; /* = 1(Mb/s) 1 – MAX_KBPS(kb/s) *//* -s */
o->ether = 10000; /* = 10(Mb/s) 10M, 100M, 1G *//* -e */
o->inQBufSize = 8192; /* 1 .. MAX_QBUFSIZE bytes */ /* -q */
o->delay.tv_sec = 0; /* 0 .. MAX_DELAYSEC in sec */ /* -d */
o->delay.tv_usec= 0; /* 000000 – 999999(usec) */ /* -d */
o->randomLoss = 0; /* 0 – 99% */ /* -L */
o->gilCondLoss = 0.0; /* 0.0 – 1.0 */ /* -C */
o->gilUncondLoss= 0.0; /* 0.0 – 1.0 */ /* -U */
o->bitError = 0; /* 0 – 99(1/BITERRDENOM) */ /* -B */
o->outOfOrder = 0; /* 0 – 99% */ /* -O */
o->jitter = 0; /* 0 – 99% */ /* -J */
o->calcMode = 0; /* 0 = normal 1= bug */ /* -m */
o->verbose = 0;
o->rand_short = 0;
return 0;
} /* initOptions() */
/** initialize statistics.
* set the default value to struct g_stat */
static void initStat(void)
{
g_stat.startime.tv_sec = 0;
g_stat.startime.tv_usec = 0;
g_stat.lasttime.tv_sec = 0;
g_stat.lasttime.tv_usec = 0;
g_stat.prvRcv_tv.tv_sec = 0;
g_stat.prvRcv_tv.tv_usec= 0;
g_stat.prvIntervled_tv.tv_sec = 0;
g_stat.prvIntervled_tv.tv_usec= 0;
g_stat.minSp = 0;
g_stat.maxSp = 0;
g_stat.rPacket = 0;
g_stat.sPacket = 0;
g_stat.rejPack = 0;
g_stat.rejBytes = 0;
g_stat.congPack = 0;
g_stat.congBytes = 0;
g_stat.randomLoss = 0;
g_stat.biterror = 0;
g_stat.outOfOrder = 0;
} /* initStat() */
/***************************************************************************/
/** get port numbers.
* parse the commandline string and set readPort and writePort */
static int getPorts(in_port_t * readPort, in_port_t * writePort, char *optarg)
{
char *pStr, buff[STRSIZE];
long port;
/* Copy to temporary buffer because strtok() will destroy the string */
if (strlen(optarg) >= STRSIZE) {
fprintf(stderr, “getPorts(): String is too large: %s\n”, optarg);
return -1;
}
strcpy(buff, optarg);
pStr = strtok(buff, “:”); /* first token (readPort) */
if (*optarg == ‘:’)
goto getPorts_NEXTPORT;
if (pStr != NULL) {
if (str2l(&port, pStr, 0, 0x400, 0xFFFF) == -1)
return -1;
*readPort = htons(port);
} else {
fprintf(stderr, “Invalid port number: %s\n”, optarg);
return -1;
}
pStr = strtok(NULL, “:”); /* second token (writePort) */
if (pStr != NULL) {
getPorts_NEXTPORT:
if (str2l(&port, pStr, 0, 0x400, 0xFFFF) == -1)
return -1;
*writePort = htons(port);
}
if (debug)
printf(“option: UDP port: %d:%d\n”, ntohs(*readPort), ntohs(*writePort));
return 0;
} /* getPorts() */
/** get host name and port number.
* parse the commandline string and set hostIpN and hostPort */
static int getHost(struct in_addr *hostIpN, in_port_t * hostPort, char *optarg)
{
char *pStr, buff[STRSIZE];
struct in_addr ip;
long port;
if (strlen(optarg) >= STRSIZE) {
fprintf(stderr, “String is too large: %s\n”, optarg);
return -1;
}
strcpy(buff, optarg);
pStr = strtok(buff, “:/”); /* first token (hostIpN) */
if (pStr != NULL) {
ip = host2ip(pStr);
if (ip.s_addr == INADDR_ANY)
return -1;
*hostIpN = ip;
}
pStr = strtok(NULL, “:/”); /* second token (hostPort) */
if (pStr != NULL) {
if (*pStr == ‘*’) {
*hostPort = 0;
} else if (str2l(&port, pStr, 0, 0, 0xFFFF) == -1)
return -1;
else
*hostPort = htons(port);
}
if (debug)
printf(“option: IP and Port: %s(0x%lX):%d\n”, inet_ntoa(*hostIpN),
(unsigned long)hostIpN->s_addr, ntohs(*hostPort));
return 0;
} /* getHost() */
/** get second.
* parse the commandline string and set struct timeval *s */
static int getSec(struct timeval *s, char *optarg, long maxSec)
{
char *pStr, buff[STRSIZE], tmp[STRSIZE];
long sec, usec;
if (strlen(optarg) >= STRSIZE) {
fprintf(stderr, “String is too large: %s\n”, optarg);
return -1;
}
strcpy(buff, optarg);
pStr = strtok(buff, “.”); /* fisrt token (sec) */
if (pStr != NULL) {
if (str2l(&sec, pStr, 10, 0, maxSec) == -1)
return -1;
s->tv_sec = sec;
}
pStr = strtok(NULL, “.”); /* secong token (usec) */
if (pStr != NULL) {
/* memcpy(“000000”, “12”) = “120000” */
strcpy(tmp, “000000”);
memcpy(tmp, pStr, strlen(pStr) * sizeof(char));
if (str2l(&usec, tmp, 10, 0, 999999) == -1)
return -1;
s->tv_usec = usec;
}
if (debug)
printf(“option: timval: %ld.%06ld\n”, sec, usec);
return 0;
} /* getSec() */
/** get ether-net speed.
* parse the commandline string and set ether-net speed */
static int getEther(int *ether, char *optarg)
{
long l;
if (str2l(&l, optarg, 10, 1, 3) == -1)
return -1;
switch (l) {
case 1: /* 10M(b/s) ether-net */
*ether = 10000;
break;
case 2: /* 100M(b/s) ether-net */
*ether = 100000;
break;
case 3: /* 1G(b/s) ether-net */
*ether = 1000000;
break;
default:
return -1;
}
return 0;
} /* getEther() */
/** usage.
* Just prints out the usage */
static void usage(char *argv0)
{
fprintf(stdout, “\
Usage: %s [-[v|vv]] [-p [recv_port]:[send_port]]\n \
[-i sorce_host[[:|/][port|*]]] [-o dest_host[[:|/]port]]\n \
[-s link_speed] [-d delay] [-e Ethernet_speed] [-q queue_buf_size]\n \
[-[B|L|C|U|O] error_rate]\n”,
argv0);
} /* usage() */
/** parse command line.
* this is the main getopt() routine */
static int parseCmdLine(Options * o, int argc, char *argv[])
{
int c;
int errF = 0;
long l;
double d;
while ( (c = getopt(argc, argv, “p:i:o:d:s:e:q:B:L:C:U:O:J:mvhz”)) != EOF) {
switch (c) {
case ‘p’:
if (getPorts(&o->readPort, &o->writPort, optarg) == -1)
errF = -1;
break;
case ‘i’:
if (getHost(&o->srceHostIpN, &o->srceHostPort, optarg) == -1)
errF = -1;
break;
case ‘o’:
if (getHost(&o->destHostIpN, &o->destHostPort, optarg) == -1)
errF = -1;
break;
case ‘d’:
if (getSec(&o->delay, optarg, MAX_DELAYSEC) == -1)
errF = -1;
break;
case ‘s’:
if (str2l(&l, optarg, 10, 1, MAX_KBPS) == -1)
errF = -1;
else
o->speed = (uint32_t)l;
break;
case ‘e’:
if (getEther(&o->ether, optarg) == -1)
errF = -1;
break;
case ‘q’:
if (str2l(&l, optarg, 0, 1, MAX_QBUFSIZE) == -1)
errF = -1;
else
o->inQBufSize = (int)l;
break;
case ‘B’:
if (str2l(&l, optarg, 10, 0, BITERRDENOM – 1) == -1)
errF = -1;
else
o->bitError = (int)l;
break;
case ‘L’:
if (str2l(&l, optarg, 10, 0, 99) == -1)
errF = -1;
else
o->randomLoss = (int)l;
break;
case ‘C’:
if ( (d = strtod(optarg, NULL)) == 0)
errF = -1;
else
o->gilCondLoss = (float)d;
break;
case ‘U’:
if ( (d = strtod(optarg, NULL)) == 0)
errF = -1;
else
o->gilUncondLoss = (float)d;
break;
case ‘O’:
if (str2l(&l, optarg, 10, 0, 99) == -1)
errF = -1;
else
o->outOfOrder = (int)l;
break;
case ‘J’:
if (str2l(&l, optarg, 10, 0, 99) == -1)
errF = -1;
else
o->jitter = (int)l;
break;
case ‘m’:
o->calcMode = 1;
break;
case ‘v’:
o->verbose++;
break;
case ‘?’:
case ‘h’:
usage(o->argv0);
exit(1);
break;
case ‘z’: /* for debugging */
debug = 1;
break;
} /* switch */
if (errF == -1) {
fprintf(stderr, “%s: Invalid option: -%c %s\n\n”, o->argv0, c, optarg);
usage(o->argv0);
exit(1);
}
} /* while */
if (optind != argc) {
fprintf(stderr, “%s: Invalid option: %s\n\n”, o->argv0, argv[argc-1]);
usage(o->argv0);
exit(1);
}
return 0;
} /* parseCmdLine() */
/***************************************************************************/
/** initialize.
* constructor for main().
* this will prepare all the intial setup for main()
* opening UDP port, creating queue end etc */
static int init(Options * options)
{
Options *o = options;
time_t t;
uq.o = options;
initStat();
/* initial random functions */
idum = -(time(NULL));
ran1(&idum);
srand((unsigned int) time(&t));
gilOverAllLoss = (o->gilUncondLoss * (1 – o->gilCondLoss))
/ (1 – o->gilUncondLoss);
/* evaluate limit of RAND_MAX */
if (SHRT_MAX >= RAND_MAX)
o->rand_short = 1; /* assuming RAND_MAX is not long */
/** Open UDP **/
/* read port */
if ((uq.readfd = openUDPPort(o->readPort)) < 0) {
fprintf(stderr, "%s: Error open UDP port: %d.\n", o->argv0, ntohs(o->readPort));
return -1;
}
/* write port */
if ((uq.writfd = openUDPPort(o->writPort)) < 0) {
fprintf(stderr, "%s: Error open UDP port: %d.\n", o->argv0, ntohs(o->writPort));
return -1;
}
/** Create Queue **/
if ((uq.queue = openQueue()) == NULL) {
fprintf(stderr, “%s: Could not create Queue.\n”, o->argv0);
return -1;
}
uq.qBufSize = o->inQBufSize;
uq.qUsed = 0;
return 0;
} /* init() */
/** destroy.
* destructor for main().
* this will close all the setup for main()
* closing UDP port, queue */
static int destroy(void)
{
if (closesocket(uq.readfd) < 0) {
perror("close(uq.readfd)");
return -1;
}
if (closesocket(uq.writfd) < 0) {
perror("close(uq.writfd)");
return -1;
}
closeQueue(uq.queue);
return 0;
} /* destroy() */
/***************************************************************************/
/** print title.
* Just print out the title */
static int printTitle(Options * options)
{
Options *o = options;
char localHname[STRSIZE], sHost[STRSIZE], dHost[STRSIZE];
int strsize = STRSIZE;
struct in_addr localH;
in_addr_t localHIp;
struct sockaddr_in s, d;
s.sin_addr = o->srceHostIpN;
s.sin_port = o->srceHostPort;
d.sin_addr = o->destHostIpN;
d.sin_port = o->destHostPort;
if ((localHIp = getLHnameIp(localHname, STRSIZE)) == (in_addr_t)-1) {
fprintf(stderr, “%s: Could not retrieve localhost IP.\n”, o->argv0);
return -1;
}
localH.s_addr = localHIp;
putchar(‘\n’);
puts (“Network emulator with UDP link”);
puts (” Copyright (c) 2021 by Columbia University; all rights reserved”);
putchar(‘\n’);
puts (“Link established:”);
printf(” %s ->\n”, addr2str(sHost, strsize, &s));
printf(” %s(%s)/%d\n”, localHname, inet_ntoa(localH),
ntohs(o->readPort));
printf(” /%d ->\n”, ntohs(o->writPort));
printf(” %s\n”, addr2str(dHost, strsize, &d));
putchar(‘\n’);
printf(“emulating speed : %lu kb/s\n”, (unsigned long)o->speed);
printf(“delay : %ld.%06ld sec\n”,
o->delay.tv_sec, o->delay.tv_usec);
printf(“Ethernet : %d Mb/s\n”, o->ether / 1000);
printf(“Queue buffersize : %d bytes\n”, o->inQBufSize);
putchar(‘\n’);
puts (“error rate”);
printf(” Random packet loss: %d%%\n”, o->randomLoss);
if (o->gilCondLoss != 0.0) {
printf(” Gilbert packet loss:\n”);
printf(” conditional: %f unconditional: %f total: %f\n”,
o->gilCondLoss, o->gilUncondLoss, gilOverAllLoss);
}
printf(” Bit error : %d (1/%d per bit)\n”, o->bitError,
BITERRDENOM);
printf(” Out of order : %d%%\n”, o->outOfOrder);
printf(” Jitter : %d%% of delay\n”, o->jitter);
putchar(‘\n’);
return 0;
} /* printTitle() */
/** print statistics.
* print out all the statistics after stopping this emulator */
static int printStatistics(void)
{
double s;
struct timeval tv;
s = tv2double(subTimeval(&tv, &g_stat.lasttime, &g_stat.startime));
putchar(‘\n’);
puts (“— Statistics —“);
printf(“Total time : %f sec\n”, s);
printf(” received: %d packets with %lu bytes \n”,
g_stat.rPacket, (unsigned long)rUdpC);
printf(” send : %d packets with %lu bytes \n”,
g_stat.sPacket, (unsigned long)sUdpC);
printf(“Rejected from invalid host: %d packets with %d bytes\n”,
g_stat.rejPack, g_stat.rejBytes);
putchar(‘\n’);
printf(“Dropped by congestion: %d packets) with %d bytes\n”, g_stat.congPack,
g_stat.congBytes);
putchar(‘\n’);
if (rUdpC != 0) {
puts (“Errors emulated:”);
printf(” Random packet loss: %d packets = %0.2g%% of packets\n”,
g_stat.randomLoss, (g_stat.randomLoss * 100) / (float)g_stat.sPacket);
printf(” Bit error : %d bits = %0.2g (1/%d per bit)\n”,
g_stat.biterror, (g_stat.biterror * BITERRDENOM) / (float)(sUdpC * 8),
BITERRDENOM);
printf(” Out of order : %d packets = %0.2g%%\n\n”,
g_stat.outOfOrder, (g_stat.outOfOrder * 100) / (float)g_stat.sPacket);
puts (“Transfer speed”);
printf(” receive: min %.3f kb/s max %.3f kb/s\n”,
g_stat.minSp / 1000.0, g_stat.maxSp / 1000.0);
printf(” send : average %.3f kb/s\n”, (sUdpC * 8 / s) / 1000.0);
putchar(‘\n’);
}
return 0;
} /* printStatistics() */
/***************************************************************************/
/** increment qUsed.
* qUsed(counter) + bytes(received bytes) */
static int incQUsed(int *qUsed, int bytes, int qBufSize)
{
if ((*qUsed + bytes) > qBufSize) {
return -1;
}
*qUsed = *qUsed + bytes;
return 0;
} /* incQUsed() */
/** check host.
* check whether the source host of the packet is a valid host
* sockadd_in == (ip->s_addr, port)
* match returns 0, false returns -1 */
static int checkHost(struct sockaddr_in *sockAddr, struct in_addr *ip,
in_port_t port)
{
if (sockAddr->sin_addr.s_addr != ip->s_addr)
return -1;
if (port != 0) {
if (sockAddr->sin_port != port)
return -1;
}
return 0;
} /* checkHost() */
/** assemble item.
* store the content of the packet to QItems
* this will be a node for the queue */
static QItems *assembleItem(char *rBuff, int rBytes)
{
QItems *qItem;
qItem = (QItems *) malloc(sizeof(QItems));
if (qItem == NULL) {
perror(“assembleItem(): malloc()”);
return NULL;
}
qItem->data = (char *) malloc(sizeof(char) * rBytes);
if (qItem->data == NULL) {
perror(“assembleItem(): malloc()”);
return NULL;
}
memcpy(qItem->data, rBuff, rBytes);
qItem->bytes = rBytes;
return qItem;
} /* assembleItem() */
/** create jitter
* create a jitter to delay_tv
* returns delay_tv according jRate(%)
* jitter is uniform distributed
* delay should not longer than 42 sec, it will over flow when calculating */
static struct timeval *createjitter(struct timeval *jitter_tv,
struct timeval *delay_tv, int jRate)
{
unsigned long delay, orgDelay;
delay = orgDelay = delay_tv->tv_sec * 1000000 + delay_tv->tv_usec;
/* delay(usec) =
* | 2 * jRate(%) * rand() / RAND_MAX – jRate(%) |
* delay + delay * |——————————————– |
* | 100 |
*/
#if 0
if (uq.o->rand_short == 1 && delay_tv->tv_sec <= 21) {
/* uses a faster calculation */
delay = delay + (delay * (2 * jRate * rand() / RAND_MAX - jRate)) / 100;
} else {
/* uses float because return value of rand() is too big */
delay = (unsigned long)(delay *
(1.0 + (jRate * (2.0 * (float)rand() / RAND_MAX - 1.0)) / 100.0));
}
#endif
delay = (unsigned long)(delay *
(1.0 + (jRate * (2.0 * (float)rand() / RAND_MAX - 1.0)) / 100.0));
if (debug) {
puts (" Jitter:");
printf(" org delay: %lu jitter rate: %d(%%)\n", orgDelay, jRate);
printf(" delay: %lu actual jitter: %d(%%)\n", delay,
((int)delay - (int)orgDelay) * 100 / (int)orgDelay);
}
jitter_tv->tv_sec = delay / 1000000;
jitter_tv->tv_usec = delay % 1000000;
return jitter_tv;
}
/** calculate depature time.
* make a departure time for received packet
* from bytes(packet size), speed(link speed), delay_tv, now,
* uq.o->ether(ethernet speed)
* returns dep_tv */
static void calcDepTime(struct timeval *dept_tv, int bytes, uint32_t speed,
struct timeval *delay_tv, struct timeval *now_tv)
{
struct timeval intervl_tv = { 0, 0 }; /* relative interval */
struct timeval intervled_tv = { 0, 0 }; /* absolute interval */
struct timeval delayed_tv = { 0, 0 }; /* absolute delay */
struct timeval trans_tv = { 0, 0 }; /* relative transmission delay */
struct timeval jitter_tv;
uint32_t trans_d = 0; /* u_sec */
/**
* Caluculate Interval time
* sp (kb/s)
* = (sp*1000 / 8) / 1000,000 (bytes/microsec)
* = (1 / ((sp*1000 / 8) / 1000,000)) * bytes (microsec) <- interval time
* = (8000 * bytes) / sp
*/
if ( (intervl_tv.tv_usec = (8000L * bytes) / speed) >= 1000000) {
intervl_tv.tv_sec += (intervl_tv.tv_usec / 1000000);
intervl_tv.tv_usec %= 1000000L;
}
if (debug) {
puts(” Interval time:”);
printf(” bytes: %d link speed: %lu(kb/s)\n”,
bytes, (unsigned long)speed);
printf(” %ld.%06ld(sec)\n”, intervl_tv.tv_sec, intervl_tv.tv_usec);
}
/* init prvIntervled_tv, only for the first time */
if (!g_stat.prvIntervled_tv.tv_sec && !g_stat.prvIntervled_tv.tv_usec) {
subTimeval(&g_stat.prvIntervled_tv, now_tv, &intervl_tv);
}
switch (uq.o->calcMode) {
default:
case 0:
addTimeval(&intervled_tv, &g_stat.prvIntervled_tv, &intervl_tv);
break;
case 1:
addTimeval(&intervled_tv, now_tv, &intervl_tv);
break;
}
/**
* Calculate Transmission Delay
* actually it is a differential trans-delay
*
* packet size (bits) packet size (bits)
* ————————– – ————————–
* emulating link speed (b/s) ether-net speed (b/s)
*/
if ((uint32_t)uq.o->ether > speed) {
/* this is just a trick to not to over flow, long */
trans_d = bytes * 8 * ((uint32_t)uq.o->ether – speed);
if (trans_d < 4294967)
trans_d = trans_d * 1000 / ((uint32_t)uq.o->ether * speed);
else
trans_d = ((trans_d / (uint32_t)uq.o->ether) * 1000 / speed);
}
if (trans_d >= 1000000) {
trans_tv.tv_sec += trans_d / 1000000;
trans_tv.tv_usec %= 1000000L;
} else
trans_tv.tv_usec = trans_d;
if (debug) {
puts(” Transmission Delay:”);
printf(” bytes: %d link speed: %lu(kb/s) ether: %d\n”,
bytes, (unsigned long)speed, uq.o->ether);
printf(” %ld.%06ld(sec)\n”, trans_tv.tv_sec, trans_tv.tv_usec);
}
/* add jitter to the delay */
if (uq.o->jitter && (delay_tv->tv_sec | delay_tv->tv_usec)) {
createjitter(&jitter_tv, delay_tv, uq.o->jitter);
addTimeval(&delayed_tv, now_tv, &jitter_tv);
} else
addTimeval(&delayed_tv, now_tv, delay_tv);
maxTimeval(&delayed_tv, &intervled_tv, &delayed_tv);
addTimeval(dept_tv, &delayed_tv, &trans_tv);
if (debug) {
puts(” Delay:”);
printf(” %ld.%06ld(sec)\n”, delay_tv->tv_sec, delay_tv->tv_usec);
puts(” prev interval:”);
printf(” %ld.%06ld(sec)\n”, g_stat.prvIntervled_tv.tv_sec,
g_stat.prvIntervled_tv.tv_usec);
puts(” now:”);
printf(” %ld.%06ld(sec)\n”, now_tv->tv_sec, now_tv->tv_usec);
puts(” Departure time:”);
printf(” %ld.%06ld(sec)\n”, dept_tv->tv_sec, dept_tv->tv_usec);
}
g_stat.prvIntervled_tv = intervled_tv;
} /* calcDepTime() */
/***************************************************************************/
/** read handler.
* readFd handler (manupilate packet in the queue and create error
* and send out UDP packets) */
static Notify_value readHandler(Notify_client client, int dummyfd)
{
struct sockaddr_in readAddr;
socklen_t readAddrLen;
char rBuff[BUFSIZE], hname[MAXHOSTNAMELEN + 32];
int rBytes; /* MAXHOSTNAMELEN in ????.h */
QItems *qItem;
struct timeval dept_tv, now_tv, interval_tv;
uint32_t recvSp;
/* read received packet */
readAddrLen = (socklen_t) sizeof(readAddr);
rBytes = recvfrom(uq.readfd, rBuff, sizeof(rBuff),
0, (struct sockaddr *) &readAddr, &readAddrLen);
if (rBytes < 0) {
perror("readHandler(): recvfrom()");
notify_stop();
return NOTIFY_IGNORED;
}
if (uq.o->verbose >= 2) {
printf(“received: recv counter: %lu size: %d bytes\n”,
(unsigned long)rUdpC, rBytes);
}
/* check the source host, if it does not match, discard this packet */
if (checkHost(&readAddr, &uq.o->srceHostIpN, uq.o->srceHostPort) < 0) {
if (uq.o->verbose) {
printf(“!Packet from invalid host: %s\n”,
addr2str(hname, MAXHOSTNAMELEN + 32, &readAddr));
printf(” discarded packet: recv counter: %lu size: %d bytes\n”,
(unsigned long)rUdpC, rBytes);
}
g_stat.rejPack++;
g_stat.rejBytes += rBytes; /* received UDP bytes before discarding any */
return NOTIFY_DONE;
}
/* check the packet size, compare to queueing buffer size */
if (rBytes > uq.o->inQBufSize) {
if (uq.o->verbose) {
puts (“!Packet is larger then the queueing buffer.”);
printf(” packet size: %d bytes buffer size: %d bytes\n”,
rBytes, uq.o->inQBufSize);
printf(” discarded packet: recv counter: %lu size: %d bytes\n”,
(unsigned long)rUdpC, rBytes);
}
g_stat.congPack++;
g_stat.congBytes += rBytes;
return NOTIFY_DONE;
}
gettimeofday(&now_tv, NULL);
/* calc the receiving speed */
/* g_stat.prvRcv_tv.tv_sec == 0 && g_stat.prvRcv_tv.tv_usec == 0 */
if ( (g_stat.prvRcv_tv.tv_sec & g_stat.prvRcv_tv.tv_usec) == 0) {
/* initialize */
g_stat.prvRcv_tv = now_tv;
g_stat.minSp = MAX_KBPS;
} else {
subTimeval(&interval_tv, &now_tv, &g_stat.prvRcv_tv);
recvSp = ((unsigned) rBytes * 8 * 1000000)
/ (interval_tv.tv_sec * 1000000 + interval_tv.tv_usec);
if (recvSp < g_stat.minSp)
g_stat.minSp = recvSp;
if (recvSp > g_stat.maxSp)
g_stat.maxSp = recvSp;
g_stat.prvRcv_tv = now_tv;
}
/* check congestion, if queue buffer is full, discard packet */
if (incQUsed(&uq.qUsed, rBytes, uq.qBufSize) < 0) {
if (uq.o->verbose) {
puts (“!Congestion:”);
printf(” discarded packet: recv counter: %lu size: %d bytes\n”,
(unsigned long)rUdpC, rBytes);
}
g_stat.congPack++;
g_stat.congBytes += rBytes;
return NOTIFY_DONE; /* buffer overflowed and discard packet, return */
}
if (rUdpC == 0) {
g_stat.startime = now_tv;
if (uq.o->verbose >= 2) {
puts(” this is the first packet:”);
} else {
puts(“Received the first packet:”);
}
}
/* store packet into the queue */
qItem = assembleItem(rBuff, rBytes);
if (addQueue(uq.queue, qItem) == NULL) {
fprintf(stderr, “%s: readHandler(): addQueue():\n”, uq.o->argv0);
}
/* departure time */
calcDepTime(&dept_tv, rBytes, uq.o->speed, &uq.o->delay, &now_tv);
rUdpC += rBytes; /* add to read UDP counter */
g_stat.rPacket++;
/* Set timer handler (sending UDP packets) */
timer_set(&dept_tv, sendHandler, (Notify_client) rUdpC, 0);
return NOTIFY_DONE;
} /* readHandler() */
/***************************************************************************/
/** decrement qUsed.
* qUsed(counter) – bytes(sending bytes) */
static int decQUsed(int *qUsed, int bytes, int qBufSize)
{
if (*qUsed > qBufSize)
return -1;
if ((*qUsed – bytes) < 0) {
return -1;
}
*qUsed = *qUsed - bytes;
return 0;
} /* decQUsed() */
/** disassemble item.
* unpack a packet from qItem */
static void disAssembleItem(char *wBuff, int *wBytes, QItems * qItem)
{
*wBytes = qItem->bytes;
memcpy(wBuff, qItem->data, *wBytes);
free(qItem->data);
free(qItem);
} /* disAssembleItem() */
/** is packet loss.
* Check the probability for packet loss. If so, discard it. **/
static int isPacketLoss(Queue * queue, int randomLoss)
{
int r;
/* random packet loss */
if (uq.o->randomLoss != 0) {
if (uq.o->rand_short == 1) {
if ((int)((long)rand() * 100 / RAND_MAX) >= randomLoss) {
return 0;
}
} else {
r = rand();
if (((r / (float)RAND_MAX) * 100.0) >= (float)randomLoss) {
return 0;
}
}
}
/* Gilbert packet loss */
if (uq.o->gilCondLoss > 0.0) {
if (gilbRand(uq.o->gilCondLoss, gilOverAllLoss) == 0)
return 0;
}
return 1;
} /* isPacketLoss() */
/** is bit error.
* Check the probability for bit error. If so then corrupt the packet **/
static int isBitError(char *wBuff, int wBytes, int bitError)
{
int i, seqBitNum, byteNum, bitToCrpt, corruptBits = 0;
corruptBits += bnldev(bitError / (float) BITERRDENOM, wBytes * 8, &idum);
if (corruptBits <= 0)
return 0;
for (i = 0; i < corruptBits; i++) {
if (uq.o->rand_short == 1)
seqBitNum = (int)((long)rand() * wBytes * 8 / RAND_MAX);
else
seqBitNum = (int)((rand() / (float)RAND_MAX) * wBytes * 8);
byteNum = seqBitNum / wBytes;
bitToCrpt = 1 << (seqBitNum % wBytes);
wBuff[byteNum] ^= bitToCrpt;
}
return corruptBits;
} /* isBitError() */
/** is out of order.
* Check the probability for out of order. If so then change the order of the
* packet in the queue **/
static int isOutOfOrder(Queue * queue, int outOfOrder)
{
QItems *qItem;
if (uq.o->rand_short == 1) {
if ((int)((long)rand() * 100 / RAND_MAX) >= outOfOrder)
return 0;
} else {
if (((rand() / (float)RAND_MAX) * 100.0) >= (float)outOfOrder)
return 0;
}
if (countQueue(queue) < 2) {
if (debug)
puts("Queue is too small to make out of order");
return 0;
}
/* create out of order
* get one packet from tail */
if (getQueue(queue, &qItem) == NULL) {
fprintf(stderr, "%s: isOutOfOrder(): getQueue():\n", uq.o->argv0);
}
/* insert the packet to head */
if (addQueue(queue, qItem) == NULL) {
fprintf(stderr, “%s: isOutOfOrder(): addQueue():\n”, uq.o->argv0);
}
return 1;
} /* isOutOfOrder() */
/***************************************************************************/
/** send handler.
* timer handler (reading and queueing UDP packets) */
static Notify_value sendHandler(Notify_client client)
{
struct sockaddr_in writAddr;
char wBuff[BUFSIZE];
int wBytes, written, corruptBits;
QItems *qItem;
struct timeval now_tv;
/* get a sending packet from the queue */
if (getQueue(uq.queue, &qItem) == NULL) {
fprintf(stderr, “%s: sendHandler(): getQueue():\n”, uq.o->argv0);
}
disAssembleItem(wBuff, &wBytes, qItem);
gettimeofday(&now_tv, NULL);
/* start generate errors to packet */
/* random packet loss */
if (uq.o->randomLoss != 0 || uq.o->gilCondLoss > 0.0) {
if (isPacketLoss(uq.queue, uq.o->randomLoss)) {
if (uq.o->verbose) {
puts (“Packet loss:”);
printf(” discarded packet: send counter: %lu size: %d bytes\n”,
(unsigned long)sUdpC, wBytes);
}
/* decrease the counter of the queue buffer utilization */
if (decQUsed(&uq.qUsed, wBytes, uq.qBufSize) < 0) {
fprintf(stderr, "%s: decQUsed(): uq.qUsed: %d wBytes: %d.\n",
uq.o->argv0, uq.qUsed, wBytes);
notify_stop();
return NOTIFY_IGNORED;
}
g_stat.randomLoss++;
return NOTIFY_DONE;
}
}
if (uq.o->bitError != 0) { /* bit error */
if ( (corruptBits = isBitError(wBuff, wBytes, uq.o->bitError)) > 0) {
if (uq.o->verbose) {
printf(“Bit error: corrupt bits: %d\n”, corruptBits);
printf(” corrupted packet: send counter: %lu size: %d bytes\n”,
(unsigned long)sUdpC, wBytes);
}
g_stat.biterror += corruptBits;
}
}
if (uq.o->outOfOrder != 0) { /* out of order */
if (isOutOfOrder(uq.queue, uq.o->outOfOrder)) {
if (uq.o->verbose) {
puts (“Out of order:”);
printf(” packet: send counter: %lu size: %d bytes\n”,
(unsigned long)sUdpC, wBytes);
}
g_stat.outOfOrder++;
}
}
/* end of generating errors */
/* send a packet */
setSockAddr(&writAddr, &uq.o->destHostIpN, uq.o->destHostPort);
written = sendto(uq.writfd, (const char *) wBuff, wBytes,
0, (struct sockaddr *) &writAddr, sizeof(writAddr));
#if 0
if (written != wBytes) {
perror(“sendHandler(): sendto()”);
notify_stop();
return NOTIFY_IGNORED;
}
#endif
if (uq.o->verbose >= 2) {
printf(“send : send counter: %lu size: %d bytes\n”,
(unsigned long)sUdpC, wBytes);
}
/* decrease the counter of the queue buffer utilization */
if (decQUsed(&uq.qUsed, written, uq.qBufSize) < 0) {
fprintf(stderr, "%s: decQUsed(): uq.qUsed: %d wBytes: %d.\n",
uq.o->argv0, uq.qUsed, wBytes);
notify_stop();
return NOTIFY_IGNORED;
}
sUdpC += written;
g_stat.sPacket++;
g_stat.lasttime = now_tv;
return NOTIFY_DONE;
} /* sendHandler() */
/** flush queue.
* stop receiving anymore packets and flushes the packtes in the qeueu */
static void flushQueue(void)
{
struct timeval timeout;
uint32_t i;
/* very rough way but flushing queue buffer */
/* clear readHandler to stop receiving packets */
for (i = 0; i <= (rUdpC + 100); i++)
notify_set_input_func( i, NULL, uq.readfd);
if (timer_pending() != 0) {
puts (" Wait while flushing packets in the buffer.");
putchar('\n');
}
for (i = 0;; i++) {
timer_get(&timeout);
if (timer_pending() == 0)
return;
}
return;
} /*** flushQueue() ***/
/** signal handler.
* traps ctr-c and stop the emulator */
static Notify_value sigHandler(Notify_client client, int sig,
Notify_signal_mode mode)
{
putchar('\n');
puts("!Terminated by ctr-c.");
putchar('\n');
puts ("Closing network emulation.");
flushQueue();
notify_stop();
return NOTIFY_DONE;
} /* sigHandler() */
/** stdin handler.
* traps stdin and stop the emulator by the user's command */
Notify_value stdinHandler(Notify_client client, int dummyfd)
{
char buff[STRSIZE];
fgets(buff, STRSIZE, stdin);
if (strcmp("quit\n", buff) == 0)
goto TERMINATE;
if (strcmp("q\n", buff) == 0)
goto TERMINATE;
if (strcmp("stop\n", buff) == 0)
goto TERMINATE;
if (strcmp("exit\n", buff) == 0)
goto TERMINATE;
return NOTIFY_IGNORED;
TERMINATE:
printf("!Terminated by command: %s\n", buff);
putchar('\n');
puts ("Closing network emulation.");
flushQueue();
notify_stop();
return NOTIFY_DONE;
} /* stdinHandler() */
/***************************************************************************
*** main ***
***************************************************************************/
/** main.
* everything starts here */
int main(int argc, char *argv[])
{
Options options;
int i;
Notify_client client = 0;
startupSocket(); /* for Win32 */
/* Parse command line arguments */
if (initOptions(&options, argv[0]) < 0) {
fprintf(stderr, "%s: Initialize error.\n", argv[0]);
return -1;
}
if (parseCmdLine(&options, argc, argv) < 0) {
return -1;
}
/** Now it is the real main routine **/
/* Initialize */
if (init(&options) < 0) {
fprintf(stderr, "%s: Initialize error.\n", uq.o->argv0);
return -1;
}
/* Print title */
if (printTitle(&options) < 0) {
fprintf(stderr, "%s: Error: printing title.\n", uq.o->argv0);
return -1;
}
/* Set stdin handler (command from keybord) */
#ifndef WIN32
notify_set_input_func(client, stdinHandler, fileno(stdin));
#endif
/* Set signal handler (terminating) */
notify_set_signal_func(client, sigHandler, SIGINT, NOTIFY_ASYNC);
/* Set readFd handler (reading and queueing UDP packets) */
notify_set_input_func((Notify_client) rUdpC, readHandler, uq.readfd);
if ( (i = notify_start()) == -1) { /* != NOTIFY_OK, bug notify_start()? */
fprintf(stderr, “%s: Notifier error %d.\n”, uq.o->argv0, i);
return -1;
}
printStatistics();
if (destroy() < 0) {
fprintf(stderr, "%s: Could not destroy all the handler.\n", argv[0]);
return -1;
}
return 0;
} /* main() */
#ifndef NEWUDPL_H_
#define NEWUDPL_H_
/***************************************************************************
*
* Network Emulator With UDP Link
* newudpl.h
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
/** Options options.
* contains all the options setting from command line */
struct options_s {
/** using it for error message */
char argv0[NAME_MAX];
/** UDP port for read */
in_port_t readPort;
/** UDP port for write */
in_port_t writPort;
/** source host ip and port numbers */
struct in_addr srceHostIpN;
in_port_t srceHostPort;
/** destination host ip and port */
struct in_addr destHostIpN;
in_port_t destHostPort;
/** link speed (kb/s) */
uint32_t speed;
/** ehternet speed (kb/s) */
int ether;
/** delay time */
struct timeval delay;
/** Queue buffer size for reading packets */
int inQBufSize;
/** probability of bit error */
int bitError;
/** % of random packet loss */
int randomLoss;
/** probability of Gilbert packet loss */
float gilCondLoss;
/** probability of Gilbert packet loss */
float gilUncondLoss;
/** % of outOfOrder */
int outOfOrder;
/** % of jitter */
int jitter;
/** mode of calculating departure time */
int calcMode;
/** degree of verbose mode */
int verbose;
/** the size of RAND_MAX */
int rand_short;
};
typedef struct options_s Options;
/** Global struct.
* this is used for sendHandler() and readHandler()
* to keep truck of packets */
struct udpqueue_s {
Options *o;
/** reading socket file descriptor */
int readfd;
/** writing socket file descriptor */
int writfd;
/** pointer to queue */
Queue *queue;
/** size of queue */
int qBufSize;
/** counter of utilization of the queue */
int qUsed;
};
typedef struct udpqueue_s UdpQueue;
/** Global struct.
* contains statisitcs information */
struct statistics_s {
/** a time of first transmitted packtes */
struct timeval startime;
/** a time of the end of transitting packet */
struct timeval lasttime;
/** a time of previous packet arrived */
struct timeval prvRcv_tv;
/** a interval time of previous packet */
struct timeval prvIntervled_tv;
/** minimum speed of receiving packets */
uint32_t minSp;
/** maximum speed of receiving packets */
uint32_t maxSp;
/** total number of received packets */
int rPacket;
/** total number of send packets */
int sPacket;
/** total number of rejected packets from invalid host */
int rejPack;
/** total bytes of rejected packets from invalid host */
int rejBytes;
/** total number of dropped packets from congestion */
int congPack;
/** total bytes of dropped packets from congestion */
int congBytes;
/** total number of random loss packets */
int randomLoss;
/** total number of packets with bit error */
int biterror;
/** total number of packets with out of order */
int outOfOrder;
};
typedef struct statistics_s Statistics;
#endif /* NEWUDPL_H_ */
/***************************************************************************
* Utility functions C library
* akiralib.c
*
* by Akira Tsukamoto
***************************************************************************/
#include "sysdep.h"
#include "akiralib.h"
/***************************************************************************
*** str2l() ***
** extended version of ANSI strtol() **
** ANSI strtol() will return -1 if the string contains 0 value
** but str2l() will return 0
* -> const char *string : string to convert
* int radix : radix, see ANSI C or POSIX strtol() for details
* long min : limit of minimum value
* long max : limit of maximum value
* <- long *longInt : result value
* int str2l() : OK: 0 error: -1
***************************************************************************/
int str2l(long *result, const char *string, int radix, long min, long max)
{
long lInt;
char *endptr;
/* Since ANSI C strtol() returns 0 for error
chack whether string contains 0 for the value. */
if (result == NULL)
return -1;
if (string == NULL)
return -1;
if (radix < 0 || 36 < radix || radix == 1)
return -1;
if (min > max)
return -1;
lInt = strtol(string, &endptr, radix);
/* Check if the sting was 0 */
if (lInt == 0) {
if (string == endptr)
return -1; /* genuine error */
if (*endptr != ‘\0’)
return -1; /* Had invalid character? */
}
if (lInt < min || max < lInt)
return -1;
*result = lInt;
return 0;
}
/***************************************************************************
*** openUDPPort() ***
** open UDP port with specified port number and returns fd **
* -> in_port_t port : port number
* <- int openUDPPort() : OK: fd error: -1
***************************************************************************/
int openUDPPort(in_port_t port)
{
int sockfd;
struct sockaddr_in sockAddr;
const int reuse = 1; /* SO_REUSEADDR */
/* open socket */
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("openUDPPort(): socket()");
return -1;
}
/* claer and set struct socket address */
memset((char *) &sockAddr, 0, sizeof(sockAddr));
sockAddr.sin_family = AF_INET;
sockAddr.sin_addr.s_addr = htonl(INADDR_ANY);
sockAddr.sin_port = port;
/* bind */
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&reuse,
sizeof(reuse)) < 0) {
perror("openUDPPort(): setsockopt(): SO_REUSEADDR");
return -1;
}
#ifdef SO_REUSEPORT
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, (const void *)&reuse,
sizeof(reuse)) < 0) {
perror("openUDPPort(): setsockopt(): SO_REUSEPORT");
return -1;
}
#endif
if (bind(sockfd, (struct sockaddr *) &sockAddr, sizeof(sockAddr)) < 0) {
perror("openUDPPort(): bind()");
return -1;
}
return sockfd;
}
/***************************************************************************
*** setSockAddr() ***
** set internet sockaddr(struct sockaddr_in) from IP and port number **
* -> struct in_addr *ip : pointer to IP number(struct in_addr)
* in_port_t port : port number
* <- struct sockaddr_in *sAddr : pointer to sockAddr, No error return
***************************************************************************/
void setSockAddr(struct sockaddr_in *sAddr, struct in_addr *ip, in_port_t port)
{
memset((char *) sAddr, 0, sizeof(struct sockaddr_in));
sAddr->sin_family = AF_INET;
sAddr->sin_addr.s_addr = ip->s_addr;
sAddr->sin_port = port;
}
/***************************************************************************
*** getLHnameIp() ***
** get Localhost Host name and IP address **
* -> char *hName : pointer to string buff
* int len : size of sting buff
* <- char *hName : local host name terminated by '\0'
* in_addr_t getLHnameIp() : OK: IP address error: -1
***************************************************************************/
in_addr_t getLHnameIp(char *hName, size_t len)
{
/* impliment code when host name was not retrieved */
struct hostent *hostEnt;
struct utsname myname;
struct in_addr *ipAddr;
if (uname(&myname) < 0)
return -1;
if ((hostEnt = gethostbyname(myname.nodename)) == NULL)
return -1;
ipAddr = (struct in_addr *) hostEnt->h_addr_list[0];
if (strlen(myname.nodename) >= len)
return -1;
strcpy(hName, myname.nodename);
return ipAddr->s_addr;
}
/***************************************************************************
*** addr2str() ***
** convert sockaddr(struct sockaddr_in) to string
** if host name was retrieved
** sockaddr -> “www.yahoo.com(123.111.112.333)/4123”
** if not
** sockaddr -> “123.111.112.333/4123”
* -> struct sockaddr_in *s : sockaddr
* <- char *addr2str(), char* string : string, No error return
***************************************************************************/
char *addr2str(char *string, size_t len, struct sockaddr_in *s)
{
struct hostent *hostEnt;
char temp[1024];
hostEnt = gethostbyaddr((const char *) &s->sin_addr, sizeof(struct in_addr),
AF_INET);
if (hostEnt != NULL) {
if (ntohs(s->sin_port) != 0) {
sprintf(temp, “%s(%s)/%d”,
hostEnt->h_name, inet_ntoa(s->sin_addr), ntohs(s->sin_port));
} else {
sprintf(temp, “%s(%s)/*****”,
hostEnt->h_name, inet_ntoa(s->sin_addr));
}
} else {
if (ntohs(s->sin_port) != 0) {
sprintf(temp, “%s/%d”, inet_ntoa(s->sin_addr), ntohs(s->sin_port));
} else {
sprintf(temp, “%s/*****”, inet_ntoa(s->sin_addr));
}
}
if (strlen(temp) >= len) {
return NULL;
}
strcpy(string, temp);
return string;
}
/*** addTimeval() ***/
struct timeval addTimeval(struct timeval *ret, struct timeval *a,
struct timeval *b)
{
ret->tv_usec = a->tv_usec + b->tv_usec;
if (ret->tv_usec >= 1000000) {
ret->tv_sec = a->tv_sec + b->tv_sec + 1;
ret->tv_usec -= 1000000;
} else {
ret->tv_sec = a->tv_sec + b->tv_sec;
}
return *ret;
} /* addTimeval() */
/*** subTimeval() ***/
struct timeval subTimeval(struct timeval *ret, struct timeval *a,
struct timeval *b)
{
if (a->tv_usec < b->tv_usec) {
ret->tv_usec = (a->tv_usec + 1000000) – b->tv_usec;
ret->tv_sec = a->tv_sec – b->tv_sec – 1;
} else {
ret->tv_usec = a->tv_usec – b->tv_usec;
ret->tv_sec = a->tv_sec – b->tv_sec;
}
return *ret;
} /* subTimeval() */
/*** maxTimeval() ***/
struct timeval maxTimeval(struct timeval *ret, struct timeval *a,
struct timeval *b)
{
if (a->tv_sec > b->tv_sec) {
*ret = *a;
} else if (a->tv_sec < b->tv_sec) {
*ret = *b;
} else { /* a->tv_sec == b->tv_sec */
if (a->tv_usec > b->tv_usec) {
*ret = *a;
} else {
*ret = *b;
}
}
return *ret;
} /* maxTimeval() */
/*** tv2double() ***/
double tv2double(struct timeval tv)
{
double d;
d = tv.tv_usec * 0.000001;
d += tv.tv_sec;
return d;
} /* tv2double() */
#ifndef _AKIRA_LIB_H_
#define _AKIRA_LIB_H_
/***************************************************************************
* Utility functions C library
* akiralib.h
*
* by Akira Tsukamoto
***************************************************************************/
#include “sysdep.h”
#ifdef __cplusplus
extern “C” {
#endif
/*** global Variables ******************************************************/
/* extern char _aki_1024_[1024]; */
/** string to long.
* extended version of ANSI strtol()
* ANSI strtol() will return -1 if the string contains 0 value
* but str2l() will return 0 */
int str2l(long *result, const char *string, int radix, long min, long max);
/** open UDP Port.
* open UDP port with specified port number and returns fd */
int openUDPPort(in_port_t port);
/** set sockaddr.
* set internet socaddr(struct sockaddr_in) from IP and port number */
void setSockAddr(struct sockaddr_in *sAddr, struct in_addr *ip, in_port_t port);
/** get local hostname and ip number. */
in_addr_t getLHnameIp(char *hName, size_t len);
/** sockaddr to string.
* convert sockaddr(struct sockaddr_in) to string
* if host name was retrieved
* sockaddr -> www.suna-asobi.com(345.455.112.333):4123
* if not
* sockaddr -> 345.455.112.333:4123 */
char *addr2str(char *string, size_t len, struct sockaddr_in *s);
/** add timeval a + b */
struct timeval addTimeval(struct timeval *ret, struct timeval *a,
struct timeval *b);
/** sub timeval a – b */
struct timeval subTimeval(struct timeval *ret, struct timeval *a,
struct timeval *b);
/** max timeval.
* select the timeval whichever is larger */
struct timeval maxTimeval(struct timeval *ret, struct timeval *a,
struct timeval *b);
/** tv to double.
* convert struct_timval to double **/
double tv2double(struct timeval tv);
#ifdef __cplusplus
}
#endif
#endif /* _AKIRA_LIB_H_ */
/***************************************************************************
* Math library
* akiramath.c
*
* by Akira Tsukamoto
***************************************************************************/
#include “sysdep.h”
#include “akiramath.h”
#define IA 16807 /* ran1() */
#define IM 2147483647
#define AM (1.0 / IM)
#define IQ 127773
#define IR 2836
#define NTAB 32
#define NDIV (1 + (IM -1) / NTAB)
#define EPS 1.2e-7
#define RNMX (1.0 – EPS)
#define PI 3.141592654 /* bnldev() */
/** stage for Gilbert packet loss. previous loss is 1 */
static int stage = 0;
/*** gammln() ***/
float gammln(float xx)
{
double x, y, tmp, ser;
static double cof[6] = {
76.18009172947146,
-86.50532032941677,
24.01409824083091,
-1.231739572450155,
0.1208650973866179e-2,
-0.5395239384953e-5,
};
int j;
y = x = xx;
tmp = x + 5.5;
tmp -= (x + 0.5) * log(tmp);
ser = 1.000000000190015;
for (j = 0; j <= 5; j++)
ser += cof[j] / ++y;
return -tmp + log(2.5066282746310005 * ser / x);
} /* gammln() */
/** ran1()
* returns random number 0.0 - 1.0 (float)
* need to call once ran1(&idum) before using it, initializing idum.
*/
#if 0 /* original version in the book */
float ran1(long *idum)
{
int j;
long k;
static long iy = 0;
static long iv[NTAB];
float temp;
if (*idum <= 0 || !iy) {
if (-(*idum) < 1)
*idum = 1;
else
*idum = -(*idum);
for (j = NTAB + 7; j >= 0; j–) {
k = (*idum) / IQ;
*idum = IA * (*idum – k * IQ) – IR * k;
if (*idum < 0)
*idum += IM;
if (j < NTAB)
iv[j] = *idum;
}
iy = iv[0];
}
k = (*idum) / IQ;
*idum = IA * (*idum - k * IQ) - IR * k;
if (*idum < 0)
*idum += IM;
j = iy / NDIV;
iy = iv[j];
iv[j] = *idum;
if ((temp = (float) (AM * iy)) > RNMX)
return RNMX;
else
return temp;
}
#else /* using ANSI C rand() to make it faster */
float ran1(long *idum)
{
return rand() / (float)RAND_MAX;
} /* ran1() */
#endif
/*** bnldev() ***/
int bnldev(float pp, int n, long *idum)
{
int j;
int bnl;
static int nold = (-1);
float am, em, g, angle, p, sq, t, y;
static float pold = (-1.0), pc, plog, pclog, en, oldg;
p = (pp <= 0.5 ? pp : 1.0 - pp);
am = n * p;
if (n < 0) { /* original code was n < 25, but this is faster */
bnl = 0;
for (j = 1; j <= n; j++)
if (ran1(idum) < p)
bnl++;
} else if (am < 1.0) {
g = exp(-am);
t = 1.0;
for (j = 0; j <= n; j++) {
t *= ran1(idum);
if (t < g)
break;
}
bnl = (j <= n ? j : n);
} else {
if (n != nold) {
en = n;
oldg = gammln(en + 1.0);
nold = n;
}
if (p != pold) {
pc = 1.0 - p;
plog = log(p);
pclog = log(pc);
pold = p;
}
sq = sqrt(2.0 * am * pc);
do {
do {
angle = PI * ran1(idum);
y = tan(angle);
em = sq * y + am;
} while (em < 0.0 || em >= (en + 1.0));
em = floor(em);
t = 1.2 * sq * (1.0 + y * y) * exp(oldg – gammln(em + 1.0)
– gammln(en – em + 1.0)
+ em * plog + (en – em) * pclog);
} while (ran1(idum) > t);
bnl = (int) em;
}
if (p != pp)
bnl = n – bnl;
return bnl;
} /* bnldev() */
int gilbRand(float pc, float pa)
{
if (stage == 0) {
if (rand() / (float) RAND_MAX < pa) {
stage++;
return 1;
}
}
if (stage == 1) {
if (rand() / (float) RAND_MAX < pc) {
return 1;
} else {
stage--;
}
}
return 0; /* no error */
} /* gilbRand() */
#ifndef _AKIRA_MATH_H_
#define _AKIRA_MATH_H_
/***************************************************************************
* Math library
* akiramath.h
*
* by Akira Tsukamoto
***************************************************************************/
/***************************************************************************
* These codes are from
* 'Numerical Recipes in C'
* The Press Syndicate of the University of Cambridge, 1992.
***************************************************************************/
#include "sysdep.h"
#ifdef __cplusplus
extern "C" {
#endif
/** random function.
* returns uniform distributed random number 0.0 - 1.0 (float)
* but it is slower then ANSI rand() function.
* From
* 'Numerical Recipes in C'
* The Press Syndicate of the University of Cambridge, 1992. */
float ran1(long *idum);
/** binomial random function.
* returns random number according to binomial-distribution.
* From
* 'Numerical Recipes in C'
* The Press Syndicate of the University of Cambridge, 1992. */
int bnldev(float pp, int n, long *idum);
/** Gilbert random function.
* returns 1 for packet loss, according to Gilbert random */
int gilbRand(float pc, float pa);
#ifdef __cplusplus
}
#endif
#endif /* _AKIRA_MATH_H_ */
/***********************************************************
* queue.c
* Code for functions to manipulate a queue.
*/
/**** INCLUDES ****/
#include
#include
#include “queue.h”
/**** PRIVATE FUNCTION PROTOTYPES ****/
/**** PUBLIC FUNCTION DEFINITIONS ****/
/* Initialize the queue Q to be the empty queue */
Queue *openQueue(void)
{
Queue *newQueue;
newQueue = (Queue *) malloc(sizeof(Queue));
if (!newQueue) {
printf(“ERROR: No memory for Queue!\n”);
return NULL;
}
newQueue->count = 0; /* Count == number of items in the queue */
newQueue->root = NULL; /* Front == location of item to remove next */
newQueue->last = NULL; /* Rear == place to insert next item */
return newQueue;
}
int countQueue(Queue * queue)
{
return queue->count;
}
/* If Q is not full, insert a new item onto the rear of Q */
Queue *addQueue(Queue * queue, QItems * newItem)
{
QueueNode *newNode;
if (queue->count >= _MAX_Q_SIZE_) {
fprintf(stderr, “Error! Too much data for Queue.\n”);
return NULL;
}
if (!queue) {
fprintf(stderr, “getQueue(): queue is NULL.\n”);
return NULL;
}
if (newItem == NULL) {
fprintf(stderr, “getQueue(): newItem is NULL.\n”);
return NULL;
}
/* Create a new list node and stick the new item into it */
newNode = (QueueNode *) malloc(sizeof(QueueNode));
newNode->items = newItem;
newNode->prev = NULL;
newNode->next = NULL;
/* Add to the root when queue is empty */
if (queue->root == NULL) {
queue->last = newNode;
} else {
queue->root->prev = newNode;
}
newNode->next = queue->root;
queue->root = newNode;
queue->count++;
return queue;
}
/* If Q is non-empty, remove the frontmost item of Q and return it */
Queue *getQueue(Queue * queue, QItems ** itemToReturn)
{
QueueNode *lastNode;
if (queue->count <= 0) { fprintf(stderr, "Error! No more data in Queue.\n"); return NULL; } if (!queue) { fprintf(stderr, "getQueue(): ERROR: queue is NULL.\n"); return NULL; } *itemToReturn = queue->last->items;
/* Empty the queue when it’s the last Node */
if (queue->root == queue->last) {
queue->root = NULL;
} else {
queue->last->prev->next = NULL;
}
lastNode = queue->last;
queue->last = queue->last->prev;
free(lastNode);
queue->count–;
return queue;
}
void closeQueue(Queue * queue)
{
QItems *dummy;
if (!queue) {
fprintf(stderr, “closeQueue(): ERROR: queue is NULL.\n”);
return;
}
/* Dump remained elements in the queue */
while (queue->count) {
getQueue(queue, &dummy);
}
free(queue);
}
#ifndef QUEUE_H_
#define QUEUE_H_
/***********************************************************
* queue.h
* Header file for functions to manipulate a queue.
*/
/**** INCLUDES ****/
#include “item.h”
#define _MAX_Q_SIZE_ 2048
#ifdef __cplusplus
extern “C” {
#endif
typedef Item QItems;
/**** queueTypes ****/
typedef struct queuenode_s QueueNode;
struct queuenode_s {
QItems *items;
QueueNode *prev;
QueueNode *next;
};
typedef struct queue_s Queue;
struct queue_s {
int count;
QueueNode *root;
QueueNode *last;
};
/*** PUBLIC FUNCTION PROTOTYPES ***/
/** Initialize the queue Q to be the empty queue */
Queue *openQueue(void);
/** Close and free the queue Q */
void closeQueue(Queue * queue);
/** Returns number of elements in the queue */
int countQueue(Queue * queue);
/** If Q is not full, insert a new item onto the rear of Q */
Queue *addQueue(Queue * queue, QItems * newItem);
/** If Q is non-empty, remove the frontmost item of Q and return it */
Queue *getQueue(Queue * queue, QItems ** itemToReturn);
#ifdef __cplusplus
}
#endif
#endif /* QUEUE_H_ */
#ifndef _ITEM_H_
#define _ITEM_H_
/***********************************************************
* item.h
* Header to define item type and useful macros
*/
/**** PUBLIC STRUCTURES, TYPES ****/
typedef struct item_s Item;
struct item_s {
char *data;
int bytes;
};
/**** MACROS ****/
//#define MAXDATASIZE 6000
#endif /* _ITEM_H_ */
#include “sysdep.h”
static char rcsid[] = “$Id: host2ip.c,v 1.1.1.1 1999/02/14 15:36:02 hgs Exp $”;
/*
* Return IP address given host name ‘host’.
* If ‘host’ is “”, set to INADDR_ANY.
*/
struct in_addr host2ip(char *host)
{
struct in_addr in;
register struct hostent *hep;
/* Check whether this is a dotted decimal. */
if (!host || *host == ‘\0’) {
in.s_addr = INADDR_ANY;
}
else if ((in.s_addr = inet_addr(host)) != -1) {
}
/* Attempt to resolve host name via DNS. */
else if ((hep = gethostbyname(host))) {
in = *(struct in_addr *)(hep->h_addr_list[0]);
}
/* As a last resort, try YP. */
else {
static char *domain = 0; /* YP domain */
char *value; /* key value */
int value_len; /* length of returned value */
/* added by Akira T. 01/07/2002 */
/* inet_addr() have destryed it, reset INADDR_ANY*/
in.s_addr = INADDR_ANY;
/* #ifdef HAVE_YP_MATCH added by Akira T. 01/07/2002 */
/* because win32 does not have yp functions */
#ifdef HAVE_YP_MATCH
if (!domain) yp_get_default_domain(&domain);
if (yp_match(domain, “hosts.byname”, host, strlen(host), &value, &value_len) == 0) {
in.s_addr = inet_addr(value);
}
#endif
}
return in;
} /* host2ip */
/*
* host2ip.h – return IP address given a host name
*
* Copyright 1998-2001 by Columbia University; all rights reserved
*/
#include “sysdep.h”
extern struct in_addr host2ip(char *host);
/********************************************************************
* *
* Voice Terminal (VT) *
* June, 1991 *
* *
* Written at USC/Information Sciences Institute from an earlier *
* version developed by Bolt Beranek and Newman Inc. *
* *
* Copyright (c) 1991 University of Southern California. *
* All rights reserved. *
* *
* Redistribution and use in source and binary forms are permitted *
* provided that the above copyright notice and this paragraph are *
* duplicated in all such forms and that any documentation, *
* advertising materials, and other materials related to such *
* distribution and use acknowledge that the software was *
* developed by the University of Southern California, Information *
* Sciences Institute. The name of the University may not be used *
* to endorse or promote products derived from this software *
* without specific prior written permission. *
* THIS SOFTWARE IS PROVIDED “AS IS” AND WITHOUT ANY EXPRESS OR *
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED *
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR *
* PURPOSE. *
* *
*******************************************************************/
/****************************************************************************/
/****** ******/
/****** Multiple Timer Package ******/
/****** ******/
/****************************************************************************/
/* */
/* These routines manage an ordered queue of interval timers so */
/* that a single process may have multiple, independent timers */
/* pending. Each timer is identified by an opaque client handle. */
/* These routines are intended to multiplex the timers onto the */
/* timeout mechanism of the select() call, or onto the single */
/* interval timer provided by setitimer(). */
/* */
/****************************************************************************/
#include “sysdep.h”
#include “notify.h” /* Notify_func */
static char rcsid[] = “$Id: multimer.c,v 1.1.1.1 1999/02/14 15:57:52 hgs Exp $”;
typedef struct TQE {
struct TQE *link; /* link to next timer */
struct timeval time; /* expiration time */
struct timeval interval; /* next interval */
Notify_func func; /* function to be invoked */
Notify_client client;
int which; /* type; currently always ITIMER_REAL */
} TQE;
/* active timer queue, in time order */
static TQE *timerQ = (TQE *)0;
/* queue of free Timer Queue Elements */
static TQE *freeTQEQ = (TQE *)0;
#ifndef timeradd
void timeradd(struct timeval *a, struct timeval *b,
struct timeval *sum)
{
sum->tv_usec = a->tv_usec + b->tv_usec;
if (sum->tv_usec >= 1000000L) { /* > to >= by Akira 12/29/01 */
sum->tv_sec = a->tv_sec + b->tv_sec + 1;
sum->tv_usec -= 1000000L;
}
else {
sum->tv_sec = a->tv_sec + b->tv_sec;
}
} /* timeradd */
#endif
/*
* Return 1 if a < b, 0 otherwise.
*/
static int timerless(struct timeval *a, struct timeval *b)
{
if (a->tv_sec < b->tv_sec ||
(a->tv_sec == b->tv_sec && a->tv_usec < b->tv_usec)) return 1;
return 0;
} /* timerless */
void timer_check(void)
{
register struct TQE *np;
for (np = timerQ; np; np = np->link) {
assert(np->time.tv_usec < 1000000);
assert(np->interval.tv_usec < 1000000);
}
} /* timer_check */
/*
* This routine sets a timer event for the specified client. The client
* pointer is opaque to this routine but must be unique among all clients.
* Each client may have only one timer pending. If the interval specified
* is zero, the pending timer, if any, for this client will be cancelled.
* Otherwise, a timer event will be created for the requested amount of
* time in the future, and will be inserted in chronological order
* into the queue of all clients' timers.
* interval: in: time interval
* func: in: function to be called when time expires
* client: in: first argument for the handler function
* relative: in: flag; set relative to current time
*/
struct timeval *timer_set(struct timeval *interval,
Notify_func func, Notify_client client, int relative)
{
register struct TQE *np, *op, *tp; /* To scan the timer queue */
/* scan the timer queue to see if client has pending timer */
op = (struct TQE *)&timerQ; /* Fudge OK since link is first */
for (np = timerQ; np; op = np, np = np->link)
if (np->client == client) {
op->link = np->link; /* Yes, remove the timer from Q */
break; /* and stop the search */
}
/* if the requested interval is zero, just free the timer */
if (interval == 0) {
if (np) { /* If we found a timer, */
np->link = freeTQEQ; /* link TQE at head of free Q */
freeTQEQ = np;
}
return 0; /* return, no timer set */
}
/* nonzero interval, calculate new expiration time */
if (!(tp = np)) { /* If no previous timer, get a TQE */
/* allocate timer */
if (!freeTQEQ) {
freeTQEQ = (TQE *)malloc(sizeof(TQE));
freeTQEQ->link = (TQE *)0;
freeTQEQ->interval.tv_usec = 0;
freeTQEQ->interval.tv_sec = 0;
}
tp = freeTQEQ;
freeTQEQ = tp->link;
}
/* calculate expiration time */
if (relative) {
(void) gettimeofday(&(tp->time), (struct timezone *)0);
timeradd(&(tp->time), interval, &(tp->time));
assert(tp->time.tv_usec < 1000000);
}
else tp->time = *interval;
#ifdef DEBUG
printf(“timer_set: %d.%06d\n”, tp->time.tv_sec, tp->time.tv_usec);
#endif
tp->func = func;
tp->client = client;
tp->which = ITIMER_REAL;
/* insert new timer into timer queue */
op = (struct TQE *)&timerQ; /* fudge OK since link is first */
for (np = timerQ; np; op = np, np=np->link) {
if (timerless(&tp->time, &np->time)) break;
}
op->link = tp; /* point prev TQE to new one */
tp->link = np; /* point new TQE to next one */
timer_check(); /*DEBUG*/
return &(tp->interval);
} /* timer_set */
�
/*
* This routine returns a timeout value suitable for use in a select() call.
* Before returning, all timer events that have expired are removed from the
* queue and processed. If no timer events remain, a NULL pointer is returned
* so the select() will just block. Otherwise, the supplied timeval struct is
* filled with the timeout interval until the next timer expires.
* Note: This routine may be called recursively if the timer event handling
* routine leads to another select() call! Therefore, we just take one timer
* at a time, and don’t use static variables.
*/
struct timeval *timer_get(struct timeval *timeout)
{
register struct TQE *tp; /* to scan the timer queue */
struct timeval now; /* current time */
timer_check(); /*DEBUG*/
for (;;) {
/* return null pointer if there is no timer pending. */
if (!timerQ) return (struct timeval *)0;
/* check head of timer queue to see if timer has expired */
(void) gettimeofday(&now, (struct timezone *)0);
if (timerless(&now, &timerQ->time)) { /* unexpired, calc timeout */
timeout->tv_sec = timerQ->time.tv_sec – now.tv_sec;
timeout->tv_usec = timerQ->time.tv_usec – now.tv_usec;
if (timeout->tv_usec < 0) {
timeout->tv_usec += 1000000L;
–timeout->tv_sec;
}
assert(timeout->tv_usec < 1000000);
return timeout; /* timeout until timer expires */
} else { /* head timer has expired, */
tp = timerQ; /* so remove it from the */
timerQ = tp->link; /* timer queue, */
tp->link = freeTQEQ;
freeTQEQ = tp;
/* restart timer (absolute) */
if (tp->interval.tv_sec || tp->interval.tv_usec) {
timeradd(&tp->interval, &tp->time, &tp->time);
timer_set(&tp->time, tp->func, tp->client, 0);
}
(*(tp->func))(tp->client); /* call the event handler */
}
} /* loop to see if another timer expired */
} /* timer_get */
/*
* Return 1 if the timer queue is not empty.
*/
int timer_pending(void)
{
return timerQ != 0;
} /* timer_pending */
#include “sysdep.h”
extern struct timeval *timer_set(struct timeval *interval,
Notify_func func, Notify_client client, int relative);
extern struct timeval *timer_get(struct timeval *timeout);
extern int timer_pending(void);
/*
notify — primitive notification service implementing a subset of the SunOS
(sunview/XView) notifier.
Copyright 1993 by AT&T Bell Laboratories; all rights reserved
*/
#include “sysdep.h”
#include “notify.h”
#include “multimer.h”
static char rcsid[] = “$Id: notify.c,v 1.1.1.1 1999/02/15 02:24:13 hgs Exp $”;
#ifdef hp
#define CAST int *
#else
#define CAST fd_set *
#endif
typedef struct event_t {
struct event_t *next;
Notify_client client;
Notify_func_input func;
int fd;
enum type_t {N_input, N_itimer} type;
} event_t;
static event_t *el; /* event list */
static int max_fd; /* highest file descriptor used */
static fd_set Readfds, Writefds, Exceptfds;
static int stop;
/* signal list */
static struct {
Notify_client client;
Notify_func_signal signal_func;
Notify_signal_mode when;
} s[NSIG];
static event_t *search(
Notify_client client, /* ignored if fd >= 0 */
int fd,
enum type_t type,
event_t **prev /* element before target */
)
{
event_t *e;
*prev = 0;
for (e = el; e; *prev = e, e = e->next) {
if (e->type == type && e->fd == fd && (fd >= 0 || e->client == client))
return e;
}
return 0;
} /* search */
/* Clear all three “fd-set”s only once in the first call.
* This is called for initilaization.
*/
void check_clr_fd(void)
{
static int cleared = -1;
if (cleared == -1) {
FD_ZERO(&Readfds);
FD_ZERO(&Writefds);
FD_ZERO(&Exceptfds);
cleared = 0; /* set for only once */
}
}
/*
* Find maximum file descriptor number used.
*/
static void set_max_fd(void)
{
event_t *e;
max_fd = 0;
for (e = el; e; e = e->next) {
if (e->fd > max_fd) max_fd = e->fd;
}
} /* set_max */
/*
* Install input handler function ‘func’ for file descriptor ‘fd’.
* func=NOTIFY_FUNC_NULL removes handler.
*/
Notify_func_input notify_set_input_func(
Notify_client client, /* argument passed to function */
Notify_func_input func, /* function to be called: func(client, fd) */
int fd) /* file descriptor */
{
event_t *e, *prev;
check_clr_fd();
e = search(client, fd, N_input, &prev);
if (!e) { /* create new event */
if (func == NOTIFY_FUNC_INPUT_NULL) return func;
e = (event_t *)malloc(sizeof(event_t));
if (!e) return 0;
e->next = el; /* put at head of list */
el = e;
if (fd > max_fd) max_fd = fd;
e->type = N_input;
e->client = client;
e->func = func;
e->fd = fd;
FD_SET(fd, &Readfds);
}
else {
if (func == NOTIFY_FUNC_INPUT_NULL) {
FD_CLR(fd, &Readfds);
if (prev) prev->next = e->next;
else el = e->next;
free(e);
set_max_fd(); /* find new maximum fd */
return func;
}
else e->func = func;
}
return 0;
} /* notify_set_input_func */
/*
* Interval timer initialization.
*/
Notify_func notify_set_itimer_func(
Notify_client client, /* value passed to function */
Notify_func timer_func, /* function to be called */
int which, /* not used */
struct itimerval *value, /* interval */
struct itimerval *ovalue) /* not used */
{
struct timeval *t;
/* set relative to now */
t = timer_set(value ? &(value->it_value) : 0, timer_func, client, 1);
*t = value->it_interval;
return 0; /* kludge */
} /* notify_set_itimer_func */
/*
* Don’t wait if there are no other events.
*/
static struct timeval *timer_get_pending(struct timeval *timeout, int max_fd)
{
struct timeval *tvp;
tvp = timer_get(timeout);
if (!tvp && !max_fd) {
timeout->tv_sec = timeout->tv_usec = 0;
notify_stop();
return timeout; /* added by Akira 12/11/01 */
}
if (!tvp)
return timeout; /* 0.100000 sec, by Akira 12/11/01 */
return tvp; /* first timer event, by Akira 12/11/01 */
} /* timer_get_pending */
/*
* Main loop. Return 0 if stopped, -1 if error.
*/
Notify_error notify_start(void)
{
struct timeval timeout;
event_t *e, *prev;
int fd;
int found;
fd_set readfds, writefds, exceptfds;
check_clr_fd();
stop = 0;
while (!stop) {
readfds = Readfds;
writefds = Writefds;
exceptfds = Exceptfds;
timeout.tv_sec = 0;
timeout.tv_usec = 100000; /* modified from 0 by Akira T. 12/11/01 */
found = select(max_fd+1, (CAST)&readfds, (CAST)&writefds, (CAST)&exceptfds,
timer_get_pending(&timeout, max_fd));
#if defined(DEBUG) && defined(WIN32)
puts(“after select()”);
#endif
/* found = 0: just a timer -> do nothing */
/* For not to catch signal handler as an error
* EINTR added by Akira T. 12/11/01 */
if (found < 0 && errno != EINTR) {
fprintf(stderr, "Timeout: %lu.%06lu\n", timeout.tv_sec, timeout.tv_usec);
#if defined(DEBUG) && defined(WIN32)
fprintf(stderr, "select(): WSAErrono: %d\n", WSAGetLastError());
#endif
return -1;
}
for (fd = 0; fd <= max_fd && found > 0; fd++) {
if (FD_ISSET(fd, &readfds)) {
e = search((Notify_client)0, fd, N_input, &prev);
if (e) {
if (e->func) (e->func)(e->client, fd);
}
else {
fprintf(stderr, “No handler for fd %d\n”, fd);
}
}
};
}
return 0;
} /* notify_start */
/*
* Stop the event loop. Noticed only at next event.
*/
Notify_error notify_stop(void)
{
stop = 1;
return 0; /* kludge */
} /* notify_stop */
/*
* Actually invoked by signal(). Calls user-defined handler.
*/
static void sig_handler(int sig)
{
(*s[sig].signal_func)(s[sig].client, sig, s[sig].when);
} /* sig_handler */
/*
* Install signal handler.
*/
Notify_func_signal notify_set_signal_func(Notify_client client,
Notify_func_signal signal_func, int sig, Notify_signal_mode when)
{
Notify_func_signal old_func = s[sig].signal_func;
s[sig].signal_func = signal_func;
s[sig].when = when;
s[sig].client = client;
signal(sig, sig_handler);
return old_func;
} /* notify_set_signal_func */
/*
* Sets the value of fd_sets Rreadfds, Writefds, Exceptfds.
*/
void notify_set_socket(int sock, int flag)
{
check_clr_fd();
switch (flag) {
case 0:
FD_SET(sock, &Readfds);
break;
case 1:
FD_SET(sock, &Writefds);
break;
case 2:
FD_SET(sock, &Exceptfds);
break;
default:
break;
}
} /* notify_set_socket */
/*
stripped-down version of
(c) Copyright 1989, 1990, 1991 Sun Microsystems, Inc. Sun design
patents pending in the U.S. and foreign countries. OPEN LOOK is
a trademark of USL. Used by written permission of the owners.
*/
#ifndef _notify_h
#define _notify_h
#include “sysdep.h”
/*
* Client notification function return values for notifier to client calls.
*/
typedef enum notify_value {
NOTIFY_DONE = 0, /* Handled notification */
NOTIFY_IGNORED = 1, /* Did nothing about notification */
NOTIFY_UNEXPECTED = 2 /* Notification not expected */
} Notify_value;
typedef enum notify_error {
NOTIFY_OK = 0, /* Success */
NOTIFY_UNKNOWN_CLIENT = 1, /* Client argument unknown to notifier */
NOTIFY_NO_CONDITION = 2, /* Client not registered for given
* condition
*/
NOTIFY_BAD_ITIMER = 3, /* Itimer type unknown */
NOTIFY_BAD_SIGNAL = 4, /* Signal number out of range */
NOTIFY_NOT_STARTED = 5, /* Notify_stop called & notifier not
* started
*/
NOTIFY_DESTROY_VETOED = 6, /* Some client didn’t want to die when
* called notify_die(DESTROY_CHECKING)
*/
NOTIFY_INTERNAL_ERROR = 7, /* Something wrong in the notifier */
NOTIFY_SRCH = 8, /* No such process */
NOTIFY_BADF = 9, /* Bad file number */
NOTIFY_NOMEM = 10, /* Not enough core */
NOTIFY_INVAL = 11, /* Invalid argument */
NOTIFY_FUNC_LIMIT = 12 /* Too many interposition functions */
} Notify_error;
typedef enum notify_signal_mode {
NOTIFY_SYNC = 0,
NOTIFY_ASYNC = 1
} Notify_signal_mode;
/*
* Opaque client handle.
*/
typedef unsigned long Notify_client;
/*
* A pointer to functions returning a Notify_value.
*/
typedef Notify_value (*Notify_func)(Notify_client client);
typedef Notify_value (*Notify_func_input)(Notify_client client, int fd);
typedef Notify_value (*Notify_func_signal)(Notify_client client, int
signal, Notify_signal_mode mode);
#define NOTIFY_FUNC_NULL ((Notify_func)0)
#define NOTIFY_FUNC_INPUT_NULL ((Notify_func_input)0)
#define NOTIFY_FUNC_SIGNAL_NULL ((Notify_func_signal)0)
/*
* Establish event handler for file descriptor ‘fd’. The handler
* ‘func’ is called whenever ‘fd’ is ready for input. Calling
* notify_set_input_func with func=NOTIFY_FUNC_NULL removes
* the handler. Return ‘func’ on success, NOTIFY_FUNC_NULL
* on failure.
*/
extern Notify_func_input notify_set_input_func (Notify_client nclient,
Notify_func_input func, int fd);
/*
* Establish event handler for file descriptor ‘fd’. The handler
* ‘func’ is called whenever ‘fd’ is ready for output. Calling
* notify_set_input_func with func=NOTIFY_FUNC_NULL removes
* the handler. Return ‘func’ on success, NOTIFY_FUNC_NULL
* on failure.
*/
extern Notify_func notify_set_output_func (Notify_client nclient,
Notify_func func, int fd);
/*
* Establish event handler that is called periodically.
* The function ‘func’ is called every ‘interval’ milliseconds.
* To change the period, call the function with the original
* ‘client’ and ‘func’ values, and a changed value of ‘interval’.
* An interval value of 0 disables the periodic invocation of
* ‘func’. No return value.
*/
extern void notify_set_periodic_func(Notify_client client, Notify_func
func, int interval);
/*
* Main loop. Never exits unless notify_stop() is called.
*/
extern Notify_error notify_start(void);
/*
* Abort event handler.
*/
extern Notify_error notify_stop(void);
/*
* Establish signal handler.
*/
extern Notify_func_signal notify_set_signal_func(Notify_client nclient,
Notify_func_signal func, int sig, Notify_signal_mode mode);
/*
* Initialize Readfds (flag = 0), Writefds (1), Exceptfds (2).
*/
extern void notify_set_socket(int sock, int flag);
#endif
#ifndef SYSDEP_H_
#define SYSDEP_H_
/***************************************************************************
*
* System Dependency file *
* sysdep.h
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
/** system dependency file *
* This file is intended to hide all the differences in many platforms.
* If your system does not support newer standards and need to
* add typedef or functions, please add them at appropiate
* header section.
* e.g.
* uint16_t should be in
* which was defined by C99.
* gettimeofdya() should be in
* which was driven from BSD.
*/
/*** standard switches ***********************************************/
#if 0
#define _POSIX_SOURCE 1
#define _XOPEN_SOURCE 500
#endif
/*** config.h files **************************************************/
#if HAVE_CONFIG_H
#include “config.h”
#endif
#if defined(_MSC_VER)
#include “config_msc.h”
#endif
#if defined(__BORLANDC__)
#include “config_bc.h”
#endif
/*** etc *************************************************************/
/* Determine if the C(++) compiler requires complete function prototype */
#ifndef __P
#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) \
|| defined(WIN32)
#define __P(x) x
#else
#define __P(x) ()
#endif
#endif
/*** unistd.h ********************************************************/
#ifdef HAVE_WIN32STD_H
#include “win32std.h”
#endif
#ifdef HAVE_UNISTD_H
#include
#endif
#ifndef HAVE_GETOPT
#include “win32_stdc_on.h”
#include “getopt.h”
#include “win32_stdc_off.h”
#endif
/*** sys/param.h *****************************************************/
#ifdef HAVE_SYS_PARAM_H
#include
#endif
/*** limits.h ********************************************************/
#ifdef HAVE_LIMITS_H
#include
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 256
#endif
#ifndef NAME_MAX
#define NAME_MAX 256
#endif
/*** sys/types.h *****************************************************/
#ifdef HAVE_SYS_TYPES_H
#include
#endif
/*** stdint.h C99 ****************************************************/
#ifdef HAVE_STDINT_H
#include
#endif
#ifdef __STDC__
#define MAX32U 0xFFFFFFFFU
#else
#define MAX32U 0xFFFFFFFF
#endif
#define MAX32 0x8FFFFFFF
#ifndef HAVE_INT8_T
typedef signed char int8_t; /* some system might have signed char */
typedef unsigned char u_int8_t;
/* 16 bit machines */
#if UINT_MAX == 0xFFFF
typedef int int16_t;
typedef long int32_t;
typedef unsigned int u_int16_t;
typedef unsigned long u_int32_t;
/* 32 bit machines */
#elif ULONG_MAX == MAX32U
typedef short int16_t;
typedef long int32_t;
typedef unsigned short u_int16_t;
typedef unsigned long u_int32_t;
#if !defined(NOLONGLONG)
typedef long long int int64_t;
typedef unsigned long long u_int64_t;
#elif defined(WIN32)
typedef INT64 int64_t;
typedef UINT64 u_int64_t;
#endif /* NOLONGLONG */
/* 64 bit machines? */
#else
typedef short int16_t;
typedef int int32_t;
typedef long int64_t;
typedef unsigned short u_int16_t;
typedef unsigned int u_int32_t;
typedef unsigned long u_int64_t;
#endif /* UINT_MAX */
#endif /* HAVE_INT8_T */
#ifndef HAVE_UINT8_T
typedef u_int8_t uint8_t;
#endif
#ifndef HAVE_UINT16_T
typedef u_int16_t uint16_t;
#endif
#ifndef HAVE_UINT32_T
typedef u_int32_t uint32_t;
#endif
/*** sys/utsname.h ***************************************************/
#ifdef HAVE_SYS_UTSNAME_H
#include
#endif
#ifndef HAVE_UNAME
#include “uname.h”
#endif
/*** sys/select.h ****************************************************/
#ifdef HAVE_SYS_SELECT_H
#include
#endif
/*** sys/socket.h ****************************************************/
#ifdef HAVE_SYS_SOCKET_H
#include
#endif
#ifndef HAVE_SOCKLEN_T
typedef u_int32_t socklen_t;
#endif
/*** netinet/in.h ****************************************************/
#ifdef HAVE_NETINET_IN_H
#include
#endif
#ifndef HAVE_IN_ADDR_T
typedef u_int32_t in_addr_t;
#endif
#ifndef HAVE_IN_PORT_T
typedef u_int16_t in_port_t;
#endif
/*** netdb.h *********************************************************/
#ifdef HAVE_NETDB_H
#include
#endif
/*** arpa/inet.h *****************************************************/
#ifdef HAVE_ARPA_INET_H
#include
#endif
/*** signal.h ********************************************************/
#include
/*** sys/timeb.h *****************************************************/
#include
/*** sys/time.h & time.h *********************************************/
#if defined(HAVE_SYS_TIME_H) && defined(TIME_WITH_SYS_TIME)
#include
#include
#elif defined(HAVE_SYS_TIME_H)
#include
#else
#include
#endif /* HAVE_SYS_TIME_H && TIME_WITH_SYS_TIME */
#ifndef HAVE_GETTIMEOFDAY
#include “gettimeofday.h”
#endif
/*** stdlib.h ********************************************************/
#ifdef HAVE_STDLIB_H
#include
#endif
/*** string.h ********************************************************/
#ifdef HAVE_STRING_H
#include
#endif
/*** stdio.h *********************************************************/
#include
/*** stdlib.h ********************************************************/
#include
/*** errno.h *********************************************************/
#include
/*** math.h **********************************************************/
#include
/*** rpcsvc/ypclnt.h *************************************************/
#ifdef HAVE_RPCSVC_YPCLNT_H
#include
#endif
/*** etc *************************************************************/
#ifndef HAVE_STARTUPSOCKET
#define startupSocket()
#endif
#ifndef HAVE_CLOSESOCKET
#define closesocket close
#endif
#ifndef SIGBUS
#define SIGBUS SIGINT
#endif
#ifndef SIGHUP
#define SIGHUP SIGINT
#endif
#ifndef SIGPIPE
#define SIGPIPE SIGINT
#endif
#ifndef SIGKILL
#define SIGKILL SIGTERM
#endif
#ifndef __STDC__
#define __STDC__ 1
#endif
/** anything additional, put it here *********************************/
/* These are just for shutting up error message
* when compiling multimer.c on win32
*/
#ifndef HAVE_SETITIMER
#ifndef ITIMER_REAL /* mutimer.c */
#define ITIMER_REAL 0 /* Decrements in real time */
#endif
struct itimerval {
struct timeval it_interval; /* timer interval */
struct timeval it_value; /* current value */
};
#endif /* HAVE_SETITIMER */
/* I just use this for temporary buffer */
#ifndef MAXBUFF
#define MAXBUFF 2048
#endif
#endif /* _SYSDEP_H_ */
newudpl change history
newudpl change history
1.5 (2002-01-16)
Ported on Windows98/NT.
Rewrote sysdep.h totally for better handling of autoconf and
ease of porting.
Fixed that timeval was having out of range some times, caused the jitter.
Disclosed Gilbert packet loss in a doc.
Many small fixes in codes and docs.
1.4 (2001-12-12)
Fixed high CPU utilization.
Lower jitter.
Added transmission delay.
Changed all the messages from kbps to kb/s.
1.3 (2001-11-04)
Fixed core dump on SunOS 5.5.1.
Better verbose mode.
Improved precision on statistics printout.
Added checking the size of RAND_MAX.
1.2 (2001-10-29)
Better autoconf handling. Compiles on SunOS 5.5.1.
Deleted redundant code.
Minor updates in documents.
1.1 (2001-10-14)
Uses autoconf to make compiling easier.
1.0 (2001-09-04)
Initial release.
Last updated: 2002-01-16 by Akira Tsukamoto
NEWUDPL
NEWUDPL
NAME
newudpl – Network Emulator With UDP Link
SYNOPSIS
newudpl [-[v|vv]] [-p [recv_port]:[send_port]]
[-i sorce_host[[:|/][port|*]]] [-o dest_host[[:|/]port]]
[-s link_speed] [-d delay] [-e Ethernet_speed] [-q queue_buf_size]
[-[B|L|C|U|O] error_rate]
DESCRIPTION
This is a tool to create various condition of packet switching
behavior artificially for UDP packets.
The emulator receives UDP packets on a designated port and then delays
them, drops some randomly, corrupts the content, swaps the order of sending
and emulates a finite-bandwidth link by queuing packets. It should be
useful to examine an efficiency of network protocols or codecs.
INSTALLATION
Source codes are available from:
http://www.columbia.edu/~at541/src
Unix/Unix like system
To build, unpack the tar file, then type:
./configure
make
Windows98/NT
Microsoft VC++ 6
Open newudpl.dsw under msc\ and just press F7.
Borland C++ builder
Open newudpl_bcb.bpr under bcb\ and just press F9.
I have only tested on SunOS 5.7, 5.8 system and Linux but it should compile
on other Posix-compliant platforms.
OPTIONS
-v
-vv
Verbose output.
With a single -v,
the information of dropping packets by congestion and creating
random packet loss/bit error/out of order will be displayed;
with a second one, receiving and sending packets will also be shown.
-p receiving port : sending port
Specifies the binding ip-port for receiving and sending UDP packets.
Otherwise, default values will be used.
Available range: 1024 – 65535 or 0x400 – 0xFFFF
Default: receiving 41192, sending 41193
-s emulating link speed
Specifies a finite-bandwidth. The speed of Transferring UDP packets
will not exceed this speed. Unit is in kb/s.
Available range: 1 – 50000(MAX_KBPS)
Default: 1000
-e Ethernet speed
Specifies a Ethernet speed on the machine. It is used to calculate a
transmission delay, which makes difference especially when the emulating
link speed is slow.
Available range: 1 for 10M, 2 for 100M, 3 for Gigabit Ethernet
Default: 10M(b/s)
-d delay
Specifies delay time. All the packets will have minimum delay. The
delay for each packet could be varies, depending on the link speed.
For example, -d2 is 2 (sec) and -d1.345678 is 1.345678 (sec).
Available range: 0 – 10(MAX_DELAYSEC)
Default: 0
-q queue-buffer size
Specifies the size of queuing buffer for receiving packets. If you
large this number less likely to have congestion packet loss for the same
link speed.
Available range: 1 – 16384 or 0x1 – 0x4000(MAX_QBUFSIZE)
Default: 8192
-i source host [[ : | / ] port | * ]
Specifies the source host for receiving packets. If the emulator
receives a packet from a different host then the packet will be
rejected. The host name could be either IP number with dotted-decimal
notation (e.g., 128.59.16.8) or the host name (e.g., cs.columbia.edu).
If the port is not specified then it will accept only packets from the
the port 41191, default values, with corresponding source host, but you
could rule out this checking by using ‘*’.
Default: host – localhost, port 41191
Example,
-i dynamo.cs.columbia.edu/32768
-i dynamo.cs.columbia.edu/0x8000
-> accepts packets only from dynamo.cs.columbia.edu/32768
-i diamond.cs.columbia.edu
-> accepts packets only from diamond.cs.columbia.edu/41191
-i 128.59.16.7:*
-> accepts packets any port from disco.cs.columbia.edu
(128.59.16.7)
-o destination host [[ : | / ] port ]
Specifies a destination host for outgoing packets.
Default: host – localhost, port 41194
-B bit error rate
Specifies a rate of generating bit errors for outgoing packets.
The rate is in 1/100000(BITERRDENOM).
Available range: 1 – 99999(BITERRDENOM – 1)
Default: 0
-L random packet loss rate
Specifies a rate of genarating random packet loss for outgoing packets.
The rate is in percentage.
Available range: 1 – 99
Default: 0
-C conditional Gilbert packet loss rate
Specifies a rate of conditional Gilbert packet loss
Available range: 0.0 – 1.0
Default: 0.0
-U average overall Gilbert packet loss
Specifies an average rate of unconditional
overall Gilbert packet loss
Available range: 0.0 – 1.0
Default: 0.0
-O out of order rate
Specifies a rate of randomizing order of packets. The destination host
will receive some packets in out of order in certain rate.
The rate is in percentage.
Available range: 1 – 99
Default: 0
USAGE
To create condition under following parameters,
from: dynamo.cs.columbia.edu(128.59.16.4)/41191
to: disco.cs.columbia.edu(128.59.16.7)/41194
link speed : 50(kb/s)
delay : 2.004000(sec)
type,
newudpl -idynamo.cs.columbia.edu -odisco.cs.columbia.edu -s50
-d2.004
For,
verbose mode
from: any port of dynamo.cs.columbia.edu(128.59.16.4)
to: disco.cs.columbia.edu(128.59.16.7)/32768
with error rate
random packet loss : 7(1/100 per packet)
bit error : 5(1/100000 per bit)
out of order : 9(1/100 per packet)
type,
newudpl -idynamo.cs.columbia.edu/* -odisco.cs.columbia.edu:0x8000 -v
-L7 -B5 -O9
To stop the emulator,
press ctr-c
type any ‘q’ ‘quit’ ‘stop’ ‘exit’ from the console.
HISTORY
ChangeLog.html
AUTHOR
Akira Tsukamoto
ACKNOWLEDGMENTS
For genarating a random variable corresponding to binomial distribution
, I used the bnldev() function from
William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T.
Vetterling, ‘Numerical Recipes in C’ The Press Syndicate of the University
of Cambridge, 1992.
This emulator was developed under supervising by,
Wenyu Jiang
http://www.cs.columbia.edu/~wenyu/
Henning Schulzrinne
http://www.cs.columbia.edu/~hgs/
I referred many codes in rtptools to understand the multitimer function.
http://www.cs.columbia.edu/IRT/software/rtptools/
Tetsu Iwama, He is good at math and taught me the rejection method.
Manager, Credit Risk Trading, Derivative Products Division,
The Fuji Bank Limited, Mizuho Financial Group
Kuniyoshi Murata, He corrected my many English mistakes.
English-Japanese Interpreter
mailto:kuni@ej-interpreter.net
Macintosh Webcast Specialist
http://www.macwebcaster.com
COPYRIGHT
Copyright (C) 2001 by Columbia University; all rights reserved
Permission to use, copy, modify, and distribute this software and its
documentation for not-for-profit research and educational purposes and
without fee is hereby granted, provided that the above copyright notice
appear in all copies and that both that the copyright notice and warranty
disclaimer appear in supporting documentation, and that the names of the
copyright holders or any of their entities not be used in advertising or
publicity pertaining to distribution of the software without specific,
written prior permission. Use of this software in whole or in parts for
commercial advantage and by for-profit organizations requires a license.
The copyright holders disclaim all warranties with regard to this software,
including all implied warranties of merchantability and fitness. In no
event shall the copyright holders be liable for any special, indirect or
consequential damages or any damages whatsoever resulting from loss of use,
data or profits, whether in an action of contract, negligence or other
tortuous action, arising out of or in connection with the use or
performance of this software.
Last updated: 2002-01-16 by Akira Tsukamoto
Copyright (C) 2001 by Columbia University; all rights reserved
Permission to use, copy, modify, and distribute this software and its documentation for not-for-profit research and educational purposes and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and warranty disclaimer appear in supporting documentation, and that the names of the copyright holders or any of their entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Use of this software in whole or in parts for commercial advantage and by for-profit organizations requires a license.
The copyright holders disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the copyright holders be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortuous action, arising out of or in connection with the use or performance of this software.
#!/usr/bin/perl
#
# This is a helper script to launch newudpls between two rat
#
# Usage:
# ./detour_rat host_a port_a host_b port_b options_for_newudpl
#
# “port_a” and “port_b” must not overlap
#
# e.g.
#
# diamond: ./detour_rat dynasty.cs 2000 disco.cs 3000 -s500 -d0.5
#
# dynasty: rat diamond/3000
#
# disco : rat diamond/2000
$host_a = shift @ARGV;
$port_a = shift @ARGV;
$port_aa = $port_a + 1;
$host_b = shift @ARGV;
$port_b = shift @ARGV;
$port_bb = $port_b + 1;
print “@ARGV \n”;
$pid1=fork();
if ($pid1==0) {
exec(“./newudpl -i $host_a/* -p $port_b:40000 -o $host_b/$port_a @ARGV > 1.newudpl.log”);
}
$pid2=fork();
if ($pid2==0) {
exec(“./newudpl -i $host_a/* -p $port_bb:40001 -o $host_b/$port_aa @ARGV > 2.newudpl.log”);
}
$pid3=fork();
if ($pid3==0) {
exec(“./newudpl -i $host_b/* -p $port_a:40002 -o $host_a/$port_b @ARGV > 3.newudpl.log”);
}
$pid4=fork();
if ($pid4==0) {
exec(“./newudpl -i $host_b/* -p $port_aa:40003 -o $host_a/$port_bb @ARGV > 4.newudpl.log”);
}
print “./newudpl -i $host_a/* -p $port_b:40000 -o $host_b/$port_a @ARGV > 1.newudpl.log\n”;
print “./newudpl -i $host_a/* -p $port_bb:40001 -o $host_b/$port_aa @ARGV > 2.newudpl.log\n”;
print “./newudpl -i $host_b/* -p $port_a:40002 -o $host_a/$port_b @ARGV > 3.newudpl.log\n”;
print “./newudpl -i $host_b/* -p $port_aa:40003 -o $host_a/$port_bb @ARGV > 4.newudpl.log\n”;
print “\nhit any key to stop.\n”;
getc(STDIN);
kill 2,-$$;
exit 0;
/* Getopt for GNU.
NOTE: getopt is now part of the C library, so if you don’t know what
“Keep this file name-space clean” means, talk to .mit.edu
before changing it!
Copyright (C) 1987, 88, 89, 90, 91, 92, 1993
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* NOTE!!! AIX requires this to be the first thing in the file.
Do not put ANYTHING before it! */
#if !defined (__GNUC__) && defined (_AIX)
#pragma alloca
#endif
/* #include “autoconf.h” */
#ifdef __GNUC__
#define alloca __builtin_alloca
#endif /* not __GNUC__ */
#if !__STDC__ && !defined(const) && IN_GCC
#define const
#endif
/* This tells Alpha OSF/1 not to define a getopt prototype in
#ifndef _NO_PROTO
#define _NO_PROTO
#endif
#include
#include
#include
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
Library, but also included in many other GNU distributions. Compiling
and linking in this code is a waste when using the GNU C library
(especially if it is a shared library). Rather than having every GNU
program understand `configure –with-gnu-libc’ and omit the object files,
it is simpler to just do this in the source for each such file. */
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
#ifdef __GNU_LIBRARY__
#undef alloca
/* Don’t include stdlib.h for non-GNU C libraries because some of them
contain conflicting prototypes for getopt. */
#include
#else /* Not GNU C library. */
#define __alloca alloca
#endif /* GNU C library. */
/* If GETOPT_COMPAT is defined, `+’ as well as `–‘ can introduce a
long-named option. Because this is not POSIX.2 compliant, it is
being phased out. */
/* #define GETOPT_COMPAT */
/* This version of `getopt’ appears to the caller like standard Unix `getopt’
but it behaves differently for the user, since it allows the user
to intersperse the options with the other arguments.
As `getopt’ works, it permutes the elements of ARGV so that,
when it is done, all the options precede everything else. Thus
all application programs are extended to handle flexible argument order.
Setting the environment variable POSIXLY_CORRECT disables permutation.
Then the behavior is completely standard.
GNU application programs can use a third alternative mode in which
they can distinguish the relative order of options and other arguments. */
#include “getopt.h”
/* For communication from `getopt’ to the caller.
When `getopt’ finds an option that takes an argument,
the argument value is returned here.
Also, when `ordering’ is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
char *optarg = 0;
/* Index in ARGV of the next element to be scanned.
This is used for communication to and from the caller
and for communication between successive calls to `getopt’.
On entry to `getopt’, zero means this is the first call; initialize.
When `getopt’ returns EOF, this is the index of the first of the
non-option elements that the caller should itself scan.
Otherwise, `optind’ communicates from one call to the next
how much of ARGV has been scanned so far. */
/* XXX 1003.2 says this must be 1 before any call. */
int optind = 0;
/* The next char to be scanned in the option-element
in which the last option character we returned was found.
This allows us to pick up the scan where we left off.
If this is zero, or a null string, it means resume the scan
by advancing to the next ARGV-element. */
static char *nextchar;
/* Callers store zero here to inhibit the error message
for unrecognized options. */
int opterr = 1;
/* Set to an option character which was unrecognized.
This must be initialized on some systems to avoid linking in the
system’s own getopt implementation. */
int optopt = ‘?’;
/* Describe how to deal with options that follow non-option ARGV-elements.
If the caller did not specify anything,
the default is REQUIRE_ORDER if the environment variable
POSIXLY_CORRECT is defined, PERMUTE otherwise.
REQUIRE_ORDER means don’t recognize them as options;
stop option processing when the first non-option is seen.
This is what Unix does.
This mode of operation is selected by either setting the environment
variable POSIXLY_CORRECT, or using `+’ as the first character
of the list of option characters.
PERMUTE is the default. We permute the contents of ARGV as we scan,
so that eventually all the non-options are at the end. This allows options
to be given in any order, even with programs that were not written to
expect this.
RETURN_IN_ORDER is an option available to programs that were written
to expect options and other ARGV-elements in any order and that care about
the ordering of the two. We describe each non-option ARGV-element
as if it were the argument of an option with character code 1.
Using `-‘ as the first character of the list of option characters
selects this mode of operation.
The special argument `–‘ forces an end of option-scanning regardless
of the value of `ordering’. In the case of RETURN_IN_ORDER, only
`–‘ can cause `getopt’ to return EOF with `optind’ != ARGC. */
static enum
{
REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
}
ordering;
#ifdef __GNU_LIBRARY__
/* We want to avoid inclusion of string.h with non-GNU libraries
because there are many ways it can cause trouble.
On some systems, it contains special magic macros that don’t work
in GCC. */
#include
#define my_index strchr
#define my_bcopy(src, dst, n) memcpy ((dst), (src), (n))
#else
/* Avoid depending on library functions or files
whose names are inconsistent. */
char *getenv ();
static char *
my_index (str, chr)
const char *str;
int chr;
{
while (*str) {
if (*str == chr)
return (char *) str;
str++;
}
return 0;
}
static void
my_bcopy (from, to, size)
const char *from;
char *to;
int size;
{
int i;
for (i = 0; i < size; i++)
to[i] = from[i];
}
#endif /* GNU C library. */
/* Handle permutation of arguments. */
/* Describe the part of ARGV that contains non-options that have
been skipped. `first_nonopt' is the index in ARGV of the first of them;
`last_nonopt' is the index after the last of them. */
static int first_nonopt;
static int last_nonopt;
/* Exchange two adjacent subsequences of ARGV.
One subsequence is elements [first_nonopt,last_nonopt)
which contains all the non-options that have been skipped so far.
The other is elements [last_nonopt,optind), which contains all
the options processed since those non-options were skipped.
`first_nonopt' and `last_nonopt' are relocated so that they describe
the new indices of the non-options in ARGV after they are moved. */
static void
exchange (argv)
char **argv;
{
int nonopts_size = (last_nonopt - first_nonopt) * sizeof (char *);
char **temp = (char **) __alloca (nonopts_size);
/* Interchange the two blocks of data in ARGV. */
my_bcopy ((char *) &argv[first_nonopt], (char *) temp, nonopts_size);
my_bcopy ((char *) &argv[last_nonopt], (char *) &argv[first_nonopt],
(optind - last_nonopt) * sizeof (char *));
my_bcopy ((char *) temp,
(char *) &argv[first_nonopt + optind - last_nonopt],
nonopts_size);
/* Update records for the slots the non-options now occupy. */
first_nonopt += (optind - last_nonopt);
last_nonopt = optind;
}
/* Scan elements of ARGV (whose length is ARGC) for option characters
given in OPTSTRING.
If an element of ARGV starts with '-', and is not exactly "-" or "--",
then it is an option element. The characters of this element
(aside from the initial '-') are option characters. If `getopt'
is called repeatedly, it returns successively each of the option characters
from each of the option elements.
If `getopt' finds another option character, it returns that character,
updating `optind' and `nextchar' so that the next call to `getopt' can
resume the scan with the following option character or ARGV-element.
If there are no more option characters, `getopt' returns `EOF'.
Then `optind' is the index in ARGV of the first ARGV-element
that is not an option. (The ARGV-elements have been permuted
so that those that are not options now come last.)
OPTSTRING is a string containing the legitimate option characters.
If an option character is seen that is not listed in OPTSTRING,
return '?' after printing an error message. If you set `opterr' to
zero, the error message is suppressed but we still return '?'.
If a char in OPTSTRING is followed by a colon, that means it wants an arg,
so the following text in the same ARGV-element, or the text of the following
ARGV-element, is returned in `optarg'. Two colons mean an option that
wants an optional arg; if there is text in the current ARGV-element,
it is returned in `optarg', otherwise `optarg' is set to zero.
If OPTSTRING starts with `-' or `+', it requests different methods of
handling the non-option ARGV-elements.
See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
Long-named options begin with `--' instead of `-'.
Their names may be abbreviated as long as the abbreviation is unique
or is an exact match for some defined option. If they have an
argument, it follows the option name in the same ARGV-element, separated
from the option name by a `=', or else the in next ARGV-element.
When `getopt' finds a long-named option, it returns 0 if that option's
`flag' field is nonzero, the value of the option's `val' field
if the `flag' field is zero.
The elements of ARGV aren't really const, because we permute them.
But we pretend they're const in the prototype to be compatible
with other systems.
LONGOPTS is a vector of `struct option' terminated by an
element containing a name which is zero.
LONGIND returns the index in LONGOPT of the long-named option found.
It is only valid when a long-named option has been found by the most
recent call.
If LONG_ONLY is nonzero, '-' as well as '--' can introduce
long-named options. */
int
_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
int argc;
char *const *argv;
const char *optstring;
const struct option *longopts;
int *longind;
int long_only;
{
int option_index;
optarg = 0;
/* Initialize the internal data when the first call is made.
Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
non-option ARGV-elements is empty. */
if (optind == 0) {
first_nonopt = last_nonopt = optind = 1;
nextchar = NULL;
/* Determine how to handle the ordering of options and nonoptions. */
if (optstring[0] == '-') {
ordering = RETURN_IN_ORDER;
++optstring;
}
else if (optstring[0] == '+') {
ordering = REQUIRE_ORDER;
++optstring;
}
else if (getenv ("POSIXLY_CORRECT") != NULL)
ordering = REQUIRE_ORDER;
else
ordering = PERMUTE;
}
if (nextchar == NULL || *nextchar == '\0') {
if (ordering == PERMUTE) {
/* If we have just processed some options following some non-options,
exchange them so that the options come first. */
if (first_nonopt != last_nonopt && last_nonopt != optind)
exchange ((char **) argv);
else if (last_nonopt != optind)
first_nonopt = optind;
/* Now skip any additional non-options
and extend the range of non-options previously skipped. */
while (optind < argc
&& (argv[optind][0] != '-' || argv[optind][1] == '\0')
#ifdef GETOPT_COMPAT
&& (longopts == NULL
|| argv[optind][0] != '+' || argv[optind][1] == '\0')
#endif /* GETOPT_COMPAT */
)
optind++;
last_nonopt = optind;
}
/* Special ARGV-element `--' means premature end of options.
Skip it like a null option,
then exchange with previous non-options as if it were an option,
then skip everything else like a non-option. */
if (optind != argc && !strcmp (argv[optind], "--")) {
optind++;
if (first_nonopt != last_nonopt && last_nonopt != optind)
exchange ((char **) argv);
else if (first_nonopt == last_nonopt)
first_nonopt = optind;
last_nonopt = argc;
optind = argc;
}
/* If we have done all the ARGV-elements, stop the scan
and back over any non-options that we skipped and permuted. */
if (optind == argc) {
/* Set the next-arg-index to point at the non-options
that we previously skipped, so the caller will digest them. */
if (first_nonopt != last_nonopt)
optind = first_nonopt;
return EOF;
}
/* If we have come to a non-option and did not permute it,
either stop the scan or describe it to the caller and pass it by. */
if ((argv[optind][0] != '-' || argv[optind][1] == '\0')
#ifdef GETOPT_COMPAT
&& (longopts == NULL
|| argv[optind][0] != '+' || argv[optind][1] == '\0')
#endif /* GETOPT_COMPAT */
) {
if (ordering == REQUIRE_ORDER)
return EOF;
optarg = argv[optind++];
return 1;
}
/* We have found another option-ARGV-element.
Start decoding its characters. */
nextchar = (argv[optind] + 1
+ (longopts != NULL && argv[optind][1] == '-'));
}
if (longopts != NULL
&& ((argv[optind][0] == '-' && (argv[optind][1] == '-' || long_only))
#ifdef GETOPT_COMPAT
|| argv[optind][0] == '+'
#endif /* GETOPT_COMPAT */
)) {
const struct option *p;
char *s = nextchar;
int exact = 0;
int ambig = 0;
const struct option *pfound = NULL;
int indfound;
while (*s && *s != '=')
s++;
/* Test all options for either exact match or abbreviated matches. */
for (p = longopts, option_index = 0; p->name; p++, option_index++)
if (!strncmp (p->name, nextchar, s – nextchar)) {
if (s – nextchar == strlen (p->name)) {
/* Exact match found. */
pfound = p;
indfound = option_index;
exact = 1;
break;
}
else if (pfound == NULL) {
/* First nonexact match found. */
pfound = p;
indfound = option_index;
}
else
/* Second nonexact match found. */
ambig = 1;
}
if (ambig && !exact) {
if (opterr)
fprintf (stderr, “%s: option `%s’ is ambiguous\n”,
argv[0], argv[optind]);
nextchar += strlen (nextchar);
optind++;
return ‘?’;
}
if (pfound != NULL) {
option_index = indfound;
optind++;
if (*s) {
/* Don’t test has_arg with >, because some C compilers don’t
allow it to be used on enums. */
if (pfound->has_arg)
optarg = s + 1;
else {
if (opterr) {
if (argv[optind – 1][1] == ‘-‘)
/* –option */
fprintf (stderr,
“%s: option `–%s’ doesn’t allow an argument\n”,
argv[0], pfound->name);
else
/* +option or -option */
fprintf (stderr,
“%s: option `%c%s’ doesn’t allow an argument\n”,
argv[0], argv[optind – 1][0],
pfound->name);
}
nextchar += strlen (nextchar);
return ‘?’;
}
}
else if (pfound->has_arg == 1) {
if (optind < argc)
optarg = argv[optind++];
else {
if (opterr)
fprintf (stderr,
"%s: option `%s' requires an argument\n",
argv[0], argv[optind - 1]);
nextchar += strlen (nextchar);
return optstring[0] == ':' ? ':' : '?';
}
}
nextchar += strlen (nextchar);
if (longind != NULL)
*longind = option_index;
if (pfound->flag) {
*(pfound->flag) = pfound->val;
return 0;
}
return pfound->val;
}
/* Can’t find it as a long option. If this is not getopt_long_only,
or the option starts with ‘–‘ or is not a valid short
option, then it’s an error.
Otherwise interpret it as a short option. */
if (!long_only || argv[optind][1] == ‘-‘
#ifdef GETOPT_COMPAT
|| argv[optind][0] == ‘+’
#endif /* GETOPT_COMPAT */
|| my_index (optstring, *nextchar) == NULL) {
if (opterr) {
if (argv[optind][1] == ‘-‘)
/* –option */
fprintf (stderr, “%s: unrecognized option `–%s’\n”,
argv[0], nextchar);
else
/* +option or -option */
fprintf (stderr, “%s: unrecognized option `%c%s’\n”,
argv[0], argv[optind][0], nextchar);
}
nextchar = (char *) “”;
optind++;
return ‘?’;
}
}
/* Look at and handle the next option-character. */
{
char c = *nextchar++;
char *temp = my_index (optstring, c);
/* Increment `optind’ when we start to process its last character. */
if (*nextchar == ‘\0’)
++optind;
if (temp == NULL || c == ‘:’) {
if (opterr) {
#if 0
if (c < 040 || c >= 0177)
fprintf (stderr,
“%s: unrecognized option, character code 0%o\n”,
argv[0], c);
else
fprintf (stderr, “%s: unrecognized option `-%c’\n”,
argv[0], c);
#else
/* 1003.2 specifies the format of this message. */
fprintf (stderr, “%s: illegal option — %c\n”, argv[0], c);
#endif
}
optopt = c;
return ‘?’;
}
if (temp[1] == ‘:’) {
if (temp[2] == ‘:’) {
/* This is an option that accepts an argument optionally. */
if (*nextchar != ‘\0’) {
optarg = nextchar;
optind++;
}
else
optarg = 0;
nextchar = NULL;
}
else {
/* This is an option that requires an argument. */
if (*nextchar != ‘\0′) {
optarg = nextchar;
/* If we end this ARGV-element by taking the rest as an arg,
we must advance to the next element now. */
optind++;
}
else if (optind == argc) {
if (opterr) {
#if 0
fprintf (stderr,
“%s: option `-%c’ requires an argument\n”,
argv[0], c);
#else
/* 1003.2 specifies the format of this message. */
fprintf (stderr,
“%s: option requires an argument — %c\n”,
argv[0], c);
#endif
}
optopt = c;
if (optstring[0] == ‘:’)
c = ‘:’;
else
c = ‘?’;
}
else
/* We already incremented `optind’ once;
increment it again when taking next ARGV-elt as argument. */
optarg = argv[optind++];
nextchar = NULL;
}
}
return c;
}
}
int
getopt (argc, argv, optstring)
int argc;
char *const *argv;
const char *optstring;
{
return _getopt_internal (argc, argv, optstring,
(const struct option *) 0, (int *) 0, 0);
}
#endif /* _LIBC or not __GNU_LIBRARY__. */
#ifdef TEST
/* Compile with -DTEST to make an executable for use in testing
the above definition of `getopt’. */
int
main (argc, argv)
int argc;
char **argv;
{
int c;
int digit_optind = 0;
while (1) {
int this_option_optind = optind ? optind : 1;
c = getopt (argc, argv, “abc:d:0123456789”);
if (c == EOF)
break;
switch (c) {
case ‘0’:
case ‘1’:
case ‘2’:
case ‘3’:
case ‘4’:
case ‘5’:
case ‘6’:
case ‘7’:
case ‘8’:
case ‘9’:
if (digit_optind != 0 && digit_optind != this_option_optind)
printf (“digits occur in two different argv-elements.\n”);
digit_optind = this_option_optind;
printf (“option %c\n”, c);
break;
case ‘a’:
printf (“option a\n”);
break;
case ‘b’:
printf (“option b\n”);
break;
case ‘c’:
printf (“option c with value `%s’\n”, optarg);
break;
case ‘?’:
break;
default:
printf (“?? getopt returned character code 0%o ??\n”, c);
}
}
if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ /* Declarations for getopt. Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Removed __GNU_LIBRARY__ evaluation because this file is intended to use * as a replacement function for the system which does not use __GNU_LIBRARY__ * and does not have getopt(). * By Akira Tsukamoto 01/16/2002 */ #ifndef _GETOPT_H #define _GETOPT_H 1 #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { #if __STDC__ const char *name; #else char *name; #endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 #if __STDC__ extern int getopt (int argc, char *const *argv, const char *shortopts); extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); #else /* not __STDC__ */ extern int getopt (); extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); #endif /* not __STDC__ */ #ifdef __cplusplus } #endif #endif /* _GETOPT_H */ /*************************************************************************** * * Code for uname() function. * uname.c * * Copyright 2001 by Columbia University; all rights reserved * by Akira Tsukamoto * ***************************************************************************/ #include "sysdep.h" #include "uname.h" #if defined(WIN32) && defined(HAVE_WINSOCK2) int uname(struct utsname *name) { char buff[MAXBUFF]; OSVERSIONINFO os; /* GetVersionEx() */ SYSTEM_INFO sys; /* GetSystemInfo() */ if (name == NULL) { errno = EFAULT; return -1; } memset(name, 0, sizeof(struct utsname)); /* sysname */ strcpy(name->sysname, “Windows”);
/* nodename */
memset(buff, 0, sizeof(buff));
if (gethostname(buff, MAXBUFF)) {
errno = EFAULT;
return -1;
}
strncpy(name->nodename, buff, SYS_NMLN-1);
name->nodename[SYS_NMLN-1] = ‘\0’;
/* os release. version */
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if(!GetVersionEx(&os)) {
errno = EFAULT;
return -1;
}
sprintf(buff, “%d.%d.%d”,
os.dwMajorVersion, os.dwMinorVersion, os.dwBuildNumber);
strncpy(name->release, buff, SYS_NMLN-1);
name->release[SYS_NMLN-1] = ‘\0’;
strncpy(name->version, os.szCSDVersion, 128-1);
name->version[128-1] = ‘\0’;
/* machine */
GetSystemInfo(&sys);
if (sys.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
strcpy(name->machine, “i386”);
else
strcpy(name->machine, “unknown”);
return 0;
}
#endif
#ifndef UNAME_H_
#define UNAME_H_
/***************************************************************************
*
* Header file for uname() function.
* uname.h
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
#include “sysdep.h”
#ifdef __cplusplus
extern “C” {
#endif
#ifndef SYS_NMLN
#ifdef MAXHOSTNAMELEN
#define SYS_NMLN MAXHOSTNAMELEN+1
#else
#define SYS_NMLN 257
#endif
#endif /* SYS_NMLN */
#ifndef HAVE_UNAME
struct utsname {
char sysname[SYS_NMLN];
char nodename[SYS_NMLN];
char release[SYS_NMLN];
char version[SYS_NMLN];
char machine[SYS_NMLN];
};
extern int uname(struct utsname *name);
#endif /* HAVE_UNAME */
#ifdef __cplusplus
}
#endif
#endif /* UNAME_H_ */
/***************************************************************************
*
* Code file for gettimeofday() function.
* gettimeofday.h
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
#include “sysdep.h”
#include “gettimeofday.h”
#if defined(WIN32)
int gettimeofday(struct timeval *tv, void *t)
{
static struct timeval stv; /* initial timeval */
static INT64 sct, tick;
static int initialized = -1;
LARGE_INTEGER startCount;
LARGE_INTEGER tickPerSec;
struct timeb tb;
LARGE_INTEGER count;
INT64 c;
if (initialized == -1) {
ftime(&tb);
stv.tv_sec = tb.time;
stv.tv_usec = tb.millitm * 1000;
if (QueryPerformanceFrequency(&tickPerSec) == FALSE) {
fprintf(stderr, “QueryPerformanceFrequency(): No high-reso counter.\n”);
exit(1);
}
if (QueryPerformanceCounter(&startCount) == FALSE) {
fprintf(stderr, “QueryPerformanceCounter(): No high-reso counter.\n”);
exit(1);
}
sct = startCount.QuadPart; tick = tickPerSec.QuadPart;
initialized = 0;
#ifdef DEBUG
printf(“init: gettimeofday: %ld %06ld\n”, stv.tv_sec, stv.tv_usec);
#endif
}
if (!QueryPerformanceCounter(&count))
return -1;
c = count.QuadPart;
tv->tv_sec = stv.tv_sec + (long)((c – sct) / tick);
tv->tv_usec = stv.tv_usec + (long)(((c – sct) % tick) * 1000000 / tick);
if (tv->tv_usec >= 1000000) {
tv->tv_sec++;
tv->tv_usec -= 1000000;
}
#ifdef DEBUG
printf(“gettimeofday: %ld %06ld\n”, tv->tv_sec, tv->tv_usec);
#endif
return 0;
}
#endif /* WIN32 */
#ifndef GETTIMEOFDAY_H_
#define GETTIMEOFDAY_H_
/***************************************************************************
*
* Header file for gettimeofday() function.
* gettimeofday.h
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
#include “sysdep.h”
#ifdef __cplusplus
extern “C” {
#endif
#ifndef HAVE_GETTIMEOFDAY
extern int gettimeofday(struct timeval *tv, void *t);
#endif
/* This portion is a copy from GNU library.
/* Convenience macros for operations on timevals.
NOTE: `timercmp’ does not work for >= or <=. */
#ifndef timerisset
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
#endif
#ifndef timerclear
#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
#endif
#ifndef timercmp
#define timercmp(a, b, CMP) \
(((a)->tv_sec == (b)->tv_sec) ? \
((a)->tv_usec CMP (b)->tv_usec) : \
((a)->tv_sec CMP (b)->tv_sec))
#endif
#ifndef timeradd
#define timeradd(a, b, result) \
do { \
(result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
if ((result)->tv_usec >= 1000000) \
{ \
++(result)->tv_sec; \
(result)->tv_usec -= 1000000; \
} \
} while (0)
#endif
#ifndef timersub
#define timersub(a, b, result) \
do { \
(result)->tv_sec = (a)->tv_sec – (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec – (b)->tv_usec; \
if ((result)->tv_usec < 0) { \
--(result)->tv_sec; \
(result)->tv_usec += 1000000; \
} \
} while (0)
#endif
#ifdef __cplusplus
}
#endif
#endif /* GETTIMEOFDAY_H_ */
/***************************************************************************
*
* Code for winsock related functions.
* winsocklib.c
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
#include “sysdep.h”
#if defined(WIN32)
void startupSocket(void)
{
WSADATA wsaData; /* WSAStartup() */
/* startup winsock */
if (WSAStartup(MAKEWORD(1, 1), &wsaData)) {
fprintf(stderr, “WSAStartup(): Could not start up WinSock.\n”);
exit(1);
}
}
#endif /* WIN32 */
#ifndef WINSOCKLIB_H_
#define WINSOCKLIB_H_
/***************************************************************************
*
* Header file for winsock related functions.
* winsocklib.h
*
* Copyright 2001 by Columbia University; all rights reserved
* by Akira Tsukamoto
*
***************************************************************************/
#ifdef __cplusplus
extern “C” {
#endif
#ifdef WIN32
extern void startupSocket(void);
#endif
#ifdef __cplusplus
}
#endif
#endif /* WINSOCKLIB_H_ */
/** def/undef _STDC_ macro *******************************************
* This is needed because header file in MS VC++ and Borland C++
* will eliminate extended functions and keywords when _STDC_ is set.
*/
#ifdef WIN32
#undef __STDC__
#endif
/** def/undef _STDC_ macro *******************************************
* This is needed because header file in MS VC++ and Borland C++
* will eliminate extended functions and keywords when _STDC_ is set.
*/
#ifdef WIN32
#define __STDC__ 1
#endif
#ifndef WIN32STD_H
#define WIN32STD_H
#define STRICT /* windows.h for better error detecting */
/** winsock2 **********************************************************/
#ifdef NEED_WINSOCK2
#include
#include
#include “winsocklib.h”
#endif
#ifndef EADDRNOTAVAIL
#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
#endif
//extern int winfd_dummy;
/** windows.h ********************************************************/
#include
typedef SSIZE_T ssize_t;
/** compiler specific ************************************************/
#ifdef __BORLANDC__
#include
#define strcasecmp stricmp
#define strncasecmp strnicmp
#endif
#ifdef _MSC_VER
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#define open _open
#define write _write
#define close _close
#endif
/** anything additional, put it here *********************************/
#define NOLONGLONG
#endif /* WIN32STD_H */
/* config_bc.h. configure file for Borland C++ Compiler */
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to empty if `const’ does not conform to ANSI C. */
/* #undef const */
/* Define if you have the
/* #undef HAVE_UNISTD_H */
/* Define if you have the `alarm’ function. */
/* #unde HAVE_ALARM */
/* Define if you have the `ftruncate’ function. */
/* #undef HAVE_FTRUNCATE */
/* Define if you have the `gethostname’ function. */
#define HAVE_GETHOSTNAME 1
/* Define if you have the
/* #undef HAVE_SYS_SELECT_H */
/* Define if you have the `select’ function. */
#define HAVE_SELECT 1
/* Define if you have the
/* #undef HAVE_SYS_SOCKET_H */
/* Define if you have the `socket’ function. */
#define HAVE_SOCKET 1
/* Define if you have the
/* #undef HAVE_ARPA_INET_H */
/* Define if you have the `inet_ntoa’ function. */
#define HAVE_INET_NTOA 1
/* Define if you have the
/* #undef HAVE_NETDB_H */
/* Define if you have the `gethostbyname’ function. */
#define HAVE_GETHOSTBYNAME 1
/* Define if you have the `gethostbyaddr’ function. */
#define HAVE_GETHOSTBYADDR 1
/* Define if you have the
/* #undef HAVE_NETINET_IN_H */
/* Define if you have the
#define HAVE_SYS_STAT_H 1
/* Define if you have the
#define HAVE_SYS_TIMEB_H 1
/* Define if you have the
#define HAVE_STDLIB_H 1
/* Define if you have the `strtol’ function. */
#define HAVE_STRTOL 1
/* Define if your system has a working `malloc’ function. */
#define HAVE_MALLOC 1
/* Define if you have the
#define HAVE_MEMORY_H 1
/* Define if you have the
#define HAVE_STRING_H 1
/* Define if you have the `memset’ function. memory.h or string.h */
#define HAVE_MEMSET 1
/* Define if you have the `strcasecmp’ function. */
/* #undef HAVE_STRCASECMP */
/* Define if you have the `strncasecmp’ function. */
/* #undef HAVE_STRNCASECMP */
/* Define if you have the `strerror’ function. */
#define HAVE_STRERROR 1
/* Define if you have the
/* #undef HAVE_SYS_TIME_H */
/* Define if you can safely include both
/* #undef TIME_WITH_SYS_TIME */
/* Define if your
/* #undef TM_IN_SYS_TIME */
/* Define if you have the `gettimeofday’ function. */
/* #undef HAVE_GETTIMEOFDAY */
/* Define if you have the
#define HAVE_SYS_TYPES_H 1
/* Define to `int’ if
/* #undef gid_t */
/* Define to `long’ if
/* #undef off_t */
/* Define to `int’ if
#define pid_t int
/* Define to `unsigned’ if
/* #undef size_t */
/* Define to `int’ if
/* #undef uid_t */
/* Define if you have the
/* #undef HAVE_INTTYPES_H */
/* Define if you have the
/* #undef HAVE_STDINT_H */
/* Define if you have the
/* #undef HAVE_STRINGS_H */
/* Define if you have the
#define HAVE_LIMITS_H 1
/* Define if you have the `strftime’ function. time.h */
#define HAVE_STRFTIME 1
/* Define if you don’t have `vprintf’ but do have `_doprnt.’ */
/* #undef HAVE_DOPRNT */
/* Define if you have the `vprintf’ function. stdio.h */
#define HAVE_VPRINTF 1
/* Define if you have the `floor’ function. math.h */
#define HAVE_FLOOR 1
/* Define if you have the `sqrt’ function. math.h */
#define HAVE_SQRT 1
/* Define if you have the `uname’ function. sys/utsname.h */
/* #undef HAVE_UNAME */
/* Define as the return type of signal handlers (`int’ or `void’). */
#define RETSIGTYPE void
/* Name of package */
#define PACKAGE “newudpl”
/* Version number of package */
#define VERSION “1.5”
/* Define if you have the `m’ library (-lm). */
/* #undef HAVE_LIBM */
/* Define if you have the `nsl’ library (-lnsl). */
/* #undef HAVE_LIBNSL */
/* Define if you have the `socket’ library (-lsocket). */
/* #undef HAVE_LIBSOCKET */
/* Define if the system has the type `socklen_t’. */
//#define HAVE_SOCKLEN_T 1
/* Define if the system has the type `in_addr_t’. */
/* #undef HAVE_IN_ADDR_T */
/* Define if the system has the type `in_port_t’. */
/* #undef HAVE_IN_PORT_T */
/* Define if the system has the type `uint16_t’. */
/* #undef HAVE_UINT16_T */
/* Define if the system has the type `uint32_t’. */
/* #undef HAVE_UINT32_T */
/* Define if the system has the type `uint8_t’. */
/* #undef HAVE_UINT8_T */
/* Define if you have the
#define HAVE_WIN32STD_H 1
/* Define if you need the winsock2 functions. */
/* Define if you have the winsock2 functions. */
#define NEED_WINSOCK2 1
#define HAVE_WINSOCK2 1
/* Define if you have the `startupsocket’ function. */
#define HAVE_STARTUPSOCKET 1
/* Define if you have the `closesocket’ function. */
#define HAVE_CLOSESOCKET 1
/* config_bc.h. configure file for Borland C++ Compiler */
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to empty if `const’ does not conform to ANSI C. */
/* #undef const */
/* Define if you have the
/* #undef HAVE_UNISTD_H */
/* Define if you have the `alarm’ function. */
/* #unde HAVE_ALARM */
/* Define if you have the `ftruncate’ function. */
/* #undef HAVE_FTRUNCATE */
/* Define if you have the `gethostname’ function. */
#define HAVE_GETHOSTNAME 1
/* Define if you have the
/* #undef HAVE_SYS_SELECT_H */
/* Define if you have the `select’ function. */
#define HAVE_SELECT 1
/* Define if you have the
/* #undef HAVE_SYS_SOCKET_H */
/* Define if you have the `socket’ function. */
#define HAVE_SOCKET 1
/* Define if you have the
/* #undef HAVE_ARPA_INET_H */
/* Define if you have the `inet_ntoa’ function. */
#define HAVE_INET_NTOA 1
/* Define if you have the
/* #undef HAVE_NETDB_H */
/* Define if you have the `gethostbyname’ function. */
#define HAVE_GETHOSTBYNAME 1
/* Define if you have the `gethostbyaddr’ function. */
#define HAVE_GETHOSTBYADDR 1
/* Define if you have the
/* #undef HAVE_NETINET_IN_H */
/* Define if you have the
#define HAVE_SYS_STAT_H 1
/* Define if you have the
#define HAVE_SYS_TIMEB_H 1
/* Define if you have the
#define HAVE_STDLIB_H 1
/* Define if you have the `strtol’ function. */
#define HAVE_STRTOL 1
/* Define if your system has a working `malloc’ function. */
#define HAVE_MALLOC 1
/* Define if you have the
#define HAVE_MEMORY_H 1
/* Define if you have the
#define HAVE_STRING_H 1
/* Define if you have the `memset’ function. memory.h or string.h */
#define HAVE_MEMSET 1
/* Define if you have the `strcasecmp’ function. */
/* #undef HAVE_STRCASECMP */
/* Define if you have the `strncasecmp’ function. */
/* #undef HAVE_STRNCASECMP */
/* Define if you have the `strerror’ function. */
#define HAVE_STRERROR 1
/* Define if you have the
/* #undef HAVE_SYS_TIME_H */
/* Define if you can safely include both
/* #undef TIME_WITH_SYS_TIME */
/* Define if your
/* #undef TM_IN_SYS_TIME */
/* Define if you have the `gettimeofday’ function. */
/* #undef HAVE_GETTIMEOFDAY */
/* Define if you have the
#define HAVE_SYS_TYPES_H 1
/* Define to `int’ if
/* #undef gid_t */
/* Define to `long’ if
/* #undef off_t */
/* Define to `int’ if
#define pid_t int
/* Define to `unsigned’ if
/* #undef size_t */
/* Define to `int’ if
/* #undef uid_t */
/* Define if you have the
/* #undef HAVE_INTTYPES_H */
/* Define if you have the
/* #undef HAVE_STDINT_H */
/* Define if you have the
/* #undef HAVE_STRINGS_H */
/* Define if you have the
#define HAVE_LIMITS_H 1
/* Define if you have the `strftime’ function. time.h */
#define HAVE_STRFTIME 1
/* Define if you don’t have `vprintf’ but do have `_doprnt.’ */
/* #undef HAVE_DOPRNT */
/* Define if you have the `vprintf’ function. stdio.h */
#define HAVE_VPRINTF 1
/* Define if you have the `floor’ function. math.h */
#define HAVE_FLOOR 1
/* Define if you have the `sqrt’ function. math.h */
#define HAVE_SQRT 1
/* Define if you have the `uname’ function. sys/utsname.h */
/* #undef HAVE_UNAME */
/* Define as the return type of signal handlers (`int’ or `void’). */
#define RETSIGTYPE void
/* Name of package */
#define PACKAGE “newudpl”
/* Version number of package */
#define VERSION “1.5”
/* Define if you have the `m’ library (-lm). */
/* #undef HAVE_LIBM */
/* Define if you have the `nsl’ library (-lnsl). */
/* #undef HAVE_LIBNSL */
/* Define if you have the `socket’ library (-lsocket). */
/* #undef HAVE_LIBSOCKET */
/* Define if the system has the type `socklen_t’. */
/* #undef HAVE_SOCKLEN_T */
/* Define if the system has the type `in_addr_t’. */
/* #undef HAVE_IN_ADDR_T */
/* Define if the system has the type `in_port_t’. */
/* #undef HAVE_IN_PORT_T */
/* Define if the system has the type `uint16_t’. */
/* #undef HAVE_UINT16_T */
/* Define if the system has the type `uint32_t’. */
/* #undef HAVE_UINT32_T */
/* Define if the system has the type `uint8_t’. */
/* #undef HAVE_UINT8_T */
/* Define if you have the
#define HAVE_WIN32STD_H 1
/* Define if you need the winsock2 functions. */
/* Define if you have the winsock2 functions. */
#define NEED_WINSOCK2 1
#define HAVE_WINSOCK2 1
/* Define if you have the `startupsocket’ function. */
#define HAVE_STARTUPSOCKET 1
/* Define if you have the `closesocket’ function. */
#define HAVE_CLOSESOCKET 1