pads-1.2/0000777000076400007640000000000010254172540007320 500000000000000pads-1.2/aclocal.m40000664000076400007640000011507610254172212011104 00000000000000# generated automatically by aclocal 1.9.2 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # 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. # -*- Autoconf -*- # Copyright (C) 2002, 2003 Free Software Foundation, Inc. # Generated from amversion.in; do not edit by hand. # 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 # 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. AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.9.2])]) # AM_AUX_DIR_EXPAND # Copyright (C) 2001, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 6 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) 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])]) # serial 7 -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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", "GCJ", or "OBJC". # 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 ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 # 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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"]) ]) # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 7 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # 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. # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 # 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 11 # 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.58])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 # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) 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], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])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) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. 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)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # 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_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $1 | $1:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright (C) 2001, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # -*- Autoconf -*- # Copyright (C) 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # 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, 2002, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # 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 done .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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # 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 supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_PROG_MKDIR_P # --------------- # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. # Copyright (C) 2003, 2004 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories # created by `make install' are always world readable, even if the # installer happens to have an overly restrictive umask (e.g. 077). # This was a mistake. There are at least two reasons why we must not # use `-m 0755': # - it causes special bits like SGID to be ignored, # - it may be too restrictive (some setups expect 775 directories). # # Do not use -m 0755 and let people choose whatever they expect by # setting umask. # # We cannot accept any implementation of `mkdir' that recognizes `-p'. # Some implementations (such as Solaris 8's) are not thread-safe: if a # parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' # concurrently, both version can detect that a/ is missing, but only # one can create it and the other will error out. Consequently we # restrict ourselves to GNU make (using the --version option ensures # this.) AC_DEFUN([AM_PROG_MKDIR_P], [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi AC_SUBST([mkdir_p])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # _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], [AC_FOREACH([_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])]) # # Check to make sure that the build environment is sane. # # Copyright (C) 1996, 1997, 2000, 2001, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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 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)]) # AM_PROG_INSTALL_STRIP # Copyright (C) 2001, 2003 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004 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, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 1 # _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. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. 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 /dev/null 2>&1 && break 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 pads-1.2/config.h.in0000664000076400007640000000565310254172216011272 00000000000000/* config.h.in. Generated from configure.in by autoheader. */ /* BSD */ #undef BSD /* Darwin */ #undef DARWIN /* Define 1 to disable MAC address vendor resolution. */ #undef DISABLE_VENDOR /* FreeBSD */ #undef FREEBSD /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Have PCAP Header File */ #undef HAVE_PCAP_H /* Define to 1 if you have the header file. */ #undef HAVE_PCRE_H /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strlcat' function. */ #undef HAVE_STRLCAT /* Define to 1 if you have the `strlcpy' function. */ #undef HAVE_STRLCPY /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Directory containing binary files (ex. 'bin/'). */ #undef INSTALL_BINDIR /* Directory containing data files (ex. 'share/'). */ #undef INSTALL_DATADIR /* Base directory for PADS system dependant installation. */ #undef INSTALL_EXECPREFIX /* Directory containing library files (ex. 'lib/). */ #undef INSTALL_LIBDIR /* Base directory of PADS installation. */ #undef INSTALL_PREFIX /* Directory containing configuration files (ex. 'etc/'). */ #undef INSTALL_SYSCONFDIR /* Linux */ #undef LINUX /* Operating System */ #undef OS /* "Operating System Type" */ #undef OS_TYPE /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define the date of this release. */ #undef PACKAGE_DATE /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Solaris */ #undef SOLARIS /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Unknown OS */ #undef UNKNOWN_OS /* Version number of package */ #undef VERSION /* Define to empty if `const' does not conform to ANSI C. */ #undef const pads-1.2/src/0000777000076400007640000000000010254172540010107 500000000000000pads-1.2/src/util.h0000664000076400007640000000403410206654465011164 00000000000000/************************************************************************* * util.h * * Matt Shelton * * This header file contains information relating to the util.c module. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: util.h,v 1.4 2005/02/22 16:09:25 mattshelton Exp $ * **************************************************************************/ /* INCLUDES ---------------------------------------- */ #include #include #include #include #include #include #include #include "global.h" /* PROTOTYPES -------------------------------------- */ void strip_comment (char *string); int chomp (char *string, int size); void daemonize (void); void init_pid_file (bstring pid_file, bstring user, bstring group); char *copy_argv(register char **argv); void log_message (const char *msg, ...); void err_message (const char *msg, ...); void verbose_message (const char *msg, ...); #ifndef HAVE_STRLCPY size_t strlcpy(char *dst, const char *src, size_t size); #endif #ifndef HAVE_STRLCAT size_t strlcat(char *dst, const char *src, size_t len); #endif void drop_privs (bstring newuser, bstring newgroup); void mac2hex(const char *mac, char *dst, int len); char *hex2mac(unsigned const char *mac); /* GLOBALS ----------------------------------------- */ pads-1.2/src/global.h0000664000076400007640000001403010233713613011433 00000000000000/************************************************************************* * global.h * * Matt Shelton * * This header file contains the global values for all the PADS modules * and components. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: global.h,v 1.7 2005/04/27 13:45:47 mattshelton Exp $ * **************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* DEFINES ------------------------------------------ */ #define MAX_LENGTH 500 #define MAX_SERVICE 10 #define MAX_APP 100 #define MAX_VER 25 #define MAX_MISC 100 #define STD_BUF 1024 #define VENDOR_LEN 256 #define MAC_LEN 6 #define I_ATTEMPTS 4 #define DEBUG #define PADS_SIGNATURE_LIST "pads-signature-list" #define PADS_ETHER_CODES "pads-ether-codes" #if defined (BSD) || defined(LINUX) || defined (SOLARIS) || defined (DARWIN) #define MAC_ADDR(x) x.ether_addr_octet #define MAC_ADDR_P(x) x->ether_addr_octet #endif #ifdef FREEBSD #define MAC_ADDR(x) x.octet #define MAC_ADDR_P(x) x->octet #endif #if defined (BSD) || defined (FREEBSD) || defined (DARWIN) #include #include #include #include #endif #include #include #include #include #include #include "bstring/bstrlib.h" /* DATA STRUCTURES ---------------------------------- */ typedef struct _globalconf { /* PCAP Variables */ pcap_t *handle; /* PCAP Session */ char *dev; /* PCAP Listening Device */ char *pcap_filter; /* PCAP filter text (specified on command line). */ struct bpf_program filter; /* PCAP filter structure */ bpf_u_int32 mask; /* The netmask of our sniffing device */ bpf_u_int32 net; /* The IP of our sniffing device */ pcap_dumper_t *dumper; /* PCAP Dump Object */ /* File Variables */ bstring conf_file; /* Configuration File */ bstring report_file; /* Output File */ bstring fifo_file; /* File used with FIFO output. */ bstring pcap_file; /* PCAP file used only if '-r' switch specified. */ bstring dump_file; /* PCAP output file used to store banners. */ bstring pid_file; /* PID file created with '-D' is used. */ bstring sig_file; /* File containing signatures. */ bstring mac_file; /* File containing MAC to Vendor translations. */ /* Drop Privileges */ bstring priv_user; /* Drop privileges to this user. */ bstring priv_group; /* Drop privileges to this group. */ /* Execution Variables */ int daemon_mode; /* Daemon Mode - 0 = No, 1 = Yes */ int hide_unknowns; /* Display unknown devices - 0 = No, 1 = Yes */ int verbose; /* Verbose - 0 = No, 1 = Yes */ } GC; /* -------------------------------------------------------------------------- * Asset: Data structure used to store TCP / ICMP assets. * -------------------------------------------------------------------------- */ typedef struct _Asset { struct in_addr ip_addr; /* Asset IP Address */ u_int16_t port; /* Asset Port */ unsigned short proto; /* Asset Protocol */ bstring service; /* Asset Service (i.e. SSH, WWW, etc.) */ bstring application; /* Asset Application (i.e. Apache, etc.) */ time_t discovered; /* Time at which asset was first seen. */ unsigned short i_attempts; /* Attempts at identifying the asset. */ struct _Asset *next; /* Next Signature Structure */ } Asset; /* -------------------------------------------------------------------------- * ArpAsset: Data structure used to store data collected from ARP packets. * -------------------------------------------------------------------------- */ typedef struct _ArpAsset { struct in_addr ip_addr; /* Asset IP Address */ char mac_addr[MAC_LEN]; /* Asset MAC Address */ bstring mac_resolved; /* Asset MAC Vendor Name */ time_t discovered; /* Time at which asset was first seen. */ struct _ArpAsset *next; /* Next ARP Structure */ } ArpAsset; /* -------------------------------------------------------------------------- * Signature: Data structure used to store PCRE signatures. * -------------------------------------------------------------------------- */ typedef struct _Signature { bstring service; /* Service (i.e. SSH, WWW, etc.) */ struct { /* Application Title, broken up into 3 parts. */ bstring app; bstring ver; bstring misc; } title; pcre *regex; /* Signature - Compiled Regular Expression */ pcre_extra *study; /* Studied version of the compiled regex. */ struct _Signature *next; /* Next Signature Structure */ } Signature; /* -------------------------------------------------------------------------- * Vendor: Data structure used to store MAC address to vendor mappings. * -------------------------------------------------------------------------- */ typedef struct _Vendor { unsigned int mac; bstring vendor; struct _Vendor *next; } Vendor; /* GLOBAL VARIABLES -------------------------------- */ extern GC gc; /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/configuration.h0000664000076400007640000000342410205301033013033 00000000000000/************************************************************************* * configuration.h * * This module stores functions related to the configuration of the * pads project. * * The purpose of this system is to determine network assets by passively * listening to network traffic. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: configuration.h,v 1.2 2005/02/18 05:50:19 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ /* INCLUDES ---------------------------------------- */ #include "global.h" #include #include "bstring/bstrlib.h" /* PROTOTYPES -------------------------------------- */ void init_configuration (bstring conf_file); void parse_line (bstring line); int conf_module_plugin (bstring value, int (*ptrFunc)(bstring, bstring)); /* External Prototypes */ int activate_output_plugin (bstring name, bstring args); pads-1.2/src/monnet.h0000664000076400007640000000320710202574621011477 00000000000000/************************************************************************* * monnet.h * * Matt Shelton * * This header file contains information relating to the monnet.c module. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: monnet.h,v 1.1 2005/02/10 06:05:05 mattshelton Exp $ * **************************************************************************/ /* INCLUDES ---------------------------------------- */ #include #include #include /* DATA STRUCTURES --------------------------------- */ struct mon_net { u_long network; u_long netmask; struct mon_net *next; }; /* PROTOTYPES -------------------------------------- */ void parse_networks (char *cmdline); void init_netmasks (unsigned int nm[33]); void add_monnet(char *network, char *netmask); short check_monnet (const struct in_addr ip_addr); /* GLOBALS ----------------------------------------- */ pads-1.2/src/Makefile.in0000664000076400007640000004131710254172225012100 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ SOURCES = $(pads_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = pads$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_pads_OBJECTS = pads.$(OBJEXT) storage.$(OBJEXT) \ identification.$(OBJEXT) packet.$(OBJEXT) monnet.$(OBJEXT) \ mac-resolution.$(OBJEXT) configuration.$(OBJEXT) \ util.$(OBJEXT) pads_OBJECTS = $(am_pads_OBJECTS) pads_DEPENDENCIES = $(top_srcdir)/lib/bstring/libbstring.a \ output/liboutput.a binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = am__depfiles_maybe = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(pads_SOURCES) DIST_SOURCES = $(pads_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign no-dependencies pads_SOURCES = pads.c pads.h \ storage.c storage.h \ identification.c identification.h \ packet.c packet.h \ monnet.c monnet.h \ mac-resolution.c mac-resolution.h \ configuration.c configuration.h \ util.c util.h \ global.h pads_LDADD = $(top_srcdir)/lib/bstring/libbstring.a output/liboutput.a bin_SCRIPTS = pads-report EXTRA_DIST = pads-report.pl SUBDIRS = output CLEANFILES = $(bin_SCRIPTS) INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/lib all: all-recursive .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) pads$(EXEEXT): $(pads_OBJECTS) $(pads_DEPENDENCIES) @rm -f pads$(EXEEXT) $(LINK) $(pads_LDFLAGS) $(pads_OBJECTS) $(pads_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f $$d$$p; then \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; for p in $$list; do \ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .c.o: $(COMPILE) -c $< .c.obj: $(COMPILE) -c `$(CYGPATH_W) '$<'` uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-recursive clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-binPROGRAMS clean-generic clean-recursive ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-recursive distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-info-am pads-report: pads-report.pl cat $(srcdir)/pads-report.pl >> pads-report chmod +x pads-report # 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: pads-1.2/src/mac-resolution.h0000664000076400007640000000333610204523067013143 00000000000000/************************************************************************* * * mac-resolution.h * * Dominique Karg * Matt Shelton * * This module will take MAC addresses from the libpcap stack and attempt * to translate them into a vendor code. Thanks go to Dominique for * coding this module! * * Copyright (C) 2004 Matt Shelton * Copyright (C) 2004 Dominique Karg * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: mac-resolution.h,v 1.3 2005/02/16 01:47:35 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ /* INCLUDES ---------------------------------------- */ #include #include "global.h" /* PROTOTYPES -------------------------------------- */ int init_mac_resolution (void); int parse_raw_mac (bstring line); int add_vendor (char *mac, char *vendor); bstring get_vendor (char *m); void end_mac_resolution (void); #ifdef DEBUG void show_vendor (void); #endif /* DEBUG */ pads-1.2/src/pads-report.pl0000775000076400007640000001566310254123541012635 00000000000000#!/usr/bin/perl -w # --------------------------------------------------------------------- # pads-report.pl # # Matt Shelton # # This script will generate a formatted report based on the data # produced by Passive Asset Detection System (PADS). # # Copyright (C) 2004 Matt Shelton # # 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. # my $version = '1.2'; my $date = '06/17/05'; # # $Id: pads-report.pl,v 1.2 2005/06/15 22:10:41 mattshelton Exp $ # # --------------------------------------------------------------------- use strict; print_header(); eval("use Getopt::Long"); die "[!] ERROR: Getopt::Long module must be installed!\n" if $@; eval("use Socket"); die "[!] ERROR: Socket module must be insalled!\n" if $@; use vars qw ($opt_h $opt_r $opt_w $opt_n $opt_p); # Variable Declarations my $report_file = "assets.csv"; # Data Structure: # %asset_storage = ( # => { # ARP => [ $mac, $discovered, $vendor ], # ICMP => ICMP, # TCP => [ $port, $service, $app, $discovered ] # }, # } # ) my %asset_storage = (); # Parse Command Line GetOptions('r=s' => \$opt_r, 'w=s' => \$opt_w, 'n' => \$opt_n, 'p' => \$opt_p, 'h|?' => \$opt_h, 'help' => \$opt_h ); usage() if $opt_h; $report_file = $opt_r if ($opt_r); # -------------------------------------------- # MAIN # -------------------------------------------- # Open Report File open (REPORT, "<$report_file") or die "[!] ERROR: Unable to open $report_file - $!\n"; # Read in Report File while () { my (@split); my ($ip_addr, $port, $proto); my ($service, $app, $discovered, $vendor); my (%tcp_tmp) = (); chomp; next if (/^asset,port/); @split = split(/,/); $ip_addr = $split[0]; $port = $split[1]; $proto = $split[2]; $service = $split[3]; $app = $split[4]; $discovered = $split[5]; # Assign this line to the asset data structure. if ($proto == 0) { # ARP if ($service =~ /ARP \((.*)\)/) { $vendor = $1; } else { $vendor = "unknown"; } push ( @{ $asset_storage{$ip_addr}->{"ARP"} }, [ $app, $discovered, $vendor ]); } elsif ($proto == 1) { # ICMP $asset_storage{$ip_addr}->{"ICMP"} = "ICMP"; } elsif ($proto == 6) { # TCP push (@{$asset_storage{$ip_addr}{"TCP"}}, [ $port, $service, $app, $discovered ]); } } # Close Report File close (REPORT); # Open output file if specified on the command line. if ($opt_w) { open (STDOUT, ">$opt_w") or die "[!] ERROR: $!\n"; } # Print out this record. my $asset; my $id = 1; foreach $asset (sort (keys (%asset_storage))) { my ($mac); my ($icmp); my (@sorted); my ($i); # Output Asset Header print "$id ------------------------------------------------------\n"; print "IP: $asset\n"; # Output DNS Name unless ($opt_n) { if ($opt_p) { # Check to see if this is a RFC 1918 address. unless (check_rfc1918($asset)) { my ($peer_host) = gethostbyaddr(inet_aton($asset), AF_INET()); print "DNS: $peer_host\n" if ($peer_host); } } else { my ($peer_host) = gethostbyaddr(inet_aton($asset), AF_INET()); print "DNS: $peer_host\n" if ($peer_host); } } # Output MAC Addresses $i = 0; foreach $_ ( @ { $asset_storage{$asset}->{"ARP"}}) { if ($i == 0) { my ($date) = from_unixtime($_->[1]); printf("MAC(s): %-18s (%-19s)\n", $_->[0], $date); printf("VENDOR: %-18s\n", $_->[2]) if ($_->[2] ne "unknown"); $i++; } else { my ($date) = from_unixtime($_->[1]); printf("%-09s %-18s (%-19s)\n", "", $_->[0], $date); printf("%-09s %-18s\n", $_->[2]) if ($_->[2] ne "unknown"); } } # Output ICMP Status if ($asset_storage{$asset}->{"ICMP"}) { print "ICMP: Enabled\n"; } print "\n"; # Output TCP Status if ($asset_storage{$asset}->{"TCP"}) { printf("%-5s %-10s %-30s\n", "Port", "Service", "Application"); @sorted = sort {$$a[0] <=> $$b[0]} @{$asset_storage{$asset}->{"TCP"}}; } foreach $_ (@sorted) { printf("%-5d %-10s %-30s\n", $_->[0], $_->[1], $_->[2]) } if ($asset_storage{$asset}->{"TCP"}) { print "\n"; } $id++; } # Close output file if specified on the command line. if ($opt_w) { close (STDOUT); } # -------------------------------------------- # FUNCTION : from_unixtime # DESCRIPTION : This function will convert # : a unix timestamp into a # : normal date. # INPUT : 0 - UNIX timestamp # RETURN : 0 - Formatted Time # -------------------------------------------- sub from_unixtime { my ($unixtime) = $_[0]; my ($time); my ($sec, $min, $hour, $dmon, $mon, $year, $wday, $yday, $isdst) = localtime($unixtime); $time = sprintf("%04d/%02d/%02d %02d:%02d:%02d", $year + 1900, $mon + 1, $dmon, $hour, $min, $sec); return $time; } # -------------------------------------------- # FUNCTION : check_rfc1918 # DESCRIPTION : This function will check to # : see if a address is a RFC # : 1918 address. # INPUT : 0 - IP Address # RETURN : 1 - Yes # -------------------------------------------- sub check_rfc1918 { my ($ip) = $_[0]; return 1 if (check_ip($ip, "10.0.0.0/8")); return 1 if (check_ip($ip, "172.16.0.0/12")); return 1 if (check_ip($ip, "192.168.0.0/16")); return 0; } # -------------------------------------------- # FUNCTION : check_ip # DESCRIPTION : This function will check to # : see if a address falls # : within a network CIDR block. # INPUT : 0 - IP Address # : 1 - CIDR Network # RETURN : 1 - Yes # -------------------------------------------- sub check_ip { my ($i) = $_[0]; my ($n) = $_[1]; return ($i eq $n) unless $n =~ /^(.*)\/(.*)$/; return (((unpack('N',pack('C4',split(/\./,$i))) ^ unpack('N',pack('C4' ,split(/\./,$1)))) & (0xFFFFFFFF << (32 - $2))) == 0); } # -------------------------------------------- # FUNCTION : usage # -------------------------------------------- sub usage { print <<__EOT__; Usage: -r : PADS Raw Report File -w : Output file -n : Do not convert IP addresses to names. -p : Do not convert RFC 1918 IP addresses to names. __EOT__ exit; } # -------------------------------------------- # FUNCTION : print_header # -------------------------------------------- sub print_header { print <<__EOT__; pads-report - PADS Text Reporting Module $version - $date Matt Shelton __EOT__ } pads-1.2/src/pads.c0000664000076400007640000003622310254122410011115 00000000000000/************************************************************************* * pads.c * * Matt Shelton * * The purpose of this system is to determine network assets by passively * listening to network traffic. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: pads.c,v 1.10 2005/06/15 22:00:40 mattshelton Exp $ * **************************************************************************/ #include "pads.h" /* Variable Declarations */ GC gc; /* Global Configuration */ char errbuf[PCAP_ERRBUF_SIZE]; proc_t processor; char **prog_argv; int prog_argc; /* ---------------------------------------------------------- * FUNCTION : process_pkt * DESCRIPTION : This function takes data from libpcap and * : processes it based on what type of traffic * : it is. * INPUT : 0 - Not used * : 1 - pcap packet header * : 2 - pcap packet * ---------------------------------------------------------- */ void process_pkt (u_char *args, const struct pcap_pkthdr* pkthdr, const u_char* packet) { /* Call LLC Processor */ (*processor)(pkthdr, packet); } /* ---------------------------------------------------------- * FUNCTION : set_processor * DESCRIPTION : This function determines what type of LLC * : type is being used. It will then set a * : pointer to the correct LLC function. * INPUT : PCAP Handle * RETURN : None! * ---------------------------------------------------------- */ void set_processor (pcap_t *this_handle) { int datalink; datalink = pcap_datalink(this_handle); switch (datalink) { /* Ethernet */ case DLT_EN10MB: processor = process_eth; break; #ifdef DLT_LINUX_SLL /* Linux Cooked Sockets */ case DLT_LINUX_SLL: processor = process_sll; break; #endif /* DLT_LINUX_SLL */ /* Default */ default: err_message("LLC not supported! Please contact the author!"); break; } return; } /* ---------------------------------------------------------- * FUNCTION : print_header * DESCRIPTION : Prints initial header. * ---------------------------------------------------------- */ void print_header () { printf("pads - Passive Asset Detection System\n"); printf("v%s - %s\n", PACKAGE_VERSION, PACKAGE_DATE); printf("Matt Shelton \n"); printf("\n"); } /* ---------------------------------------------------------- * FUNCTION : print_usage * DESCRIPTION : Prints the Program Usage * ---------------------------------------------------------- */ void print_usage() { printf("Usage:\n" "-c : Read configuration from .\n" "-d : Dump banner packets to a libpcap formatted file.\n" "-D : Run PADS in the background (daemon mode).\n" "-g : Drop privileges to this group.\n" "-h : Help\n" "-i : Listen on . The lowest number interface\n" " will be used if an interface isn't specified.\n" "-n : Reads in a comma seperated list of networks\n" " to be monitored.\n" " ex. -n \"192.168.0.0/24,10.0.0.0/16\"\n" "-p : PID file used with daemon mode.\n" "-r : Read packets from a libpcap formatted file.\n" "-u : Drop privileges to this user.\n" "-v : Verbose\n" "-V : Version\n" "-w : Dump data into file other than assets.csv.\n" "\n" "Additional arguments will be processed as a libpcap filter. For example,\n" "the following command will not only use interface hme1 but will also only\n" "search for assets on port 22:\n" "\n" " pads -i hme1 port 22\n"); printf("\n"); exit(0); } /* ---------------------------------------------------------- * FUNCTION : print_version * DESCRIPTION : This function will print version * : version information. * ---------------------------------------------------------- */ void print_version (void) { printf("Build:\n"); printf("OS - %s\n", OS_TYPE); printf("Compiled - %s %s\n", __DATE__, __TIME__); printf("\n"); printf("Libraries:\n"); printf("libpcap - %d.%d\n", PCAP_VERSION_MAJOR, PCAP_VERSION_MINOR); printf("pcre - %d.%d\n", PCRE_MAJOR, PCRE_MINOR); printf("\n"); } /* ---------------------------------------------------------- * FUNCTION : init_pads * DESCRIPTION : This function will initialize PADS. * ---------------------------------------------------------- */ void init_pads (void) { /* Process the command line parameters. */ process_cmdline(prog_argc, prog_argv); /* Initialize Output Module */ init_output(); /* Process the configuration file. */ if (gc.conf_file) { init_configuration(gc.conf_file); } else { /* Default Output Plugins: These plugins are activated if a configuration * file is not specified. */ /* output: screen */ if ((activate_output_plugin(bfromcstr("screen"), bfromcstr(""))) == -1) log_message("warning: 'activate_output_plugin' in function 'init_pads' failed."); /* output: csv */ if ((activate_output_plugin(bfromcstr("csv"), gc.report_file)) == -1) log_message("warning: 'activate_output_plugin' in function 'init_pads' failed."); } /* Initialize Modules */ init_identification(); init_mac_resolution(); /* Daemon Mode: fork child process */ if (gc.daemon_mode) { daemonize(); init_pid_file(gc.pid_file, gc.priv_user, gc.priv_group); } /* Signal Trapping */ (void) signal(SIGTERM, sig_term_handler); (void) signal(SIGINT, sig_int_handler); (void) signal(SIGQUIT, sig_quit_handler); (void) signal(SIGHUP, sig_hup_handler); } /* ---------------------------------------------------------- * FUNCTION : main_pads * DESCRIPTION : This is the main function for PADS. * ---------------------------------------------------------- */ void main_pads (void) { /* Initialize */ init_pads(); if (gc.pcap_file) { /* Read from PCAP file specified by '-r' switch. */ log_message("Reading from file %s\n", bdata(gc.pcap_file)); if (!(gc.handle = pcap_open_offline(bdata(gc.pcap_file), errbuf))) { err_message("Unable to open %s. (%s)", bdata(gc.pcap_file), errbuf); } gc.mask = 0; gc.net = 0; } else { /* Only root can access the interface. */ if(geteuid() != 0) { err_message("Must be root!"); } /* Determine Sniffing Interface */ if (!gc.dev) { verbose_message("Looking for sniffing interface"); if (!(gc.dev = pcap_lookupdev(errbuf))) err_message("Unable to find a sniffing interface! (%s)", errbuf); } /* Set up libpcap connection. */ if (!(gc.handle = pcap_open_live(gc.dev, BUFSIZ, 1, 0, errbuf))) err_message("Unable to open interface %s! (%s)", gc.dev, errbuf); /* Drop Privileges */ if (gc.priv_user != NULL && gc.priv_group != NULL) { verbose_message("Dropping Privileges"); drop_privs(gc.priv_user, gc.priv_group); } /* Lookup Netmask (used with pcap_setfilter) */ verbose_message("Looking up interface network"); if (pcap_lookupnet(gc.dev, &gc.net, &gc.mask, errbuf) == -1) { log_message("WARNING: pcap_lookupnet (%s)\n", errbuf); memset(&gc.net, 0, sizeof(gc.net)); memset(&gc.mask, 0, sizeof(gc.mask)); } } /* Determine LLC Type */ verbose_message("Determine LLC Type"); set_processor(gc.handle); /* Compile libpcap filter */ if (prog_argc > 0) { log_message("Filter: %s\n", gc.pcap_filter); if (pcap_compile(gc.handle, &gc.filter, gc.pcap_filter, 0, gc.net) == -1) { err_message("Unable to compile pcap filter! %s", pcap_geterr(gc.handle)); } if (pcap_setfilter(gc.handle, &gc.filter)) { err_message("Unable to set pcap filter! %s", pcap_geterr(gc.handle)); } free(gc.pcap_filter); } /* Open banner dump file if specified (-d). */ if (gc.dump_file) { verbose_message("Opening Banner Dump File"); if (!(gc.dumper = pcap_dump_open(gc.handle, bdata(gc.dump_file)))) err_message("Cannot open dump file - %s\n", pcap_geterr(gc.handle)); } /* Sniff libpcap connection. */ log_message("Listening on interface %s\n", gc.dev); log_message("\n"); verbose_message("Entering pcap_loop()"); while (pcap_loop(gc.handle, -1, process_pkt, NULL)); /* End */ end_pads(); } /* ---------------------------------------------------------- * FUNCTION : end_pads * DESCRIPTION : This function needs to be called before the * : program exits. It shuts down libpcap and * : everything. * ---------------------------------------------------------- */ void end_pads(void) { struct pcap_stat pstat; static int exit_status = 0; /* Make sure that this function is only called once. */ if (exit_status == 1) return; else exit_status = 1; /* Display PCAP Statistics */ if (!pcap_stats(gc.handle, &pstat)) { log_message("\n"); log_message("%d Packets Received\n", pstat.ps_recv); log_message("%d Packets Dropped by Software\n", pstat.ps_drop); log_message("%d Packets Dropped by Interface\n", pstat.ps_ifdrop); log_message("\n"); } /* Close banner dump file if specifed (-d). */ if (gc.dump_file) { verbose_message("Closing Banner Dump File"); pcap_dump_close(gc.dumper); } /* Kill PCAP Object */ if (gc.handle) { log_message("Closing PCAP Connection"); pcap_close(gc.handle); } /* Remove PID File */ if (gc.daemon_mode == 1) if ((unlink(bdata(gc.pid_file))) != 0) log_message("WARNING: Unable to remove PID file - %s\n", bdata(gc.pid_file)); /* End Modules */ verbose_message("Cleaning Up Memory"); end_output(); end_storage(); end_identification(); #ifndef DISABLE_VENDOR end_mac_resolution(); #endif /* Garbage Collect GC Variable */ if (gc.conf_file != NULL) bdestroy(gc.conf_file); if (gc.report_file != NULL) bdestroy(gc.report_file); if (gc.fifo_file != NULL) bdestroy(gc.fifo_file); if (gc.pcap_file != NULL) bdestroy(gc.pcap_file); if (gc.dump_file != NULL) bdestroy(gc.dump_file); if (gc.sig_file != NULL) bdestroy(gc.sig_file); if (gc.mac_file != NULL) bdestroy(gc.mac_file); if (gc.pid_file != NULL) bdestroy(gc.pid_file); if (gc.priv_user != NULL) bdestroy(gc.priv_user); if (gc.priv_group != NULL) bdestroy(gc.priv_group); verbose_message("Done! Exiting..."); exit(0); } /* ---------------------------------------------------------- * FUNCTION : process_cmdline * DESCRIPTION : This function will process the command line * : arguments of the program. * INPUT : 0 - argc * : 1 - argv * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int process_cmdline (int argc, char *argv[]) { int ch; /* Process Command Line Arguments */ while ((ch = getopt(argc, argv, "c:d:Dg:hi:n:r:u:UvVw:")) != -1) { switch (ch) { case 'c': gc.conf_file = blk2bstr(optarg, strlen(optarg)); break; case 'd': gc.dump_file = blk2bstr(optarg, strlen(optarg)); break; case 'D': gc.daemon_mode = 1; break; case 'g': gc.priv_group = blk2bstr(optarg, strlen(optarg)); break; case 'h': print_usage(); exit(0); break; case 'i': gc.dev = optarg; break; case 'n': parse_networks(optarg); break; case 'p': gc.pid_file = blk2bstr(optarg, strlen(optarg)); break; case 'r': gc.pcap_file = blk2bstr(optarg, strlen(optarg)); break; case 'u': gc.priv_user = blk2bstr(optarg, strlen(optarg)); break; case 'U': gc.hide_unknowns = 1; break; case 'v': gc.verbose = 1; break; case 'V': /* Banner has already been printed, exit... */ print_version(); exit(0); break; case 'w': gc.report_file = blk2bstr(optarg, strlen(optarg)); break; default: print_usage(); exit(0); break; } } argc -= optind; argv += optind; /* Parse the rest of the command line. */ if (argc > 0) { gc.pcap_filter = (char *)copy_argv(argv); } return 0; } /* ---------------------------------------------------------- * The following functions are signal handlers. They are * initialized in 'init_pads' and will perform a function * based on the signal. * ---------------------------------------------------------- */ void sig_term_handler(int signal) { end_pads(); } void sig_int_handler(int signal) { end_pads(); } void sig_quit_handler(int signal) { end_pads(); } void sig_hup_handler(int signal) { /* The HUP signal has not been implemented yet. */ end_pads(); } /* ---------------------------------------------------------- * FUNCTION : main * ---------------------------------------------------------- */ int main(int argc, char *argv[]) { /* Variables */ int i; struct pcap_pkthdr header; /* The header that pcap gives us */ const u_char *packet; /* The actual packet */ /* Copy Command Line Args */ prog_argc = argc; prog_argv = argv; /* Main Program */ print_header(); main_pads(); return(0); } /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/packet.h0000664000076400007640000000537510202574621011456 00000000000000/************************************************************************* * packet.h * * Matt Shelton * * The contents of this file make up the header file for the packet * processing module. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: packet.h,v 1.1 2005/02/10 06:05:05 mattshelton Exp $ * **************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ /* INCLUDES ---------------------------------------- */ #include "global.h" #include #include #include /* DATA STRUCTURES --------------------------------- */ /* * SLL data structure taken from tcpdump. */ #ifdef DLT_LINUX_SLL #define SLL_HDR_LEN 16 /* total header length */ #define SLL_ADDRLEN 8 /* length of address field */ struct sll_header { u_int16_t sll_pkttype; /* packet type */ u_int16_t sll_hatype; /* link-layer address type */ u_int16_t sll_halen; /* link-layer address length */ u_int8_t sll_addr[SLL_ADDRLEN]; /* link-layer address */ u_int16_t sll_protocol; /* protocol */ }; #endif /* DLT_LINUX_SLL */ /* PROTOTYPES -------------------------------------- */ void process_eth (const struct pcap_pkthdr* pkthdr, const u_char* packet); #ifdef DLT_LINUX_SLL void process_sll (const struct pcap_pkthdr* pkthdr, const u_char* packet); #endif /* DLT_LINUX_SLL */ void process_ip (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len); void process_arp (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len); void process_tcp (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len, const struct in_addr ip_src, const struct in_addr ip_dst); void process_icmp (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len, const struct in_addr ip_src, const struct in_addr ip_dst); pads-1.2/src/identification.c0000664000076400007640000003163110241456052013165 00000000000000/************************************************************************* * * identification.c * * Matt Shelton * * This module contains functions related to identifying an asset. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: identification.c,v 1.5 2005/05/14 20:14:34 mattshelton Exp $ * **************************************************************************/ #include "identification.h" Signature *signature_list; /* ---------------------------------------------------------- * FUNCTION : init_identification * DESCRIPTION : This function will read the signature file * : into the signature data structure. * INPUT : 0 - Data Structure * RETURN : -1 - Error * : 0 - Normal Return * ---------------------------------------------------------- */ int init_identification() { FILE *fp; bstring filename; bstring filedata; struct bstrList *lines; int i; /* Check for a PADS_SIGNATURE_LIST file within the current directory. */ if ((fp = fopen(PADS_SIGNATURE_LIST, "r")) != NULL) { filename = bformat("./%s", PADS_SIGNATURE_LIST); fclose(fp); } else if (gc.sig_file != NULL) { filename = bstrcpy(gc.sig_file); } else { filename = bformat("%s/%s", INSTALL_SYSCONFDIR, PADS_SIGNATURE_LIST); } /* Open Signature File */ if ((fp = fopen(bdata(filename), "r")) == NULL) { err_message("Unable to open signature file - %s", bdata(filename)); } /* Read file into 'filedata' and process it accordingly. */ filedata = bread ((bNread) fread, fp); if ((lines = bsplit(filedata, '\n')) != NULL) { for (i = 0; i < lines->qty; i++) { parse_raw_signature(lines->entry[i], i + 1); } } /* Clean Up */ bdestroy(filename); bdestroy(filedata); bstrListDestroy(lines); close(fp); return 0; } /* ---------------------------------------------------------- * FUNCTION : parse_raw_signature * DESCRIPTION : This function will take a line from the * : signature file and parse it into it's data * : structure. * INPUT : 0 - Raw Signature (bstring) * : 1 - The line number this signature is on. * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int parse_raw_signature (bstring line, int lineno) { struct bstrList *raw_sig; struct bstrList *title; Signature *sig; bstring pcre_string; const char *err; /* PCRE */ int erroffset; /* PCRE */ int ret = 0; int i; /* Check to see if this line has something to read. */ if (line->data[0] == '\0' || line->data[0] == '#') return; /* Split Line */ if ((raw_sig = bsplit(line, ',')) == NULL) return -1; /* Reconstruct the PCRE string. This is needed in case there are PCRE * strings containing commas within them. */ if (raw_sig->qty < 3) { ret = -1; } else if (raw_sig->qty > 3) { pcre_string = bstrcpy(raw_sig->entry[2]); for (i = 3; i < raw_sig->qty; i++) { if ((bconcat(pcre_string, bfromcstr(","))) == BSTR_ERR) ret = -1; if ((bconcat(pcre_string, raw_sig->entry[i])) == BSTR_ERR) ret = -1; } } else { pcre_string = bstrcpy(raw_sig->entry[2]); } /* Split Title */ if (raw_sig->entry[1] != NULL && ret != -1) if ((title = bsplit(raw_sig->entry[1], '/')) == NULL) ret = -1; if (title->qty < 3) ret = -1; /* Create signature data structure for this record. */ if (ret != -1) { sig = (Signature*)malloc(sizeof(Signature)); sig->next = NULL; if (raw_sig->entry[0] != NULL) sig->service = bstrcpy(raw_sig->entry[0]); if (title->entry[1] != NULL) sig->title.app = bstrcpy(title->entry[1]); if (title->entry[2] != NULL) sig->title.ver = bstrcpy(title->entry[2]); if (title->entry[3] != NULL) sig->title.misc = bstrcpy(title->entry[3]); /* PCRE */ if (pcre_string != NULL) { if ((sig->regex = pcre_compile (bdata(pcre_string), 0, &err, &erroffset, NULL)) == NULL) { err_message("Unable to compile signature: %s at line %d (%s)", err, lineno, bdata(line)); ret = -1; } } if (ret != -1) { sig->study = pcre_study (sig->regex, 0, &err); if (err != NULL) err_message("Unable to study signature: %s", err); } /* Add signature to 'signature_list' data structure. */ if (ret != -1) add_signature (sig); } /* Garbage Collection */ if (raw_sig != NULL) bstrListDestroy(raw_sig); if (title != NULL) bstrListDestroy(title); if (pcre_string != NULL) bdestroy(pcre_string); return ret; } /* ---------------------------------------------------------- * FUNCTION : add_signature * DESCRIPTION : This function will add a signature to the * : signature list. * INPUT : 0 - Signature Data Structure * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int add_signature (Signature *sig) { Signature *list; if (signature_list == NULL) { signature_list = sig; } else { list = signature_list; while (list != NULL) { if (list->next == NULL) { list->next = sig; break; } else { list = list->next; } } } return 0; } /* ---------------------------------------------------------- * FUNCTION : tcp_identify * DESCRIPTION : This function will take a TCP payload and * : match it against the signature base. * INPUT : 0 - IP Address * : 1 - TCP Port * : 2 - Packet Payload * : 3 - Packet Payload Length * RETURN : 0 - i_attempts = 0 * : 1 - i_attempts > 0 * ---------------------------------------------------------- */ int tcp_identify (struct in_addr ip_addr, u_int16_t port, char *payload, int plen) { unsigned short i_attempts; /* Retrieve i_attempts for this asset. */ i_attempts = get_i_attempts(ip_addr, port, IPPROTO_TCP); if (i_attempts > 0) { i_attempts--; update_i_attempts(ip_addr, port, IPPROTO_TCP, i_attempts); if (pcre_identify(ip_addr, port, IPPROTO_TCP, payload, plen) == 1) { /* MATCH! */ i_attempts = 0; update_i_attempts(ip_addr, port, IPPROTO_TCP, 0); } /* Print asset if this is the last time to identify it. */ if (i_attempts == 0) { print_asset(ip_addr, port, IPPROTO_TCP); } return 1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : pcre_identify * DESCRIPTION : This function will match a string against * : all the known signatures. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Proto * : 3 - Payload * : 4 - Payload Length * RETURN : 0 - Not Matched * : 1 - Matched * ---------------------------------------------------------- */ int pcre_identify (struct in_addr ip_addr, u_int16_t port, unsigned short proto, const char *payload, int plen) { Signature *list = signature_list; int rc; int ovector[15]; int i; bstring app; while (list != NULL) { /* Execute Regular Expression */ rc = pcre_exec(list->regex, list->study, payload, plen, 0, 0, ovector, 15); if (rc != -1) { app = get_app_name(list, payload, ovector, rc); update_asset(ip_addr, port, proto, list->service, app); return 1; } list = list->next; } return 0; } /* ---------------------------------------------------------- * FUNCTION : get_app_name * DESCRIPTION : This function will take the results of a * : pcre match and compile the application name * : based off of the signature. * INPUT : 0 - Signature Pointer * : 1 - payload * : 2 - ovector * : 3 - rc (return from pcre_exec) * RETURN : processed app name * ---------------------------------------------------------- */ bstring get_app_name (Signature *sig, const char *payload, int *ovector, int rc) { char sub[100]; char app[5000]; char expr[100]; bstring retval; int i = 0; int n = 0; int x = 0; int z = 0; /* Create Application string using the values in signature[i].title. */ if (sig->title.app != NULL) { strlcpy(app, bdata(sig->title.app), MAX_APP); } if (sig->title.ver != NULL) { if (sig->title.ver->slen > 0) { strcat(app, " "); strlcat(app, bdata(sig->title.ver), MAX_VER); } } if (sig->title.misc != NULL) { if (sig->title.misc->slen > 0) { strcat(app, " ("); strlcat(app, bdata(sig->title.misc), MAX_MISC); strcat(app, ")"); } } /* Replace $1, $2, etc. with the appropriate substring. */ while (app[i] != '\0' && z < (sizeof(sub) - 1)) { /* Check to see if the string contains a $? mark variable. */ if (app[i] == '$') { /* Yes it does, replace it with the appropriate match string. */ i++; n = atoi(&app[i]); pcre_copy_substring(payload, ovector, rc, n, expr, sizeof(expr)); x = 0; while (expr[x] != '\0' && z < (sizeof(sub) - 1)) { sub[z] = expr[x]; z++; x++; } for (x = 0; x < sizeof(expr); x++) expr[x] = '\0'; i++; } else { /* No it doesn't, copy to new string. */ sub[z] = app[i]; i++; z++; } } sub[z] = '\0'; retval = bstrcpy(bfromcstr(sub)); return retval; } /* ---------------------------------------------------------- * FUNCTION : end_identification * DESCRIPTION : This function will free the signatures * : data structure from memory. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ void end_identification() { Signature *next; /* Free records in signature_list (signature). */ while (signature_list != NULL) { next = signature_list->next; /* Free bstring allocations. */ if (signature_list->service != NULL) bdestroy(signature_list->service); if (signature_list->title.app != NULL) bdestroy(signature_list->title.app); if (signature_list->title.ver != NULL) bdestroy(signature_list->title.ver); if (signature_list->title.misc != NULL) bdestroy(signature_list->title.misc); /* Free Record */ if (signature_list != NULL) free (signature_list); signature_list = next; } } /* ---------------------------------------------------------- * FUNCTION : print_signature * DESCRIPTION : This function will print out all of the * : signatures stored in the signature data * : structure. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ #ifdef DEBUG void print_signature() { Signature *list = signature_list; int i = 1; if (list == NULL) printf("There are no signatures!\n"); while (list != NULL) { printf("[ %d ] ------------------\n", i); printf("1: %s\n", bdata(list->service)); printf("2a: %s\n", bdata(list->title.app)); printf("2b: %s\n", bdata(list->title.ver)); printf("2c: %s\n", bdata(list->title.misc)); printf("3: %s\n", list->regex); printf("\n"); i++; list = list->next; } } #endif /* DEBUG */ /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/monnet.c0000664000076400007640000001332410205143132011463 00000000000000/************************************************************************* * * monnet.c * * Matt Shelton * * This module contains function related to the storage and retrieval of * monitored networks. PADS will take a linked list of monitored networks * and determine whether or not an IP address falls within the network. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: monnet.c,v 1.3 2005/02/17 16:29:14 mattshelton Exp $ * **************************************************************************/ #include "monnet.h" struct mon_net *mn; /* ---------------------------------------------------------- * FUNCTION : parse_networks * DESCRIPTION : This function will parse the input from the * : '-n' switch and place it into a data * : structure. This input will be formated in * : the following format: * 192.168.0.0/24,10.10.10.0/16 * INPUT : 0 - Raw Input * RETURN : None! * ---------------------------------------------------------- */ void parse_networks (char *cmdline) { int i = 0; char network[16], netmask[3], tmp[16]; struct in_addr in_net; /* Make sure something was defined. */ if (cmdline == NULL) return; /* Parse Line */ for (;;) { /* End of Network */ if (*cmdline == '/') { tmp[i] = '\0'; strlcpy(network, tmp, sizeof(network)); tmp[0] = '\0'; i = 0; } else if (*cmdline == ' ') { /* Do nothing, just skip the space. */ /* End of Netmask, process string. */ } else if (*cmdline == ',' || *cmdline == '\0') { tmp[i] = '\0'; strlcpy(netmask, tmp, sizeof(netmask)); tmp[0] = '\0'; i = 0; /* Add to monnet data structure. */ add_monnet(network, netmask); /* Exit if it's the end of the string. */ if (*cmdline =='\0') break; } else { tmp[i] = *cmdline; i++; } *cmdline++; } } /* ---------------------------------------------------------- * FUNCTION : init_netmasks * DESCRIPTION : This function will load netmasks into an * : array. * INPUT : 0 - Array * RETURN : None! * ---------------------------------------------------------- */ void init_netmasks (unsigned int nm[33]) { nm[0] = 0x0; nm[1] = 0x80000000; nm[2] = 0xC0000000; nm[3] = 0xE0000000; nm[4] = 0xF0000000; nm[5] = 0xF8000000; nm[6] = 0xFC000000; nm[7] = 0xFE000000; nm[8] = 0xFF000000; nm[9] = 0xFF800000; nm[10] = 0xFFC00000; nm[11] = 0xFFE00000; nm[12] = 0xFFF00000; nm[13] = 0xFFF80000; nm[14] = 0xFFFC0000; nm[15] = 0xFFFE0000; nm[16] = 0xFFFF0000; nm[17] = 0xFFFF8000; nm[18] = 0xFFFFC000; nm[19] = 0xFFFFE000; nm[20] = 0xFFFFF000; nm[21] = 0xFFFFF800; nm[22] = 0xFFFFFC00; nm[23] = 0xFFFFFE00; nm[24] = 0xFFFFFF00; nm[25] = 0xFFFFFF80; nm[26] = 0xFFFFFFC0; nm[27] = 0xFFFFFFE0; nm[28] = 0xFFFFFFF0; nm[29] = 0xFFFFFFF8; nm[30] = 0xFFFFFFFC; nm[31] = 0xFFFFFFFE; nm[32] = 0xFFFFFFFF; } /* ---------------------------------------------------------- * FUNCTION : add_monnet * DESCRIPTION : This function will add a monitored network * : record to the specified data structure. * INPUT : 0 - (char *) Network * : 1 - (char *) Netmask * RETURN : None! * ---------------------------------------------------------- */ void add_monnet(char *network, char *netmask) { struct mon_net *rec, *data; struct in_addr net_addr; unsigned int netmasks[33]; int nmask; /* Fill netmasks variable. See init_netmasks in util.c. */ init_netmasks(netmasks); nmask = atoi(netmask); /* Ensure that the netmask is correct. */ if (nmask < 1 && nmask > 32) return; /* Ensure that the network is correct. */ if ((inet_aton(network, &net_addr)) != 1) return; /* Create structure array and assign data to it. */ rec = (struct mon_net*)malloc(sizeof(struct mon_net)); rec->netmask = htonl(netmasks[nmask]); rec->network = ((unsigned long) net_addr.s_addr & rec->netmask); rec->next = NULL; /* Find position within array and assign new data to it. */ if (mn == NULL) { mn = rec; } else { data = mn; while (data != NULL) { if (data->next == NULL) { data->next = rec; break; } else { data = data->next; } } } } /* ---------------------------------------------------------- * FUNCTION : check_monnet * DESCRIPTION : This function will check to see whether a * : specified IP address falls within the list * : of monitored networks. * INPUT : 0 - IP Address * RETURN : 0 - No, skip asset * : 1 - Yes, process asset * ---------------------------------------------------------- */ short check_monnet (const struct in_addr ip_addr) { struct mon_net *data; if (mn == NULL) { /* No monitored networks */ return 1; } else { /* Go through monitored networks. */ data = mn; while (data != NULL) { if ((ip_addr.s_addr & data->netmask) == data->network) { /* Found! */ return 1; } else { data = data->next; } } } /* Asset does not fall within a monitored network. */ return 0; } pads-1.2/src/output/0000777000076400007640000000000010254172540011447 500000000000000pads-1.2/src/output/output-screen.c0000664000076400007640000001051110206654465014354 00000000000000/************************************************************************* * output-screen.c * * Matt Shelton * * This output module writes PADS data to the screen. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output-screen.c,v 1.5 2005/02/22 16:09:25 mattshelton Exp $ * **************************************************************************/ #include "output-screen.h" /* ---------------------------------------------------------- * FUNCTION : setup_output_screen * DESCRIPTION : This function will register the output * : plugin. * INPUT : None! * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int setup_output_screen (void) { OutputPlugin *plugin; bstring name; /* Allocate and setup plugin data record. */ plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin)); plugin->name = bstrcpy(bfromcstr("screen")); plugin->init = init_output_screen; plugin->print_asset = print_asset_screen; plugin->print_arp = print_arp_asset_screen; plugin->print_stat = NULL; plugin->end = end_output_screen; /* Register plugin with input module. */ if ((register_output_plugin(plugin)) == -1) { if (plugin != NULL) free(plugin); log_message("warning: 'register_output_plugin' in function 'setup_output_screen' failed."); } return 0; } /* ---------------------------------------------------------- * FUNCTION : init_output_screen * DESCRIPTION : This output module will initialize output * : to the screen. * INPUT : None * RETURN : 0 - Success * : -1 - Error * --------------------------------------------------------- */ int init_output_screen (bstring args) { verbose_message("Initializing SCREEN output processor."); /* Nothing to intialize! */ return 0; } /* ---------------------------------------------------------- * FUNCTION : print_asset_screen * DESCRIPTION : This function will print the specified * : asset to the screen / output file. * INPUT : 0 - Port * : 1 - IP Address * : 2 - Service * : 3 - Application * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_asset_screen (Asset *rec) { /* Print to Screen */ fprintf(stdout, "[*] Asset Found: Port - %d / Host - %s / Service - %s / Application - %s\n", ntohs(rec->port), inet_ntoa(rec->ip_addr), bdata(rec->service), bdata(rec->application)); return 0; } /* ---------------------------------------------------------- * FUNCTION : print_arp_asset_screen * DESCRIPTION : This function will print out the ARP asset * : to the screen and to the report file. * INPUT : 0 - IP Address * : 1 - MAC Address * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_arp_asset_screen (ArpAsset *rec) { /* Print to Screen */ if(rec->mac_resolved != NULL) { fprintf(stdout, "[*] Asset Found: IP Address - %s / MAC Address - %s (%s)\n", inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr), bdata(rec->mac_resolved)); } else { fprintf(stdout, "[*] Asset Found: IP Address - %s / MAC Address - %s\n", inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr)); } return 0; } /* ---------------------------------------------------------- * FUNCTION : free_output_screen * DESCRIPTION : This function will free the memory declared * : by the screen output module. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ int end_output_screen () { verbose_message("Ending SCREEN Output Processor."); /* Nothing to end! */ return 0; } pads-1.2/src/output/output-csv.c0000664000076400007640000002165510206654465013703 00000000000000/************************************************************************* * output-csv.c * * Matt Shelton * * This output module writes PADS data to a CSV file. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output-csv.c,v 1.6 2005/02/22 16:09:25 mattshelton Exp $ * **************************************************************************/ #include "output-csv.h" OutputCSVConf output_csv_conf; /* ---------------------------------------------------------- * FUNCTION : setup_output_csv * DESCRIPTION : This function will register the output * : plugin. * INPUT : None! * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int setup_output_csv (void) { OutputPlugin *plugin; bstring name; /* Allocate and setup plugin data record. */ plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin)); plugin->name = bstrcpy(bfromcstr("csv")); plugin->init = init_output_csv; plugin->print_asset = print_asset_csv; plugin->print_arp = print_arp_asset_csv; plugin->print_stat = NULL; plugin->end = end_output_csv; /* Register plugin with input module. */ if ((register_output_plugin(plugin)) == -1) { if (plugin != NULL) free(plugin); log_message("warning: 'register_output_plugin' in function 'setup_output_csv' failed."); } return 0; } /* ---------------------------------------------------------- * FUNCTION : init_output_csv * DESCRIPTION : This function will initialize the output * : CSV file. If the file already exists, it * : will read in the file and add each asset * : to the asset data structure. * INPUT : 0 - CSV filename * RETURN : None! * --------------------------------------------------------- */ int init_output_csv (bstring filename) { FILE *fp; verbose_message("Initializing CSV output plugin."); /* Make sure filename isn't NULL. */ if (filename != NULL) output_csv_conf.filename = bstrcpy(filename); else output_csv_conf.filename = bstrcpy(bfromcstr("assets.csv")); /* Check to see if *filename exists. */ if ((fp = fopen(bdata(output_csv_conf.filename), "r")) == NULL) { /* File does not exist, create new.. */ if ((output_csv_conf.file = fopen(bdata(output_csv_conf.filename), "w")) != NULL) { fprintf(output_csv_conf.file, "asset,port,proto,service,application,discovered\n"); } else { err_message("Cannot open file %s!", bdata(output_csv_conf.filename)); } } else { /* File does exist, read it into data structure. */ fclose(fp); read_report_file(); /* Open file and assign it to the global FILE pointer. */ if ((output_csv_conf.file = fopen(bdata(output_csv_conf.filename), "a")) == NULL) { err_message("Cannot open file %s!", bdata(output_csv_conf.filename)); } } return; } /* ---------------------------------------------------------- * FUNCTION : read_report_file * DESCRIPTION : This function will read in a specified * : report CSV file. It will then break a part * : the line and add the assets to the * : specified asset data structure. * INPUT : None * RETURN : None * ---------------------------------------------------------- */ void read_report_file (void) { FILE *fp; bstring filedata; struct bstrList *lines; int i; printf("[-] Processing Existing %s\n", bdata(output_csv_conf.filename)); /* Open Signature File */ if ((fp = fopen(bdata(output_csv_conf.filename), "r")) == NULL) { err_message("Unable to open CSV file - %s", bdata(output_csv_conf.filename)); } /* Read file into 'filedata' and process it accordingly. */ filedata = bread ((bNread) fread, fp); if ((lines = bsplit(filedata, '\n')) != NULL) { for (i = 0; i < lines->qty; i++) { parse_raw_report(lines->entry[i]); } } /* Clean Up */ bdestroy(filedata); bstrListDestroy(lines); close(fp); } /* ---------------------------------------------------------- * FUNCTION : parse_raw_report * DESCRIPTION : This function will parse through a single * : line of the CSV file. * INPUT : 0 - Raw Line * RETURN : 0 - Sucess * : -1 - Error * ---------------------------------------------------------- */ int parse_raw_report (bstring line) { struct bstrList *list; int ret = 0; /* Temporary Storage */ struct in_addr ip_addr; char mac_addr[MAC_LEN]; int port; int proto; bstring service; bstring application; time_t discovered; /* Check to see if this line has something to read. */ if (line->data[0] == '\0' || line->data[0] == '#') return; /* Break line apart. */ if ((list = bsplit(line, ',')) == NULL) return -1; /* Check to see if this line contains the header. */ if ((biseqcstr(list->entry[0], "asset")) == 1) { if (list != NULL) bstrListDestroy(list); return -1; } /* Place data from 'list' into temporary data storage. */ if ((inet_aton(bdata(list->entry[0]), &ip_addr)) == -1) ret = -1; if ((port = htons(atoi(bdata(list->entry[1])))) == -1) ret = -1; if ((proto = atoi(bdata(list->entry[2]))) == -1) ret = -1; if ((service = bstrcpy(list->entry[3])) == NULL) ret = -1; if ((application = bstrcpy(list->entry[4])) == NULL) ret = -1; if ((discovered = atol(bdata(list->entry[5]))) == -1) ret = -1; /* Make sure that this line contains 'good' data. */ if (service->slen == 0 || application->slen == 0 || discovered <= 0) ret = -1; /* Add Asset to Data Structure */ if (proto == 0 && ret != -1) { /* ARP */ mac2hex(bdata(application), mac_addr, MAC_LEN); add_arp_asset(ip_addr, mac_addr, discovered); } else { /* Everything Else */ add_asset(ip_addr, port, proto, service, application, discovered); } // Clean Up if (list != NULL) bstrListDestroy(list); if (service != NULL) bdestroy(service); if (application != NULL) bdestroy(application); return ret; } /* ---------------------------------------------------------- * FUNCTION : print_asset_csv * DESCRIPTION : This function will print an asset to the * : CSV file. * INPUT : 0 - Port * : 1 - IP Address * : 2 - Protocol * : 3 - Service * : 4 - Application * : 5 - Discovered * RETURN : 0 - Success * : -1 - Failure * ---------------------------------------------------------- */ int print_asset_csv (Asset *rec) { if (output_csv_conf.file != NULL) { if (gc.hide_unknowns == 0 || ((biseqcstr(rec->service, "unknown") != 0) && (biseqcstr(rec->application, "unknown") != 0))) { fprintf(output_csv_conf.file, "%s,%d,%d,%s,%s,%d\n", inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, bdata(rec->service), bdata(rec->application), rec->discovered); fflush(output_csv_conf.file); } } else { fprintf(stderr, "[!] ERROR: File handle not open!\n"); return -1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : print_arp_asset_csv * DESCRIPTION : This function will print an ARP asset to * : the CSV file. * INPUT : 0 - IP Address * : 1 - MAC Address * : 2 - MAC Resolved * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_arp_asset_csv (ArpAsset *rec) { /* Print to File */ if (output_csv_conf.file != NULL) { if (rec->mac_resolved != NULL) { fprintf(output_csv_conf.file, "%s,0,0,ARP (%s),%s,%d\n", inet_ntoa(rec->ip_addr), bdata(rec->mac_resolved), hex2mac(rec->mac_addr), rec->discovered); } else { fprintf(output_csv_conf.file, "%s,0,0,ARP,%s,%d\n", inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr), rec->discovered); } fflush(output_csv_conf.file); } else { fprintf(stderr, "[!] ERROR: File handle not open!\n"); return -1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : end_output_csv * DESCRIPTION : This function will free the memory declared * : by the screen output module. * INPUT : None! * OUTPUT : None! * ---------------------------------------------------------- */ int end_output_csv () { verbose_message("Ending CSV Output Plugin."); verbose_message("Closing CSV File."); if (output_csv_conf.file != NULL) fclose(output_csv_conf.file); if (output_csv_conf.filename != NULL) bdestroy(output_csv_conf.filename); } pads-1.2/src/output/Makefile.in0000664000076400007640000002560510254172225013442 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ SOURCES = $(liboutput_a_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ subdir = src/output DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru liboutput_a_AR = $(AR) $(ARFLAGS) liboutput_a_LIBADD = am_liboutput_a_OBJECTS = output.$(OBJEXT) output-screen.$(OBJEXT) \ output-csv.$(OBJEXT) output-fifo.$(OBJEXT) liboutput_a_OBJECTS = $(am_liboutput_a_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = am__depfiles_maybe = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(liboutput_a_SOURCES) DIST_SOURCES = $(liboutput_a_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ # $Id: Makefile.am,v 1.1 2005/02/10 06:05:06 mattshelton Exp $ AUTOMAKE_OPTIONS = foreign no-dependencies noinst_LIBRARIES = liboutput.a liboutput_a_SOURCES = output.c output.h \ output-screen.c output-screen.h \ output-csv.c output-csv.h \ output-fifo.c output-fifo.h INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/lib all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/output/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign src/output/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) liboutput.a: $(liboutput_a_OBJECTS) $(liboutput_a_DEPENDENCIES) -rm -f liboutput.a $(liboutput_a_AR) liboutput.a $(liboutput_a_OBJECTS) $(liboutput_a_LIBADD) $(RANLIB) liboutput.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .c.o: $(COMPILE) -c $< .c.obj: $(COMPILE) -c `$(CYGPATH_W) '$<'` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -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-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-info-am # 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: pads-1.2/src/output/output-fifo.h0000664000076400007640000000367410205277575014043 00000000000000/************************************************************************* * output-fifo.h * * Matt Shelton * * This output module will write data to a FIFO named pipe. This will * allow external applications access to PADS data in real-time. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output-fifo.h,v 1.3 2005/02/18 05:39:09 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ /* INCLUDES ---------------------------------------- */ #include #include #include "output.h" /* TYPEDEFS ---------------------------------------- */ typedef struct _OutputFIFOConf { FILE *file; /* File Reference */ bstring filename; /* File's OS name */ } OutputFIFOConf; /* GLOBAL VARIABLES -------------------------------- */ /* PROTOTYPES -------------------------------------- */ int init_output_fifo (bstring fifo_file); int print_asset_fifo (Asset *rec); int print_arp_asset_fifo (ArpAsset *rec); int print_stat_fifo (Asset *rec); int end_output_fifo (void); pads-1.2/src/output/output-fifo.c0000664000076400007640000001546210206654465014032 00000000000000/************************************************************************* * output-fifo.c * * Matt Shelton * * This output module will write data to a FIFO named pipe. This will * allow external applications access to PADS data in real-time. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output-fifo.c,v 1.6 2005/02/22 16:09:25 mattshelton Exp $ * **************************************************************************/ #include "output-fifo.h" /* * MODULE NOTES * * This module will write asset data to a FIFO special file. This will * separate the detection engine from the IO module and increase the * overall speed of the system. * * Output written to the FIFO will be in comma separated format and will * begin with an action_id field. This field will allow different types * of output to be written to the FIFO. * * action_id action * 01 TCP / ICMP Asset Discovered * 02 ARP Asset Discovered * 03 TCP / ICMP Statistic Information * * The following lines contains an example of the data written to the * FIFO: * * 01,10.10.10.83,22,6,ssh,OpenSSH 3.8.1 (Protocol 2.0),1100846817 * 02,10.10.10.81,3Com 3CRWE73796B,00:50:da:5a:2d:ae,1100846817 * 03,10.10.10.83,22,6,1100847309 * */ OutputFIFOConf output_fifo_conf; /* ---------------------------------------------------------- * FUNCTION : setup_output_fifo * DESCRIPTION : This function will register the output * : plugin. * INPUT : None! * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int setup_output_fifo (void) { OutputPlugin *plugin; bstring name; /* Allocate and setup plugin data record. */ plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin)); plugin->name = bstrcpy(bfromcstr("fifo")); plugin->init = init_output_fifo; plugin->print_asset = print_asset_fifo; plugin->print_arp = print_arp_asset_fifo; plugin->print_stat = print_stat_fifo; plugin->end = end_output_fifo; /* Register plugin with input module. */ if ((register_output_plugin(plugin)) == -1) { if (plugin != NULL) free(plugin); log_message("warning: 'register_output_plugin' in function 'setup_output_fifo' failed."); } return 0; } /* ---------------------------------------------------------- * FUNCTION : init_output_fifo * DESCRIPTION : This function will initialize the FIFO * : file. * INPUT : 0 - FIFO filename * RETURN : None! * --------------------------------------------------------- */ int init_output_fifo (bstring fifo_file) { FILE *fp; register u_int len = 0; char *filename; verbose_message("Initializing FIFO output plugin."); /* Make sure report_file isn't NULL. */ if (fifo_file == NULL) fifo_file = bstrcpy(bfromcstr("pads.fifo")); output_fifo_conf.filename = bstrcpy(fifo_file); mkfifo (bdata(fifo_file), S_IFIFO | 0755); verbose_message("Open FIFO File\n"); if ((output_fifo_conf.file = fopen(bdata(fifo_file), "w+")) == NULL) err_message("Unable to open FIFO file (%s)!\n", bdata(fifo_file)); return; } /* ---------------------------------------------------------- * FUNCTION : print_asset_fifo * DESCRIPTION : This function will print an asset to the * : FIFO file. * INPUT : 0 - Port * : 1 - IP Address * : 2 - Protocol * : 3 - Service * : 4 - Application * : 5 - Discovered * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_asset_fifo (Asset *rec) { if (output_fifo_conf.file != NULL) { if (gc.hide_unknowns == 0 || ((biseq(rec->service, bfromcstr("unknown")) != 0) && (biseq(rec->application, bfromcstr("unknown")) != 0))) { fprintf(output_fifo_conf.file, "01,%s,%d,%d,%s,%s,%d\n", inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, bdata(rec->service), bdata(rec->application), rec->discovered); fflush(output_fifo_conf.file); } } else { fprintf(stderr, "[!] ERROR: File handle not open!\n"); return -1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : print_arp_asset_fifo * DESCRIPTION : This function will print an ARP asset to * : the FIFO file. * INPUT : 0 - IP Address * : 1 - MAC Address * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_arp_asset_fifo (ArpAsset *rec) { /* Print to File */ if (output_fifo_conf.file != NULL) { if (rec->mac_resolved != NULL) { fprintf(output_fifo_conf.file, "02,%s,%s,%s,%d\n", inet_ntoa(rec->ip_addr), rec->mac_resolved, hex2mac(&rec->mac_addr), rec->discovered); } else { fprintf(output_fifo_conf.file, "02,%s,unknown,%s,%d\n", inet_ntoa(rec->ip_addr), hex2mac(&rec->mac_addr), rec->discovered); } fflush(output_fifo_conf.file); } else { fprintf(stderr, "[!] ERROR: File handle not open!\n"); return -1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : print_stat_fifo * DESCRIPTION : This function will print statistic * : information to the FIFO file. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Protocol * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_stat_fifo (Asset *rec) { if (output_fifo_conf.file != NULL) { fprintf(output_fifo_conf.file, "03,%s,%d,%d,%d\n", inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, time(NULL)); fflush(output_fifo_conf.file); } else { fprintf(stderr, "[!] ERROR: File handle not open!\n"); return -1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : end_output_fifo * DESCRIPTION : This function will free the memory declared * : by the fifo output module. * INPUT : None * OUTPUT : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int end_output_fifo () { verbose_message("Ending CSV Output Plugin."); verbose_message("Closing FIFO File."); fclose(output_fifo_conf.file); /* Clean Up */ if (output_fifo_conf.filename) bdestroy(output_fifo_conf.filename); return 0; } pads-1.2/src/output/output.c0000664000076400007640000002016010205277575013102 00000000000000/************************************************************************* * output.c * * Matt Shelton * * This module contains the output mechanism for PADS. It will control * all asset data leaving the application. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output.c,v 1.3 2005/02/18 05:39:09 mattshelton Exp $ * **************************************************************************/ #include "output.h" /* Global Variables */ OutputPluginList *output_plugin_list; /* ---------------------------------------------------------- * FUNCTION : init_output() * DESCRIPTION : This function will initialize the output * : module. It will register each output * : plugin with the output_plugin_list data * : structure. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ void init_output() { /* Load Screen Plug-in */ setup_output_screen(); /* Load CSV Plug-in */ setup_output_csv(); /* Load FIFO Plug-in */ setup_output_fifo(); } /* ---------------------------------------------------------- * FUNCTION : register_output_plugin * DESCRIPTION : This function will be called by each output * : plugin. It will register the plugin with * : the output module. * INPUT : 0 - OutputPlugin Data Structure * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int register_output_plugin (OutputPlugin *plugin) { OutputPluginList *head, *list; if (plugin == NULL) return -1; /* Create OutputPluginList Record */ list = (OutputPluginList*)malloc(sizeof(OutputPluginList)); list->plugin = plugin; list->active = 0; /* Place plugin in data structure. */ if (output_plugin_list == NULL) { output_plugin_list = list; } else { head = output_plugin_list; while (head != NULL) { if (head->next == NULL) { head->next = list; break; } else { head = head->next; } } } return 0; } /* ---------------------------------------------------------- * FUNCTION : activate_output_plugin * DESCRIPTION : This function will set the active bit on * : the specified output plugin. Afterwards, * : it will run the init() function for the * : plugin. * INPUT : 0 - Plugin Name * : 1 - Arguments * RETURN : 0 - Success * : -1 - Failure * ---------------------------------------------------------- */ int activate_output_plugin (bstring name, bstring args) { OutputPluginList *list; OutputPlugin *plugin; /* Search 'output_plugin_list' for this output processor. */ list = output_plugin_list; while (list != NULL) { plugin = list->plugin; /* Compare this record's name with the name passed to the function. */ if ((biseq(plugin->name, name)) == 1) { /* MATCH! Set record to active and run 'init' function. */ list->active = 1; if (plugin != NULL && plugin->init != NULL) (*plugin->init)(args); break; } list = list->next; } return 0; } /* ---------------------------------------------------------- * FUNCTION : print_asset * DESCRIPTION : This function is an interface between the * : output modules and the rest of the PADS * : application. It will print out a standard * : asset. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Proto * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int print_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto) { OutputPluginList *head; Asset *rec; rec = (Asset *)find_asset(ip_addr, port, proto); /* Make sure that a record was found. */ if (rec == NULL) return; /* Cycle through output plugins and print to those that are active. */ head = output_plugin_list; while (head != NULL) { /* Only print to active plugins. */ if (head->active == 1) { if (head->plugin->print_asset) (*head->plugin->print_asset)(rec); } head = head->next; } return 0; } /* ---------------------------------------------------------- * FUNCTION : print_arp_asset * DESCRIPTION : This function is an interface between the * : output modules and the rest of the PADS * : application. It will print out a standard * : asset. * INPUT : 0 - IP Address * : 1 - MAC Address * RETURN : None! * ---------------------------------------------------------- */ int print_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN]) { OutputPluginList *head; /* Find Asset */ ArpAsset *list; ArpAsset *rec; list = (ArpAsset *)get_arp_pointer(); while (list != NULL) { if (ip_addr.s_addr == list->ip_addr.s_addr && (strcmp(mac_addr, list->mac_addr) == 0)) { /* Found! */ rec = list; break; } else { list = list->next; } } /* Make sure that a record was found. */ if (rec == NULL) return; /* Cycle through output plugins and print to those that are active. */ head = output_plugin_list; while (head != NULL) { /* Only print to active plugins. */ if (head->active == 1) { if (head->plugin->print_arp) (*head->plugin->print_arp)(rec); } head = head->next; } return 0; } /* ---------------------------------------------------------- * FUNCTION : print_stat * DESCRIPTION : This function will print connection * : information. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Proto * RETURN : -1 - Error * ---------------------------------------------------------- */ int print_stat(struct in_addr ip_addr, u_int16_t port, unsigned short proto) { OutputPluginList *head; Asset *rec; rec = (Asset *)find_asset(ip_addr, port, proto); /* Make sure that a record was found. */ if (rec == NULL) return -1; /* Cycle through output plugins and print to those that are active. */ head = output_plugin_list; while (head != NULL) { /* Only print to active plugins. */ if (head->active == 1) { if (head->plugin->print_stat) (*head->plugin->print_stat)(rec); } head = head->next; } return 0; } /* ---------------------------------------------------------- * FUNCTION : end_output * DESCRIPTION : This function will shutdown the output * : module. * INPUT : None * RETURN : None * ---------------------------------------------------------- */ void end_output (void) { OutputPluginList *head, *next; OutputPlugin *tmp; /* Run the 'end' function for each active plugin. */ head = output_plugin_list; while (head != NULL) { /* Only run active output plugins. */ if (head->active == 1) { tmp = head->plugin; if (tmp != NULL && tmp->end != NULL) (*tmp->end)(); } head = head->next; } tmp = NULL; /* Free the 'output_plugin_list' data structure. */ while (output_plugin_list != NULL) { next = output_plugin_list->next; /* Free OutputPlugin Record */ tmp = output_plugin_list->plugin; if (tmp != NULL && tmp->name != NULL) bdestroy(tmp->name); if (tmp != NULL) free(tmp); /* Free OutputPluginList Record */ free(output_plugin_list); output_plugin_list = next; } } #ifdef DEBUG int debug_output_list (void) { OutputPluginList *head, *head2; OutputPlugin *tmp, *tmp2; int i = 1; printf("output_plugin_list:\n"); head = output_plugin_list; while (head != NULL) { tmp = head->plugin; printf("D1: %d - (%d) - %s\n", i, head->active, bdata(tmp->name)); i++; head = head->next; } return 0; } #endif pads-1.2/src/output/output-csv.h0000664000076400007640000000370210205277575013703 00000000000000/************************************************************************* * output.h * * Matt Shelton * * This module contains the output mechanism for PADS. It will control * all asset data leaving the application. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output-csv.h,v 1.3 2005/02/18 05:39:09 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ /* INCLUDES ---------------------------------------- */ #include #include "output.h" /* TYPEDEFS ---------------------------------------- */ typedef struct _OutputCSVConf { FILE *file; bstring filename; } OutputCSVConf; /* GLOBAL VARIABLES -------------------------------- */ /* extern _OutputCSVConf OutputCSVConf; */ /* PROTOTYPES -------------------------------------- */ int setup_output_csv (void); int init_output_csv (bstring filename); void read_report_file (void); int parse_raw_report (bstring line); int print_asset_csv (Asset *rec); int print_arp_asset_csv (ArpAsset *rec); int end_output_csv (void); pads-1.2/src/output/output.h0000664000076400007640000000542110205277575013112 00000000000000/************************************************************************* * output.h * * Matt Shelton * * This module contains the output mechanism for PADS. It will control * all asset data leaving the application. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output.h,v 1.3 2005/02/18 05:39:09 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ /* INCLUDES ---------------------------------------- */ #include #include "global.h" /* DATA STRUCTURES --------------------------------- */ /* -------------------------------------------------------------------------- * OutputPlugin: This data structure defines a single output processor. * -------------------------------------------------------------------------- */ typedef struct _OutputPlugin { bstring name; int (*init) (bstring args); int (*print_asset) (Asset *rec); int (*print_arp) (ArpAsset *rec); int (*print_stat) (Asset *rec); int (*end) (void); } OutputPlugin; /* -------------------------------------------------------------------------- * OutputPluginList: This data structure stores a list of output plugins. * -------------------------------------------------------------------------- */ typedef struct _OutputPluginList { int active; /* Active: 0 = disable, 1 = active */ OutputPlugin *plugin; /* Output Processor */ struct _OutputPluginList *next; } OutputPluginList; /* PROTOTYPES -------------------------------------- */ void init_output(); int register_output_plugin (OutputPlugin *plugin); int activate_output_plugin (bstring name, bstring args); int print_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto); int print_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN]); int print_stat(struct in_addr ip_addr, u_int16_t port, unsigned short proto); void end_output (void); pads-1.2/src/output/output-screen.h0000664000076400007640000000342110205277575014365 00000000000000/************************************************************************* * output.h * * Matt Shelton * * This module contains the output mechanism for PADS. It will control * all asset data leaving the application. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: output-screen.h,v 1.3 2005/02/18 05:39:09 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ /* INCLUDES ---------------------------------------- */ #include #include "output.h" /* TYPEDEFS ---------------------------------------- */ typedef struct _OutputCSVConf { FILE *file; } OutputCSVConf; /* PROTOTYPES -------------------------------------- */ int setup_output_screen (void); int init_output_screen (bstring args); int print_asset_screen (Asset *rec); int print_arp_asset_screen (ArpAsset *rec); int end_output_screen (void); pads-1.2/src/output/Makefile.am0000664000076400007640000000060310202574622013420 00000000000000# $Id: Makefile.am,v 1.1 2005/02/10 06:05:06 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies noinst_LIBRARIES = liboutput.a liboutput_a_SOURCES = output.c output.h \ output-screen.c output-screen.h \ output-csv.c output-csv.h \ output-fifo.c output-fifo.h INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/lib pads-1.2/src/pads.h0000664000076400007640000000444310214167214011130 00000000000000/************************************************************************* * pads.h * * Matt Shelton * * The purpose of this system is to determine network assets by passively * listening to network traffic. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: pads.h,v 1.4 2005/03/11 01:04:12 mattshelton Exp $ * **************************************************************************/ /* DEFINES ----------------------------------------- */ #ifdef LINUX #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif #endif /* ifdef LINUX */ #define I_ATTEMPTS 4 /* INCLUDES ---------------------------------------- */ #include #include #include #include #include "global.h" /* TYPEDEFS ---------------------------------------- */ typedef void (*proc_t)(const struct pcap_pkthdr *, const u_char *); /* PROTOTYPES -------------------------------------- */ void process_pkt(u_char *args, const struct pcap_pkthdr* pkthdr, const u_char* packet); void set_processor (pcap_t *this_handle); void print_header(void); void print_usage(void); void print_version(void); void init_pads(void); void main_pads(void); void end_pads(void); void sig_term_handler(int signal); void sig_int_handler(int signal); void sig_quit_handler(int signal); void sig_hup_handler(int signal); /* packet.h LLC prototypes */ void process_eth (const struct pcap_pkthdr* pkthdr, const u_char* packet); void process_sll (const struct pcap_pkthdr* pkthdr, const u_char* packet); /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/packet.c0000664000076400007640000001742610204523067011451 00000000000000/************************************************************************* * * packet.c * * Matt Shelton * * This module contains functions related to packet processing. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: packet.c,v 1.3 2005/02/16 01:47:35 mattshelton Exp $ * **************************************************************************/ #include "packet.h" /* ---------------------------------------------------------- * FUNCTION : process_eth * DESCRIPTION : This function will decode and process the * : ethernet contents of a packet. * INPUT : 0 - PCAP Packet Header * : 1 - Packet * RETURN : None! * ---------------------------------------------------------- */ void process_eth (const struct pcap_pkthdr* pkthdr, const u_char* packet) { struct ether_header *ethh; /* net/ethernet.h */ /* Extract the ethernet header from the packet. */ ethh = (struct ether_header*) packet; /* Determine what type of ethernet packet this is. */ switch (ntohs(ethh->ether_type)) { /* IP */ case ETHERTYPE_IP: process_ip (pkthdr, packet, sizeof(struct ether_header)); break; /* ARP */ case ETHERTYPE_ARP: process_arp (pkthdr, packet, sizeof(struct ether_header)); break; /* Unknown Type */ default: return; } return; } /* ---------------------------------------------------------- * FUNCTION : process_sll * DESCRIPTION : This function will decode and process the * : SLL contents of a packet. * INPUT : 0 - PCAP Packet Header * : 1 - Packet * RETURN : None! * ---------------------------------------------------------- */ #ifdef DLT_LINUX_SLL void process_sll (const struct pcap_pkthdr* pkthdr, const u_char* packet) { struct sll_header *sllh; /* Extract the sll header from the packet. */ sllh = (struct sll_header*) packet; /* Determine what type of sll packet this is. */ switch(ntohs(sllh->sll_protocol)) { /* IP */ case ETHERTYPE_IP: process_ip (pkthdr, packet, sizeof(struct sll_header)); break; /* ARP */ case ETHERTYPE_ARP: process_arp (pkthdr, packet, sizeof(struct sll_header)); break; /* Unknown Protocol */ default: return; } return; } #endif /* DLT_LINUX_SLL */ /* ---------------------------------------------------------- * FUNCTION : process_ip * DESCRIPTION : This function will decode and process the * : IP contents of a packet. * INPUT : 0 - PCAP Packet Header * : 1 - Packet * : 2 - IP Starting Point * RETURN : None! * ---------------------------------------------------------- */ void process_ip (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len) { struct ip *iph; /* netinet/ip.h */ /* Extract the IP header from this packet. */ iph = (struct ip*)(packet + len); /* Determine what type of IP packet this is. */ switch (iph->ip_p) { case IPPROTO_TCP: /* TCP */ process_tcp(pkthdr, packet, (len + sizeof(struct ip)), iph->ip_src, iph->ip_dst); break; case IPPROTO_ICMP: /* ICMP */ process_icmp(pkthdr, packet, (len + sizeof(struct ip)), iph->ip_src, iph->ip_dst); break; default: /* Unsupported Protocol */ return; } return; } /* ---------------------------------------------------------- * FUNCTION : process_arp * DESCRIPTION : This function will decode and process the * : ARP contents of a packet. * INPUT : 0 - PCAP Packet Header * : 1 - Packet * : 2 - ARP Starting Point * RETURN : None! * ---------------------------------------------------------- */ void process_arp (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len) { struct ether_arp *arph; struct in_addr ip_addr; arph = (struct ether_arp *)(packet + len); /* Process packet according to it's ARP type. */ switch (ntohs(arph->ea_hdr.ar_op)) { /* ARP Reply */ case ARPOP_REPLY: memcpy(&ip_addr.s_addr, arph->arp_spa, sizeof(u_int8_t) * 4); if (check_arp_asset(ip_addr, arph->arp_sha) == 1) { add_arp_asset(ip_addr, arph->arp_sha, 0); print_arp_asset (ip_addr, arph->arp_sha); } break; /* Unsupported ARP Packet */ default: return; } return; } /* ­--------------------------------------------------------- * FUNCTION : process_tcp * DESCRIPTION : This function will decode and process the * : TCP contents of a packet. * INPUT : 0 - PCAP Packet Header * : 1 - Packet * : 2 - TCP Starting Point * : 3 - Source IP Address * : 4 - Destination IP Address * RETURN : None! * ---------------------------------------------------------- */ void process_tcp (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len, const struct in_addr ip_src, const struct in_addr ip_dst) { struct tcphdr *tcph; /* netinet/tcp.h */ char *payload; tcph = (struct tcphdr *)(packet + len); /* Process packet according to it's TCP flags. */ switch (tcph->th_flags) { /* SYN-ACK: Server Connection */ case (TH_SYN + TH_ACK):{ /* Check to see if this falls within our monitored networks. */ if ((check_monnet(ip_src)) == 0) return; /* Skip FTP data connections. */ if((ntohs(tcph->th_dport) == 20) && (ntohs(tcph->th_sport) > 1024)) return; if((ntohs(tcph->th_dport) == 21) && (ntohs(tcph->th_sport) > 1024)) return; /* Check to see if this is a known asset. */ if(check_tcp_asset(ip_src, tcph->th_sport)) { add_asset(ip_src, tcph->th_sport, IPPROTO_TCP, bfromcstr("unknown"), bfromcstr("unknown"), 0); } else { /* Record connection for statistical purposes. */ print_stat(ip_src, tcph->th_sport, IPPROTO_TCP); } } break; case (TH_ACK): case (TH_ACK + TH_PUSH):{ /* * Check to see if this ACK packet needs to be * identified. */ payload = (u_char *)(packet + sizeof(struct tcphdr) + len); /* Attempt to identify this asset. */ if(tcp_identify(ip_src, tcph->th_sport, payload, (pkthdr->caplen - sizeof(struct tcphdr) - len)) == 1) { /* Dump banner if option specified (-d). */ if (gc.dump_file) pcap_dump((u_char *)gc.dumper, pkthdr, packet); } } break; /* DEFAULT: Return, pick up next packet. */ default: return; } return; } /* ­--------------------------------------------------------- * FUNCTION : process_icmp * DESCRIPTION : This function will decode and process the * : ICMP contents of a packet. * INPUT : 0 - PCAP Packet Header * : 1 - Packet * : 2 - TCP Starting Point * : 3 - Source IP Address * : 4 - Destination IP Address * RETURN : None! * ---------------------------------------------------------- */ void process_icmp (const struct pcap_pkthdr* pkthdr, const u_char* packet, unsigned int len, const struct in_addr ip_src, const struct in_addr ip_dst) { struct icmp *icmp; icmp = (struct icmp *)(packet + len); /* Check to see if this falls within our monitored networks. */ if ((check_monnet(ip_src)) == 0) return; if (icmp->icmp_type == ICMP_ECHOREPLY) { if(check_icmp_asset(ip_src)) { add_asset(ip_src, 0, IPPROTO_ICMP, bfromcstr("ICMP"), bfromcstr("ICMP"), 0); print_asset(ip_src, 0, IPPROTO_ICMP); } } return; } pads-1.2/src/configuration.c0000664000076400007640000001535110233714245013046 00000000000000/************************************************************************* * configuration.c * * Matt Shelton * * This module stores functions related to the configuration of the * pads project. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: configuration.c,v 1.3 2005/04/27 13:50:29 mattshelton Exp $ * **************************************************************************/ #include "configuration.h" /* Variable Declarations */ /* ---------------------------------------------------------- * FUNCTION : init_configuration * DESCRIPTION : This function will read in and process a * : specified configuration file. * INPUT : 0 - Config File * RETURN : None! * ---------------------------------------------------------- */ void init_configuration (bstring filename) { FILE *fp; bstring filedata; struct bstrList *lines; int i; verbose_message("config - Processing '%s'.", bdata(filename)); if ((fp = fopen(bdata(filename), "r")) == NULL) { err_message("Unable to open configuration file - %s", bdata(filename)); } /* Read file into 'filedata' and process it accordingly. */ filedata = bread ((bNread) fread, fp); if ((lines = bsplit(filedata, '\n')) != NULL) { for (i = 0; i < lines->qty; i++) { parse_line(lines->entry[i]); } } /* Clean Up */ bdestroy(filedata); bstrListDestroy(lines); close(fp); } /* ---------------------------------------------------------- * FUNCTION : parse_line * DESCRIPTION : This function will process a line of data * : from a configuration file. * INPUT : 0 - Line (bstring) * ---------------------------------------------------------- */ void parse_line (bstring line) { bstring param, value; struct bstrList *list; int i; /* Check to see if this line has something to read. */ if (line->data[0] == '\0' || line->data[0] == '#') return; /* Check to see if this line has a comment in it. */ if ((list = bsplit(line, '#')) != NULL) { if ((bassign(line, list->entry[0])) == -1) { log_message("warning: 'bassign' in function 'parse_line' failed."); } if (list != NULL) bstrListDestroy(list); } /* Seperate line into a parameter and a value. */ if ((i = bstrchr(line, ' ')) == BSTR_ERR) return; if ((param = bmidstr(line, 0, i)) == NULL) return; if ((value = bmidstr(line, i + 1, line->slen - i)) == NULL) return; /* Normalize Strings */ if ((btolower(param)) != 0) log_message("warning: 'btolower' in function 'parse_line' failed."); if ((bltrim(value)) != 0) log_message("warning: 'bltrim' in function 'parse_line' failed."); if ((brtrim(value)) != 0) log_message("warning: 'brtrim' in function 'parse_line' failed."); /* Do something based upon value. */ if ((biseqcstr(param, "daemon")) == 1) { /* DAEMON */ if (!gc.daemon_mode) { if (value->data[0] == '1') gc.daemon_mode = 1; else gc.daemon_mode = 0; } } else if ((biseqcstr(param, "pid_file")) == 1) { /* PID FILE */ gc.pid_file = bstrcpy(value); } else if ((biseqcstr(param, "sig_file")) == 1) { /* SIGNATURE FILE */ gc.sig_file = bstrcpy(value); } else if ((biseqcstr(param, "mac_file")) == 1) { /* MAC / VENDOR RESOLUTION FILE */ gc.mac_file = bstrcpy(value); } else if ((biseqcstr(param, "output")) == 1) { /* OUTPUT */ conf_module_plugin(value, &activate_output_plugin); } else if ((biseqcstr(param, "user")) == 1) { /* USER */ gc.priv_user = bstrcpy(value); } else if ((biseqcstr(param, "group")) == 1) { /* GROUP */ gc.priv_group = bstrcpy(value); } else if ((biseqcstr(param, "interface")) == 1) { /* INTERFACE */ gc.dev = bstr2cstr(value, '-'); } else if ((biseqcstr(param, "filter")) == 1) { /* FILTER */ gc.pcap_filter = bstr2cstr(value, '-'); } else if ((biseqcstr(param, "network")) == 1) { /* NETWORK */ parse_networks(bdata(value)); } verbose_message("config - PARAM: |%s| / VALUE: |%s|", bdata(param), bdata(value)); /* Clean Up */ if (param != NULL) bdestroy(param); if (value != NULL) bdestroy(value); } /* ---------------------------------------------------------- * FUNCTION : conf_module_plugin * DESCRIPTON : This function takes a string retrieved from * : the configuration file, breaks it in half * : at the ':', and then sends it to the * : appropriate function. * INPUT : 0 - Value * : 1 - Pointer to Function * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int conf_module_plugin (bstring value, int (*ptrFunc)(bstring, bstring)) { struct bstrList *list; if (*ptrFunc == NULL) return -1; /* Split line in half. There should only be one ':'. */ if ((list = bsplit(value, ':')) != NULL) { if (list->qty > 1) { /* Input processor contains an argument. */ if ((btrim(list->entry[1])) == -1) log_message("warning: 'btrim' in function 'conf_module_processor' faild."); if (((*ptrFunc)(list->entry[0], list->entry[1])) == -1) log_message("warning: 'ptrFunc' in function 'conf_module_processor' failed."); } else { /* Input processor does not contain an argument. */ if (((*ptrFunc)(list->entry[0], bfromcstr(""))) == -1) log_message("warning: 'ptrFunc' in function 'conf_module_processor' failed."); } if (list != NULL) bstrListDestroy(list); } else { log_message("warning: 'split' in function 'conf_module_processor' failed."); } return 0; } /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/storage.h0000664000076400007640000000500110204523067011635 00000000000000/************************************************************************* * storage.h * * Matt Shelton * * This header file contains information relating to the storage.c * module. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: storage.h,v 1.2 2005/02/16 01:47:35 mattshelton Exp $ * **************************************************************************/ /* INCLUDES ---------------------------------------- */ #include #include #include #include #include "global.h" #include #include /* DEFINES ----------------------------------------- */ #ifndef __FAVOR_BSD #define __FAVOR_BSD #endif #ifndef _BSD_SOURCE #define _BSD_SOURCE #endif /* PROTOTYPES -------------------------------------- */ int check_tcp_asset (struct in_addr ip_addr, u_int16_t port); int check_icmp_asset (struct in_addr ip_addr); int check_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN]); void add_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application, time_t discovered); void add_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN], time_t discovered); unsigned short get_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto); short update_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto, unsigned short i_attempts); short update_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application); inline Asset *find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto); Asset *get_asset_pointer (void); ArpAsset *get_arp_pointer (void); void end_storage (void); #ifdef DEBUG void print_database (); #endif /* DEBUG */ /* GLOBALS ----------------------------------------- */ pads-1.2/src/util.c0000664000076400007640000003212510214172343011146 00000000000000/************************************************************************* * * util.c * * Matt Shelton * * This module contains functions miscellaneous utility functions. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: util.c,v 1.6 2005/03/11 01:31:15 mattshelton Exp $ * **************************************************************************/ #include "util.h" /* ---------------------------------------------------------- * FUNCTION : strip_comment * DESCRIPTION : This function will strip out anything after * : a '#' within a field. * INPUT : 0 - String * RETURN : 1 - String * ---------------------------------------------------------- */ void strip_comment (char *string) { char *pos; while ((pos = (char *)strchr(string, '#')) != NULL) { while (*pos != '\r' && *pos != '\n' && *pos != '\0') { *pos++ = ' '; } } } /* ---------------------------------------------------------- * FUNCTION : chomp * DESCRIPTION : This function is similar to Perl's 'chomp' * : command. It will strip off the '\n' * : closest to the end of the string. * INPUT : 0 - String * : 1 - Size of String * RETURN : 0 - '\n' removed * : 1 - '\n' was never there * ---------------------------------------------------------- */ int chomp (char *string, int size) { for (size; size >= 0; size--) { if (string[size] == '\n') { string[size] = '\0'; return 1; } } return 0; } /* ---------------------------------------------------------- * FUNCTION : daemonize * DESCRIPTION : This function will place the application in * : the background. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ void daemonize () { pid_t pid; printf("[-] Daemonizing...\n"); pid = fork(); if (pid > 0) { /* Parent */ exit(0); } else if (pid < 0) { /* Error */ err_message("fork"); exit(0); } else { /* Child */ setsid(); close(0); close(1); close(2); } } /* ---------------------------------------------------------- * FUNCTION : init_pid_file * DESCRIPTION : This function will generate a file * : containing the application's PID. * INPUT : 0 - PID filename * RETURN : None! * ---------------------------------------------------------- */ void init_pid_file (bstring pid_file, bstring user, bstring group) { int pid; FILE *fp; struct group *this_group; struct passwd *this_user; /* Default PID File */ if (gc.pid_file->slen >= 0) gc.pid_file = bfromcstr("/var/run/pads.pid"); /* Create PID File */ if ((fp = fopen(bdata(gc.pid_file), "w")) != NULL) { pid = (int) getpid(); fprintf(fp, "%d\n", pid); fclose(fp); } else { err_message("Unable to create PID file (%s).\n", bdata(gc.pid_file)); } /* Change PID File's Ownership */ if (user == NULL || group == NULL) return; if ((this_group = getgrnam(bdata(group))) == NULL) err_message("'%s' group does not appear to exist.", bdata(group)); if ((this_user = getpwnam(bdata(user))) == NULL) err_message("'%s' user does not appear to exist.", bdata(user)); if ((chown(pid_file, this_user->pw_uid, this_group->gr_gid)) != 0) err_message("Unable to change PID file's ownership."); } /* ---------------------------------------------------------- * FUNCTION : copy_argv * DESCRIPTION : This function will flatten argv into a * : single string. This function was taken * : from the tcpdump source code. Hopefully * : someday I will get around to rewriting it. * INPUT : 0 - argv * ---------------------------------------------------------- */ char *copy_argv(register char **argv) { register char **p; register u_int len = 0; char *buf; char *src, *dst; p = argv; if (*p == 0) return 0; while (*p) len += strlen(*p++) + 1; buf = (char *)malloc(len); if (buf == NULL) { err_message("copy_argv: malloc"); } p = argv; dst = buf; while ((src = *p++) != NULL) { while ((*dst++ = *src++) != '\0') ; dst[-1] = ' '; } dst[-1] = '\0'; return buf; } /* ---------------------------------------------------------- * FUNCTION : log_message * DESCRIPTION : This function is to be called whenever a * : message needs to be sent to the user. It * : will then determine whether to send the * : message to screen or syslog. * INPUT : 0 - Log Message * RETURN : None! * ---------------------------------------------------------- */ void log_message (const char *msg, ...) { va_list args; char buf[STD_BUF + 1]; va_start(args, msg); vsnprintf(buf, STD_BUF, msg, args); va_end(args); if (gc.daemon_mode == 1) { /* DAEMON: Print to Syslog */ if (msg[0] == '\n') return; syslog(LOG_DAEMON | LOG_NOTICE, "%s", buf); } else { /* STAND-ALONE: Print to Screen */ if (msg[0] == '\n') fprintf(stderr, "\n"); else fprintf(stderr, "[-] %s", buf); /* Add Newline */ if (*msg) { msg += strlen(msg); if (msg[-1] != '\n') fprintf(stderr, "\n"); } } } /* ---------------------------------------------------------- * FUNCTION : err_message * DESCRIPTION : This function is to be called whenever an * : error occurs within the program. * INPUT : 0 - Error Message * RETURN : None! * ---------------------------------------------------------- */ void err_message (const char *msg, ...) { va_list args; char buf[STD_BUF + 1]; va_start(args, msg); vsnprintf(buf, STD_BUF, msg, args); va_end(args); if (gc.daemon_mode == 1) { /* DAEMON: Print to Syslog */ syslog(LOG_DAEMON | LOG_ERR, "FATAL: %s", buf); } else { /* STAND-ALONE: Print to Screen */ fprintf(stderr, "[!] FATAL: %s", buf); /* Add Newline */ if (*msg) { msg += strlen(msg); if (msg[-1] != '\n') fprintf(stderr, "\n"); } } /* Exit according to whether the libpcap session was opened. */ if (gc.handle) { end_pads(); } else { exit(-1); } } /* ---------------------------------------------------------- * FUNCTION : verbose_message * DESCRIPTION : This function will print a verbose message * : to the console. * INPUT : 0 - Verbose Message * RETURN : None! * ---------------------------------------------------------- */ void verbose_message (const char *msg, ...) { va_list args; char buf[STD_BUF + 1]; if (gc.verbose != 1) return; va_start(args, msg); vsnprintf(buf, STD_BUF, msg, args); va_end(args); if (gc.daemon_mode != 1) { /* STAND-ALONE: Print to Screen */ fprintf(stderr, "[v] %s", buf); /* Add Newline */ if (*msg) { msg += strlen(msg); if (msg[-1] != '\n') fprintf(stderr, "\n"); } } } /* ---------------------------------------------------------- * FUNCTION : strlcpy * DESCRIPTION : Replacement for strncpy. This function is * : native in *BSD. This function was taken * : from Secure Programming Cookbook by * : O'Reilly. * INPUT : 0 - Destination String * : 1 - Source String * : 2 - Size * RETURN : Length of String Created * ---------------------------------------------------------- */ #ifndef HAVE_STRLCPY size_t strlcpy(char *dst, const char *src, size_t size) { char *dstptr = dst; size_t tocopy = size; const char *srcptr = src; if (tocopy && --tocopy) { do { if (!(*dstptr++ = *srcptr++)) break; } while (--tocopy); } if (!tocopy) { if (size) *dstptr = 0; while (*srcptr++); } return (srcptr - src - 1); } #endif /* ---------------------------------------------------------- * FUNCTION : strlcat * DESCRIPTION : Replacement for strcat. This function is * : native in *BSD. This function was taken * : from Secure Programming Cookbook by * : O'Reilly. * INPUT : 0 - Destination String * : 1 - Source String * : 2 - Size * RETURN : Length of String Created * ---------------------------------------------------------- */ #ifndef HAVE_STRLCAT size_t strlcat(char *dst, const char *src, size_t len) { char *dstptr = dst; size_t dstlen, tocopy; const char *srcptr = src; while (tocopy-- && *dstptr) dstptr++; dstlen = dstptr - dst; if (!(tocopy = len - dstlen)) return (dstlen + strlen(src)); while (*srcptr) { if (tocopy != 1) { *dstptr++ = *srcptr; tocopy--; } srcptr++; } *dstptr = 0; return (dstlen + (srcptr - src)); } #endif /* ---------------------------------------------------------- * FUNCTION : drop_privs * DESCRIPTION : This function will change the user and * : group of the application. * INPUT : 0 - New User * : 1 - New Group * RETURN : None! * ---------------------------------------------------------- */ void drop_privs (bstring newuser, bstring newgroup) { struct group *this_group; struct passwd *this_user; /* Only change root's privileges. */ if (!(getuid() == 0 || geteuid() == 0 || getgid() == 0 || getegid() == 0)) return; if (newuser == NULL || newgroup == NULL) return; if ((this_group = getgrnam(bdata(newgroup))) == NULL) err_message("'%s' group does not appear to exist.", bdata(newgroup)); if ((this_user = getpwnam(bdata(newuser))) == NULL) err_message("'%s' user does not appear to exist.", bdata(newuser)); /* Set Group */ #if !defined(LINUX) if ((setgid(this_group->gr_gid)) == -1) err_message("Unable to set Group ID!"); if ((setegid(this_group->gr_gid)) == -1) err_message("Unable to set Group ID!"); #else if ((setregid(this_group->gr_gid, this_group->gr_gid)) == -1) err_message("Unable to set Group ID!"); #endif /* Set User */ #if !defined(LINUX) if ((setuid(this_user->pw_uid)) == -1) err_message("Unable to set User ID!"); if ((seteuid(this_user->pw_uid)) == -1) err_message("Unable to set User ID!"); #else if ((setreuid(this_user->pw_uid, this_user->pw_uid)) == -1) err_message("Unable to set User ID!"); #endif } /* ---------------------------------------------------------- * FUNCTION : mac2hex * DESCRIPTION : Converts a string representation of a MAC * : address, based on non-portable ether_aton() * : This function was taken directly from * : the tcpreplay source code. * INPUT : 0 - MAC Address * : 1 - Converted * : 0 - Size of 1 * RETURN : None * ---------------------------------------------------------- */ void mac2hex(const char *mac, char *dst, int len) { int i; long l; char *pp; if (len < 6) return; while (isspace(*mac)) mac++; /* expect 6 hex octets separated by ':' or space/NUL if last octet */ for (i = 0; i < 6; i++) { l = strtol(mac, &pp, 16); if (pp == mac || l > 0xFF || l < 0) return; if (!(*pp == ':' || (i == 5 && (isspace(*pp) || *pp == '\0')))) return; dst[i] = (u_char) l; mac = pp + 1; } } /* ---------------------------------------------------------- * FUNCTION : hex2mac * DESCRIPTION : Converts a hex representation of a MAC * : address into an ASCII string. This is a * : more portable equivalent of 'ether_ntoa'. * INPUT : 0 - MAC Hex Address * RETURN : 0 - MAC Address String * ---------------------------------------------------------- */ char * hex2mac(unsigned const char *mac) { static char buf[18]; sprintf(buf, "%X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); return buf; } /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/mac-resolution.c0000664000076400007640000001457610241456131013144 00000000000000/************************************************************************* * * mac-resolution.c * * Dominique Karg * Matt Shelton * * This module will take MAC addresses from the libpcap stack and attempt * to translate them into a vendor code. Thanks go to Dominique for * coding this module! * * Copyright (C) 2004 Matt Shelton * Copyright (C) 2004 Dominique Karg * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: mac-resolution.c,v 1.5 2005/05/14 20:15:21 mattshelton Exp $ * **************************************************************************/ #ifndef DISABLE_VENDOR #include "mac-resolution.h" Vendor *vendor_list = NULL; /* ---------------------------------------------------------- * FUNCTION : init_mac_resolution * DESCRIPTION : This file reads in the MAC address table. * INPUT : None * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int init_mac_resolution (void) { FILE *fp; bstring filename; bstring filedata; struct bstrList *lines; int i; /* Check for a PADS_ETHER_CODES file within the current directory. */ if ((fp = fopen(PADS_ETHER_CODES, "r")) != NULL) { filename = bformat("./%s", PADS_ETHER_CODES); fclose(fp); } else if (gc.mac_file != NULL) { filename = bstrcpy(gc.mac_file); } else { filename = bformat("%s/%s", INSTALL_SYSCONFDIR, PADS_ETHER_CODES); } /* Open Signature File */ if ((fp = fopen(bdata(filename), "r")) == NULL) { err_message("Unable to open MAC resolution file - %s", bdata(filename)); } /* Read file into 'filedata' and process it accordingly. */ filedata = bread ((bNread) fread, fp); if ((lines = bsplit(filedata, '\n')) != NULL) { for (i = 0; i < lines->qty; i++) { parse_raw_mac(lines->entry[i]); } } /* Clean Up */ if (filename != NULL) bdestroy(filename); if (filedata != NULL) bdestroy(filedata); if (lines != NULL) bstrListDestroy(lines); close(fp); return 0; } /* ---------------------------------------------------------- * FUNCITON : parse_raw_mac * DESCRIPTION : This function will parse a line from the * : PADS_ETHER_CODES file and place it into the * : MAC resolution data structure. * INPUT : 0 - Raw Line * RETURN : 0 - Success * : -1 - Error * ---------------------------------------------------------- */ int parse_raw_mac (bstring line) { char mac[4]; char vendor[80]; int m1, m2, m3; int pos; /* Parse out the contents of the line. */ if (sscanf(bdata(line), "%02X:%02X:%02X %80[^,\n],\n", &m1, &m2, &m3, vendor) != 4) return -1; mac[0] = (char) (m1); mac[1] = (char) (m2); mac[2] = (char) (m3); mac[3] = 0; /* Add vendor to the vendor data structure. */ if ((add_vendor (mac, vendor)) == -1) { log_message("warning: 'add_vendor' in function 'parse_raw_mac' failed!\n"); return -1; } return 0; } /* ---------------------------------------------------------- * FUNCTION : add_vendor * DESCRIPTION : This function will add a MAC vendor to the * : vendor data structure. * INPUT : 0 - MAC Address (bstring) * : 1 - Vendor (bstring) * ---------------------------------------------------------- */ int add_vendor (char *mac, char *vendor){ Vendor *list; Vendor *rec; /* Assign data to temporary data structure. */ rec = (Vendor*) malloc (sizeof (Vendor)); rec->mac = *(int *) mac; rec->vendor = bfromcstr(vendor); rec->next = NULL; /* Place data structure in MAC address list. */ if(vendor_list == NULL) { vendor_list = rec; } else { list = vendor_list; while (list != NULL) { if (list->next == NULL) { list->next = rec; break; } else { list = list->next; } } } return 0; } /* ---------------------------------------------------------- * FUNCTION : get_vendor * DESCRIPTION : This function will retrieve the vendor name * : for a given MAC address. * INPUT : 0 - MAC Address * RETURN : Vendor Name * ---------------------------------------------------------- */ bstring get_vendor (char *m) { Vendor *list; char mac[4]; /* Prepare MAC for matching. */ mac[0] = *m++; mac[1] = *m++; mac[2] = *m; mac[3] = 0; /* Cycle through data structure looking for match. */ list = vendor_list; while (list != NULL) { if (list->mac == *(u_int *) mac) return list->vendor; list = list->next; } /* Nothing Found */ return NULL; } /* ---------------------------------------------------------- * FUNCTION : end_mac_resolution * DESCRIPTION : This function will shutdown the * : MAC resolution module. * INPUT : None * RETURN : None * ---------------------------------------------------------- */ void end_mac_resolution (void){ Vendor *list, *next; list = vendor_list; while (list != NULL) { next = list->next; if (list->vendor != NULL) bdestroy(list->vendor); if (list != NULL) free (list); list = next; } } #ifdef DEBUG void show_vendor (void){ Vendor *list; list = vendor_list; while(list != NULL) { printf("Mac: %s\nVendor: %s\n\n", list->mac, bdata(list->vendor)); list = list->next; } } #endif /* DEBUG */ #endif /* DISABLE_VENDOR */ /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4: */ pads-1.2/src/storage.c0000664000076400007640000003044710204523067011644 00000000000000/************************************************************************* * storage.c * * Matt Shelton * * This module contains functions related to the storage of assets. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: storage.c,v 1.3 2005/02/16 01:47:35 mattshelton Exp $ * **************************************************************************/ #include "storage.h" Asset *asset_list; ArpAsset *arp_asset_list; /* ---------------------------------------------------------- * FUNCTION : check_tcp_asset * DESCRIPTION : This function determines whether an asset * : has already been recorded. * INPUT : 0 - IP Address * : 1 - TCP port * RETURN : 0 - Asset Exists * : 1 - New Asset * ---------------------------------------------------------- */ int check_tcp_asset (struct in_addr ip_addr, u_int16_t port) { Asset *rec; /* Check the Asset data structure for an existing entry. */ rec = asset_list; while (rec != NULL) { if (rec->ip_addr.s_addr == ip_addr.s_addr && rec->port == port && rec->proto == IPPROTO_TCP) { return 0; } else { rec = rec->next; } } /* Asset not found, return 1 */ return 1; } /* ---------------------------------------------------------- * FUNCTION : check_icmp_asset * DESCRIPTION : This function determines whether an asset * : has already been recorded. * INPUT : 0 - IP Address * RETURN : 0 - Asset Exists * : 1 - New Asset * ---------------------------------------------------------- */ int check_icmp_asset (struct in_addr ip_addr) { Asset *rec; /* Check the Asset data stucture for an existing entry. */ rec = asset_list; while (rec != NULL) { if (rec->ip_addr.s_addr == ip_addr.s_addr && rec->proto == IPPROTO_ICMP) { return 0; } else { rec = rec->next; } } /* Asset not found, return 1 */ return 1; } /* ---------------------------------------------------------- * FUNCTION : check_arp_asset * DESCRIPTION : This function determines whether the ARP * : data for an asset has been recorded in the * : ARP data structure. * INPUT : 0 - IP Address * : 1 - MAC Address * RETURN : 0 - Asset Exists * : 1 - New Asset * ---------------------------------------------------------- */ int check_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN]) { ArpAsset *rec; /* Check the ARP data structure for an existing entry. */ rec = arp_asset_list; while (rec != NULL) { if (rec->ip_addr.s_addr == ip_addr.s_addr && (strcmp(rec->mac_addr, mac_addr) == 0)) { return 0; } else { rec = rec->next; } } /* Asset not found return 1 */ return 1; } /* ---------------------------------------------------------- * FUNCTION : add_asset * DESCRIPTION : This function will add an asset to the * : specified asset data structure. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Protocol * : 3 - Service * : 4 - Application * : 5 - Discovered * RETURN : None! * ---------------------------------------------------------- */ void add_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application, time_t discovered) { Asset *rec; Asset *list; /* Assign list to temp structure. */ rec = (Asset*)malloc(sizeof(Asset)); rec->ip_addr.s_addr = ip_addr.s_addr; rec->port = port; rec->proto = proto; rec->service = bstrcpy(service); rec->application = bstrcpy(application); rec->next = NULL; /* * If this device has been read from a report file, set * the discovered time to whatever is in the report. * Also, we don't want to try to identify this service * anymore (i_attempts = 0); */ if (!discovered) { rec->discovered = time(NULL); rec->i_attempts = I_ATTEMPTS; } else { rec->discovered = discovered; rec->i_attempts = 0; } /* * ICMP packets will not be identified, set i_attempts * to zero. */ if (proto == IPPROTO_ICMP) { rec->i_attempts = 0; } /* Find this record's location within linked list. */ if (asset_list == NULL) { asset_list = rec; } else { list = asset_list; while (list != NULL) { if (list->next == NULL) { list->next = rec; break; } else { list = list->next; } } } return; } /* ---------------------------------------------------------- * FUNCTION : add_arp_asset * DESCRIPTION : This function will add an ARP entry to the * : ARP data structure. * INPUT : 0 - IP Address * : 1 - MAC Address * : 2 - Discovered * RETURN : None! * ---------------------------------------------------------- */ void add_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN], time_t discovered) { ArpAsset *list; ArpAsset *rec; bstring mac_resolved; rec = (ArpAsset*)malloc(sizeof(ArpAsset)); rec->ip_addr.s_addr = ip_addr.s_addr; memcpy(&rec->mac_addr, mac_addr, MAC_LEN); rec->next = NULL; /* Attempt to resolve the vendor name of the MAC address. */ #ifndef DISABLE_VENDOR mac_resolved = (bstring) get_vendor(mac_addr); rec->mac_resolved = bstrcpy(mac_resolved); #else rec->mac_resolved = NULL; #endif /* * If this device has been read from a report file, set * the discovered time to whatever is in the report. * Also, we don't want to try to identify this service * anymore (i_attempts = 0); */ if (!discovered) { rec->discovered = time(NULL); } else { rec->discovered = discovered; } /* Find this record's location within linked list. */ if (arp_asset_list == NULL) { arp_asset_list = rec; } else { list = arp_asset_list; while (list != NULL) { if (list->next == NULL) { list->next = rec; break; } else { list = list->next; } } } } /* ---------------------------------------------------------- * FUNCTION : get_i_attempts * DESCRIPTION : Return an asset's i_attempts value. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Proto * RETURN : unsigned short i_attempts; * ---------------------------------------------------------- */ unsigned short get_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto) { Asset *rec; /* Find asset within linked list. */ rec = asset_list; while (rec != NULL) { if (ip_addr.s_addr == rec->ip_addr.s_addr && port == rec->port && proto == rec->proto) { /* Found! */ return rec->i_attempts; } else { rec = rec->next; } } return 0; } /* ---------------------------------------------------------- * FUNCTION : update_i_attempts * DESCRIPTION : Updates the i_attempts field for a * : specified asset. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Proto * : 3 - i_attempts * RETURN : 0 - Success * : 1 - Failure * ---------------------------------------------------------- */ short update_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto, unsigned short i_attempts) { Asset *rec; /* Find asset within linked list. */ rec = asset_list; while (rec != NULL) { if (ip_addr.s_addr == rec->ip_addr.s_addr && port == rec->port && proto == rec->proto) { /* Found! */ rec->i_attempts = i_attempts; return 0; } else { rec = rec->next; } } return 1; } /* ---------------------------------------------------------- * FUNCTION : update_asset * DESCRIPTION : This function will update the service and * : application fields of an asset. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Proto * : 3 - Service * : 4 - Application * RETURN : 0 - Success! * : 1 - Failure! * ---------------------------------------------------------- */ short update_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application) { Asset *list; /* Find asset within linked list. */ list = asset_list; while (list != NULL) { if (ip_addr.s_addr == list->ip_addr.s_addr && port == list->port && proto == list->proto) { /* Found! */ list->service = bstrcpy(service); list->application = bstrcpy(application); return 0; } else { list = list->next; } } return 1; } /* ---------------------------------------------------------- * FUNCTION : end_storage * DESCRIPTION : This function will free all the records * : placed in the asset data structure. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ void end_storage () { Asset *next1; ArpAsset *next2; /* Free records in asset_list (Asset). */ while (asset_list != NULL) { next1 = asset_list->next; if (asset_list->service != NULL) bdestroy(asset_list->service); if (asset_list->application != NULL) bdestroy(asset_list->application); if (asset_list != NULL) free (asset_list); asset_list = next1; } /* Free records in arp_asset_list (Arasset_list). */ while (arp_asset_list != NULL) { next2 = arp_asset_list->next; if (arp_asset_list->mac_resolved != NULL) bdestroy(arp_asset_list->mac_resolved); if (arp_asset_list != NULL) free (arp_asset_list); arp_asset_list = next2; } } /* ---------------------------------------------------------- * FUNCTION : find_asset * DESCRIPTION : This function will find an asset's record * : and return it. * INPUT : 0 - IP Address * : 1 - Port * : 2 - Protocol * RETURN : Pointer to Asset * ---------------------------------------------------------- */ inline Asset * find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto) { Asset *list; Asset *rec; list = asset_list; while (list != NULL) { if (ip_addr.s_addr == list->ip_addr.s_addr && port == list->port && proto == list->proto) { /* Found! */ rec = list; break; } else { list = list->next; } } /* Make sure that a record was found. */ if (rec == NULL) return NULL; else return rec; } /* ---------------------------------------------------------- * FUNCTION : get_asset_pointer * DESCRIPTION : This function will return the pointer to * : the asset data structure. * INPUT : None! * RETURN : 0 - Asset Data Structure * ---------------------------------------------------------- */ Asset *get_asset_pointer () { return asset_list; } /* ---------------------------------------------------------- * FUNCTION : get_arp_pointer * DECRIPTION : This function will return the pointer to * : the asset data structure. * INPUT : None! * RETURN : 0 - ARP Data Structure * ---------------------------------------------------------- */ ArpAsset *get_arp_pointer () { return arp_asset_list; } /* ---------------------------------------------------------- * FUNCTION : print_database * DESCRIPTION : This function prints out the asset data * : structure. It is mainly for debug * : purposes. * INPUT : None! * RETURN : None! * ---------------------------------------------------------- */ #ifdef DEBUG void print_database () { Asset *rec; ArpAsset *arp; int id = 0; printf("-- Begin Asset Database --\n"); rec = asset_list; while (rec != NULL) { printf("%d: %s,%d,%d,%d,%s,%s,%d\n", id, inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, rec->discovered, bdata(rec->service), bdata(rec->application), rec->i_attempts); rec = rec->next; id++; } printf("-- End Asset Database --\n\n"); printf("-- Begin ARP Database --\n"); id = 0; arp = arp_asset_list; while (arp != NULL) { printf("%d: %s,%s,%d\n", id, inet_ntoa(arp->ip_addr), ether_ntoa(&arp->mac_addr), arp->discovered); arp = arp->next; id++; } printf("-- End ARP Database --\n\n"); } #endif /* DEBUG */ pads-1.2/src/Makefile.am0000664000076400007640000000140210205143202012043 00000000000000## $Id: Makefile.am,v 1.3 2005/02/17 16:29:54 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies bin_PROGRAMS = pads pads_SOURCES = pads.c pads.h \ storage.c storage.h \ identification.c identification.h \ packet.c packet.h \ monnet.c monnet.h \ mac-resolution.c mac-resolution.h \ configuration.c configuration.h \ util.c util.h \ global.h pads_LDADD = $(top_srcdir)/lib/bstring/libbstring.a output/liboutput.a bin_SCRIPTS = pads-report EXTRA_DIST = pads-report.pl SUBDIRS = output CLEANFILES = $(bin_SCRIPTS) INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/lib pads-report: pads-report.pl cat $(srcdir)/pads-report.pl >> pads-report chmod +x pads-report pads-1.2/src/identification.h0000664000076400007640000000356310203716114013171 00000000000000/************************************************************************* * identification.h * * Matt Shelton * * This header file contains information relating to the identification.c * module. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: identification.h,v 1.2 2005/02/13 18:28:28 mattshelton Exp $ * **************************************************************************/ /* INCLUDES ---------------------------------------- */ #include #include #include "global.h" #include #include /* PROTOTYPES -------------------------------------- */ int init_identification(void); int parse_raw_signature (bstring line, int lineno); int add_signature (Signature *sig); int tcp_identify (struct in_addr ip_addr, u_int16_t port, char *payload, int plen); int pcre_identify (struct in_addr ip_addr, u_int16_t port, unsigned short proto, const char *payload, int plen); bstring get_app_name (Signature *sig, const char *payload, int *ovector, int rc); void end_identification (void); #ifdef DEBUG void print_signature(); #endif /* DEBUG */ /* GLOBALS ----------------------------------------- */ pads-1.2/Makefile.in0000664000076400007640000004404010254172226011306 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure COPYING config.guess config.sub \ install-sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno configure.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = depcomp = am__depfiles_maybe = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign no-dependencies SUBDIRS = doc etc lib src EXTRA_DIST = COPYING CLEANFILES = -R auto4te.cache *~ *.log *.out *.cache all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: 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) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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 $(SHELL) $(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__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__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) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(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 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { 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-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ check-am clean clean-generic clean-recursive ctags \ ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ dist-tarZ dist-zip distcheck distclean distclean-generic \ distclean-hdr distclean-recursive distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic maintainer-clean-recursive \ mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-info-am # 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: pads-1.2/configure.in0000664000076400007640000001206310254122341011543 00000000000000# 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. # vim:expandtab:smartindent:ts=4:tw=0:sw=4: # Process this file with autoconf to produce a configure script. AC_INIT(pads, 1.2, matt@mattshelton.com) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE AC_PROG_CC AC_PROG_RANLIB AC_DEFINE(PACKAGE_DATE, "06/17/05", Define the date of this release.) ## # Define the arguments that that we accept. ## # Determine whether or not MAC Vendor resolution will be enabled. AC_ARG_ENABLE([vendor], AC_HELP_STRING([--disable-vendor], [ Disable MAC Vendor resolution. ]), [ AC_DEFINE(DISABLE_VENDOR, 1, Define 1 to disable MAC address vendor resolution.) ]) # The user has the option to ignore GCC version checks. AC_ARG_ENABLE([gcc-version-check], AC_HELP_STRING([--disable-gcc-version-check], [ Disable configure's GCC version check. ]), [ DISABLE_GCC_CHECK="yes" ], [ DISABLE_GCC_CHECK="no" ]) echo echo 'Configurating Passive Asset Dection System ...' echo ## # Configure Paths ## AC_PREFIX_DEFAULT(/usr/local) if test "$prefix" = "NONE"; then prefix="/usr/local" fi if test "$exec_prefix" = "NONE"; then exec_prefix=$prefix fi AH_TEMPLATE(INSTALL_PREFIX, [ Base directory of PADS installation. ]) AC_DEFINE_UNQUOTED(INSTALL_PREFIX, "`eval echo $prefix`") AH_TEMPLATE(INSTALL_EXECPREFIX, [ Base directory for PADS system dependant installation. ]) AC_DEFINE_UNQUOTED(INSTALL_EXECPREFIX, "`eval echo $exec_prefix`") AH_TEMPLATE(INSTALL_SYSCONFDIR, [ Directory containing configuration files (ex. 'etc/'). ]) AC_DEFINE_UNQUOTED(INSTALL_SYSCONFDIR, "`eval echo $sysconfdir`") AH_TEMPLATE(INSTALL_DATADIR, [ Directory containing data files (ex. 'share/'). ]) AC_DEFINE_UNQUOTED(INSTALL_DATADIR, "`eval echo $datadir`") AH_TEMPLATE(INSTALL_LIBDIR, [ Directory containing library files (ex. 'lib/). ]) AC_DEFINE_UNQUOTED(INSTALL_LIBDIR, "`eval echo $libdir`") AH_TEMPLATE(INSTALL_BINDIR, [ Directory containing binary files (ex. 'bin/'). ]) AC_DEFINE_UNQUOTED(INSTALL_BINDIR, "`eval echo $bindir`") ## # Configure PCRE ## CPPFLAGS="${CPPFLAGS} `pcre-config --cflags`" AC_CHECK_HEADERS(pcre.h, AC_DEFINE(HAVE_PCRE_H, 1, Have PCRE Header File), AC_MSG_ERROR([Cannot find PCRE header files!])) LDFLAGS="${LDFLAGS} `pcre-config --libs`" AC_CHECK_LIB(pcre, pcre_compile, EXTRA_LIBS="$EXTRA_LIBS -lpcre", AC_MSG_ERROR([Cannot find PCRE library files!])) ## # Configure PCAP ## AC_CHECK_HEADER(pcap.h, AC_DEFINE(HAVE_PCAP_H, 1, Have PCAP Header File), AC_MSG_ERROR([Cannot find pcap.h!])) AC_CHECK_LIB(pcap, pcap_open_live, LIBS="$LIBS -lpcap", AC_MSG_ERROR([Cannot find PCAP libraries!!])) ## # Checks for header files. ## AC_CHECK_HEADERS([stdio.h stdarg.h signal.h time.h unistd.h]) ## # Checks for typedefs, structures, and compiler characteristics. ## AC_C_CONST ## # Checks for library functions. ## AC_TYPE_SIGNAL AC_CHECK_FUNCS(strlcpy) AC_CHECK_FUNCS(strlcat) ## # Determine GCC Version ## if test "$DISABLE_GCC_CHECK" = "no"; then GCC_VERSION_FULL=`${CC} --version | sed -n '1s/^[[^ ]]* (.*) //;s/ .*$//;1p'` case "${GCC_VERSION_FULL}" in *2.95*) AC_MSG_ERROR([GCC 2.95.* is not supported. Please use a more recent (>= 3.0) version of GCC.]) ;; *) AC_MSG_RESULT([GCC ${GCC_VERSION_FULL} is supported.]) ;; esac fi ## # Determine OS ## AC_CANONICAL_HOST AC_DEFINE_UNQUOTED(OS_TYPE, "$host", "Operating System Type") case "$host" in *linux*) AC_DEFINE(OS, LINUX, Operating System) AC_DEFINE(LINUX, 1, Linux) ;; *freebsd*) AC_DEFINE(OS, FREEBSD, Operating System) AC_DEFINE(FREEBSD, 1, FreeBSD) ;; *bsd*) AC_DEFINE(OS, BSD, Operating System) AC_DEFINE(BSD, 1, BSD) ;; *solaris*) AC_DEFINE(OS, SOLARIS, Operating System) AC_DEFINE(SOLARIS, 1, Solaris) ;; *darwin*) AC_DEFINE(OS, DARWIN, Operating System) AC_DEFINE(DARWIN, 1, Darwin) ;; *) AC_DEFINE(OS, UNKNOWN_OS, Operating System) AC_DEFINE(UNKNOWN_OS, 1, Unknown OS) AC_MSG_WARN( Your OS ($target_os) is not supported yet. Try playing with the build host and target options. ) sleep 3 ;; esac ## # Define the global variables. ## AC_SUBST(PCRE_OBJS) AC_SUBST(EXTRA_DEFINES) AC_SUBST(EXTRA_INCLUDES) AC_SUBST(EXTRA_LIBS) ## # And we're done! ## AC_OUTPUT(Makefile doc/Makefile etc/Makefile lib/Makefile lib/bstring/Makefile src/Makefile src/output/Makefile) pads-1.2/missing0000755000076400007640000002453310126442331010636 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2004-09-07.08 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 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. # 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. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -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 --run try to run the given command, and emulate it if it fails 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 help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit 0 ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit 0 ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. 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 $msg. You should only need it if you modified \`${configure_ac}'. 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 $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. 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_ac}` 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 $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 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 ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. 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 $msg. 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 ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. 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 ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. 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 prerequisites 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 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: pads-1.2/doc/0000777000076400007640000000000010254172540010065 500000000000000pads-1.2/doc/Makefile.in0000664000076400007640000002552410254172224012057 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ AUTHORS COPYING ChangeLog INSTALL ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = depcomp = am__depfiles_maybe = SOURCES = DIST_SOURCES = man8dir = $(mandir)/man8 am__installdirs = "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkgdatadir)" NROFF = nroff MANS = $(man_MANS) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; pkgdataDATA_INSTALL = $(INSTALL_DATA) DATA = $(pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign no-dependencies EXTRA_DIST = AUTHORS ChangeLog COPYING CREDITS INSTALL pads.8 pads.conf.8 pads-report.8 README pkgdata_DATA = AUTHORS ChangeLog COPYING CREDITS INSTALL README man_MANS = pads.8 pads.conf.8 pads-report.8 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh uninstall-info-am: install-man8: $(man8_MANS) $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.8*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 8*) ;; \ *) ext='8' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ done uninstall-man8: @$(NORMAL_UNINSTALL) @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.8*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 8*) ;; \ *) ext='8' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \ rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ done install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)" @list='$(pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \ $(pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \ rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(pkgdatadir)"; 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-man install-pkgdataDATA install-exec-am: install-info: install-info-am install-man: install-man8 installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-man uninstall-pkgdataDATA uninstall-man: uninstall-man8 .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-man8 install-pkgdataDATA install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \ uninstall-man uninstall-man8 uninstall-pkgdataDATA # 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: pads-1.2/doc/INSTALL0000664000076400007640000000165110202574615011041 00000000000000Installation ------------ To install PADS, execute the following standard 'autoconf' commands: ./configure make make install Optionally, run './configure --help' for additional command line options. The following options may be used: --disable-vendor : This option will disable MAC vendor resolution. This will : speed up the application. --enable-banner-grab : Compile in the banner grabbing feature. This feature will : dump the asset banners into a libpcap-formatted file. This : feature will help further identify services and will aid in : signature development. Please keep in mind that this will : slow down performance --use-native-pcre : Use the existing PCRE libraries instead of the ones included. : This will shrink the size of the executable. The libpcap library must be installed before you compile pads. It can be downloaded from http://www.tcpdump.org. Matt Shelton matt@mattshelton.com pads-1.2/doc/README0000664000076400007640000000762410254123436010674 00000000000000pads - Passive Asset Detection System v1.2 - 06/17/05 Matt Shelton Goals: - Passive: Records and identifies traffic seen on a network without actively "scanning" a system. There will never be a packet sent from the pads applications. - Portable: Has the ability to be placed easily on a remote system. Does not require additional external libraries other than those associated with libpcap. - Lightweight: Logging is sent to a simple CSV file. There is no need for a database or other data repository installed on the local machine. All correlation is done outside of the pads program. Description: Asset management is an important factor in information security. A good security administrator should keep track of all devices attached to the network. Even though active scanners such as nmap and Nessus are valuable tools, sometimes it necessary to identify network devices in a passive manner. Pads was developed to sit along side the promiscuous interface of an IDS device. It will listen to network traffic and attempt to identify the applications running on the network. Author's Notes: By day I am an IDS analyst for a managed security provider. One of the challenges I face on a daily basis is the inability to obtain customer asset data, particularly with the larger customers. This information is critical not only for analysis but also device placement and tuning. Many IDS deployments consist of a device with two interfaces. One interface contains a promiscuous link to a remote network and the other link is for management and lives in the DMZ. This makes active network scanners, like nmap, useless because the IDS team does not have anything but a one way link into the network. They can only listen to traffic, not produce anything. Pads was developed to solve this problem. It is modeled after my favorite scanning tool nmap, specifically the .-sV. option. Unlike nmap, it will not generate any traffic while mapping the network. Unfortunately, this method is potentially less accurate than active scanning but is often necessary in an IDS environment. As mentioned earlier, I am an IDS analyst by day. I see programming as a tool to aid me in my job. This project was developed outside of work since I do not get paid to code. It was written to fulfill a need for me. Hopefully others within the community will also get the chance to benefit from it. Usage: -c : Read configuration from . -d : Dump banner packets to a libpcap formatted file. -D : Run PADS in the background (daemon mode). -g : Drop privileges to this group. -h : Help -i : Listen on . The lowest number interface will be used if an interface isn't specified. -n : Reads in a comma seperated list of networks to be monitored. ex. -n "192.168.0.0/24,10.0.0.0/16" -p : PID file used with daemon mode. -r : Read packets from a libpcap formatted file. -u : Drop privileges to this user. -v : Verbose -V : Version -w : Dump data into file other than assets.csv. Additional arguments will be processed as a libpcap filter. For example, the following command will not only use interface hme1 but will also only search for assets on port 22: pads -i hme1 port 22 Misc: Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England. It can be found on the following FTP site: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ Feedback: Please let me know if you have constuctive feedback, need help, or have a bug / issue with the application. For the time being, please contact me at matt@mattshelton.com. Thanks, Matt Shelton $Id: README,v 1.2 2005/06/15 22:09:34 mattshelton Exp $ pads-1.2/doc/pads.conf.80000664000076400007640000000541610254122070011746 00000000000000.\" pads.conf.8 .\" .\" Matt Shelton .\" .\" pads.conf man page .\" .\" Copyright (C) 2005 Matt Shelton .\" .\" 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. .\" .\" $Id: pads.conf.8,v 1.1 2005/06/15 21:57:12 mattshelton Exp $ .TH pads.conf 8 2005/06/17 .SH NAME pads.conf \- pads configuration file .SH DESCRIPTION This man page describes the format of the pads(8) configuration file. Empty lines and lines beginning with '#' are ignored. .SH PARAMETERS .IP "daemon [0/1]" his parameter determines whether the application will go into the background. 0 = Disable, 1 = Enable .IP "pid_file " Filename of the pads PID file. This value should be set if you are planning on using daemon mode. .IP "sig_file " Alternate location for the pads-signature-list file. .IP "mac_file " Alternate location for the pads-ether-codes file. .IP "user " This is the name of the user pads will run as when started as root. .IP "group " This is the name of the group pads will run as when started as root. .IP "interface " This contains the name of the interface PADS will listen to. .IP "filter " This value contains a libpcap filter to be applied to the PADS session. For example, to filter only SSH traffice, specify "filter 'port 22'". .IP "network " This string contains a comma seperated list of networks to be monitored. Only assets found in these networks will be recorded. For example, "network 192.168.0.0/24,192.168.1.0/24,10.10.10.0/24". .IP "output screen" This output plugin displays PADS data to the screen. When using the configuration file, it defaults to off. .IP "output csv: " This output plugin writes PADS data to a CSV file. Optionally, a CSV filename can be specified as an argument. .IP "output fifo: " This output plugin writes PADS data to a FIFO file. Optionally, a FIFO filename can be specified as an argument. .SH SEE ALSO pads(8) .SH COPYRIGHT Copyright (C) 2005 Matt Shelton .SH BUGS Please send bug reports to the author. .SH AUTHORS Matt Shelton pads-1.2/doc/pads-report.80000664000076400007640000000340010254122553012330 00000000000000.\" pads-report.8 .\" .\" Matt Shelton .\" .\" pads-report man page .\" .\" Copyright (C) 2004 Matt Shelton .\" .\" 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. .\" .\" $Id: pads-report.8,v 1.2 2005/06/15 22:02:19 mattshelton Exp $ .TH PADS 8 2005/06/17 .SH NAME pads-report \- PADS Text Reporting Module .SH SYNOPSIS .B pads-report <-r .I file .B > <-w .I file .B > .SH DESCRIPTION pads-report is a Perl based reporting module to be used with Passive Asset Detection System (PADS). It will take a raw PADS data file and process it into a readable text report. .SH OPTIONS .IP -h Display help / usage information. .IP -n Do not convert IP addresses to names. .IP -p Do not convert RFC 1918 IP addresses to names. The \fI -n\fP option will override this option. .IP "-r file" Read packets from a libpcap formatted file. .IP "-w file" Dump data into a file other than assets.csv. .SH SEE ALSO pads(8) .SH COPYRIGHT Copyright (C) 2004 Matt Shelton .SH BUGS Please send bug reports to the author. .SH AUTHORS Matt Shelton pads-1.2/doc/CREDITS0000664000076400007640000000057310202574615011032 00000000000000Author: Matt Shelton Signatures and Ideas: Chris Koontz Bug and Vulnerability Reporting: ChrisR- chris@cr-secure.net Code Contributions (MAC Vendor Resolution): Dominique Karg Code Contributions (Assets to MySQL): Tony Lukasavage Code Contributions: Alex Butcher Many Thanks: violating.us and the #violating team pads-1.2/doc/pads.80000664000076400007640000000707410254122137011030 00000000000000.\" pads.8 .\" .\" Matt Shelton .\" .\" PADS man page .\" .\" Copyright (C) 2004 Matt Shelton .\" .\" 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. .\" .\" $Id: pads.8,v 1.2 2005/06/15 21:57:51 mattshelton Exp $ .TH PADS 8 2005/06/17 .SH NAME pads \- Passive Asset Detection System .SH SYNOPSIS .B pads <-c .I file .B > <-d .I file .B > <-g .I group .B > <-i .I interface .B > <-n .I network(s) .B > <-p .I file .B > <-r .I file .B > <-u .I file .B > <-w .I file .B > .SH DESCRIPTION PADS is a libpcap based detection engine used to passively detect network assets. It is designed to complement IDS technology by providing context to IDS alerts. Goals: - Passive: Records and identifies traffic seen on a network without actively "scanning" a system. There will never be a packet sent from the pads application. - Portable: Has the ability to be placed easily on a remote system. Does not require additional external libraries other than those associated with libpcap. - Lightweight: Logging is sent to a simple CSV file. There is no need for a database or other data repository installed on the local machine. All correlation is done outside of the pads program. .SH OPTIONS .IP -h Display help / usage information. .IP -D Run PADS in the background (daemon mode). .IP "-d file" Dump banner data into a libpcap formatted file. This feature will dump the matched packet or the first 4 packets of an unmatched connection into a specified file. This can be used to further identify a service and also aid with signature development. Please keep in mind that this feature must be compiled into the application in order to use it. This can be done by adding '--enable-banner-grab' to the 'configure' step. .IP "-g group" This switch allows you to specify a group that PADS will drop to after the libpcap interface has been initialized. .IP -h Display help .IP "-i interface" Specify an interface to be used. .IP "-n network list" Specify a set of networks to be monitored. Only assets that exist within these networks will be recorded. The networks should be specified in the following format: \fI 10.10.10.0/24,192.168.0.0/16 \fP. .IP "-p pid file" This switch allows you to specify a PID file to be used in conjunction with daemon (-D) mode. .IP "-r file" Read packets from a libpcap formatted file. .IP "-u user" This switch allows you to specify a user that PADS will drop to after the libpcap interface has been initialized. .IP "-w file" Dump data into a file other than assets.csv. .IP "\fI expression\fP" selects which packets will be processed. Please see \fI tcpdump(1)\fP for details on the libpcap primitives. .SH SEE ALSO pads.conf(8), pads-report(8), pads-archiver(8), tcpdump(8), pcre(3) .SH COPYRIGHT Copyright (C) 2004 Matt Shelton .SH BUGS Please send bug reports to the author. .SH AUTHORS Matt Shelton pads-1.2/doc/ChangeLog0000664000076400007640000000257510254123174011565 00000000000000Passive Asset Detection System $Id: ChangeLog,v 1.2 2005/06/15 22:06:52 mattshelton Exp $ ------------------------------------------ v1.2 * Banner Grab Feature - This feature will drop the banners of services into a libpcap formatted file. * FIFO Output - PADS will write data to a FIFO file. This file is monitored by the new pads-archiver utility. It will dramatically speed up performance. * Configuration File - Configuration parameters can be recorded in a file. For more information, see the pads.conf man page. * Internal Rewrites - A lot of code rewrites have been put into this version for performance and security reasons. v1.1.3 * MAC Address Vendor Resolution - PADS will now attempt to resolve the vendor name of a MAC address. * Bug Fixes v1.1.2 * Bug Fixes * Code Optimizations * New Signatures v1.1.1 * Fixed a buffer overflow vulnerability in main(). v1.1 * Network Restriction - Networks can now be specified on the command line using the '-n' switch. This will cause PADS to only record assets that fall within the specified networks. * ARP Support - ARP Reply packets are used to retrieve an asset's MAC address. * ICMP Support - The application now looks for ICMP Echo Reply packets. * SLL Frame Relay Support * Daemonize - PADS will go into the background whenever '-D' is specified on the command line. * Converted all data structures to linked lists. v1.0 * Initial Release pads-1.2/doc/COPYING0000664000076400007640000004312710202574615011047 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy 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 of the License, 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. pads-1.2/doc/Makefile.am0000664000076400007640000000046510254122231012034 00000000000000## $Id: Makefile.am,v 1.2 2005/06/15 21:58:49 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies EXTRA_DIST = AUTHORS ChangeLog COPYING CREDITS INSTALL pads.8 pads.conf.8 pads-report.8 README pkgdata_DATA = AUTHORS ChangeLog COPYING CREDITS INSTALL README man_MANS = pads.8 pads.conf.8 pads-report.8 pads-1.2/doc/AUTHORS0000664000076400007640000000004410202574615011053 00000000000000Matt Shelton pads-1.2/config.guess0000755000076400007640000012450410126442331011556 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-09-07' # This file 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 of the License, 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. # # 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 Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amd64:OpenBSD:*:*) echo x86_64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; cats:OpenBSD:*:*) echo arm-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; luna88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit 0 ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; *:OS400:*:*) echo powerpc-ibm-os400 exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit 0 ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms && exit 0 ;; I*) echo ia64-dec-vms && exit 0 ;; V*) echo vax-dec-vms && exit 0 ;; esac esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp 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` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pads-1.2/config.sub0000755000076400007640000007511310126442331011222 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-08-29' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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 of the License, 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. # 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. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32r | m32rle | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | msp430-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16c) basic_machine=cr16c-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pads-1.2/etc/0000777000076400007640000000000010254172540010073 500000000000000pads-1.2/etc/Makefile.in0000664000076400007640000002207210254172224012060 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ subdir = etc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = depcomp = am__depfiles_maybe = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(sysconfdir)" sysconfDATA_INSTALL = $(INSTALL_DATA) DATA = $(sysconf_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign no-dependencies EXTRA_DIST = pads* #pkgdata_DATA = sysconf_DATA = pads.conf \ pads-signature-list \ pads-ether-codes all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign etc/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign etc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh uninstall-info-am: install-sysconfDATA: $(sysconf_DATA) @$(NORMAL_INSTALL) test -z "$(sysconfdir)" || $(mkdir_p) "$(DESTDIR)$(sysconfdir)" @list='$(sysconf_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \ $(sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \ done uninstall-sysconfDATA: @$(NORMAL_UNINSTALL) @list='$(sysconf_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \ rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(sysconfdir)"; 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-sysconfDATA install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-sysconfDATA .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-strip install-sysconfDATA installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-info-am uninstall-sysconfDATA # 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: pads-1.2/etc/pads-ether-codes0000664000076400007640000060055610202574615013101 00000000000000############################################################################ # # Passive Asset Detection System - Vendor Codes # # This file contains vendor codes used to map MAC addresses to vendor # names. It was taken from the Ettercap. # # $Id: pads-ether-codes,v 1.1 2005/02/10 06:05:01 mattshelton Exp $ # ############################################################################ 00:00:00 Xerox Corporation 00:00:01 Xerox Corporation 00:00:02 Xerox Corporation 00:00:03 Xerox Corporation 00:00:04 Xerox Corporation 00:00:05 Xerox Corporation 00:00:06 Xerox Corporation 00:00:07 Xerox Corporation 00:00:08 Xerox Corporation 00:00:09 Xerox Corporation 00:00:0A Omron Tateisi Electronics Co. 00:00:0B Matrix Corporation 00:00:0C Cisco Systems, Inc. 00:00:0D Fibronics Ltd. 00:00:0E Fujitsu Limited 00:00:0F Next, Inc. 00:00:10 Sytek Inc. 00:00:11 Normerel Systemes 00:00:12 Information Technology Limited 00:00:13 Camex 00:00:14 Netronix 00:00:15 Datapoint Corporation 00:00:16 Du Pont Pixel Systems . 00:00:17 Private 00:00:18 Webster Computer Corporation 00:00:19 Applied Dynamics International 00:00:1A Advanced Micro Devices 00:00:1B Novell Inc. 00:00:1C Bell Technologies 00:00:1D Cabletron Systems, Inc. 00:00:1E Telsist Industria Electronica 00:00:1F Telco Systems, Inc. 00:00:20 Dataindustrier Diab Ab 00:00:21 Sureman Comp. & Commun. Corp. 00:00:22 Visual Technology Inc. 00:00:23 Abb Industrial Systems Ab 00:00:24 Connect As 00:00:25 Ramtek Corp. 00:00:26 Sha-ken Co., Ltd. 00:00:27 Japan Radio Company 00:00:28 Prodigy Systems Corporation 00:00:29 Imc Networks Corp. 00:00:2A Trw - Sedd/inp 00:00:2B Crisp Automation, Inc 00:00:2C Autotote Limited 00:00:2D Chromatics Inc 00:00:2E Societe Evira 00:00:2F Timeplex Inc. 00:00:30 Vg Laboratory Systems Ltd 00:00:31 Qpsx Communications Pty Ltd 00:00:32 Marconi Plc 00:00:33 Egan Machinery Company 00:00:34 Network Resources Corporation 00:00:35 Spectragraphics Corporation 00:00:36 Atari Corporation 00:00:37 Oxford Metrics Limited 00:00:38 Css Labs 00:00:39 Toshiba Corporation 00:00:3A Chyron Corporation 00:00:3B I Controls, Inc. 00:00:3C Auspex Systems Inc. 00:00:3D Unisys 00:00:3E Simpact 00:00:3F Syntrex, Inc. 00:00:40 Applicon, Inc. 00:00:41 Ice Corporation 00:00:42 Metier Management Systems Ltd. 00:00:43 Micro Technology 00:00:44 Castelle Corporation 00:00:45 Ford Aerospace & Comm. Corp. 00:00:46 Olivetti North America 00:00:47 Nicolet Instruments Corp. 00:00:48 Seiko Epson Corporation 00:00:49 Apricot Computers, Ltd 00:00:4A Adc Codenoll Technology Corp. 00:00:4B Icl Data Oy 00:00:4C Nec Corporation 00:00:4D Dci Corporation 00:00:4E Ampex Corporation 00:00:4F Logicraft, Inc. 00:00:50 Radisys Corporation 00:00:51 Hob Electronic Gmbh & Co. Kg 00:00:52 Intrusion.com, Inc. 00:00:53 Compucorp 00:00:54 Modicon, Inc. 00:00:55 Commissariat A L`energie Atom. 00:00:56 Dr. B. Struck 00:00:57 Scitex Corporation Ltd. 00:00:58 Racore Computer Products Inc. 00:00:59 Hellige Gmbh 00:00:5A Syskonnect Gmbh 00:00:5B Eltec Elektronik Ag 00:00:5C Telematics International Inc. 00:00:5D Cs Telecom 00:00:5E Usc Information Sciences Inst 00:00:5F Sumitomo Electric Ind., Ltd. 00:00:60 Kontron Elektronik Gmbh 00:00:61 Gateway Communications 00:00:62 Bull Hn Information Systems 00:00:63 Dr.ing.seufert Gmbh 00:00:64 Yokogawa Digital Computer Corp 00:00:65 Network Associates, Inc. 00:00:66 Talaris Systems, Inc. 00:00:67 Soft * Rite, Inc. 00:00:68 Rosemount Controls 00:00:69 Concord Communications Inc 00:00:6A Computer Consoles Inc. 00:00:6B Silicon Graphics Inc./mips 00:00:6C Private 00:00:6D Cray Communications, Ltd. 00:00:6E Artisoft, Inc. 00:00:6F Madge Networks Ltd. 00:00:70 Hcl Limited 00:00:71 Adra Systems Inc. 00:00:72 Miniware Technology 00:00:73 Siecor Corporation 00:00:74 Ricoh Company Ltd. 00:00:75 Nortel Networks 00:00:76 Abekas Video System 00:00:77 Interphase Corporation 00:00:78 Labtam Limited 00:00:79 Networth Incorporated 00:00:7A Dana Computer Inc. 00:00:7B Research Machines 00:00:7C Ampere Incorporated 00:00:7D Sun Microsystems, Inc. 00:00:7E Clustrix Corporation 00:00:7F Linotype-hell Ag 00:00:80 Cray Communications A/s 00:00:81 Bay Networks 00:00:82 Lectra Systemes Sa 00:00:83 Tadpole Technology Plc 00:00:84 Supernet 00:00:85 Canon Inc. 00:00:86 Megahertz Corporation 00:00:87 Hitachi, Ltd. 00:00:88 Computer Network Tech. Corp. 00:00:89 Cayman Systems Inc. 00:00:8A Datahouse Information Systems 00:00:8B Infotron 00:00:8C Alloy Computer Products (australia) Pty Ltd 00:00:8D Verdix Corporation 00:00:8E Solbourne Computer, Inc. 00:00:8F Raytheon Company 00:00:90 Microcom 00:00:91 Anritsu Corporation 00:00:92 Cogent Data Technologies 00:00:93 Proteon Inc. 00:00:94 Asante Technologies 00:00:95 Sony Tektronix Corp. 00:00:96 Marconi Electronics Ltd. 00:00:97 Epoch Systems 00:00:98 Crosscomm Corporation 00:00:99 Mtx, Inc. 00:00:9A Rc Computer A/s 00:00:9B Information International, Inc 00:00:9C Rolm Mil-spec Computers 00:00:9D Locus Computing Corporation 00:00:9E Marli S.a. 00:00:9F Ameristar Technologies Inc. 00:00:A0 Tokyo Sanyo Electric Co. Ltd. 00:00:A1 Marquette Electric Co. 00:00:A2 Bay Networks 00:00:A3 Network Application Technology 00:00:A4 Acorn Computers Limited 00:00:A5 Compatible Systems Corp. 00:00:A6 Network General Corporation 00:00:A7 Network Computing Devices Inc. 00:00:A8 Stratus Computer Inc. 00:00:A9 Network Systems Corp. 00:00:AA Xerox Corporation 00:00:AB Logic Modeling Corporation 00:00:AC Conware Computer Consulting 00:00:AD Bruker Instruments Inc. 00:00:AE Dassault Electronique 00:00:AF Nuclear Data Instrumentation 00:00:B0 Rnd-rad Network Devices 00:00:B1 Alpha Microsystems Inc. 00:00:B2 Televideo Systems, Inc. 00:00:B3 Cimlinc Incorporated 00:00:B4 Edimax Computer Company 00:00:B5 Datability Software Sys. Inc. 00:00:B6 Micro-matic Research 00:00:B7 Dove Computer Corporation 00:00:B8 Seikosha Co., Ltd. 00:00:B9 Mcdonnell Douglas Computer Sys 00:00:BA Siig, Inc. 00:00:BB Tri-data 00:00:BC Allen-bradley Co. Inc. 00:00:BD Mitsubishi Cable Company 00:00:BE The Nti Group 00:00:BF Symmetric Computer Systems 00:00:C0 Western Digital Corporation 00:00:C1 Madge Networks Ltd. 00:00:C2 Information Presentation Tech. 00:00:C3 Harris Corp Computer Sys Div 00:00:C4 Waters Div. Of Millipore 00:00:C5 Farallon Computing/netopia 00:00:C6 Eon Systems 00:00:C7 Arix Corporation 00:00:C8 Altos Computer Systems 00:00:C9 Emulex Corporation 00:00:CA Applitek 00:00:CB Compu-shack Electronic Gmbh 00:00:CC Densan Co., Ltd. 00:00:CD Allied Telesyn Research Ltd. 00:00:CE Megadata Corp. 00:00:CF Hayes Microcomputer Products 00:00:D0 Develcon Electronics Ltd. 00:00:D1 Adaptec Incorporated 00:00:D2 Sbe, Inc. 00:00:D3 Wang Laboratories Inc. 00:00:D4 Pure Data Ltd. 00:00:D5 Micrognosis International 00:00:D6 Punch Line Holding 00:00:D7 Dartmouth College 00:00:D8 Novell, Inc. 00:00:D9 Nippon Telegraph & Telephone 00:00:DA Atex 00:00:DB British Telecommunications Plc 00:00:DC Hayes Microcomputer Products 00:00:DD Tcl Incorporated 00:00:DE Cetia 00:00:DF Bell & Howell Pub Sys Div 00:00:E0 Quadram Corp. 00:00:E1 Grid Systems 00:00:E2 Acer Technologies Corp. 00:00:E3 Integrated Micro Products Ltd 00:00:E4 In2 Groupe Intertechnique 00:00:E5 Sigmex Ltd. 00:00:E6 Aptor Produits De Comm Indust 00:00:E7 Star Gate Technologies 00:00:E8 Accton Technology Corp. 00:00:E9 Isicad, Inc. 00:00:EA Upnod Ab 00:00:EB Matsushita Comm. Ind. Co. Ltd. 00:00:EC Microprocess 00:00:ED April 00:00:EE Network Designers, Ltd. 00:00:EF Kti 00:00:F0 Samsung Electronics Co., Ltd. 00:00:F1 Magna Computer Corporation 00:00:F2 Spider Communications 00:00:F3 Gandalf Data Limited 00:00:F4 Allied Telesyn International 00:00:F5 Diamond Sales Limited 00:00:F6 Applied Microsystems Corp. 00:00:F7 Youth Keep Enterprise Co Ltd 00:00:F8 Digital Equipment Corporation 00:00:F9 Quotron Systems Inc. 00:00:FA Microsage Computer Systems Inc 00:00:FB Rechner Zur Kommunikation 00:00:FC Meiko 00:00:FD High Level Hardware 00:00:FE Annapolis Micro Systems 00:00:FF Camtec Electronics Ltd. 00:01:00 Equip'trans 00:01:01 Private 00:01:02 3com Corporation 00:01:03 3Com 3CRWE62092A 00:01:04 Dvico Co., Ltd. 00:01:05 Beckhoff Gmbh 00:01:06 Tews Datentechnik Gmbh 00:01:07 Leiser Gmbh 00:01:08 Avlab Technology, Inc. 00:01:09 Nagano Japan Radio Co., Ltd. 00:01:0A Cis Technology Inc. 00:01:0B Space Cyberlink, Inc. 00:01:0C System Talks Inc. 00:01:0D Coreco, Inc. 00:01:0E Bri-link Technologies Co., Ltd 00:01:0F Nishan Systems, Inc. 00:01:10 Gotham Networks 00:01:11 Idigm Inc. 00:01:12 Shark Multimedia Inc. 00:01:13 Olympus Optical Co., Ltd. 00:01:14 Kanda Tsushin Kogyo Co., Ltd. 00:01:15 Extratech Corporation 00:01:16 Netspect Technologies, Inc. 00:01:17 Canal + 00:01:18 Ez Digital Co., Ltd. 00:01:19 Action Controls Pty. Ltd. 00:01:1A Eeh Datalink Gmbh 00:01:1B Unizone Technologies, Inc. 00:01:1C Universal Talkware Corporation 00:01:1D Centillium Communications 00:01:1E Precidia Technologies, Inc. 00:01:1F Rc Networks, Inc. 00:01:20 Oscilloquartz S.a. 00:01:21 Rapidstream Inc. 00:01:22 Trend Communications, Ltd. 00:01:23 Digital Electronics Corp. 00:01:24 Acer Incorporated 00:01:25 Yaesu Musen Co., Ltd. 00:01:26 Pac Labs 00:01:27 The Open Group Limited 00:01:28 Enjoyweb, Inc. 00:01:29 Dfi Inc. 00:01:2A Telematica Sistems Inteligente 00:01:2B Telenet Co., Ltd. 00:01:2C Aravox Technologies, Inc. 00:01:2D Komodo Technology 00:01:2E Pc Partner Ltd. 00:01:2F Twinhead International Corp 00:01:30 Extreme Networks 00:01:31 Detection Systems, Inc. 00:01:32 Dranetz - Bmi 00:01:33 Kyowa Electronic Instruments C 00:01:34 Sig Positec Systems Ag 00:01:35 Kdc Corp. 00:01:36 Cybertan Technology, Inc. 00:01:37 It Farm Corporation 00:01:38 Xavi Technologies Corp. 00:01:39 Point Multimedia Systems 00:01:3A Shelcad Communications, Ltd. 00:01:3B Bna Systems 00:01:3C Tiw Systems 00:01:3D Riscstation Ltd. 00:01:3E Ascom Tateco Ab 00:01:3F Neighbor World Co., Ltd. 00:01:40 Sendtek Corporation 00:01:41 Cable Print 00:01:42 Cisco Systems, Inc. 00:01:43 Cisco Systems, Inc. 00:01:44 Cereva Networks, Inc. 00:01:45 Winsystems, Inc. 00:01:46 Tesco Controls, Inc. 00:01:47 Zhone Technologies 00:01:48 X-traweb Inc. 00:01:49 T.d.t. Transfer Data Test Gmbh 00:01:4A Sony Computer Science Labs., I 00:01:4B Ennovate Networks, Inc. 00:01:4C Berkeley Process Control 00:01:4D Shin Kin Enterprises Co., Ltd 00:01:4E Win Enterprises, Inc. 00:01:4F Luminous Networks, Inc. 00:01:50 Gilat Communications, Ltd. 00:01:51 Ensemble Communications 00:01:52 Chromatek Inc. 00:01:53 Archtek Telecom Corporation 00:01:54 G3m Corporation 00:01:55 Promise Technology, Inc. 00:01:56 Firewiredirect.com, Inc. 00:01:57 Syswave Co., Ltd 00:01:58 Electro Industries/gauge Tech 00:01:59 S1 Corporation 00:01:5A Digital Video Broadcasting 00:01:5B Italtel S.p.a/rf-up-i 00:01:5C Cadant Inc. 00:01:5D Pirus Networks 00:01:5E Best Technology Co., Ltd. 00:01:5F Digital Design Gmbh 00:01:60 Elmex Co., Ltd. 00:01:61 Meta Machine Technology 00:01:62 Cygnet Technologies, Inc. 00:01:63 Cisco Systems, Inc. 00:01:64 Cisco Systems, Inc. 00:01:65 Airswitch Corporation 00:01:66 Tc Group A/s 00:01:67 Hioki E.e. Corporation 00:01:68 Vitana Corporation 00:01:69 Celestix Networks Pte Ltd. 00:01:6A Alitec 00:01:6B Lightchip, Inc. 00:01:6C Foxconn 00:01:6D Triton Network Systems 00:01:6E Conklin Corporation 00:01:6F Haitai Electronics Co., Ltd. 00:01:70 Ese Embedded System Engineer'g 00:01:71 Allied Data Technologies 00:01:72 Technoland Co., Ltd. 00:01:73 Jni Corporation 00:01:74 Cyberoptics Corporation 00:01:75 Radiant Communications Corp. 00:01:76 Orient Silver Enterprises 00:01:77 Edsl 00:01:78 Margi Systems, Inc. 00:01:79 Wireless Technology, Inc. 00:01:7A Chengdu Maipu Electric Industrial Co., Ltd. 00:01:7B Heidelberger Druckmaschinen Ag 00:01:7C Ag-e Gmbh 00:01:7D Thermoquest 00:01:7E Adtek System Science Co., Ltd. 00:01:7F Experience Music Project 00:01:80 Aopen, Inc. 00:01:81 Nortel Networks 00:01:82 Dica Technologies Ag 00:01:83 Anite Telecoms 00:01:84 Sieb & Meyer Ag 00:01:85 Aloka Co., Ltd. 00:01:86 Disch Gmbh 00:01:87 I2se Gmbh 00:01:88 Lxco Technologies Ag 00:01:89 Refraction Technology, Inc. 00:01:8A Roi Computer Ag 00:01:8B Netlinks Co., Ltd. 00:01:8C Mega Vision 00:01:8D Audesi Technologies 00:01:8E Logitec Corporation 00:01:8F Kenetec, Inc. 00:01:90 Smk-m 00:01:91 Syred Data Systems 00:01:92 Texas Digital Systems 00:01:93 Hanbyul Telecom Co., Ltd. 00:01:94 Capital Equipment Corporation 00:01:95 Sena Technologies, Inc. 00:01:96 Cisco Systems, Inc. 00:01:97 Cisco Systems, Inc. 00:01:98 Darim Vision 00:01:99 Heisei Electronics 00:01:9A Leunig Gmbh 00:01:9B Kyoto Microcomputer Co., Ltd. 00:01:9C Jds Uniphase Inc. 00:01:9D E-control Systems, Inc. 00:01:9E Ess Technology, Inc. 00:01:9F Phonex Broadband 00:01:A0 Infinilink Corporation 00:01:A1 Mag-tek, Inc. 00:01:A2 Logical Co., Ltd. 00:01:A3 Genesys Logic, Inc. 00:01:A4 Microlink Corporation 00:01:A5 Nextcomm, Inc. 00:01:A6 Scientific-atlanta Arcodan A/s 00:01:A7 Unex Technology Corporation 00:01:A8 Welltech Computer Co., Ltd. 00:01:A9 Bmw Ag 00:01:AA Airspan Communications, Ltd. 00:01:AB Main Street Networks 00:01:AC Sitara Networks, Inc. 00:01:AD Coach Master International D.b.a. Cmi Worldwide, Inc. 00:01:AE Trex Enterprises 00:01:AF Motorola Computer Group 00:01:B0 Fulltek Technology Co., Ltd. 00:01:B1 General Bandwidth 00:01:B2 Digital Processing Systems, Inc. 00:01:B3 Precision Electronic Manufacturing 00:01:B4 Wayport, Inc. 00:01:B5 Turin Networks, Inc. 00:01:B6 Saejin T&m Co., Ltd. 00:01:B7 Centos, Inc. 00:01:B8 Netsensity, Inc. 00:01:B9 Skf Condition Monitoring 00:01:BA Ic-net, Inc. 00:01:BB Frequentis 00:01:BC Brains Corporation 00:01:BD Peterson Electro-musical Products, Inc. 00:01:BE Gigalink Co., Ltd. 00:01:BF Teleforce Co., Ltd. 00:01:C0 Compulab, Ltd. 00:01:C1 Exbit Technology 00:01:C2 Ark Research Corp. 00:01:C3 Acromag, Inc. 00:01:C4 Neowave, Inc. 00:01:C5 Simpler Networks 00:01:C6 Quarry Technologies 00:01:C7 Cisco Systems, Inc. 00:01:C8 Conrad Corp. 00:01:C9 Cisco Systems, Inc. 00:01:CA Geocast Network Systems, Inc. 00:01:CB Netgame, Ltd. 00:01:CC Japan Total Design Communication Co., Ltd. 00:01:CD Artem 00:01:CE Custom Micro Products, Ltd. 00:01:CF Alpha Data Parallel Systems, Ltd. 00:01:D0 Vitalpoint, Inc. 00:01:D1 Conet Communications, Inc. 00:01:D2 Macpower Peripherals, Ltd. 00:01:D3 Paxcomm, Inc. 00:01:D4 Leisure Time, Inc. 00:01:D5 Haedong Info & Comm Co., Ltd 00:01:D6 Man Roland Druckmaschinen Ag 00:01:D7 F5 Networks, Inc. 00:01:D8 Teltronics, Inc. 00:01:D9 Sigma, Inc. 00:01:DA Wincomm Corporation 00:01:DB Freecom Technologies Gmbh 00:01:DC Activetelco 00:01:DD Avail Networks 00:01:DE Trango Systems, Inc. 00:01:DF Isdn Communications, Ltd. 00:01:E0 Fast Systems, Inc. 00:01:E1 Kinpo Electronics, Inc. 00:01:E2 Ando Electric Corporation 00:01:E3 Siemens Ag 00:01:E4 Sitera, Inc. 00:01:E5 Supernet, Inc. 00:01:E6 Hewlett-packard Company 00:01:E7 Hewlett-packard Company 00:01:E8 Force10 Networks, Inc. 00:01:E9 Litton Marine Systems B.v. 00:01:EA Cirilium Corp. 00:01:EB C-com Corporation 00:01:EC Ericsson Group 00:01:ED Seta Corp. 00:01:EE Comtrol Europe, Ltd. 00:01:EF Camtel Technology Corp. 00:01:F0 Tridium, Inc. 00:01:F1 Innovative Concepts, Inc. 00:01:F2 Mark Of The Unicorn, Inc. 00:01:F3 Qps, Inc. 00:01:F4 Enterasys Networks 00:01:F5 Erim S.a. 00:01:F6 Association Of Musical Electronics Industry 00:01:F7 Image Display Systems, Inc. 00:01:F8 Adherent Systems, Ltd. 00:01:F9 Teraglobal Communications Corp. 00:01:FA Horoscas 00:01:FB Dotop Technology, Inc. 00:01:FC Keyence Corporation 00:01:FD Digital Voice Systems, Inc. 00:01:FE Digital Equipment Corporation 00:01:FF Data Direct Networks, Inc. 00:02:00 Net & Sys Co., Ltd. 00:02:01 Ifm Electronic Gmbh 00:02:02 Amino Communications, Ltd. 00:02:03 Woonsang Telecom, Inc. 00:02:04 Bodmann Industries Elektronik Gmbh 00:02:05 Hitachi Denshi, Ltd. 00:02:06 Telital R&d Denmark A/s 00:02:07 Private 00:02:08 Unify Networks, Inc. 00:02:09 Shenzhen Sed Information Technology Co., Ltd. 00:02:0A Gefran Spa 00:02:0B Native Networks, Inc. 00:02:0C Metro-optix 00:02:0D Micronpc.com 00:02:0E Laurel Networks, Inc. 00:02:0F Aatr 00:02:10 Fenecom 00:02:11 Nature Worldwide Technology Corp. 00:02:12 Sierracom 00:02:13 S.d.e.l. 00:02:14 Dtvro 00:02:15 Cotas Computer Technology A/b 00:02:16 Cisco Systems, Inc. 00:02:17 Cisco Systems, Inc. 00:02:18 Advanced Scientific Corp 00:02:19 Paralon Technologies 00:02:1A Zuma Networks 00:02:1B Kollmorgen-servotronix 00:02:1C Network Elements, Inc. 00:02:1D Data General Communication Ltd. 00:02:1E Simtel S.r.l. 00:02:1F Aculab Plc 00:02:20 Canon Aptex, Inc. 00:02:21 Dsp Application, Ltd. 00:02:22 Chromisys, Inc. 00:02:23 Clicktv 00:02:24 Lantern Communications, Inc. 00:02:25 Certus Technology, Inc. 00:02:26 Xesystems, Inc. 00:02:27 Esd Gmbh 00:02:28 Necsom, Ltd. 00:02:29 Adtec Corporation 00:02:2A Asound Electronic 00:02:2B Tamura Electric Works, Ltd. 00:02:2C Abb Bomem, Inc. 00:02:2D Agere Systems 00:02:2E Teac Corp. R& D 00:02:2F P-cube, Ltd. 00:02:30 Intersoft Electronics 00:02:31 Ingersoll-rand 00:02:32 Avision, Inc. 00:02:33 Mantra Communications, Inc. 00:02:34 Imperial Technology, Inc. 00:02:35 Paragon Networks International 00:02:36 Init Gmbh 00:02:37 Cosmo Research Corp. 00:02:38 Serome Technology, Inc. 00:02:39 Visicom 00:02:3A Zsk Stickmaschinen Gmbh 00:02:3B Redback Networks 00:02:3C Creative Technology, Ltd. 00:02:3D Nuspeed, Inc. 00:02:3E Selta Telematica S.p.a 00:02:3F Compal Electronics, Inc. 00:02:40 Seedek Co., Ltd. 00:02:41 Amer.com 00:02:42 Videoframe Systems 00:02:43 Raysis Co., Ltd. 00:02:44 Surecom Technology Co. 00:02:45 Lampus Co, Ltd. 00:02:46 All-win Tech Co., Ltd. 00:02:47 Great Dragon Information Technology (group) Co., Ltd. 00:02:48 Pilz Gmbh & Co. 00:02:49 Aviv Infocom Co, Ltd. 00:02:4A Cisco Systems, Inc. 00:02:4B Cisco Systems, Inc. 00:02:4C Sibyte, Inc. 00:02:4D Mannesman Dematic Colby Pty. Ltd. 00:02:4E Datacard Group 00:02:4F Ipm Datacom S.r.l. 00:02:50 Geyser Networks, Inc. 00:02:51 Soma Networks 00:02:52 Carrier Corporation 00:02:53 Televideo, Inc. 00:02:54 Worldgate 00:02:55 Ibm Corporation 00:02:56 Alpha Processor, Inc. 00:02:57 Microcom Corp. 00:02:58 Flying Packets Communications 00:02:59 Tsann Kuen China (shanghai)enterprise Co., Ltd. It Group 00:02:5A Catena Networks 00:02:5B Cambridge Silicon Radio 00:02:5C Sci Systems (kunshan) Co., Ltd. 00:02:5D Calix Networks 00:02:5E High Technology Ltd 00:02:5F Nortel Networks 00:02:60 Accordion Networks, Inc. 00:02:61 I3 Micro Technology Ab 00:02:62 Soyo Group Soyo Com Tech Co., Ltd 00:02:63 Ups Manufacturing Srl 00:02:64 Audioramp.com 00:02:65 Virditech Co. Ltd. 00:02:66 Thermalogic Corporation 00:02:67 Node Runner, Inc. 00:02:68 Harris Government Communications 00:02:69 Nadatel Co., Ltd 00:02:6A Cocess Telecom Co., Ltd. 00:02:6B Bcm Computers Co., Ltd. 00:02:6C Philips Cft 00:02:6D Adept Telecom 00:02:6E Negen Access, Inc. 00:02:6F Senao International Co., Ltd. 00:02:70 Crewave Co., Ltd. 00:02:71 Vpacket Communications 00:02:72 Cc&c Technologies, Inc. 00:02:73 Coriolis Networks 00:02:74 Tommy Technologies Corp. 00:02:75 Smart Technologies, Inc. 00:02:76 Primax Electronics Ltd. 00:02:77 Cash Systemes Industrie 00:02:78 Samsung Electro-mechanics Co., Ltd. 00:02:79 Control Applications, Ltd. 00:02:7A Ioi Technology Corporation 00:02:7B Amplify Net, Inc. 00:02:7C Trilithic, Inc. 00:02:7D Cisco Systems, Inc. 00:02:7E Cisco Systems, Inc. 00:02:7F Ask-technologies.com 00:02:80 Mu Net, Inc. 00:02:81 Madge Networks Limited 00:02:82 Viaclix, Inc. 00:02:83 Spectrum Controls, Inc. 00:02:84 Alstom T&d P&c 00:02:85 Riverstone Networks 00:02:86 Occam Networks 00:02:87 Adapcom 00:02:88 Global Village Communication 00:02:89 Dne Technologies 00:02:8A Ambit Microsystems Corporation 00:02:8B Vdsl Systems Oy 00:02:8C Micrel-synergy Semiconductor 00:02:8D Movita Technologies, Inc. 00:02:8E Rapid 5 Networks, Inc. 00:02:8F Globetek, Inc. 00:02:90 Woorigisool, Inc. 00:02:91 Open Network Co., Ltd. 00:02:92 Logic Innovations, Inc. 00:02:93 Solid Data Systems 00:02:94 Tokyo Sokushin Co., Ltd. 00:02:95 Ip.access Limited 00:02:96 Lectron Co,. Ltd. 00:02:97 C-cor.net 00:02:98 Broadframe Corporation 00:02:99 Apex, Inc. 00:02:9A Storage Apps 00:02:9B Kreatel Communications Ab 00:02:9C 3com 00:02:9D Merix Corp. 00:02:9E Information Equipment Co., Ltd. 00:02:9F L-3 Communication Aviation Recorders 00:02:A0 Flatstack Ltd. 00:02:A1 World Wide Packets 00:02:A2 Hilscher Gmbh 00:02:A3 Abb Power Automation 00:02:A4 Addpac Technology Co., Ltd. 00:02:A5 Compaq Computer Corporation 00:02:A6 Effinet Systems Co., Ltd. 00:02:A7 Vivace Networks 00:02:A8 Air Link Technology 00:02:A9 Racom, S.r.o. 00:02:AA Plcom Co., Ltd. 00:02:AB Ctc Union Technologies Co., Ltd. 00:02:AC 3par Data 00:02:AD Asahi Optical Co., Ltd. 00:02:AE Scannex Electronics Ltd. 00:02:AF Telecruz Technology, Inc. 00:02:B0 Hokubu Communication & Industrial Co., Ltd. 00:02:B1 Anritsu, Ltd. 00:02:B2 Cablevision 00:02:B3 Intel Corporation 00:02:B4 Daphne 00:02:B5 Avnet, Inc. 00:02:B6 Acrosser Technology Co., Ltd. 00:02:B7 Watanabe Electric Industry Co., Ltd. 00:02:B8 Whi Konsult Ab 00:02:B9 Cisco Systems, Inc. 00:02:BA Cisco Systems, Inc. 00:02:BB Continuous Computing 00:02:BC Lvl 7 Systems, Inc. 00:02:BD Bionet Co., Ltd. 00:02:BE Totsu Engineering, Inc. 00:02:BF Dotrocket, Inc. 00:02:C0 Bencent Tzeng Industry Co., Ltd. 00:02:C1 Innovative Electronic Designs, Inc. 00:02:C2 Net Vision Telecom 00:02:C3 Arelnet Ltd. 00:02:C4 Vector International Buba 00:02:C5 Evertz Microsystems Ltd. 00:02:C6 Data Track Technology Plc 00:02:C7 Alps Electric Co., Ltd. 00:02:C8 Technocom Communications Technology (pte) Ltd 00:02:C9 Mellanox Technologies 00:02:CA Endpoints, Inc. 00:02:CB Tristate Ltd. 00:02:CC M.c.c.i 00:02:CD Teledream, Inc. 00:02:CE Foxjet, Inc. 00:02:CF Zygate Communications, Inc. 00:02:D0 Comdial Corporation 00:02:D1 Vivotek, Inc. 00:02:D2 Workstation Ag 00:02:D3 Netbotz, Inc. 00:02:D4 Pda Peripherals, Inc. 00:02:D5 Acr 00:02:D6 Nice Systems 00:02:D7 Empeg Ltd 00:02:D8 Brecis Communications Corporation 00:02:D9 Reliable Controls 00:02:DA Exio Communications, Inc. 00:02:DB Netsec 00:02:DC Fujitsu General Limited 00:02:DD Bromax Communications, Ltd. 00:02:DE Astrodesign, Inc. 00:02:DF Net Com Systems, Inc. 00:02:E0 Etas Gmbh 00:02:E1 Integrated Network Corporation 00:02:E2 Ndc Infared Engineering 00:02:E3 Lite-on Communications, Inc. 00:02:E4 Jc Hyun Systems, Inc. 00:02:E5 Timeware Ltd. 00:02:E6 Gould Instrument Systems, Inc. 00:02:E7 Cab Gmbh & Co Kg 00:02:E8 E.d.&a. 00:02:E9 Cs Systemes De Securite - C3s 00:02:EA Videonics, Inc. 00:02:EB Pico Communications 00:02:EC Maschoff Design Engineering 00:02:ED Dxo Telecom Co., Ltd. 00:02:EE Nokia Danmark A/s 00:02:EF Ccc Network Systems Group Ltd. 00:02:F0 Ame Optimedia Technology Co., Ltd. 00:02:F1 Pinetron Co., Ltd. 00:02:F2 Edevice, Inc. 00:02:F3 Media Serve Co., Ltd. 00:02:F4 Pctel, Inc. 00:02:F5 Vive Synergies, Inc. 00:02:F6 Equipe Communications 00:02:F7 Arm 00:02:F8 Seakr Engineering, Inc. 00:02:F9 Mimos Semiconductor Sdn Bhd 00:02:FA Dx Antenna Co., Ltd. 00:02:FB Baumuller Aulugen-systemtechnik Gmbh 00:02:FC Cisco Systems, Inc. 00:02:FD Cisco Systems, Inc. 00:02:FE Viditec, Inc. 00:02:FF Handan Broad Infocom 00:03:00 Netcontinuum, Inc. 00:03:01 Avantas Networks Corporation 00:03:02 Oasys Telecom, Inc. 00:03:03 Jama Electronics Co., Ltd. 00:03:04 Pacific Broadband Communications 00:03:05 Smart Network Devices Gmbh 00:03:06 Fusion In Tech Co., Ltd. 00:03:07 Secure Works, Inc. 00:03:08 Am Communications, Inc. 00:03:09 Texcel Technology Plc 00:03:0A Argus Technologies 00:03:0B Hunter Technology, Inc. 00:03:0C Telesoft Technologies Ltd. 00:03:0D Uniwill Computer Corp. 00:03:0E Core Communications Co., Ltd. 00:03:0F Digital China (shanghai) Networks Ltd. 00:03:10 Link Evolution Corp. 00:03:11 Micro Technology Co., Ltd. 00:03:12 Tr-systemtechnik Gmbh 00:03:13 Access Media Spa 00:03:14 Teleware Network Systems 00:03:15 Cidco Incorporated 00:03:16 Nobell Communications, Inc. 00:03:17 Merlin Systems, Inc. 00:03:18 Cyras Systems, Inc. 00:03:19 Infineon Ag 00:03:1A Beijing Broad Telecom Ltd., China 00:03:1B Cellvision Systems, Inc. 00:03:1C Svenska Hardvarufabriken Ab 00:03:1D Taiwan Commate Computer, Inc. 00:03:1E Optranet, Inc. 00:03:1F Condev Ltd. 00:03:20 Xpeed, Inc. 00:03:21 Reco Research Co., Ltd. 00:03:22 Idis Co., Ltd. 00:03:23 Cornet Technology, Inc. 00:03:24 Tottori Sanyo Electric Co., Ltd. 00:03:25 Arima Computer Corp. 00:03:26 Iwasaki Information Systems Co., Ltd. 00:03:27 Act'l 00:03:28 Private 00:03:29 F3, Inc. 00:03:2A Unidata Communication Systems, Inc. 00:03:2B Gai Datenfunksysteme Gmbh 00:03:2C Abb Industrie Ag 00:03:2D Ibase Technology, Inc. 00:03:2E Scope Information Management, Ltd. 00:03:2F Global Sun Technology, Inc. 00:03:30 Imagenics, Co., Ltd. 00:03:31 Cisco Systems, Inc. 00:03:32 Cisco Systems, Inc. 00:03:33 Digitel Co., Ltd. 00:03:34 Newport Electronics 00:03:35 Mirae Technology 00:03:36 Zetes Technologies 00:03:37 Vaone, Inc. 00:03:38 Oak Technology 00:03:39 Eurologic Systems, Ltd. 00:03:3A Silicon Wave, Inc. 00:03:3B Tami Tech Co., Ltd. 00:03:3C Daiden Co., Ltd. 00:03:3D Ilshin Lab 00:03:3E Tateyama System Laboratory Co., Ltd. 00:03:3F Bigband Networks, Ltd. 00:03:40 Floware Wireless Systems, Ltd. 00:03:41 Axon Digital Design 00:03:42 Nortel Networks 00:03:43 Martin Professional A/s 00:03:44 Tietech.co., Ltd. 00:03:45 Routrek Networks Corporation 00:03:46 Hitachi Kokusai Electric, Inc. 00:03:47 Intel Corporation 00:03:48 Norscan Instruments, Ltd. 00:03:49 Vidicode Datacommunicatie B.v. 00:03:4A Rias Corporation 00:03:4B Nortel Networks 00:03:4C Shanghai Digivision Technology Co., Ltd. 00:03:4D Chiaro Networks, Ltd. 00:03:4E Pos Data Company, Ltd. 00:03:4F Sur-gard Security 00:03:50 Bticino Spa 00:03:51 Diebold, Inc. 00:03:52 Colubris Networks 00:03:53 Mitac, Inc. 00:03:54 Fiber Logic Communications 00:03:55 Terabeam Internet Systems 00:03:56 Wincor Nixdorf Gmbh & Co Kg 00:03:57 Intervoice-brite, Inc. 00:03:58 Icable System Co., Ltd. 00:03:59 Digitalsis 00:03:5A Photron Limited 00:03:5B Bridgewave Communications 00:03:5C Saint Song Corp. 00:03:5D Bosung Hi-net Co., Ltd. 00:03:5E Metropolitan Area Networks, Inc. 00:03:5F Prueftechnik Condition Monitoring Gmbh & Co. Kg 00:03:60 Pac Interactive Technology, Inc. 00:03:61 Widcomm, Inc. 00:03:62 Vodtel Communications, Inc. 00:03:63 Miraesys Co., Ltd. 00:03:64 Scenix Semiconductor, Inc. 00:03:65 Kira Information & Communications, Ltd. 00:03:66 Asm Pacific Technology 00:03:67 Jasmine Networks, Inc. 00:03:68 Embedone Co., Ltd. 00:03:69 Nippon Antenna Co., Ltd. 00:03:6A Mainnet, Ltd. 00:03:6B Cisco Systems, Inc. 00:03:6C Cisco Systems, Inc. 00:03:6D Runtop, Inc. 00:03:6E Nicon Systems (pty) Limited 00:03:6F Telsey Spa 00:03:70 Nxtv, Inc. 00:03:71 Acomz Networks Corp. 00:03:72 Ulan 00:03:73 Aselsan A.s 00:03:74 Hunter Watertech 00:03:75 Netmedia, Inc. 00:03:76 Graphtec Technology, Inc. 00:03:77 Gigabit Wireless 00:03:78 Humax Co., Ltd. 00:03:79 Proscend Communications, Inc. 00:03:7A Taiyo Yuden Co., Ltd. 00:03:7B Idec Izumi Corporation 00:03:7C Coax Media 00:03:7D Stellcom 00:03:7E Portech Communications, Inc. 00:03:7F Atheros Communications, Inc. 00:03:80 Ssh Communications Security Corp. 00:03:81 Ingenico International 00:03:82 A-one Co., Ltd. 00:03:83 Metera Networks, Inc. 00:03:84 Aeta 00:03:85 Actelis Networks, Inc. 00:03:86 Ho Net, Inc. 00:03:87 Blaze Network Products 00:03:88 Fastfame Technology Co., Ltd. 00:03:89 Plantronics 00:03:8A America Online, Inc. 00:03:8B Plus-one I&t, Inc. 00:03:8C Total Impact 00:03:8D Pcs Revenue Control Systems, Inc. 00:03:8E Atoga Systems, Inc. 00:03:8F Weinschel Corporation 00:03:90 Digital Video Communications, Inc. 00:03:91 Private 00:03:92 Hyundai Teletek Co., Ltd. 00:03:93 Apple Computer, Inc. 00:03:94 Connect One 00:03:95 California Amplifier 00:03:96 Ez Cast Co., Ltd. 00:03:97 Watchfront Electronics 00:03:98 Wisi 00:03:99 Dongju Informations & Communications Co., Ltd. 00:03:9A Nsine, Ltd. 00:03:9B Netchip Technology, Inc. 00:03:9C Optimight Communications, Inc. 00:03:9D Benq Corporation 00:03:9E Tera System Co., Ltd. 00:03:9F Cisco Systems, Inc. 00:03:A0 Cisco Systems, Inc. 00:03:A1 Hiper Information & Communication, Inc. 00:03:A2 Catapult Communications 00:03:A3 Mavix, Ltd. 00:03:A4 Data Storage And Information Management 00:03:A5 Medea Corporation 00:03:A6 Private 00:03:A7 Unixtar Technology, Inc. 00:03:A8 Idot Computers, Inc. 00:03:A9 Axcent Media Ag 00:03:AA Watlow 00:03:AB Bridge Information Systems 00:03:AC Fronius Schweissmaschinen 00:03:AD Emerson Energy Systems Ab 00:03:AE Allied Advanced Manufacturing Pte, Ltd. 00:03:AF Paragea Communications 00:03:B0 Xsense Technology Corp. 00:03:B1 Abbott Laboratories Hpd 00:03:B2 Radware 00:03:B3 Ia Link Systems Co., Ltd. 00:03:B4 Macrotek International Corp. 00:03:B5 Entra Technology Co. 00:03:B6 Qsi Corporation 00:03:B7 Zaccess Systems 00:03:B8 Netkit Solutions, Llc 00:03:B9 Hualong Telecom Co., Ltd. 00:03:BA Sun Microsystems 00:03:BB Signal Communications Limited 00:03:BC Cot Gmbh 00:03:BD Omnicluster Technologies, Inc. 00:03:BE Netility 00:03:BF Centerpoint Broadband Technologies, Inc. 00:03:C0 Rftnc Co., Ltd. 00:03:C1 Packet Dynamics Ltd 00:03:C2 Solphone K.k. 00:03:C3 Micronik Multimedia 00:03:C4 Tomra Systems Asa 00:03:C5 Mobotix Ag 00:03:C6 Icue Systems, Inc. 00:03:C7 Hopf Elektronik Gmbh 00:03:C8 Cml Emergency Services 00:03:C9 Tecom Co., Ltd. 00:03:CA Mts Systems Corp. 00:03:CB Nippon Systems Development Co., Ltd. 00:03:CC Momentum Computer, Inc. 00:03:CD Clovertech, Inc. 00:03:CE Eten Technologies, Inc. 00:03:CF Muxcom, Inc. 00:03:D0 Koankeiso Co., Ltd. 00:03:D1 Takaya Corporation 00:03:D2 Crossbeam Systems, Inc. 00:03:D3 Internet Energy Systems, Inc. 00:03:D4 Alloptic, Inc. 00:03:D5 Advanced Communications Co., Ltd. 00:03:D6 Radvision, Ltd. 00:03:D7 Nextnet Wireless, Inc. 00:03:D8 Impath Networks, Inc. 00:03:D9 Secheron Sa 00:03:DA Takamisawa Cybernetics Co., Ltd. 00:03:DB Apogee Electronics Corp. 00:03:DC Lexar Media, Inc. 00:03:DD Comark Corp. 00:03:DE Otc Wireless 00:03:DF Desana Systems 00:03:E0 Radioframe Networks, Inc. 00:03:E1 Winmate Communication, Inc. 00:03:E2 Comspace Corporation 00:03:E3 Cisco Systems, Inc. 00:03:E4 Cisco Systems, Inc. 00:03:E5 Hermstedt Sg 00:03:E6 Entone Technologies, Inc. 00:03:E7 Logostek Co. Ltd. 00:03:E8 Wavelength Digital Limited 00:03:E9 Akara Canada, Inc. 00:03:EA Mega System Technologies, Inc. 00:03:EB Atrica 00:03:EC Icg Research, Inc. 00:03:ED Shinkawa Electric Co., Ltd. 00:03:EE Mknet Corporation 00:03:EF Oneline Ag 00:03:F0 Redfern Broadband Networks 00:03:F1 Cicada Semiconductor, Inc. 00:03:F2 Seneca Networks 00:03:F3 Dazzle Multimedia, Inc. 00:03:F4 Netburner 00:03:F5 Chip2chip 00:03:F6 Allegro Networks, Inc. 00:03:F7 Plast-control Gmbh 00:03:F8 Sancastle Technologies, Inc. 00:03:F9 Pleiades Communications, Inc. 00:03:FA Timetra Networks 00:03:FB Toko Seiki Company, Ltd. 00:03:FC Intertex Data Ab 00:03:FD Cisco Systems, Inc. 00:03:FE Cisco Systems, Inc. 00:03:FF Connectix 00:04:00 Lexmark International, Inc. 00:04:01 Osaki Electric Co., Ltd. 00:04:02 Nexsan Technologies, Ltd. 00:04:03 Nexsi Corporation 00:04:04 Makino Milling Machine Co., Ltd. 00:04:05 Acn Technologies 00:04:06 Fa. Metabox Ag 00:04:07 Topcon Positioning Systems, Inc. 00:04:08 Sanko Electronics Co., Ltd. 00:04:09 Cratos Networks 00:04:0A Sage Systems 00:04:0B 3com Europe Ltd. 00:04:0C Kanno Work's Ltd. 00:04:0D Avaya, Inc. 00:04:0E Avm Gmbh 00:04:0F Asus Network Technologies, Inc. 00:04:10 Spinnaker Networks, Inc. 00:04:11 Inkra Networks, Inc. 00:04:12 Wavesmith Networks, Inc. 00:04:13 Snom Technology Ag 00:04:14 Umezawa Musen Denki Co., Ltd. 00:04:15 Rasteme Systems Co., Ltd. 00:04:16 Parks S/a Comunicacoes Digitais 00:04:17 Elau Ag 00:04:18 Teltronic S.a.u. 00:04:19 Fibercycle Networks, Inc. 00:04:1A Ines Gmbh 00:04:1B Digital Interfaces Ltd. 00:04:1C Ipdialog, Inc. 00:04:1D Corega Of America 00:04:1E Shikoku Instrumentation Co., Ltd. 00:04:1F Sony Computer Entertainment, Inc. 00:04:20 Slim Devices, Inc. 00:04:21 Ocular Networks 00:04:22 Gordon Kapes, Inc. 00:04:23 Intel Corporation 00:04:24 Tmc S.r.l. 00:04:25 Atmel Corporation 00:04:26 Autosys 00:04:27 Cisco Systems, Inc. 00:04:28 Cisco Systems, Inc. 00:04:29 Pixord Corporation 00:04:2A Wireless Networks, Inc. 00:04:2B It Access Co., Ltd. 00:04:2C Minet, Inc. 00:04:2D Sarian Systems, Ltd. 00:04:2E Netous Technologies, Ltd. 00:04:2F International Communications Products, Inc. 00:04:30 Netgem 00:04:31 Globalstreams, Inc. 00:04:32 Voyetra Turtle Beach, Inc. 00:04:33 Cyberboard A/s 00:04:34 Accelent Systems, Inc. 00:04:35 Comptek International, Inc. 00:04:36 Elansat Technologies, Inc. 00:04:37 Powin Information Technology, Inc. 00:04:38 Nortel Networks 00:04:39 Rosco Entertainment Technology, Inc. 00:04:3A Intelligent Telecommunications, Inc. 00:04:3B Lava Computer Mfg., Inc. 00:04:3C Sonos Co., Ltd. 00:04:3D Indel Ag 00:04:3E Telencomm 00:04:3F Electronic Systems Technology, Inc. 00:04:40 Cyberpixie, Inc. 00:04:41 Half Dome Systems, Inc. 00:04:42 Nact 00:04:43 Agilent Technologies, Inc. 00:04:44 Western Multiplex Corporation 00:04:45 Lms Skalar Instruments Gmbh 00:04:46 Cyzentech Co., Ltd. 00:04:47 Acrowave Systems Co., Ltd. 00:04:48 Polaroid Professional Imaging 00:04:49 Mapletree Networks 00:04:4A Ipolicy Networks, Inc. 00:04:4B Nvidia 00:04:4C Jenoptik 00:04:4D Cisco Systems, Inc. 00:04:4E Cisco Systems, Inc. 00:04:4F Leukhardt Systemelektronik Gmbh 00:04:50 Dmd Computers Srl 00:04:51 Medrad, Inc. 00:04:52 Rocketlogix, Inc. 00:04:53 Yottayotta, Inc. 00:04:54 Quadriga Uk 00:04:55 Antara.net 00:04:56 Pipinghot Networks 00:04:57 Universal Access Technology, Inc. 00:04:58 Fusion X Co., Ltd. 00:04:59 Veristar Corporation 00:04:5A Linksys WPC11, WUSB11 00:04:5B Techsan Electronics Co., Ltd. 00:04:5C Mobiwave Pte Ltd 00:04:5D Beka Elektronik 00:04:5E Polytrax Information Technology Ag 00:04:5F Evalue Technology, Inc. 00:04:60 Knilink Technology, Inc. 00:04:61 Epox Computer Co., Ltd. 00:04:62 Dakos Data & Communication Co., Ltd. 00:04:63 Philips Communication Security & Imaging 00:04:64 Fantasma Networks, Inc. 00:04:65 I.s.t Isdn-support Technik Gmbh 00:04:66 Armitel Co. 00:04:67 Wuhan Research Institute Of Mii 00:04:68 Vivity, Inc. 00:04:69 Innocom, Inc. 00:04:6A Navini Networks 00:04:6B Palm Wireless, Inc. 00:04:6C Cyber Technology Co., Ltd. 00:04:6D Cisco Systems, Inc. 00:04:6E Cisco Systems, Inc. 00:04:6F Digitel S/a Industria Eletronica 00:04:70 Ipunplugged Ab 00:04:71 Iprad 00:04:72 Telelynx, Inc. 00:04:73 Photonex Corporation 00:04:74 Legrand 00:04:75 3Com Corporation 00:04:76 3Com Corporation 00:04:77 Scalant Systems, Inc. 00:04:78 G. Star Technology Corporation 00:04:79 Radius Co., Ltd. 00:04:7A Axxessit Asa 00:04:7B Schlumberger 00:04:7C Skidata Ag 00:04:7D Pelco 00:04:7E Nkf Electronics 00:04:7F Chr. Mayr Gmbh & Co. Kg 00:04:80 Foundry Networks, Inc. 00:04:81 Econolite Control Products, Inc. 00:04:82 Medialogic Corp. 00:04:83 Deltron Technology, Inc. 00:04:84 Amann Gmbh 00:04:85 Picolight 00:04:86 Ittc, University Of Kansas 00:04:87 Cogency Semiconductor, Inc. 00:04:88 Eurotherm Action Incorporated. 00:04:89 Yafo Networks, Inc. 00:04:8A Temia Vertriebs Gmbh 00:04:8B Poscon Corporation 00:04:8C Nayna Networks, Inc. 00:04:8D Tone Commander Systems, Inc. 00:04:8E Ohm Tech Labs, Inc. 00:04:8F Td Systems Corp. 00:04:90 Optical Access 00:04:91 Technovision, Inc. 00:04:92 Hive Internet, Ltd. 00:04:93 Tsinghua Unisplendour Co., Ltd. 00:04:94 Breezecom, Ltd. 00:04:95 Tejas Networks 00:04:96 Extreme Networks 00:04:97 Macrosystem Digital Video Ag 00:04:98 Private 00:04:99 Chino Corporation 00:04:9A Cisco Systems, Inc. 00:04:9B Cisco Systems, Inc. 00:04:9C Surgient Networks, Inc. 00:04:9D Ipanema Technologies 00:04:9E Wirelink Co., Ltd. 00:04:9F Metrowerks 00:04:A0 Verity Instruments, Inc. 00:04:A1 Pathway Connectivity 00:04:A2 L.s.i. Japan Co., Ltd. 00:04:A3 Microchip Technology, Inc. 00:04:A4 Netenabled, Inc. 00:04:A5 Barco Projection Systems Nv 00:04:A6 Saf Tehnika Ltd. 00:04:A7 Fabiatech Corporation 00:04:A8 Broadmax Technologies, Inc. 00:04:A9 Sandstream Technologies, Inc. 00:04:AA Jetstream Communications 00:04:AB Comverse Network Systems, Inc. 00:04:AC Ibm Corp. 00:04:AD Malibu Networks 00:04:AE Liquid Metronics 00:04:AF Digital Fountain, Inc. 00:04:B0 Elesign Co., Ltd. 00:04:B1 Signal Technology, Inc. 00:04:B2 Essegi Srl 00:04:B3 Videotek, Inc. 00:04:B4 Ciac 00:04:B5 Equitrac Corporation 00:04:B6 Tellumat (pty) Ltd. 00:04:B7 Amb I.t. Holding 00:04:B8 Kumahira Co., Ltd. 00:04:B9 S.i. Soubou, Inc. 00:04:BA Kdd Media Will Corporation 00:04:BB Bardac Corporation 00:04:BC Giantec, Inc. 00:04:BD Motorola Bcs 00:04:BE Optxcon, Inc. 00:04:BF Versalogic Corp. 00:04:C0 Cisco Systems, Inc. 00:04:C1 Cisco Systems, Inc. 00:04:C2 Magnipix, Inc. 00:04:C3 Castor Informatique 00:04:C4 Allen & Health Limited 00:04:C5 Ase Technologies, Usa 00:04:C6 Yamaha Motor Co., Ltd. 00:04:C7 Netmount 00:04:C8 Liba Maschinenfabrik Gmbh 00:04:C9 Micro Electron Co., Ltd. 00:04:CA Freems Corp. 00:04:CB Tdsoft Communication, Ltd. 00:04:CC Peek Traffic B.v. 00:04:CD Informedia Research Group 00:04:CE Patria Ailon 00:04:CF Seagate Technology 00:04:D0 Softlink S.r.o. 00:04:D1 Drew Technologies, Inc. 00:04:D2 Adcon Telemetry Ag 00:04:D3 Toyokeiki Co., Ltd. 00:04:D4 Proview Electronics Co., Ltd. 00:04:D5 Hitachi Communication Systems, Inc. 00:04:D6 Takagi Industrial Co., Ltd. 00:04:D7 Omitec Instrumentation Ltd. 00:04:D8 Ipwireless, Inc. 00:04:D9 Titan Electronics, Inc. 00:04:DA Relax Technology, Inc. 00:04:DB Tellus Group Corp. 00:04:DC Nortel Networks 00:04:DD Cisco Systems, Inc. 00:04:DE Cisco Systems, Inc. 00:04:DF Teracom Telematica Ltda. 00:04:E0 Procket Networks 00:04:E1 Infinior Microsystems 00:04:E2 SMC SMC2632W 00:04:E3 Accton Technology Corp. 00:04:E4 Daeryung Ind., Inc. 00:04:E5 Glonet Systems, Inc. 00:04:E6 Banyan Network Private Limited 00:04:E7 Lightpointe Communications, Inc 00:04:E8 Ier, Inc. 00:04:E9 Infiniswitch Corporation 00:04:EA Hewlett-packard Company 00:04:EB Paxonet Communications, Inc. 00:04:EC Memobox Sa 00:04:ED Billion Electric Co., Ltd. 00:04:EE Lincoln Electric Company 00:04:EF Polestar Corp. 00:04:F0 International Computers, Ltd 00:04:F1 Wherenet 00:04:F2 Circa Communications, Ltd. 00:04:F3 Fs Forth-systeme Gmbh 00:04:F4 Infinite Electronics Inc. 00:04:F5 Snowshore Networks, Inc. 00:04:F6 Amphus 00:04:F7 Omega Band, Inc. 00:04:F8 Qualicable Tv Industria E Com., Ltda 00:04:F9 Xtera Communications, Inc. 00:04:FA Mist Inc. 00:04:FB Commtech, Inc. 00:04:FC Stratus Computer (de), Inc. 00:04:FD Japan Control Engineering Co., Ltd. 00:04:FE Pelago Networks 00:04:FF Acronet Co., Ltd. 00:05:00 Cisco Systems, Inc. 00:05:01 Cisco Systems, Inc. 00:05:02 Apple Computer 00:05:03 Iconag 00:05:04 Naray Information & Communication Enterprise 00:05:05 Systems Integration Solutions, Inc. 00:05:06 Reddo Networks Ab 00:05:07 Fine Appliance Corp. 00:05:08 Inetcam, Inc. 00:05:09 Avoc Nishimura Ltd. 00:05:0A Ics Spa 00:05:0B Sicom Systems, Inc. 00:05:0C Network Photonics, Inc. 00:05:0D Midstream Technologies, Inc. 00:05:0E 3ware, Inc. 00:05:0F Tanaka S/s Ltd. 00:05:10 Infinite Shanghai Communication Terminals Ltd. 00:05:11 Complementary Technologies Ltd 00:05:12 Meshnetworks, Inc. 00:05:13 Vtlinx Multimedia Systems, Inc. 00:05:14 Kdt Systems Co., Ltd. 00:05:15 Nuark Co., Ltd. 00:05:16 Smart Modular Technologies 00:05:17 Shellcomm, Inc. 00:05:18 Jupiters Technology 00:05:19 Siemens Building Technologies Ag, 00:05:1A 3com Europe Ltd. 00:05:1B Magic Control Technology Corporation 00:05:1C Xnet Technology Corp. 00:05:1D Airocon, Inc. 00:05:1E Rhapsody Networks 00:05:1F Taijin Media Co., Ltd. 00:05:20 Smartronix, Inc. 00:05:21 Control Microsystems 00:05:22 Lea*d Corporation, Inc. 00:05:23 Avl List Gmbh 00:05:24 Btl System (hk) Limited 00:05:25 Puretek Industrial Co., Ltd. 00:05:26 Ipas Gmbh 00:05:27 Sj Tek Co. Ltd 00:05:28 New Focus, Inc. 00:05:29 Shanghai Broadan Communication Technology Co., Ltd 00:05:2A Ikegami Tsushinki Co., Ltd. 00:05:2B Horiba, Ltd. 00:05:2C Supreme Magic Corporation 00:05:2D Zoltrix International Limited 00:05:2E Cinta Networks 00:05:2F Leviton Voice And Data 00:05:30 Andiamo Systems, Inc. 00:05:31 Cisco Systems, Inc. 00:05:32 Cisco Systems, Inc. 00:05:33 Sanera Systems, Inc. 00:05:34 Northstar Engineering Ltd. 00:05:35 Chip Pc Ltd. 00:05:36 Danam Communications, Inc. 00:05:37 Nets Technology Co., Ltd. 00:05:38 Merilus, Inc. 00:05:39 A Brand New World In Sweden Ab 00:05:3A Willowglen Services Pte Ltd 00:05:3B Harbour Networks Ltd., Co. Beijing 00:05:3C Xircom 00:05:3D Agere Systems 00:05:3E Kid Systeme Gmbh 00:05:3F Visiontek, Inc. 00:05:40 Fast Corporation 00:05:41 Advanced Systems Co., Ltd. 00:05:42 Otari, Inc. 00:05:43 Iq Wireless Gmbh 00:05:44 Valley Technologies, Inc. 00:05:45 Internet Photonics 00:05:46 K-solutions Inc. 00:05:47 Starent Networks 00:05:48 Disco Corporation 00:05:49 Salira Optical Network Systems 00:05:4A Ario Data Networks, Inc. 00:05:4B Micro Innovation Ag 00:05:4C Rf Innovations Pty Ltd 00:05:4D Brans Technologies, Inc. 00:05:4E Philips Components 00:05:4F Private 00:05:50 Digi-tech Communications Limited 00:05:51 F & S Elektronik Systeme Gmbh 00:05:52 Xycotec Computer Gmbh 00:05:53 Dvc Company, Inc. 00:05:54 Rangestar Wireless 00:05:55 Japan Cash Machine Co., Ltd. 00:05:56 360 Systems 00:05:57 Agile Tv Corporation 00:05:58 Synchronous, Inc. 00:05:59 Intracom S.a. 00:05:5A Power Dsine Ltd. 00:05:5B Charles Industries, Ltd. 00:05:5C Kowa Company, Ltd. 00:05:5D D-Link DWL-650, DWL-650H 00:05:5E Cisco Systems, Inc. 00:05:5F Cisco Systems, Inc. 00:05:60 Leader Comm.co., Ltd 00:05:61 Nac Image Technology, Inc. 00:05:62 Digital View Limited 00:05:63 J-works, Inc. 00:05:64 Tsinghua Bitway Co., Ltd. 00:05:65 Tailyn Communication Company Ltd. 00:05:66 Secui.com Corporation 00:05:67 Etymonic Design, Inc. 00:05:68 Piltofish Networks Ab 00:05:69 Vmware, Inc. 00:05:6A Private 00:05:6B C.p. Technology Co., Ltd. 00:05:6C Hung Chang Co., Ltd. 00:05:6D Pacific Corporation 00:05:6E National Enhance Technology, Inc. 00:05:6F Innomedia Technologies Pvt. Ltd. 00:05:70 Baydel Ltd. 00:05:71 Seiwa Electronics Co. 00:05:72 Deonet Co., Ltd. 00:05:73 Cisco Systems, Inc. 00:05:74 Cisco Systems, Inc. 00:05:75 Cds-electronics Bv 00:05:76 Nsm Technology Ltd. 00:05:77 Sm Information & Communication 00:05:78 Private 00:05:79 Universal Control Solution Corp. 00:05:7A Hatteras Networks 00:05:7B Chung Nam Electronic Co., Ltd. 00:05:7C Rco Security Ab 00:05:7D Sun Communications, Inc. 00:05:7E Eckelmann Steuerungstechnik Gmbh 00:05:7F Acqis Technology 00:05:80 Fibrolan Ltd. 00:05:81 Snell & Wilcox Ltd. 00:05:82 Clearcube Technology 00:05:83 Imagecom Limited 00:05:84 Absolutevalue Systems, Inc. 00:05:85 Juniper Networks, Inc. 00:05:86 Lucent Technologies 00:05:87 Locus, Incorporated 00:05:88 Sensoria Corp. 00:05:89 National Datacomputer 00:05:8A Netcom Co., Ltd. 00:05:8B Ipmental, Inc. 00:05:8C Opentech Inc. 00:05:8D Lynx Photonic Networks, Inc. 00:05:8E Ahead Communications System Gmbh 00:05:8F Clcsoft Co. 00:05:90 Swissvoice Ltd. 00:05:91 Active Silicon Ltd. 00:05:92 Pultek Corp. 00:05:93 Grammar Engine Inc. 00:05:94 Ixxat Automation Gmbh 00:05:95 Alesis Corporation 00:05:96 Genotech Co., Ltd. 00:05:97 Eagle Traffic Control Systems 00:05:98 Cronos S.r.l. 00:05:99 Pei Electronics, Inc. 00:05:9A Cisco Systems, Inc. 00:05:9B Cisco Systems, Inc. 00:05:9C Kleinknecht Gmbh, Ing. Buero 00:05:9D Daniel Computing Systems, Inc. 00:05:9E Zinwell Corporation 00:05:9F Yotta Networks, Inc. 00:05:A0 Mobiline Kft. 00:05:A1 Zenocom 00:05:A2 Celox Networks 00:05:A3 Qei, Inc. 00:05:A4 Lucid Voice Ltd. 00:05:A5 Kott 00:05:A6 Extron Electronics 00:05:A7 Hyperchip, Inc. 00:05:A8 Wyle Electronics 00:05:A9 Princeton Networks, Inc. 00:05:AA Moore Industries International Inc. 00:05:AB Cyber Fone, Inc. 00:05:AC Northern Digital, Inc. 00:05:AD Topspin Communications, Inc. 00:05:AE Mediaport Usa 00:05:AF Innoscan Computing A/s 00:05:B0 Korea Computer Technology Co., Ltd. 00:05:B1 Asb Technology Bv 00:05:B2 Medison Co., Ltd. 00:05:B3 Asahi-engineering Co., Ltd. 00:05:B4 Aceex Corporation 00:05:B5 Broadcom Technologies 00:05:B6 Insys Microelectronics Gmbh 00:05:B7 Arbor Technology Corp. 00:05:B8 Electronic Design Associates, Inc. 00:05:B9 Airvana, Inc. 00:05:BA Area Netwoeks, Inc. 00:05:BB Myspace Ab 00:05:BC Resorsys Ltd. 00:05:BD Roax Bv 00:05:BE Kongsberg Seatex As 00:05:BF Justezy Technology, Inc. 00:05:C0 Digital Network Alacarte Co., Ltd. 00:05:C1 A-kyung Motion, Inc. 00:05:C2 Digital Archway, Inc. 00:05:C3 Pacific Instruments, Inc. 00:05:C4 Telect, Inc. 00:05:C5 Flaga Hf 00:05:C6 Triz Communications 00:05:C7 I/f-com A/s 00:05:C8 Verytech 00:05:C9 Lg Innotek 00:05:CA Hitron Technology, Inc. 00:05:CB Rois Technologies, Inc. 00:05:CC Sumtel Communications, Inc. 00:05:CD Denon, Ltd. 00:05:CE Prolink Microsystems Corporation 00:05:CF Thunder River Technologies, Inc. 00:05:D0 Solinet Systems 00:05:D1 Metavector Technologies 00:05:D2 Dap Technologies 00:05:D3 Eproduction Solutions, Inc. 00:05:D4 Futuresmart Networks, Inc. 00:05:D5 Speedcom Wireless 00:05:D6 Titan Wireless 00:05:D7 Vista Imaging, Inc. 00:05:D8 Arescom, Inc. 00:05:D9 Techno Valley, Inc. 00:05:DA Apex Automationstechnik 00:05:DB Nentec Gmbh 00:05:DC Cisco Systems, Inc. 00:05:DD Cisco Systems, Inc. 00:05:DE Gi Fone Korea, Inc. 00:05:DF Electronic Innovation, Inc. 00:05:E0 Empirix Corp. 00:05:E1 Trellis Photonics, Ltd. 00:05:E2 Creativ Network Technologies 00:05:E3 Lightsand Communications, Inc. 00:05:E4 Red Lion Controls L.p. 00:05:E5 Renishaw Plc 00:05:E6 Egenera, Inc. 00:05:E7 Netrake Corp. 00:05:E8 Turbowave, Inc. 00:05:E9 Unicess Network, Inc. 00:05:EA Rednix 00:05:EB Blue Ridge Networks, Inc. 00:05:EC Mosaic Systems Inc. 00:05:ED Technikum Joanneum Gmbh 00:05:EE Bewator Group 00:05:EF Adoir Digital Technology 00:05:F0 Satec 00:05:F1 Vrcom, Inc. 00:05:F2 Power R, Inc. 00:05:F3 Weboyn 00:05:F4 System Base Co., Ltd. 00:05:F5 Oyo Geospace Corp. 00:05:F6 Young Chang Co. Ltd. 00:05:F7 Analog Devices, Inc. 00:05:F8 Real Time Access, Inc. 00:05:F9 Toa Corporation 00:05:FA Ipoptical, Inc. 00:05:FB Sharegate, Inc. 00:05:FC Schenck Pegasus Corp. 00:05:FD Packetlight Networks Ltd. 00:05:FE Traficon N.v. 00:05:FF Sns Solutions, Inc. 00:06:00 Tokyo Electronic Industry Co., Ltd. 00:06:01 Otanikeiki Co., Ltd. 00:06:02 Cirkitech Electronics Co. 00:06:03 Baker Hughes Inc. 00:06:04 @track Communications, Inc. 00:06:05 Inncom International, Inc. 00:06:06 Rapidwan, Inc. 00:06:07 Omni Directional Control Technology Inc. 00:06:08 At-sky Sas 00:06:09 Crossport Systems 00:06:0A Blue2space 00:06:0B Paceline Systems Corporation 00:06:0C Melco Industries, Inc. 00:06:0D Wave7 Optics 00:06:0E Igys Systems, Inc. 00:06:0F Narad Networks Inc 00:06:10 Abeona Networks Inc 00:06:11 Zeus Wireless, Inc. 00:06:12 Accusys, Inc. 00:06:13 Kawasaki Microelectronics Incorporated 00:06:14 Prism Holdings 00:06:15 Kimoto Electric Co., Ltd. 00:06:16 Tel Net Co., Ltd. 00:06:17 Redswitch Inc. 00:06:18 Digipower Manufacturing Inc. 00:06:19 Connection Technology Systems 00:06:1A Zetari Inc. 00:06:1B Portable Systems, Ibm Japan Co, Ltd 00:06:1C Hoshino Metal Industries, Ltd. 00:06:1D Mip Telecom, Inc. 00:06:1E Maxan Systems 00:06:1F Vision Components Gmbh 00:06:20 Serial System Ltd. 00:06:21 Hinox, Co., Ltd. 00:06:22 Chung Fu Chen Yeh Enterprise Corp. 00:06:23 Mge Ups Systems France 00:06:24 Gentner Communications Corp. 00:06:25 Linksys WPC11 v2.5, D-Link DCF-650W, Linksys WPC11 v3 00:06:26 Mwe Gmbh 00:06:27 Uniwide Technologies, Inc. 00:06:28 Cisco Systems, Inc. 00:06:29 Ibm Corporation 00:06:2A Cisco Systems, Inc. 00:06:2B Intraserver Technology 00:06:2C Network Robots, Inc. 00:06:2D Touchstar Technologies, L.l.c. 00:06:2E Aristos Logic Corp. 00:06:2F Pivotech Systems Inc. 00:06:30 Adtranz Sweden 00:06:31 Optical Solutions, Inc. 00:06:32 Mesco Engineering Gmbh 00:06:33 Heimann Biometric Systems Gmbh 00:06:34 Gte Airfone Inc. 00:06:35 Packetair Networks, Inc. 00:06:36 Jedai Broadband Networks 00:06:37 Toptrend-meta Information (shenzhen) Inc. 00:06:38 Sungjin C&c Co., Ltd. 00:06:39 Newtec 00:06:3A Dura Micro, Inc. 00:06:3B Arcturus Networks, Inc. 00:06:3C Nmi Electronics Ltd 00:06:3D Microwave Data Systems Inc. 00:06:3E Opthos Inc. 00:06:3F Everex Communications Inc. 00:06:40 White Rock Networks 00:06:41 Itcn 00:06:42 Genetel Systems Inc. 00:06:43 Sono Computer Co., Ltd. 00:06:44 Neix Inc. 00:06:45 Meisei Electric Co. Ltd. 00:06:46 Shenzhen Xunbao Network Technology Co Ltd 00:06:47 Etrali S.a. 00:06:48 Seedsware, Inc. 00:06:49 Quante 00:06:4A Honeywell Co., Ltd. (korea) 00:06:4B Alexon Co., Ltd. 00:06:4C Invicta Networks, Inc. 00:06:4D Sencore 00:06:4E Broad Net Technology Inc. 00:06:4F Pro-nets Technology Corporation 00:06:50 Tiburon Networks, Inc. 00:06:51 Aspen Networks Inc. 00:06:52 Cisco Systems, Inc. 00:06:53 Cisco Systems, Inc. 00:06:54 Maxxio Technologies 00:06:55 Yipee, Inc. 00:06:56 Tactel Ab 00:06:57 Market Central, Inc. 00:06:58 Helmut Fischer Gmbh & Co. Kg 00:06:59 Eal (apeldoorn) B.v. 00:06:5A Strix Systems 00:06:5B Dell Computer Corp. 00:06:5C Malachite Technologies, Inc. 00:06:5D Heidelberg Web Systems 00:06:5E Photuris, Inc. 00:06:5F Eci Telecom - Ngts Ltd. 00:06:60 Nadex Co., Ltd. 00:06:61 Nia Home Technologies Corp. 00:06:62 Mbm Technology Ltd. 00:06:63 Human Technology Co., Ltd. 00:06:64 Fostex Corporation 00:06:65 Sunny Giken, Inc. 00:06:66 Roving Networks 00:06:67 Tripp Lite 00:06:68 Vicon Industries Inc. 00:06:69 Datasound Laboratories Ltd 00:06:6A Infinicon Systems, Inc. 00:06:6B Sysmex Corporation 00:06:6C Robinson Corporation 00:06:6D Compuprint S.p.a. 00:06:6E Delta Electronics, Inc. 00:06:6F Korea Data Systems 00:06:70 Upponetti Oy 00:06:71 Softing Ag 00:06:72 Netezza 00:06:73 Optelecom, Inc. 00:06:74 Spectrum Control, Inc. 00:06:75 Banderacom, Inc. 00:06:76 Novra Technologies Inc. 00:06:77 Sick Ag 00:06:78 Marantz Japan, Inc. 00:06:79 Konami Corporation 00:06:7A Jmp Systems 00:06:7B Toplink C&c Corporation 00:06:7C Cisco Systems, Inc. 00:06:7D Takasago Ltd. 00:06:7E Wincom Systems, Inc. 00:06:7F Rearden Steel Technologies 00:06:80 Card Access, Inc. 00:06:81 Goepel Electronic Gmbh 00:06:82 Convedia 00:06:83 Bravara Communications, Inc. 00:06:84 Biacore Ab 00:06:85 Netnearu Corporation 00:06:86 Zardcom Co., Ltd. 00:06:87 Omnitron Systems Technology, Inc. 00:06:88 Telways Communication Co., Ltd. 00:06:89 Ylez Technologies Pte Ltd 00:06:8A Neuronnet Co. Ltd. R&d Center 00:06:8B Airrunner Technologies, Inc. 00:06:8C 3com Corporation 00:06:8D Sangate Systems 00:06:8E Hid Corporation 00:06:8F Telemonitor, Inc. 00:06:90 Euracom Communication Gmbh 00:06:91 Pt Inovacao 00:06:92 Intruvert Networks, Inc. 00:06:93 Flexus Computer Technology, Inc. 00:06:94 Mobillian Corporation 00:06:95 Ensure Technologies, Inc. 00:06:96 Advent Networks 00:06:97 R & D Center 00:06:98 Egnite Software Gmbh 00:06:99 Vida Design Co. 00:06:9A E & Tel 00:06:9B Avt Audio Video Technologies Gmbh 00:06:9C Transmode Systems Ab 00:06:9D Petards Mobile Intelligence 00:06:9E Uniqa, Inc. 00:06:9F Kuokoa Networks 00:06:A0 Mx Imaging 00:06:A1 Celsian Technologies, Inc. 00:06:A2 Microtune, Inc. 00:06:A3 Bitran Corporation 00:06:A4 Innowell Corp. 00:06:A5 Pinon Corp. 00:06:A6 Artistic Licence (uk) Ltd 00:06:A7 Primarion 00:06:A8 Kc Technology, Inc. 00:06:A9 Universal Instruments Corp. 00:06:AA Miltope Corporation 00:06:AB W-link Systems, Inc. 00:06:AC Intersoft Co. 00:06:AD Kb Electronics Ltd. 00:06:AE Himachal Futuristic Communications Ltd 00:06:AF Private 00:06:B0 Comtech Ef Data Corp. 00:06:B1 Sonicwall 00:06:B2 Linxtek Co. 00:06:B3 Diagraph Corporation 00:06:B4 Vorne Industries, Inc. 00:06:B5 Luminent, Inc. 00:06:B6 Nir-or Israel Ltd. 00:06:B7 Telem Gmbh 00:06:B8 Bandspeed Pty Ltd 00:06:B9 A5tek Corp. 00:06:BA Westwave Communications 00:06:BB Ati Technologies Inc. 00:06:BC Macrolink, Inc. 00:06:BD Bntechnology Co., Ltd. 00:06:BE Baumer Optronic Gmbh 00:06:BF Accella Technologies Co., Ltd. 00:06:C0 United Internetworks, Inc. 00:06:C1 Cisco Systems, Inc. 00:06:C2 Smartmatic Corporation 00:06:C3 Schindler Elevators Ltd. 00:06:C4 Piolink Inc. 00:06:C5 Innovi Technologies Limited 00:06:C6 Lesswire Ag 00:06:C7 Rfnet Technologies Pte Ltd (s) 00:06:C8 Sumitomo Metal Micro Devices, Inc. 00:06:C9 Technical Marketing Research, Inc. 00:06:CA American Computer & Digital Components, Inc. (acdc) 00:06:CB Jotron Electronics A/s 00:06:CC Jmi Electronics Co., Ltd. 00:06:CD Creoscitex Corporation Ltd. 00:06:CE Dateno 00:06:CF Thales Avionics In-flight Systems, Llc 00:06:D0 Elgar Electronics Corp. 00:06:D1 Tahoe Networks, Inc. 00:06:D2 Tundra Semiconductor Corp. 00:06:D3 Alpha Telecom, Inc. U.s.a. 00:06:D4 Interactive Objects, Inc. 00:06:D5 Diamond Systems Corp. 00:06:D6 Cisco Systems, Inc. 00:06:D7 Cisco Systems, Inc. 00:06:D8 Maple Optical Systems 00:06:D9 Ipm-net S.p.a. 00:06:DA Itran Communications Ltd. 00:06:DB Ichips Co., Ltd. 00:06:DC Syabas Technology (amquest) 00:06:DD At & T Laboratories - Cambridge Ltd 00:06:DE Flash Technology 00:06:DF Aidonic Corporation 00:06:E0 Mat Co., Ltd. 00:06:E1 Techno Trade S.a 00:06:E2 Ceemax Technology Co., Ltd. 00:06:E3 Quantitative Imaging Corporation 00:06:E4 Citel Technologies Ltd. 00:06:E5 Fujian Newland Computer Ltd. Co. 00:06:E6 Dongyang Telecom Co., Ltd. 00:06:E7 Bit Blitz Communications Inc. 00:06:E8 Optical Network Testing, Inc. 00:06:E9 Intime Corp. 00:06:EA Elzet80 Mikrocomputer Gmbh&co. Kg 00:06:EB Global Data 00:06:EC M/a Com Private Radio System Inc. 00:06:ED Inara Networks 00:06:EE Shenyang Neu-era Information & Technology Stock Co., Ltd 00:06:EF Maxxan Systems, Inc. 00:06:F0 Digeo, Inc. 00:06:F1 Optillion 00:06:F2 Platys Communications 00:06:F3 Accelight Networks 00:06:F4 Prime Electronics & Satellitics Inc. 00:06:F8 Private 00:06:F9 Mitsui Zosen Systems Research Inc. 00:06:FA Ip Square Co, Ltd. 00:06:FB Hitachi Koki Co., Ltd. 00:06:FC Fnet Co., Ltd. 00:06:FD Comjet Information Systems Corp. 00:06:FE Celion Networks, Inc. 00:06:FF Sheba Systems Co., Ltd. 00:07:00 Zettamedia Korea 00:07:01 Racal-datacom 00:07:02 Varian Medical Systems 00:07:03 Csee Transport 00:07:05 Endress & Hauser Gmbh & Co 00:07:06 Sanritz Corporation 00:07:07 Interalia Inc. 00:07:08 Bitrage Inc. 00:07:09 Westerstrand Urfabrik Ab 00:07:0A Unicom Automation Co., Ltd. 00:07:0B Octal, Sa 00:07:0C Sva-intrusion.com Co. Ltd. 00:07:0D Cisco Systems Inc. 00:07:0E Cisco AIR-PCM352 00:07:0F Fujant, Inc. 00:07:10 Adax, Inc. 00:07:11 Acterna 00:07:12 Jal Information Technology 00:07:13 Ip One, Inc. 00:07:14 Brightcom 00:07:15 General Research Of Electronics, Inc. 00:07:16 J & S Marine Ltd. 00:07:17 Wieland Electric Gmbh 00:07:18 Icantek Co., Ltd. 00:07:19 Mobiis Co., Ltd. 00:07:1A Finedigital Inc. 00:07:1B Position Technology Inc. 00:07:1C At&t Fixed Wireless Services 00:07:1D Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.a. 00:07:1E Tri-m Engineering / Nupak Dev. Corp. 00:07:1F European Systems Integration 00:07:20 Trutzschler Gmbh & Co. Kg 00:07:21 Formac Elektronik Gmbh 00:07:22 Nielsen Media Research 00:07:23 Elcon Systemtechnik Gmbh 00:07:24 Telemax Co., Ltd. 00:07:25 Bematech International Corp. 00:07:27 Zi Corporation (hk) Ltd. 00:07:28 Neo Telecom 00:07:29 Kistler Instrumente Ag 00:07:2A Innovance Networks 00:07:2B Jung Myung Telecom Co., Ltd. 00:07:2C Fabricom 00:07:2D Cnsystems 00:07:2E North Node Ab 00:07:2F Instransa, Inc. 00:07:30 Hutchison Optel Telecom Technology Co., Ltd. 00:07:31 Spiricon, Inc. 00:07:32 Aaeon Technology Inc. 00:07:33 Dancontrol Engineering 00:07:34 Agile Storage, Inc. 00:07:35 Flarion Technologies, Inc. 00:07:36 Data Video Technologies Co., Ltd. 00:07:37 Soriya Co. Ltd. 00:07:38 Young Technology Co., Ltd. 00:07:39 Motion Media Technology Ltd. 00:07:3A Inventel Systemes 00:07:3B Tenovis Gmbh & Co Kg 00:07:3C Telecom Design 00:07:3D Nanjing Postel Telecommunications Co., Ltd. 00:07:3E China Great-wall Computer Shenzhen Co., Ltd. 00:07:3F Woojyun Systec Co., Ltd. 00:07:40 Melco Inc. 00:07:41 Sierra Automated Systems 00:07:42 Current Technologies 00:07:43 Chelsio Communications 00:07:44 Unico, Inc. 00:07:45 Radlan Computer Communications Ltd. 00:07:46 Interlink Bt, Llc 00:07:47 Mecalc 00:07:48 The Imaging Source Europe 00:07:49 Cenix Inc. 00:07:4A Carl Valentin Gmbh 00:07:4B Daihen Corporation 00:07:4C Beicom Inc. 00:07:4D Zebra Technologies Corp. 00:07:4E Naughty Boy Co., Ltd. 00:07:4F Cisco Systems, Inc. 00:07:50 Cisco AIR-LMC352 00:07:51 M.u.t. - Gmbh 00:07:52 Rhythm Watch Co., Ltd. 00:07:53 Beijing Qxcomm Technology Co., Ltd. 00:07:54 Xyterra Computing, Inc. 00:07:55 Lafon Sa 00:07:56 Juyoung Telecom 00:07:57 Topcall International Ag 00:07:58 Dragonwave 00:07:59 Boris Manufacturing Corp. 00:07:5A Air Products And Chemicals, Inc. 00:07:5B Gibson Guitars 00:07:5C Encad, Inc. 00:07:5D Celleritas Inc. 00:07:5E Pulsar Technologies, Inc. 00:07:5F Vcs Video Communication Systems Ag 00:07:60 Tomis Information & Telecom Corp. 00:07:61 Logitech Sa 00:07:62 Group Sense Limited 00:07:63 Sunniwell Cyber Tech. Co., Ltd. 00:07:64 Youngwoo Telecom Co. Ltd. 00:07:65 Jade Quantum Technologies, Inc. 00:07:66 Chou Chin Industrial Co., Ltd. 00:07:67 Yuxing Electronics Company Limited 00:07:68 Danfoss A/s 00:07:69 Italiana Macchi Spa 00:07:6A Nexteye Co., Ltd. 00:07:6B Stralfors Ab 00:07:6C Daehanet, Inc. 00:07:6D Flexlight Networks 00:07:6E Sinetica Corporation Ltd. 00:07:6F Synoptics Limited 00:07:70 Locusnetworks Corporation 00:07:71 Embedded System Corporation 00:07:72 Shanghai Bell Company Limited 00:07:73 Ascom Powerline Communications Ltd. 00:07:74 Guangzhou Thinker Technology Co. Ltd. 00:07:75 Valence Semiconductor, Inc. 00:07:76 Federal Apd 00:07:77 Motah Ltd. 00:07:78 Gerstel Gmbh & Co. Kg 00:07:79 Sungil Telecom Co., Ltd. 00:07:7A Infoware System Co., Ltd. 00:07:7B Millimetrix Broadband Networks 00:07:7C Ontime Networks 00:07:7E Elrest Gmbh 00:07:7F J Communications Co., Ltd. 00:07:80 Bluegiga Technologies Oy 00:07:81 Itron Inc. 00:07:82 Nauticus Networks, Inc. 00:07:83 Syncom Network, Inc. 00:07:84 Cisco Systems Inc. 00:07:85 Cisco Systems Inc. 00:07:86 Wireless Networks Inc. 00:07:87 Idea System Co., Ltd. 00:07:88 Clipcomm, Inc. 00:07:89 Eastel Systems Corporation 00:07:8A Mentor Data System Inc. 00:07:8B Wegener Communications, Inc. 00:07:8C Elektronikspecialisten I Borlange Ab 00:07:8D Netengines Ltd. 00:07:8E Garz & Friche Gmbh 00:07:8F Emkay Innovative Products 00:07:90 Tri-m Technologies (s) Limited 00:07:91 International Data Communications, Inc. 00:07:92 Suetron Electronic Gmbh 00:07:93 Private 00:07:94 Simple Devices, Inc. 00:07:95 Elitegroup Computer System Co. (ecs) 00:07:96 Lsi Systems, Inc. 00:07:97 Netpower Co., Ltd. 00:07:98 Selea Srl 00:07:99 Tipping Point Technologies, Inc. 00:07:9A Smartsight Networks Inc. 00:07:9B Aurora Networks 00:07:9C Golden Electronics Technology Co., Ltd. 00:07:9D Musashi Co., Ltd. 00:07:9E Ilinx Co., Ltd. 00:07:9F Action Digital Inc. 00:07:A0 E-watch Inc. 00:07:A1 Viasys Critical Care 00:07:A2 Opteon Corporation 00:07:A3 Ositis Software, Inc. 00:07:A4 Gn Netcom Ltd. 00:07:A5 Y.d.k Co. Ltd. 00:07:A6 Home Automation, Inc. 00:07:A7 A-z Inc. 00:07:A8 Haier Group Technologies Ltd. 00:07:A9 Novasonics 00:07:AA Quantum Data Inc. 00:07:AC Eolring 00:07:AD Pentacon Gmbh Foto-und Feinwerktechnik 00:07:AE Layer N Networks 00:07:AF N-tron Corp. 00:07:B0 Office Details, Inc. 00:07:B1 Equator Technologies 00:07:B2 Transaccess S.a. 00:07:B3 Cisco Systems Inc. 00:07:B4 Cisco Systems Inc. 00:07:B5 Any One Wireless Ltd. 00:07:B6 Telecom Technology Ltd. 00:07:B7 Samurai Ind. Prods Eletronicos Ltda 00:07:B8 American Predator Corp. 00:07:B9 Ginganet Corporation 00:07:BA Xebeo Communications, Inc. 00:07:BB Confluence Networks 00:07:BC Identix Inc. 00:07:BD Radionet Ltd. 00:07:BE Datalogic Spa 00:07:BF Armillaire Technologies, Inc. 00:07:C0 Netzerver Inc. 00:07:C1 Overture Networks, Inc. 00:07:C2 Netsys Telecom 00:07:C3 Cirpack 00:07:C4 Jean Co. Ltd. 00:07:C5 Gcom, Inc. 00:07:C6 Vds Vosskuhler Gmbh 00:07:C7 Synectics Systems Limited 00:07:C8 Brain21, Inc. 00:07:C9 Technol Seven Co., Ltd. 00:07:CA Creatix Polymedia Ges Fur Kommunikaitonssysteme 00:07:CB Freebox Sa 00:07:CC Kaba Benzing Gmbh 00:07:CD Nmtel Co., Ltd. 00:07:CE Cabletime Limited 00:07:CF Anoto Ab 00:07:D0 Automat Engenharia De Automaoa Ltda. 00:07:D1 Spectrum Signal Processing Inc. 00:07:D2 Logopak Systeme 00:07:D3 Stork Digital Imaging B.v. 00:07:D4 Zhejiang Yutong Network Communication Co Ltd. 00:07:D5 3e Technologies Int;., Inc. 00:07:D6 Commil Ltd. 00:07:D7 Caporis Networks Ag 00:07:D8 Hitron Systems Inc. 00:07:D9 Splicecom 00:07:DA Neuro Telecom Co., Ltd. 00:07:DB Kirana Networks, Inc. 00:07:DC Atek Co, Ltd. 00:07:DD Cradle Technologies 00:07:DE Ecopilt Ab 00:07:DF Vbrick Systems Inc. 00:07:E0 Palm Inc. 00:07:E1 Wis Communications Co. Ltd. 00:07:E2 Bitworks, Inc. 00:07:E3 Navcom Technology, Inc. 00:07:E4 Softradio Co., Ltd. 00:07:E5 Coup Corporation 00:07:E6 Edgeflow Canada Inc. 00:07:E7 Freewave Technologies 00:07:E8 St. Bernard Software 00:07:E9 Intel Corporation 00:07:EA Massana, Inc. 00:07:EB Cisco Systems Inc. 00:07:EC Cisco Systems Inc. 00:07:ED Altera Corporation 00:07:EE Telco Informationssysteme Gmbh 00:07:EF Lockheed Martin Tactical Systems 00:07:F0 Logisync Corporation 00:07:F1 Teraburst Networks Inc. 00:07:F2 Ioa Corporation 00:07:F3 Think Engine Networks 00:07:F4 Eletex Co., Ltd. 00:07:F5 Bridgeco Co Ag 00:07:F6 Qqest Software Systems 00:07:F7 Galtronics 00:07:F8 Itdevices, Inc. 00:07:F9 Phonetics, Inc. 00:07:FA Itt Co., Ltd. 00:07:FB Giga Stream Umts Technologies Gmbh 00:07:FC Adept Systems Inc. 00:07:FD Lanergy Ltd. 00:07:FE Rigaku Corporation 00:07:FF Gluon Networks 00:08:00 Multitech Systems, Inc. 00:08:01 Highspeed Surfing Inc. 00:08:02 Compaq Computer Corporation 00:08:03 Cos Tron 00:08:04 Ica Inc. 00:08:05 Techno-holon Corporation 00:08:06 Raonet Systems, Inc. 00:08:07 Access Devices Limited 00:08:08 Ppt Vision, Inc. 00:08:09 Systemonic Ag 00:08:0A Espera-werke Gmbh 00:08:0B Birka Bpa Informationssystem Ab 00:08:0C Vda Elettronica Srl 00:08:0D Toshiba 00:08:0E Motorola, Bcs 00:08:0F Proximion Fiber Optics Ab 00:08:10 Key Technology, Inc. 00:08:11 Voix Corporation 00:08:12 Gm-2 Corporation 00:08:13 Diskbank, Inc. 00:08:14 Til Technologies 00:08:15 Cats Co., Ltd. 00:08:16 Bluetags A/s 00:08:17 Emergecore Networks Llc 00:08:18 Pixelworks, Inc. 00:08:19 Banksys 00:08:1A Sanrad Intelligence Storage Communications (2000) Ltd. 00:08:1B Windigo Systems 00:08:1C @pos.com 00:08:1D Ipsil, Incorporated 00:08:1E Repeatit Ab 00:08:1F Pou Yuen Tech Corp. Ltd. 00:08:20 Cisco Systems Inc. 00:08:21 Cisco AIR-PCM352 00:08:22 Inpro Comm 00:08:23 Texa Corp. 00:08:24 Promatek Industries Ltd. 00:08:25 Acme Packet 00:08:26 Colorado Med Tech 00:08:27 Pirelli Cables & Systems 00:08:28 Koei Engineering Ltd. 00:08:29 Aval Nagasaki Corporation 00:08:2A Powerwallz Network Security 00:08:2B Wooksung Electronics, Inc. 00:08:2C Homag Ag 00:08:2D Indus Teqsite Private Limited 00:08:2E Multitone Electronics Plc 00:08:4E Divergenet, Inc. 00:08:4F Qualstar Corporation 00:08:50 Arizona Instrument Corp. 00:08:51 Canadian Bank Note Company, Ltd. 00:08:52 Davolink Co. Inc. 00:08:53 Schleicher Gmbh & Co. Relaiswerke Kg 00:08:54 Netronix, Inc. 00:08:55 Nasa-goddard Space Flight Center 00:08:56 Gamatronic Electronic Industries Ltd. 00:08:57 Polaris Networks, Inc. 00:08:58 Novatechnology Inc. 00:08:59 Shenzhen Unitone Electronics Co., Ltd. 00:08:5A Intigate Inc. 00:08:5B Hanbit Electronics Co., Ltd. 00:08:5C Shanghai Dare Technologies Co. Ltd. 00:08:5D Aastra 00:08:5E Pco Computer Optics Gmbh 00:08:5F Picanol N.v. 00:08:60 Lodgenet Entertainment Corp. 00:08:61 Softenergy Co., Ltd. 00:08:62 Nec Eluminant Technologies, Inc. 00:08:63 Entrisphere Inc. 00:08:64 Fasy S.p.a. 00:08:65 Jascom Co., Ltd 00:08:66 Dsx Access Systems, Inc. 00:08:67 Uptime Devices 00:08:68 Puroptix 00:08:69 Command-e Technology Co.,ltd. 00:08:6A Industrie Technik Ips Gmbh 00:08:6B Mipsys 00:08:6C Plasmon Lms 00:08:6D Missouri Freenet 00:08:6E Hyglo Ab 00:08:6F Resources Computer Network Ltd. 00:08:70 Rasvia Systems, Inc. 00:08:71 Northdata Co., Ltd. 00:08:72 Sorenson Technologies, Inc. 00:08:73 Dap Design B.v. 00:08:74 Dell Computer Corp. 00:08:75 Acorp Electronics Corp. 00:08:76 Sdsystem 00:08:77 Liebert Hiross S.p.a. 00:08:78 Benchmark Storage Innovations 00:08:79 Cem Corporation 00:08:7A Wipotec Gmbh 00:08:7B Rtx Telecom A/s 00:08:7C Cisco Systems, Inc. 00:08:7D Cisco Systems Inc. 00:08:7E Bon Electro-telecom Inc. 00:08:7F Spaun Electronic Gmbh & Co. Kg 00:08:80 Broadtel Canada Communications Inc. 00:08:81 Digital Hands Co.,ltd. 00:08:82 Sigma Corporation 00:08:83 Hewlett-packard Company 00:08:84 Index Braille Ab 00:08:85 Ems Dr. Thomas Wuensche 00:08:86 Hansung Teliann, Inc. 00:08:87 Private 00:08:88 Oullim Information Technology Inc,. 00:08:89 Echostar Technologies Corp 00:08:8A Minds@work 00:08:8B Tropic Networks Inc. 00:08:8C Quanta Network Systems Inc. 00:08:8D Sigma-links Inc. 00:08:8E Nihon Computer Co., Ltd. 00:08:8F Advanced Digital Technology 00:08:90 Avilinks Sa 00:08:91 Lyan Inc. 00:08:92 Em Solutions 00:08:93 Private 00:08:94 Innovision Multimedia Ltd. 00:08:95 Private 00:08:96 Printronix, Inc. 00:08:97 Quake Technologies 00:08:98 Gigabit Optics Corporation 00:08:99 Netbind, Inc. 00:08:9A Alcatel Microelectronics 00:08:9B Icp Electronics Inc. 00:08:9C Elecs Industry Co., Ltd. 00:08:9D Uhd-elektronik 00:08:9E Beijing Enter-net Co.ltd 00:08:9F Efm Networks 00:08:A0 Stotz Feinmesstechnik Gmbh 00:08:A1 Cnet Technology Inc. 00:08:A2 Adi Engineering, Inc. 00:08:A3 Cisco Systems 00:08:A4 Cisco Systems 00:08:A5 Peninsula Systems Inc. 00:08:A6 Multiware & Image Co., Ltd. 00:08:A7 Ilogic Inc. 00:08:A8 Systec Co., Ltd. 00:08:A9 Sangsang Technology, Inc. 00:08:AA Karam 00:08:AB Enerlinx.com, Inc. 00:08:AC Private 00:08:AD Toyo-linx Co., Ltd. 00:08:AE Packetfront 00:08:AF Novatec Corporation 00:08:B0 Bktel Communications Gmbh 00:08:B1 Proquent Systems 00:08:B2 Shenzhen Compass Technology Development Co.,ltd 00:08:B3 Fastwel 00:08:B4 Syspol 00:08:B5 Tai Guen Enterprise Co., Ltd 00:08:B6 Routefree, Inc. 00:08:B7 Hit Incorporated 00:08:B8 E.f. Johnson 00:08:B9 Kaon Media Co., Ltd. 00:08:BA Erskine Systems Ltd 00:08:BB Netexcell 00:08:BC Ilevo Ab 00:08:BD Tepg-us 00:08:BE Xenpak Msa Group 00:08:BF Aptus Elektronik Ab 00:08:C0 Asa Systems 00:08:C1 Avistar Communications Corporation 00:08:C2 Cisco Systems 00:08:C3 Contex A/s 00:08:C4 Private 00:08:C5 Liontech Co., Ltd. 00:08:C6 Philips Consumer Communications 00:08:C7 Compaq Computer Corporation 00:08:C8 Soneticom, Inc. 00:08:C9 Technisat Digital Gmbh 00:08:CA Twinhan Technology Co.,ltd 00:08:CB Zeta Broadband Inc. 00:08:CC Remotec, Inc. 00:08:CD With-net Inc 00:08:CE Private 00:08:CF Nippon Koei Power Systems Co., Ltd. 00:08:D0 Musashi Engineering Co., Ltd. 00:08:D1 Karel Inc. 00:08:D2 Zoom Networks Inc. 00:08:D3 Hercules Technologies S.a. 00:08:D4 Ineoquest Technologies, Inc 00:08:D5 Vanguard Managed Solutions 00:08:D6 Hassnet Inc. 00:08:D7 How Corporation 00:08:D8 Dowkey Microwave 00:08:D9 Mitadenshi Co.,ltd 00:08:DA Sofaware Technologies Ltd. 00:08:DB Corrigent Systems 00:08:DC Wiznet 00:08:DD Telena Communications, Inc. 00:08:DE 3up Systems 00:08:DF Alistel Inc. 00:08:E0 Ato Technology Ltd. 00:08:E1 Barix Ag 00:08:E2 Cisco Systems 00:08:E3 Cisco Systems 00:08:E4 Envenergy Inc 00:08:E5 Idk Corporation 00:08:E6 Littlefeet 00:08:E7 Shi Controlsystems,ltd. 00:08:E8 Excel Master Ltd. 00:08:E9 Nextgig 00:08:EA Motion Control Engineering, Inc 00:08:EB Romwin Co.,ltd. 00:08:EC Zonu, Inc. 00:08:ED St&t Instrument Corp. 00:08:EE Logic Product Development 00:08:EF Dibal,s.a. 00:08:F0 Next Generation Systems, Inc. 00:08:F1 Voltaire 00:08:F2 Private 00:08:F3 Wany 00:08:F4 Bluetake Technology Co., Ltd. 00:08:F5 Yestechnology Co.,ltd. 00:08:F6 Sumitomo Electric Hightechs.co.,ltd. 00:08:F7 Hitachi Ltd, Semiconductor & Integrated Circuits Gr 00:08:F8 Guardall Ltd 00:08:F9 Padcom, Inc. 00:08:FA Karl E.brinkmann Gmbh 00:08:FB Private 00:08:FC Gigaphoton Inc. 00:08:FD Bluekorea Co., Ltd. 00:08:FE Private 00:08:FF Trilogy Broadcast (holdings) Ltd 00:09:00 Tmt 00:09:01 Shenzhen Shixuntong Information & Technoligy Co 00:09:02 Redline Communications Inc. 00:09:03 Panasas, Inc 00:09:04 Mondial Electronic 00:09:05 Itec Technologies Ltd. 00:09:06 Esteem Networks 00:09:07 Chrysalis Development 00:09:08 Vtech Technology Corp. 00:09:09 Telenor Connect A/s 00:09:0A Snedfar Technology Co., Ltd. 00:09:0B Mtl Instruments Plc 00:09:0C Mayekawa Mfg. Co. Ltd. 00:09:0D Private 00:09:0E Helix Technology Inc. 00:09:0F Private 00:09:10 Simple Access Inc. 00:09:11 Cisco Systems 00:09:12 Cisco Systems 00:09:13 Private 00:09:14 Computrols Inc. 00:09:15 Cas Corp. 00:09:16 Listman Home Technologies, Inc. 00:09:17 Wem Technology Inc 00:09:18 Samsung Techwin Co.,ltd 00:09:19 Mds Gateways 00:09:1A Macat Optics & Electronics Co., Ltd. 00:09:1B Digital Generation Inc. 00:09:1C Cachevision, Inc 00:09:1D Proteam Computer Corporation 00:09:1E Firstech Technology Corp. 00:09:1F A&d Co., Ltd. 00:09:20 Private 00:09:21 Planmeca Oy 00:09:22 Touchless Sensor Technology Ag 00:09:23 Heaman System Co., Ltd 00:09:24 Telebau Gmbh 00:09:25 Vsn Systemen Bv 00:09:26 Yoda Communications, Inc. 00:09:27 Toyokeiki Co.,ltd. 00:09:28 Telecore Inc 00:09:29 Sanyo Industries (uk) Limited 00:09:2A Mytecs Co.,ltd. 00:09:2B Iqstor Networks, Inc. 00:09:2C Hitpoint Inc. 00:09:2D High Tech Computer, Corp. 00:09:2E B&tech System Inc. 00:09:2F Akom Technology Corporation 00:09:30 Aeroconcierge Inc. 00:09:31 Future Internet, Inc. 00:09:32 Omnilux 00:09:33 Optovalley Co. Ltd. 00:09:34 Dream-multimedia-tv Gmbh 00:09:35 Sandvine Incorporated 00:09:36 Ipetronik Gmbh & Co.kg 00:09:37 Inventec Appliance Corp 00:09:38 Allot Communications 00:09:39 Shibasoku Co.,ltd. 00:09:3A Molex Fiber Optics 00:09:3B Hyundai Networks Inc. 00:09:3C Jacques Technologies P/l 00:09:3D Private 00:09:3E C&i Technologies 00:09:3F Double-win Enterpirse Co., Ltd 00:09:40 Agfeo Gmbh & Co. Kg 00:09:41 Allied Telesis K.k. 00:09:42 Cresco, Ltd. 00:09:43 Cisco AIR-LMC352 00:09:44 Cisco Systems 00:09:45 Palmmicro Communications Inc 00:09:46 Cluster Labs Gmbh 00:09:47 Aztek, Inc. 00:09:48 Vista Control Systems, Corp. 00:09:49 Glyph Technologies Inc. 00:09:4A Homenet Communications 00:09:4B Fillfactory Nv 00:09:4C Communication Weaver Co.,ltd. 00:09:4D Braintree Communications Pty Ltd 00:09:4E Bartech Systems International, Inc 00:09:4F Private 00:09:50 Independent Storage Corporation 00:09:51 Private 00:09:52 Auerswald Gmbh & Co. Kg 00:09:53 Linkage System Integration Co.ltd. 00:09:54 Amit Spol. S. R. O. 00:09:55 Young Generation International Corp. 00:09:56 Network Systems Group, Ltd. (nsg) 00:09:57 Supercaller, Inc. 00:09:58 Intelnet S.a. 00:09:59 Sitecsoft 00:09:5A Racewood Technology 00:09:5B Netgear MA701, MA401RA 00:09:5C Private 00:09:5D Dialogue Technology Corp. 00:09:5E Masstech Group Inc. 00:09:5F Telebyte, Inc. 00:09:60 Yozan Inc. 00:09:61 Switchgear And Instrumentation Ltd 00:09:62 Filetrac As 00:09:63 Private 00:09:64 Hi-techniques 00:09:65 Private 00:09:66 Thales Navigation 00:09:67 Tachyon, Inc 00:09:68 Technoventure, Inc. 00:09:69 Meret Optical Communications 00:09:6A Cloverleaf Communications Inc. 00:09:6B Ibm Corporation 00:09:6C Imedia Semiconductor Corp. 00:09:6D Powernet Technologies Corp. 00:09:6E Giant Electronics Ltd. 00:09:6F Beijing Zhongqing Elegant Tech. Corp.,limited 00:09:70 Vibration Research Corporation 00:09:71 Time Management, Inc. 00:09:72 Securebase,inc 00:09:73 Lenten Technology Co., Ltd. 00:09:74 Innopia Technologies, Inc. 00:09:75 Fsona Communications Corporation 00:09:76 Private 00:09:77 Brunner Elektronik Ag 00:09:78 Aiji System Co., Ltd. 00:09:79 Advanced Television Systems Committee, Inc. 00:09:7A Louis Design Labs. 00:09:7B Cisco Systems 00:09:7C Cisco AIR-LMC352 00:09:7D Secwell Networks Oy 00:09:7E Imi Technology Co., Ltd 00:09:7F Private 00:09:80 Power Zenith Inc. 00:09:81 Newport Networks 00:09:82 Loewe Opta Gmbh 00:09:83 Gvision Incorporated 00:09:84 Mycasa Network Inc. 00:09:85 Auto Telecom Company 00:09:86 Metalink Ltd. 00:09:87 Nishi Nippon Electric Wire & Cable Co.,ltd. 00:09:88 Nudian Electron Co., Ltd. 00:09:89 Vividlogic Inc. 00:09:8A Equallogic Inc 00:09:8B Entropic Communications, Inc. 00:09:8C Possio Ab 00:09:8D Dct Ltd (digital Communication Technologies Ltd) 00:09:8E Ipcas Gmbh 00:09:8F Cetacean Networks 00:09:90 Acksys Communications & Systems 00:09:91 Ge Fanuc Automation Manufacturing, Inc. 00:09:92 Interepoch Technology,inc. 00:09:93 Visteon Corporation 00:09:94 Cronyx Engineering 00:09:95 Castle Technology Ltd 00:09:96 Rdi 00:09:97 Nortel Networks 00:09:98 Private 00:09:99 Cp Georges Renault 00:09:9A Elmo Company, Limited 00:09:9B Western Telematic Inc. 00:09:9C Naval Research Laboratory 00:09:9D Haliplex Communications 00:09:9E Testech, Inc. 00:09:9F Private 00:09:A0 Microtechno Corporation 00:09:A1 Telewise Communications, Inc. 00:09:A2 Interface Co., Ltd. 00:09:A3 Leadfly Techologies Corp. Ltd. 00:09:A4 Hartec Corporation 00:09:A5 Hansung Eletronic Industries Development Co., Ltd 00:09:A6 Ignis Optics, Inc. 00:09:A7 Bang & Olufsen A/s 00:09:A8 Eastmode Pte Ltd 00:09:A9 Ikanos Communications 00:09:AA Data Comm For Business, Inc. 00:09:AB Netcontrol Oy 00:09:AC Lanvoice 00:09:AD Hyundai Syscomm, Inc. 00:09:AE Okano Electric Co.,ltd 00:09:AF E-generis 00:09:B0 Onkyo Corporation 00:09:B1 Kanematsu Electronics, Ltd. 00:09:B2 L&f Inc. 00:09:B3 Mcm Systems Ltd 00:09:B4 Kisan Telecom Co., Ltd. 00:09:B5 3j Tech. Co., Ltd. 00:09:B6 Cisco Systems 00:09:B7 Cisco Systems 00:09:B8 Entise Systems 00:09:B9 Action Imaging Solutions 00:09:BA Maku Informationstechik Gmbh 00:09:BB Mathstar, Inc. 00:09:BC Private 00:09:BD Epygi Technologies, Ltd. 00:09:BE Mamiya-op Co.,ltd. 00:09:BF Nintendo Co.,ltd. 00:09:C0 6wind 00:09:C1 Proces-data A/s 00:09:C2 Private 00:09:C3 Netas 00:09:C4 Medicore Co., Ltd 00:09:C5 Kingene Technology Corporation 00:09:C6 Visionics Corporation 00:09:C7 Movistec 00:09:C8 Sinagawa Tsushin Keisou Service 00:09:C9 Bluewinc Co., Ltd. 00:09:CA Imaxnetworks(shenzhen)limited. 00:09:CB Hbrain 00:09:CC Moog Gmbh 00:09:CD Hudson Soft Co.,ltd. 00:09:CE Spacebridge Semiconductor Corp. 00:09:CF Iad Gmbh 00:09:D0 Versatel Networks 00:09:D1 Seranoa Networks Inc 00:09:D2 Mai Logic Inc. 00:09:D3 Western Datacom Co., Inc. 00:09:D4 Transtech Networks 00:09:D5 Signal Communication, Inc. 00:09:D6 Knc One Gmbh 00:09:D7 Dc Security Products 00:09:D8 Private 00:09:D9 Private 00:09:DA Control Module Inc. 00:09:DB Espace 00:09:DC Galaxis Technology Ag 00:09:DD Mavin Technology Inc. 00:09:DE Samjin Information & Communications Co., Ltd. 00:09:DF Vestel Komunikasyon Sanayi Ve Ticaret A.s. 00:09:E0 Xemics S.a. 00:09:E1 Gemtek Technology Co., Ltd. 00:09:E2 Sinbon Electronics Co., Ltd. 00:09:E3 Angel Iglesias S.a. 00:09:E4 K Tech Infosystem Inc. 00:09:E5 Hottinger Baldwin Messtechnik Gmbh 00:09:E6 Cyber Switching Inc. 00:09:E7 Adc Techonology 00:09:E8 Cisco AIR-LMC352 00:09:E9 Cisco Systems 00:09:EA Yem Inc. 00:09:EB Humandata Ltd. 00:09:EC Daktronics, Inc. 00:09:ED Cipheroptics 00:09:EE Meikyo Electric Co.,ltd 00:09:EF Vocera Communications 00:09:F0 Shimizu Technology Inc. 00:09:F1 Yamaki Electric Corporation 00:09:F2 Cohu, Inc., Electronics Division 00:09:F3 Well Communication Corp. 00:09:F4 Alcon Laboratories, Inc. 00:09:F5 Emerson Network Power Co.,ltd 00:09:F6 Shenzhen Eastern Digital Tech Ltd. 00:09:F7 Sed, A Division Of Calian 00:09:F8 Unimo Technology Co., Ltd. 00:09:F9 Art Japan Co., Ltd. 00:09:FB Philips Medizinsysteme Boeblingen Gmbh 00:09:FC Ipflex Inc. 00:09:FD Ubinetics Limited 00:09:FE Daisy Technologies, Inc. 00:09:FF X.net 2000 Gmbh 00:0A:00 Mediatek Corp. 00:0A:01 Sohoware, Inc. 00:0A:02 Annso Co., Ltd. 00:0A:03 Endesa Servicios, S.l. 00:0A:04 3com Europe Ltd 00:0A:05 Widax Corp. 00:0A:06 Teledex Llc 00:0A:07 Beijing Comsys Technologies Co.,ltd. 00:0A:08 Alpine Electronics, Inc. 00:0A:09 Private 00:0A:0A Sunix Co., Ltd. 00:0A:0B Sealevel Systems, Inc. 00:0A:0C Scientific Research Corporation 00:0A:0D Mergeoptics Gmbh 00:0A:0E Invivo Research Inc. 00:0A:0F Ilryung Telesys, Inc 00:0A:10 Fast Media Integrations Ag 00:0A:11 Expet Technologies, Inc 00:0A:12 Azylex Technology, Inc 00:0A:13 Silent Witness 00:0A:14 Teco A.s. 00:0A:15 Silicon Data, Inc 00:0A:16 Lassen Research 00:0A:17 Nestar Communications, Inc 00:0A:18 Vichel Inc. 00:0A:19 Valere Power, Inc. 00:0A:1A Imerge Ltd 00:0A:1B Stream Labs 00:0A:1C Bridge Information Co., Ltd. 00:0A:1D Optical Communications Products Inc. 00:0A:1E Red-m (communications) Limited 00:0A:1F Art Ware Telecommunication Co., Ltd. 00:0A:20 Sva Networks, Inc. 00:0A:21 Integra Telecom Co. Ltd 00:0A:22 Amperion Inc 00:0A:23 Parama Networks Inc 00:0A:24 Octave Communications 00:0A:25 Ceragon Networks 00:0A:26 Private 00:0A:27 Apple Computer, Inc. 00:0A:28 Motorola Personal Communications Sector 00:0A:29 Pan Dacom Networking Ag 00:0A:2A Qsi Systems Inc. 00:0A:2B Etherstuff 00:0A:2C Active Tchnology Corporation 00:0A:2D Private 00:0A:2E Maple Networks Co., Ltd 00:0A:2F Private 00:0A:30 Johnson Controls-asg 00:0A:31 Hcv Wireless 00:0A:32 Xsido Corporation 00:0A:33 Sierra Logic, Inc. 00:0A:34 Identicard Systems Incorporated 00:0A:35 Xilinx 00:0A:36 Synelec Telecom Multimedia 00:0A:37 Procera Networks, Inc. 00:0A:38 Netlock Technologies, Inc. 00:0A:39 Private 00:0A:3A J-three International Holding Co., Ltd. 00:0A:3B Gct Semiconductor, Inc 00:0A:3C Enerpoint Ltd. 00:0A:3D Elo Sistemas Eletronicos S.a. 00:0A:3E Eads Telecom 00:0A:3F Data East Corporation 00:0A:40 Crown Audio 00:0A:41 Cisco AIR-PCM352 00:0A:42 Cisco Systems 00:0A:43 Chunghwa Telecom Co., Ltd. 00:0A:44 Avery Dennison Deutschland Gmbh 00:0A:45 Audio-technica Corp. 00:0A:46 Aro Controls Sas 00:0A:47 Allied Vision Technologies 00:0A:48 Albatron Technology 00:0A:49 Acopia Networks 00:0A:4A Targa Systems Ltd. 00:0A:4B Datapower Technology, Inc. 00:0A:4C Molecular Devices Corporation 00:0A:4D Noritz Corporation 00:0A:4E Unitek Electronics Inc. 00:0A:4F Brain Boxes Limited 00:0A:50 Remotek Corporation 00:0A:51 Gyrosignal Technology Co., Ltd. 00:0A:52 Venitek Co. Ltd. 00:0A:53 Intronics, Incorporated 00:0A:54 Laguna Hills, Inc. 00:0A:55 Markem Corporation 00:0A:56 Hitachi Maxell Ltd. 00:0A:57 Hewlett-packard Company - Standards 00:0A:58 Ingenieur-buero Freyer & Siegel 00:0A:59 Hw Server 00:0A:5A Greennet Technologies Co.,ltd. 00:0A:5B Power-one As 00:0A:5C Carel S.p.a. 00:0A:5D Puc Founder (msc) Berhad 00:0A:5E 3com Corporation 00:0A:5F Almedio Inc. 00:0A:60 Autostar Technology Pte Ltd 00:0A:61 Cellinx Systems Inc. 00:0A:62 Crinis Networks, Inc. 00:0A:63 Dhd Gmbh 00:0A:64 Eracom Technologies 00:0A:65 Gentechmedia.co.,ltd. 00:0A:66 Mitsubishi Electric System & Service Co.,ltd. 00:0A:67 Ongcorp 00:0A:68 Solarflare Communications, Inc. 00:0A:69 Sunny Bell Technology Co., Ltd. 00:0A:6A Svm Microwaves S.r.o. 00:0A:6B Tadiran Telecom Business Systems Ltd 00:0A:6C Walchem Corporation 00:0A:6D Eks Elektronikservice Gmbh 00:0A:6E Broadcast Technology Limited 00:0A:6F Zytera Technologies Inc. 00:0A:70 Mpls Forum 00:0A:71 Avrio Technologies, Inc 00:0A:72 Simpletech, Inc. 00:0A:73 Scientific Atlanta 00:0A:74 Manticom Networks Inc. 00:0A:75 Cat Electronics 00:0A:76 Beida Jade Bird Huaguang Technology Co.,ltd 00:0A:77 Bluewire Technologies Llc 00:0A:78 Olitec 00:0A:79 Corega K.k. 00:0A:7A Kyoritsu Electric Co., Ltd. 00:0A:7B Private 00:0A:7C Tecton Ltd 00:0A:7D Valo, Inc. 00:0A:7E The Advantage Group 00:0A:7F Teradon Industries, Inc 00:0A:80 Telkonet Inc. 00:0A:81 Teima Audiotex S.l. 00:0A:82 Tatsuta System Electronics Co.,ltd. 00:0A:83 Salto Systems S.l. 00:0A:84 Rainsun Enterprise Co., Ltd. 00:0A:85 Plat'c2,inc 00:0A:86 Lenze 00:0A:87 Integrated Micromachines Inc. 00:0A:88 Incypher S.a. 00:0A:89 Creval Systems, Inc. 00:0A:8A Cisco AIR-PCM352 00:0A:8B Cisco Systems 00:0A:8C Guardware Systems Ltd. 00:0A:8D Eurotherm Limited 00:0A:8E Invacom Ltd 00:0A:8F Aska International Inc. 00:0A:90 Bayside Interactive, Inc. 00:0A:91 Hemocue Ab 00:0A:92 Presonus Corporation 00:0A:93 W2 Networks, Inc. 00:0A:94 Shanghai Cellink Co., Ltd 00:0A:95 Apple Computer, Inc. 00:0A:96 Mewtel Technology Inc. 00:0A:97 Sonicblue, Inc. 00:0A:98 M+f Gwinner Gmbh & Co 00:0A:99 Dataradio Inc. 00:0A:9A Aiptek International Inc 00:0A:9B Towa Meccs Corporation 00:0A:9C Server Technology, Inc. 00:0A:9D King Young Technology Co. Ltd. 00:0A:9E Broadweb Corportation 00:0A:9F Private 00:0A:A0 Cedar Point Communications 00:0A:A1 V V S Limited 00:0A:A2 Systek Inc. 00:0A:A3 Shimafuji Electric Co.,ltd. 00:0A:A4 Shanghai Surveillance Technology Co,ltd 00:0A:A5 Maxlink Industries Limited 00:0A:A6 Hochiki Corporation 00:0A:A7 Fei Company 00:0A:A8 Epipe Pty. Ltd. 00:0A:A9 Brooks Automation Gmbh 00:0A:AA Altigen Communications Inc. 00:0A:AB Toyota Macs, Inc. 00:0A:AC Terratec Electronic Gmbh 00:0A:AD Stargames Corporation 00:0A:AE Rosemount Process Analytical 00:0A:AF Private 00:0A:B0 Loytec Electronics Gmbh 00:0A:B1 Genetec Corporation 00:0A:B2 Fresnel Wireless Systems 00:0A:B3 Fa. Gira 00:0A:B4 Etic Telecommunications 00:0A:B5 Digital Electronic Network 00:0A:B6 Compunetix, Inc 00:0A:B7 Cisco Systems 00:0A:B8 Cisco Systems 00:0A:B9 Astera Technologies Corp. 00:0A:BA Arcon Technology Limited 00:0A:BB Taiwan Secom Co,. Ltd 00:0A:BC Seabridge Ltd. 00:0A:BD Private 00:0A:BE Opnet Technologies Co., Ltd. 00:0A:BF Hirota Ss 00:0A:C0 Fuyoh Video Industry Co., Ltd. 00:0A:C1 Futuretel 00:0A:C2 Fiberhome Telecommunication Technologies Co.,ltd 00:0A:C3 Em Technics Co., Ltd. 00:0A:C4 Daewoo Teletech Co., Ltd 00:0A:C5 Color Kinetics 00:0A:C6 Private 00:0A:C7 Unication Group 00:0A:C8 Zpsys Co.,ltd. (planning&management) 00:0A:C9 Zambeel Inc 00:0A:CA Yokoyama Shokai Co.,ltd. 00:0A:CB Xpak Msa Group 00:0A:CC Winnow Networks, Inc. 00:0A:CD Sunrich Technology Limited 00:0A:CE Radiantech, Inc. 00:0A:CF Provideo Multimedia Co. Ltd. 00:0A:D0 Niigata Develoment Center, F.i.t. Co., Ltd. 00:0A:D1 Mws 00:0A:D2 Jepico Corporation 00:0A:D3 Initech Co., Ltd 00:0A:D4 Corebell Systems Inc. 00:0A:D5 Brainchild Electronic Co., Ltd. 00:0A:D6 Beamreach Networks 00:0A:D7 Private 00:0A:D8 Ipcserv Technology Corp. 00:0A:D9 Sony Ericsson Mobile Communications Ab 00:0A:DA Private 00:0A:DB Skypilot Network, Inc 00:0A:DC Ruggedcom Inc. 00:0A:DD Inscitek Microsystems, Inc. 00:0A:DE Happy Communication Co., Ltd. 00:0A:DF Gennum Corporation 00:0A:E0 Fujitsu Softek 00:0A:E1 Eg Technology 00:0A:E2 Binatone Electronics International, Ltd 00:0A:E3 Yang Mei Technology Co., Ltd 00:0A:E4 Wistron Corp. 00:0A:E5 Scottcare Corporation 00:0A:E6 Elitegroup Computer System Co. (ecs) 00:0A:E7 Eliop S.a. 00:0A:E8 Cathay Roxus Information Technology Co. Ltd 00:0A:E9 Airvast Technology Inc. 00:0A:EA Adam Elektronik Ltd.sti. 00:0A:EB Shenzhen Tp-link Technology Co; Ltd. 00:0A:EC Koatsu Gas Kogyo Co., Ltd. 00:0A:ED Harting Vending G.m.b.h. & Co Kg 00:0A:EE Gcd Hard- & Software Gmbh 00:0A:EF Otrum Asa 00:0A:F0 Shin-oh Electronics Co., Ltd. R&d 00:0A:F1 Clarity Design, Inc. 00:0A:F2 Neoaxiom Corp. 00:0A:F3 Cisco Systems 00:0A:F4 Cisco Systems 00:0A:F5 Airgo Networks, Inc. 00:0A:F6 Computer Process Controls 00:0A:F7 Broadcom Corp. 00:0A:F8 American Telecare Inc. 00:0A:F9 Private 00:0A:FA Traverse Technologies Australia 00:0A:FB Ambri Limited 00:0A:FC Core Tec Communications, Llc 00:0A:FD Viking Electronic Services 00:0A:FE Novapal Ltd 00:0A:FF Kilchherr Elektronik Ag 00:0B:00 Fujian Start Computer Equipment Co.,ltd 00:0B:01 Daiichi Electronics Co., Ltd. 00:0B:02 Dallmeier Electronic 00:0B:03 Taekwang Industrial Co., Ltd 00:0B:04 Volktek Corporation 00:0B:05 Pacific Broadband Networks 00:0B:06 Motorola Bcs 00:0B:07 Voxpath Networks 00:0B:08 Pillar Data Systems 00:0B:09 Ifoundry Systems Singapore 00:0B:0A Dbm Optics 00:0B:0B Corrent Corporation 00:0B:0C Agile Systems Inc. 00:0B:0D Air2u, Inc. 00:0B:0E Trapeze Networks 00:0B:0F Nyquist Industrial Control Bv 00:0B:10 11wave Technonlogy Co.,ltd 00:0B:11 Himeji Abc Trading Co.,ltd. 00:0B:12 Private 00:0B:13 Zetron Inc 00:0B:14 Viewsonic Corporation 00:0B:15 Platypus Technology 00:0B:16 Communication Machinery Corporation 00:0B:17 Mks Instruments 00:0B:18 Private 00:0B:19 Vernier Networks, Inc. 00:0B:1A Teltone Corporation 00:0B:1B Systronix, Inc. 00:0B:1C Private 00:0B:1D Layerzero Power Systems, Inc. 00:0B:1E Kappa Opto-electronics Gmbh 00:0B:1F I Con Computer Co. 00:0B:20 Hirata Corporation 00:0B:21 G-star Communications Inc. 00:0B:22 Environmental Systems And Services 00:0B:23 Efficient Networks, Inc. 00:0B:24 Airlogic 00:0B:25 Aeluros 00:0B:26 Wetek Corporation 00:0B:27 Scion Corporation 00:0B:28 Quatech Inc. 00:0B:29 Lg Industrial Systems Co.,ltd. 00:0B:2A Howtel Co., Ltd. 00:0B:2B Hostnet Corporation 00:0B:2C Eiki Industrial Co. Ltd. 00:0B:2D Danfoss Inc. 00:0B:2E Cal-comp Electronics (thailand) Public Company Limited Taipe 00:0B:2F Bplan Gmbh 00:0B:30 Beijing Gongye Science & Technology Co.,ltd 00:0B:31 Yantai Zhiyang Scientific And Technology Industry Co., Ltd 00:0B:32 Vormetric, Inc. 00:0B:33 Vivato 00:0B:34 Shanghai Broadband Technologies Co.ltd 00:0B:35 Quad Bit System Co., Ltd. 00:0B:36 Productivity Systems, Inc. 00:0B:37 Manufacture Des Montres Rolex Sa 00:0B:38 Knuerr Ag 00:0B:39 Keisoku Giken Co.,ltd. 00:0B:3A Fortel Dtv, Inc. 00:0B:3B Devolo Ag 00:0B:3C Cygnal Integrated Products, Inc. 00:0B:3D Contal Ok Ltd. 00:0B:3E Bittware, Inc 00:0B:3F Anthology Solutions Inc. 00:0B:40 Opnext Inc. 00:0B:41 Ing. Buero Dr. Beutlhauser 00:0B:42 Commax Co., Ltd. 00:0B:43 Microscan Systems, Inc. 00:0B:44 Concord Idea Corp. 00:0B:45 Cisco 00:0B:46 Cisco 00:0B:47 Advanced Energy 00:0B:48 Sofrel 00:0B:49 Rf-link System Inc. 00:0B:4A Visimetrics (uk) Ltd 00:0B:4B Visiowave Sa 00:0B:4C Clarion (m) Sdn Bhd 00:0B:4D Emuzed 00:0B:4E Vertexrsi Antenna Products Division 00:0B:4F Verifone, Inc. 00:0B:50 Oxygnet 00:0B:51 Micetek International Inc. 00:0B:52 Joymax Electronics Corp. 00:0B:53 Initium Co., Ltd. 00:0B:54 Bitmicro Networks, Inc. 00:0B:55 Adinstruments 00:0B:56 Cybernetics 00:0B:57 Silicon Laboratories 00:0B:58 Astronautics C.a Ltd 00:0B:59 Scriptpro, Llc 00:0B:5A Hyperedge 00:0B:5B Rincon Research Corporation 00:0B:5C Newtech Co.,ltd 00:0B:5D Fujitsu Limited 00:0B:5E Atmava Ltd 00:0B:5F Cisco Systems 00:0B:60 Cisco Systems 00:0B:61 Friedrich Lütze Gmbh &co. 00:0B:62 Ingenieurbüro Ingo Mohnen 00:0B:63 Private 00:0B:64 Kieback & Peter Gmbh & Co Kg 00:0B:65 Sy.a.c. Srl 00:0B:66 Teralink Communications 00:0B:67 Topview Technology Corporation 00:0B:68 Addvalue Communications Pte Ltd 00:0B:69 Franke Finland Oy 00:0B:6A Asiarock Incorporation 00:0B:6B Wistron Neweb Corp. 00:0B:6C Sychip Inc. 00:0B:6D Solectron Japan Nakaniida 00:0B:6E Neff Instrument Corp. 00:0B:6F Media Streaming Networks Inc 00:0B:70 Load Technology, Inc. 00:0B:71 Litchfield Communications Inc. 00:0B:72 Lawo Ag 00:0B:73 Kodeos Communications 00:0B:74 Kingwave Technology Co., Ltd. 00:0B:75 Iosoft Ltd. 00:0B:76 Et&t Co. Ltd. 00:0B:77 Cogent Systems, Inc. 00:0B:78 Taifatech Inc. 00:0B:79 X-com, Inc. 00:0B:7A Private 00:0B:7B Test-um Inc. 00:0B:7C Telex Communications 00:0B:7D Solomon Extreme International Ltd. 00:0B:7E Saginomiya Seisakusho Inc. 00:0B:7F Omniwerks 00:0B:80 Private 00:0B:81 Kaparel Corporation 00:0B:82 Grandstream Networks, Inc. 00:0B:83 Datawatt B.v. 00:0B:84 Bodet 00:0B:85 Black Storm Networks 00:0B:86 Aruba Networks 00:0B:87 American Reliance Inc. 00:0B:88 Vidisco Ltd. 00:0B:89 Top Global Technology, Ltd. 00:0B:8A Miteq Inc. 00:0B:8B Kerajet, S.a. 00:0B:8C Flextronics Israel 00:0B:8D Avvio Networks 00:0B:8E Ascent Corporation 00:0B:8F Akita Electronics Systems Co.,ltd. 00:0B:90 Covaro Networks, Inc. 00:0B:91 Aglaia Gesellschaft Für Bildverarbeitung Und Kommunikation M 00:0B:92 Ascom Danmark A/s 00:0B:93 Barmag Electronic 00:0B:94 Digital Monitoring Products, Inc. 00:0B:95 Ebet Gaming Systems Pty Ltd 00:0B:96 Innotrac Diagnostics Oy 00:0B:97 Matsushita Electric Industrial Co.,ltd. 00:0B:98 Nicetechvision 00:0B:99 Sensable Technologies, Inc. 00:0B:9A Shanghai Ulink Telecom Equipment Co. Ltd. 00:0B:9B Sirius System Co, Ltd. 00:0B:9C Tribeam Technologies, Inc. 00:0B:9D Twinmos Technologies Inc. 00:0B:9E Yasing Technology Corp. 00:0B:9F Neue Elsa Gmbh 00:0B:A0 T&l Information Inc. 00:0B:A1 Syscom Ltd. 00:0B:A2 Sumitomo Electric Networks, Inc 00:0B:A3 Siemens Ag, I&s 00:0B:A4 Shiron Satellite Communications Ltd. (1996) 00:0B:A5 Quasar Cipta Mandiri, Pt 00:0B:A6 Miyakawa Electric Works Ltd. 00:0B:A7 Maranti Networks 00:0B:A8 Hanback Electronics Co., Ltd. 00:0B:A9 Private 00:0B:AA Aiphone Co.,ltd 00:0B:AB Advantech Technology (china) Co., Ltd. 00:0B:AC 3com Europe Ltd. 00:0B:AD Pc-pos Inc. 00:0B:AE Vitals System Inc. 00:0B:AF Private 00:0B:B0 Sysnet Telematica Srl 00:0B:B1 Super Star Technology Co., Ltd. 00:0B:B2 Smallbig Technology 00:0B:B3 Rit Technologies Ltd. 00:0B:B4 Rdc Semiconductor Inc., 00:0B:B5 Nstor Technologies, Inc. 00:0B:B6 Mototech Inc. 00:0B:B7 Micro Systems Co.,ltd. 00:0B:B8 Kihoku Electronic Co. 00:0B:B9 Imsys Ab 00:0B:BA Harmonic Broadband Access Networks 00:0B:BB Etin Systems Co., Ltd 00:0B:BC En Garde Systems, Inc. 00:0B:BD Connexionz Limited 00:0B:BE Cisco Systems 00:0B:BF Cisco Systems 00:0B:C0 China Iwncomm Co., Ltd. 00:0B:C1 Bay Microsystems, Inc. 00:0B:C2 Corinex Communication Corp. 00:0B:C3 Multiplex, Inc. 00:0B:C4 Biotronik Gmbh & Co 00:0B:C5 Smc Networks, Inc. 00:0B:C6 Isac, Inc. 00:0B:C7 Icet S.p.a. 00:0B:C8 Airflow Networks 00:0B:C9 Electroline Equipment 00:0B:CA Datavan International Corporation 00:0B:CB Fagor Automation , S. Coop 00:0B:CC Jusan, S.a. 00:0B:CD Compaq (hp) 00:0B:CE Free2move Ab 00:0B:CF Agfa Ndt Inc. 00:0B:D0 Ximeta Technology Americas Inc. 00:0B:D1 Aeronix, Inc. 00:0B:D2 Remopro Technology Inc. 00:0B:D3 Cd3o 00:0B:D4 Beijing Wise Technology & Science Development Co.ltd 00:0B:D5 Nvergence, Inc. 00:0B:D6 Paxton Access Ltd 00:0B:D7 Mbb Gelma Gmbh 00:0B:D8 Industrial Scientific Corp. 00:0B:D9 General Hydrogen 00:0B:DA Eyecross Co.,inc. 00:0B:DB Esg Pcba Test 00:0B:DC Akcp 00:0B:DD Tohoku Ricoh Co., Ltd. 00:0B:DE Private 00:0B:DF Shenzhen Routerd Networks Limited 00:0B:E0 Serconet Ltd. 00:0B:E1 Private 00:0B:E2 Lumenera Corporation 00:0B:E3 Key Stream Co., Ltd. 00:0B:E4 Hosiden Corporation 00:0B:E5 Hims Korea Co., Ltd. 00:0B:E6 Datel Electronics 00:0B:E7 Comflux Technology Inc. 00:0B:E8 Aoip 00:0B:E9 Private 00:0B:EA Zultys Technologies 00:0B:EB Systegra Ag 00:0B:EC Nippon Electric Instrument, Inc. 00:0B:ED Elm Inc. 00:0B:EE Inc.jet, Incorporated 00:0B:EF Code Corporation 00:0B:F0 Motex Products Co., Ltd. 00:0B:F1 Lap Laser Applikations 00:0B:F2 Chih-kan Technology Co., Ltd. 00:0B:F3 Bae Systems 00:0C:6E Silicon Integrated Sys. Corp. 00:0C:F1 Intel Pro Wireless (Centrino) 00:10:00 Cable Television Laboraties, Inc. 00:10:01 Mck Communications 00:10:02 Actia 00:10:03 Imatron, Inc. 00:10:04 The Brantley Coile Company,inc 00:10:05 Uec Commercial 00:10:06 Thales Contact Solutions Ltd. 00:10:07 Cisco Systems, Inc. 00:10:08 Vienna Systems Corporation 00:10:09 Horo Quartz 00:10:0A Williams Communications Group 00:10:0B Cisco Systems, Inc. 00:10:0C Ito Co., Ltd. 00:10:0D Cisco Systems, Inc. 00:10:0E Micro Linear Coporation 00:10:0F Industrial Cpu Systems 00:10:10 Initio Corporation 00:10:11 Cisco Systems, Inc. 00:10:12 Processor Systems (i) Pvt Ltd 00:10:13 Industrial Computer Source 00:10:14 Cisco Systems, Inc. 00:10:15 Oomon Inc. 00:10:16 T.sqware 00:10:17 Micos Gmbh 00:10:18 Broadcom Corporation 00:10:19 Sirona Dental Systems Gmbh & Co. Kg 00:10:1A Picturetel Corp. 00:10:1B Cornet Technology, Inc. 00:10:1C Ohm Technologies Intl, Llc 00:10:1D Winbond Electronics Corp. 00:10:1E Matsushita Electronic Instruments Corp. 00:10:1F Cisco Systems, Inc. 00:10:20 Welch Allyn, Data Collection 00:10:21 Encanto Networks, Inc. 00:10:22 Satcom Media Corporation 00:10:23 Flowwise Networks, Inc. 00:10:24 Nagoya Electric Works Co., Ltd 00:10:25 Grayhill Inc. 00:10:26 Accelerated Networks, Inc. 00:10:27 L-3 Communications East 00:10:28 Computer Technica, Inc. 00:10:29 Cisco Systems, Inc. 00:10:2A Zf Microsystems, Inc. 00:10:2B Umax Data Systems, Inc. 00:10:2C Lasat Networks A/s 00:10:2D Hitachi Software Engineering 00:10:2E Network Systems & Technologies Pvt. Ltd. 00:10:2F Cisco Systems, Inc. 00:10:30 Wi-lan, Inc. 00:10:31 Objective Communications, Inc. 00:10:32 Alta Technology 00:10:33 Accesslan Communications, Inc. 00:10:34 Gnp Computers 00:10:35 Elitegroup Computer Systems Co., Ltd 00:10:36 Inter-tel Integrated Systems 00:10:37 Cyq've Technology Co., Ltd. 00:10:38 Micro Research Institute, Inc. 00:10:39 Vectron Systems Ag 00:10:3A Diamond Network Tech 00:10:3B Hippi Networking Forum 00:10:3C Ic Ensemble, Inc. 00:10:3D Phasecom, Ltd. 00:10:3E Netschools Corporation 00:10:3F Tollgrade Communications, Inc. 00:10:40 Intermec Corporation 00:10:41 Bristol Babcock, Inc. 00:10:42 Alacritech 00:10:43 A2 Corporation 00:10:44 Innolabs Corporation 00:10:45 Nortel Networks 00:10:46 Alcorn Mcbride Inc. 00:10:47 Echo Eletric Co. Ltd. 00:10:48 Htrc Automation, Inc. 00:10:49 Shoreline Teleworks, Inc. 00:10:4A The Parvuc Corporation 00:10:4B 3com Corporation 00:10:4C Computer Access Technology 00:10:4D Surtec Industries, Inc. 00:10:4E Ceologic 00:10:4F Storage Technology Corporation 00:10:50 Rion Co., Ltd. 00:10:51 Cmicro Corporation 00:10:52 Mettler-toledo (albstadt) Gmbh 00:10:53 Computer Technology Corp. 00:10:54 Cisco Systems, Inc. 00:10:55 Fujitsu Microelectronics, Inc. 00:10:56 Sodick Co., Ltd. 00:10:57 Rebel.com, Inc. 00:10:58 Arrowpoint Communications 00:10:59 Diablo Research Co. Llc 00:10:5A 3com Corporation 00:10:5B Net Insight Ab 00:10:5C Quantum Designs (h.k.) Ltd. 00:10:5D Draeger Medical 00:10:5E Hekimian Laboratories, Inc. 00:10:5F In-snec 00:10:60 Billionton Systems, Inc. 00:10:61 Hostlink Corp. 00:10:62 Nx Server, Ilnc. 00:10:63 Starguide Digital Networks 00:10:64 Digital Equipment Corp. 00:10:65 Radyne Corporation 00:10:66 Advanced Control Systems, Inc. 00:10:67 Redback Networks, Inc. 00:10:68 Comos Telecom 00:10:69 Helioss Communications, Inc. 00:10:6A Digital Microwave Corporation 00:10:6B Sonus Networks, Inc. 00:10:6C Infratec Plus Gmbh 00:10:6D Integrity Communications, Inc. 00:10:6E Tadiran Com. Ltd. 00:10:6F Trenton Technology Inc. 00:10:70 Caradon Trend Ltd. 00:10:71 Advanet Inc. 00:10:72 Gvn Technologies, Inc. 00:10:73 Technobox, Inc. 00:10:74 Aten International Co., Ltd. 00:10:75 Maxtor Corporation 00:10:76 Eurem Gmbh 00:10:77 Saf Drive Systems, Ltd. 00:10:78 Nuera Communications, Inc. 00:10:79 Cisco Systems, Inc. 00:10:7A Ambicom, Inc. 00:10:7B Cisco Systems, Inc. 00:10:7C P-com, Inc. 00:10:7D Aurora Communications, Ltd. 00:10:7E Bachmann Electronic Gmbh 00:10:7F Crestron Electronics, Inc. 00:10:80 Metawave Communications 00:10:81 Dps, Inc. 00:10:82 Jna Telecommunications Limited 00:10:83 Hewlett-packard Company 00:10:84 K-bot Communications 00:10:85 Polaris Communications, Inc. 00:10:86 Atto Technology, Inc. 00:10:87 Xstreamis Plc 00:10:88 American Networks Inc. 00:10:89 Websonic 00:10:8A Teralogic, Inc. 00:10:8B Laseranimation Sollinger Gmbh 00:10:8C Fujitsu Telecommunications Europe, Ltd. 00:10:8D Johnson Controls, Inc. 00:10:8E Hugh Symons Concept Technologies Ltd. 00:10:8F Raptor Systems 00:10:90 Cimetrics, Inc. 00:10:91 No Wires Needed Bv 00:10:92 Netcore Inc. 00:10:93 Cms Computers, Ltd. 00:10:94 Adtech, Inc. 00:10:95 Thomson Multimedia, Inc. 00:10:96 Tracewell Systems, Inc. 00:10:97 Winnet Metropolitan Communications Systems, Inc. 00:10:98 Starnet Technologies, Inc. 00:10:99 Innomedia, Inc. 00:10:9A Netline 00:10:9B Vixel Corporation 00:10:9C M-system Co., Ltd. 00:10:9D Clarinet Systems, Inc. 00:10:9E Aware, Inc. 00:10:9F Pavo, Inc. 00:10:A0 Innovex Technologies, Inc. 00:10:A1 Kendin Semiconductor, Inc. 00:10:A2 Tns 00:10:A3 Omnitronix, Inc. 00:10:A4 Xircom 00:10:A5 Oxford Instruments 00:10:A6 Cisco Systems, Inc. 00:10:A7 Unex Technology Corporation 00:10:A8 Reliance Computer Corp. 00:10:A9 Adhoc Technologies 00:10:AA Media4, Inc. 00:10:AB Koito Industries, Ltd. 00:10:AC Imci Technologies 00:10:AD Softronics Usb, Inc. 00:10:AE Shinko Electric Industries Co. 00:10:AF Tac Systems, Inc. 00:10:B0 Meridian Technology Corp. 00:10:B1 For-a Co., Ltd. 00:10:B2 Coactive Aesthetics 00:10:B3 Nokia Multimedia Terminals 00:10:B4 Atmosphere Networks 00:10:B5 Accton Technology Corporation 00:10:B6 Entrata Communications Corp. 00:10:B7 Coyote Technologies, Llc 00:10:B8 Ishigaki Computer System Co. 00:10:B9 Maxtor Corp. 00:10:BA Martinho-davis Systems, Inc. 00:10:BB Data & Information Technology 00:10:BC Nortel Networks 00:10:BD The Telecommunication Technology Committee 00:10:BE Telexis Corp. 00:10:BF Interair Wireless 00:10:C0 Arma, Inc. 00:10:C1 Oi Electric Co., Ltd. 00:10:C2 Willnet, Inc. 00:10:C3 Csi-control Systems 00:10:C4 Media Links Co., Ltd. 00:10:C5 Protocol Technologies, Inc. 00:10:C6 Usi 00:10:C7 Data Transmission Network 00:10:C8 Communications Electronics Security Group 00:10:C9 Mitsubishi Electronics Logistic Support Co. 00:10:CA Integral Access 00:10:CB Facit K.k. 00:10:CC Clp Computer Logistik Planung Gmbh 00:10:CD Interface Concept 00:10:CE Volamp, Ltd. 00:10:CF Fiberlane Communications 00:10:D0 Witcom, Ltd. 00:10:D1 Top Layer Networks, Inc. 00:10:D2 Nitto Tsushinki Co., Ltd 00:10:D3 Grips Electronic Gmbh 00:10:D4 Storage Computer Corporation 00:10:D5 Imasde Canarias, S.a. 00:10:D6 Itt - A/cd 00:10:D7 Argosy Research Inc. 00:10:D8 Calista 00:10:D9 Ibm Japan, Fujisawa Mt+d 00:10:DA Motion Engineering, Inc. 00:10:DB Netscreen Technologies, Inc. 00:10:DC Micro-star International Co., Ltd. 00:10:DD Enable Semiconductor, Inc. 00:10:DE International Datacasting Corporation 00:10:DF Rise Computer Inc. 00:10:E0 Cobalt Microserver, Inc. 00:10:E1 S.i. Tech, Inc. 00:10:E2 Arraycomm, Inc. 00:10:E3 Compaq Computer Corporation 00:10:E4 Nsi Corporation 00:10:E5 Solectron Texas 00:10:E6 Applied Intelligent Systems, Inc. 00:10:E7 Breezecom 00:10:E8 Telocity, Incorporated 00:10:E9 Raidtec Ltd. 00:10:EA Adept Technology 00:10:EB Selsius Systems, Inc. 00:10:EC Rpcg, Llc 00:10:ED Sundance Technology, Inc. 00:10:EE Cti Products, Inc. 00:10:EF Dbtel Incorporated 00:10:F1 I-o Corporation 00:10:F2 Antec 00:10:F3 Nexcom International Co., Ltd. 00:10:F4 Vertical Networks, Inc. 00:10:F5 Amherst Systems, Inc. 00:10:F6 Cisco Systems, Inc. 00:10:F7 Iriichi Technologies Inc. 00:10:F8 Kenwood Tmi Corporation 00:10:F9 Unique Systems, Inc. 00:10:FA Zayante, Inc. 00:10:FB Zida Technologies Limited 00:10:FC Broadband Networks, Inc. 00:10:FD Cocom A/s 00:10:FE Digital Equipment Corporation 00:10:FF Cisco Systems, Inc. 00:1C:7C Perq Systems Corporation 00:20:00 Lexmark International, Inc. 00:20:01 Dsp Solutions, Inc. 00:20:02 Seritech Enterprise Co., Ltd. 00:20:03 Pixel Power Ltd. 00:20:04 Yamatake-honeywell Co., Ltd. 00:20:05 Simple Technology 00:20:06 Garrett Communications, Inc. 00:20:07 Sfa, Inc. 00:20:08 Cable & Computer Technology 00:20:09 Packard Bell Elec., Inc. 00:20:0A Source-comm Corp. 00:20:0B Octagon Systems Corp. 00:20:0C Adastra Systems Corp. 00:20:0D Carl Zeiss 00:20:0E Satellite Technology Mgmt, Inc 00:20:0F Tanbac Co., Ltd. 00:20:10 Jeol System Technology Co. Ltd 00:20:11 Canopus Co., Ltd. 00:20:12 Camtronics Medical Systems 00:20:13 Diversified Technology, Inc. 00:20:14 Global View Co., Ltd. 00:20:15 Actis Computer Sa 00:20:16 Showa Electric Wire & Cable Co 00:20:17 Orbotech 00:20:18 Cis Technology Inc. 00:20:19 Ohler Gmbh 00:20:1A N-base Switch Communications 00:20:1B Northern Telecom/network 00:20:1C Excel, Inc. 00:20:1D Katana Products 00:20:1E Netquest Corporation 00:20:1F Best Power Technology, Inc. 00:20:20 Megatron Computer Industries Pty, Ltd. 00:20:21 Algorithms Software Pvt. Ltd. 00:20:22 Teknique, Inc. 00:20:23 T.c. Technologies Pty. Ltd 00:20:24 Pacific Communication Sciences 00:20:25 Control Technology, Inc. 00:20:26 Amkly Systems, Inc. 00:20:27 Ming Fortune Industry Co., Ltd 00:20:28 West Egg Systems, Inc. 00:20:29 Teleprocessing Products, Inc. 00:20:2A N.v. Dzine 00:20:2B Advanced Telecommunications Modules, Ltd. 00:20:2C Welltronix Co., Ltd. 00:20:2D Taiyo Corporation 00:20:2E Daystar Digital 00:20:2F Zeta Communications, Ltd. 00:20:30 Analog & Digital Systems 00:20:31 Ertec Gmbh 00:20:32 Alcatel Taisel 00:20:33 Synapse Technologies, Inc. 00:20:34 Rotec Industrieautomation Gmbh 00:20:35 Ibm Corporation 00:20:36 Bmc Software 00:20:37 Seagate Technology 00:20:38 Vme Microsystems International Corporation 00:20:39 Scinets 00:20:3A Digital Bi0metrics Inc. 00:20:3B Wisdm Ltd. 00:20:3C Eurotime Ab 00:20:3D Novar Electronics Corporation 00:20:3E Logican Technologies, Inc. 00:20:3F Juki Corporation 00:20:40 Motorola Broadband Communications Sector 00:20:41 Data Net 00:20:42 Datametrics Corp. 00:20:43 Neuron Company Limited 00:20:44 Genitech Pty Ltd 00:20:45 Ion Networks, Inc. 00:20:46 Ciprico, Inc. 00:20:47 Steinbrecher Corp. 00:20:48 Marconi Communications 00:20:49 Comtron, Inc. 00:20:4A Pronet Gmbh 00:20:4B Autocomputer Co., Ltd. 00:20:4C Mitron Computer Pte Ltd. 00:20:4D Inovis Gmbh 00:20:4E Network Security Systems, Inc. 00:20:4F Deutsche Aerospace Ag 00:20:50 Korea Computer Inc. 00:20:51 Phoenix Data Commununications 00:20:52 Ragula Systems 00:20:53 Huntsville Microsystems, Inc. 00:20:54 Eastern Research, Inc. 00:20:55 Altech Co., Ltd. 00:20:56 Neoproducts 00:20:57 Titze Datentechnik Gmbh 00:20:58 Allied Signal Inc. 00:20:59 Miro Computer Products Ag 00:20:5A Computer Identics 00:20:5B Skyline Technology 00:20:5C Internet Systems Of Florida, Inc. 00:20:5D Nanomatic Oy 00:20:5E Castle Rock, Inc. 00:20:5F Gammadata Computer Gmbh 00:20:60 Alcatel Italia S.p.a. 00:20:61 Dynatech Communications, Inc. 00:20:62 Scorpion Logic, Ltd. 00:20:63 Wipro Infotech Ltd. 00:20:64 Protec Microsystems, Inc. 00:20:65 Supernet Networking Inc. 00:20:66 General Magic, Inc. 00:20:67 Private 00:20:68 Isdyne 00:20:69 Isdn Systems Corporation 00:20:6A Osaka Computer Corp. 00:20:6B Minolta Camera Co., Ltd. 00:20:6C Evergreen Technology Corp. 00:20:6D Data Race, Inc. 00:20:6E Xact, Inc. 00:20:6F Flowpoint Corporation 00:20:70 Hynet, Ltd. 00:20:71 Ibr Gmbh 00:20:72 Worklink Innovations 00:20:73 Fusion Systems Corporation 00:20:74 Sungwoon Systems 00:20:75 Motorola Communication Israel 00:20:76 Reudo Corporation 00:20:77 Kardios Systems Corp. 00:20:78 Runtop, Inc. 00:20:79 Mikron Gmbh 00:20:7A Wise Communications, Inc. 00:20:7B Intel Corporation 00:20:7C Autec Gmbh 00:20:7D Advanced Computer Applications 00:20:7E Finecom Co., Ltd. 00:20:7F Kyoei Sangyo Co., Ltd. 00:20:80 Synergy (uk) Ltd. 00:20:81 Titan Electronics 00:20:82 Oneac Corporation 00:20:83 Presticom Incorporated 00:20:84 Oce Printing Systems, Gmbh 00:20:85 Exide Electronics 00:20:86 Microtech Electronics Limited 00:20:87 Memotec Communications Corp. 00:20:88 Global Village Communication 00:20:89 T3plus Networking, Inc. 00:20:8A Sonix Communications, Ltd. 00:20:8B Lapis Technologies, Inc. 00:20:8C Galaxy Networks, Inc. 00:20:8D Cmd Technology 00:20:8E Chevin Software Eng. Ltd. 00:20:8F Eci Telecom Ltd. 00:20:90 Advanced Compression Technology, Inc. 00:20:91 J125, National Security Agency 00:20:92 Chess Engineering B.v. 00:20:93 Landings Technology Corp. 00:20:94 Cubix Corporation 00:20:95 Riva Electronics 00:20:96 Invensys 00:20:97 Applied Signal Technology 00:20:98 Hectronic Ab 00:20:99 Bon Electric Co., Ltd. 00:20:9A The 3do Company 00:20:9B Ersat Electronic Gmbh 00:20:9C Primary Access Corp. 00:20:9D Lippert Automationstechnik 00:20:9E Brown's Operating System Services, Ltd. 00:20:9F Mercury Computer Systems, Inc. 00:20:A0 Oa Laboratory Co., Ltd. 00:20:A1 Dovatron 00:20:A2 Galcom Networking Ltd. 00:20:A3 Divicom Inc. 00:20:A4 Multipoint Networks 00:20:A5 Api Engineering 00:20:A6 Proxim, Inc. 00:20:A7 Pairgain Technologies, Inc. 00:20:A8 Sast Technology Corp. 00:20:A9 White Horse Industrial 00:20:AA Digimedia Vision Ltd. 00:20:AB Micro Industries Corp. 00:20:AC Interflex Datensysteme Gmbh 00:20:AD Linq Systems 00:20:AE Ornet Data Communication Tech. 00:20:AF 3com Corporation 00:20:B0 Gateway Devices, Inc. 00:20:B1 Comtech Research Inc. 00:20:B2 Gkd Gesellschaft Fur Kommunikation Und Datentechnik 00:20:B3 Scltec Communications Systems 00:20:B4 Terma Elektronik As 00:20:B5 Yaskawa Electric Corporation 00:20:B6 Agile Networks, Inc. 00:20:B7 Namaqua Computerware 00:20:B8 Prime Option, Inc. 00:20:B9 Metricom, Inc. 00:20:BA Center For High Performance 00:20:BB Zax Corporation 00:20:BC Jtec Pty Ltd. 00:20:BD Niobrara R & D Corporation 00:20:BE Lan Access Corp. 00:20:BF Aehr Test Systems 00:20:C0 Pulse Electronics, Inc. 00:20:C1 Taiko Electric Works, Ltd. 00:20:C2 Texas Memory Systems, Inc. 00:20:C3 Counter Solutions Ltd. 00:20:C4 Inet,inc. 00:20:C5 Eagle Technology 00:20:C6 Nectec 00:20:C7 Akai Professional M.i. Corp. 00:20:C8 Larscom Incorporated 00:20:C9 Victron Bv 00:20:CA Digital Ocean 00:20:CB Pretec Electronics Corp. 00:20:CC Digital Services, Ltd. 00:20:CD Hybrid Networks, Inc. 00:20:CE Logical Design Group, Inc. 00:20:CF Test & Measurement Systems Inc 00:20:D0 Versalynx Corporation 00:20:D1 Microcomputer Systems (m) Sdn. 00:20:D2 Rad Data Communications, Ltd. 00:20:D3 Ost (ouest Standard Telematiqu 00:20:D4 Cabletron - Zeittnet Inc. 00:20:D5 Vipa Gmbh 00:20:D6 Breezecom 00:20:D7 Japan Minicomputer Systems Co., Ltd. 00:20:D8 Nortel Networks 00:20:D9 Panasonic Technologies, Inc./mieco-us 00:20:DA Xylan Corporation 00:20:DB Xnet Technology, Inc. 00:20:DC Densitron Taiwan Ltd. 00:20:DD Awa Ltd. 00:20:DE Japan Digital Laborat'y Co.ltd 00:20:DF Kyosan Electric Mfg. Co., Ltd. 00:20:E0 Premax Electronics, Inc. 00:20:E1 Alamar Electronics 00:20:E2 Information Resource Engineering 00:20:E3 Mcd Kencom Corporation 00:20:E4 Hsing Tech Enterprise Co., Ltd 00:20:E5 Apex Data, Inc. 00:20:E6 Lidkoping Machine Tools Ab 00:20:E7 B&w Nuclear Service Company 00:20:E8 Datatrek Corporation 00:20:E9 Dantel 00:20:EA Efficient Networks, Inc. 00:20:EB Cincinnati Microwave, Inc. 00:20:EC Techware Systems Corp. 00:20:ED Giga-byte Technology Co., Ltd. 00:20:EE Gtech Corporation 00:20:EF Usc Corporation 00:20:F0 Universal Microelectronics Co. 00:20:F1 Altos India Limited 00:20:F2 Sun Microsystems, Inc. 00:20:F3 Raynet Corporation 00:20:F4 Spectrix Corporation 00:20:F5 Pandatel Ag 00:20:F6 Net Tek And Karlnet, Inc. 00:20:F7 Cyberdata 00:20:F8 Carrera Computers, Inc. 00:20:F9 Paralink Networks, Inc. 00:20:FA Gde Systems, Inc. 00:20:FB Octel Communications Corp. 00:20:FC Matrox 00:20:FD Itv Technologies, Inc. 00:20:FE Topware Inc. / Grand Computer 00:20:FF Symmetrical Technologies 00:30:00 Allwell Technology Corp. 00:30:01 Smp 00:30:02 Expand Networks 00:30:03 Phasys Ltd. 00:30:04 Leadtek Research Inc. 00:30:05 Fujitsu Siemens Computers 00:30:06 Superpower Computer 00:30:07 Opti, Inc. 00:30:08 Avio Digital, Inc. 00:30:09 Tachion Networks, Inc. 00:30:0A Aztech Systems Ltd. 00:30:0B Mphase Technologies, Inc. 00:30:0C Congruency, Ltd. 00:30:0D Mmc Technology, Inc. 00:30:0E Klotz Digital Ag 00:30:0F Imt - Information Management T 00:30:10 Visionetics International 00:30:11 Hms Fieldbus Systems Ab 00:30:12 Digital Engineering Ltd. 00:30:13 Nec Corporation 00:30:14 Divio, Inc. 00:30:15 Cp Clare Corp. 00:30:16 Ishida Co., Ltd. 00:30:17 Terastack Ltd. 00:30:18 Jetway Information Co., Ltd. 00:30:19 Cisco Systems, Inc. 00:30:1A Smartbridges Pte. Ltd. 00:30:1B Shuttle, Inc. 00:30:1C Altvater Airdata Systems 00:30:1D Skystream, Inc. 00:30:1E 3com Europe Ltd. 00:30:1F Optical Networks, Inc. 00:30:20 Tsi, Inc.. 00:30:21 Hsing Tech. Enterprise Co.,ltd 00:30:22 Fong Kai Industrial Co., Ltd. 00:30:23 Cogent Computer Systems, Inc. 00:30:24 Cisco Systems, Inc. 00:30:25 Checkout Computer Systems, Ltd 00:30:26 Heitel 00:30:27 Kerbango, Inc. 00:30:28 Fase Saldatura Srl 00:30:29 Opicom 00:30:2A Southern Information 00:30:2B Inalp Networks, Inc. 00:30:2C Sylantro Systems Corporation 00:30:2D Quantum Bridge Communications 00:30:2E Hoft & Wessel Ag 00:30:2F Smiths Industries 00:30:30 Harmonix Corporation 00:30:31 Lightwave Communications, Inc. 00:30:32 Magicram, Inc. 00:30:33 Orient Telecom Co., Ltd. 00:30:34 Private 00:30:35 Private 00:30:36 Rmp Elektroniksysteme Gmbh 00:30:37 Packard Bell Nec Services 00:30:38 Xcp, Inc. 00:30:39 Softbook Press 00:30:3A Maatel 00:30:3B Powercom Technology 00:30:3C Onnto Corp. 00:30:3D Iva Corporation 00:30:3E Radcom Ltd. 00:30:3F Turbocomm Tech Inc. 00:30:40 Cisco Systems, Inc. 00:30:41 Saejin T & M Co., Ltd. 00:30:42 Detewe-deutsche Telephonwerke 00:30:43 Idream Technologies, Pte. Ltd. 00:30:44 Portsmith Llc 00:30:45 Village Networks, Inc. (vni) 00:30:46 Controlled Electronic Manageme 00:30:47 Nissei Electric Co., Ltd. 00:30:48 Supermicro Computer, Inc. 00:30:49 Bryant Technology, Ltd. 00:30:4A Fraunhofer Institute Ims 00:30:4B Orbacom Systems, Inc. 00:30:4C Appian Communications, Inc. 00:30:4D Esi 00:30:4E Bustec Production Ltd. 00:30:4F Planet Technology Corporation 00:30:50 Versa Technology 00:30:51 Orbit Avionic & Communication 00:30:52 Elastic Networks 00:30:53 Basler Ag 00:30:54 Castlenet Technology, Inc. 00:30:55 Hitachi Semiconductor America, 00:30:56 Beck Ipc Gmbh 00:30:57 E-tel Corporation 00:30:58 Api Motion 00:30:59 Digital-logic Ag 00:30:5A Telgen Corporation 00:30:5B Module Department 00:30:5C Smar Laboratories Corp. 00:30:5D Digitra Systems, Inc. 00:30:5E Abelko Innovation 00:30:5F Imacon Aps 00:30:60 Starmatix, Inc. 00:30:61 Mobytel 00:30:62 Path 1 Network Technol's Inc. 00:30:63 Santera Systems, Inc. 00:30:64 Adlink Technology, Inc. 00:30:65 Apple Airport Card 2002 00:30:66 Digital Wireless Corporation 00:30:67 Biostar Microtech Int'l Corp. 00:30:68 Cybernetics Tech. Co., Ltd. 00:30:69 Impacct Technology Corp. 00:30:6A Penta Media Co., Ltd. 00:30:6B Cmos Systems, Inc. 00:30:6C Hitex Holding Gmbh 00:30:6D Lucent Technologies 00:30:6E Hewlett Packard 00:30:6F Seyeon Tech. Co., Ltd. 00:30:70 1net Corporation 00:30:71 Cisco Systems, Inc. 00:30:72 Intellibyte Inc. 00:30:73 International Microsystems, In 00:30:74 Equiinet Ltd. 00:30:75 Adtech 00:30:76 Akamba Corporation 00:30:77 Onprem Networks 00:30:78 Cisco Systems, Inc. 00:30:79 Cqos, Inc. 00:30:7A Advanced Technology & Systems 00:30:7B Cisco Systems, Inc. 00:30:7C Adid Sa 00:30:7D Gre America, Inc. 00:30:7E Redflex Communication Systems 00:30:7F Irlan Ltd. 00:30:80 Cisco Systems, Inc. 00:30:81 Altos C&c 00:30:82 Taihan Electric Wire Co., Ltd. 00:30:83 Ivron Systems 00:30:84 Allied Telesyn Internaional 00:30:85 Cisco Systems, Inc. 00:30:86 Transistor Devices, Inc. 00:30:87 Vega Grieshaber Kg 00:30:88 Siara Systems, Inc. 00:30:89 Spectrapoint Wireless, Llc 00:30:8A Nicotra Sistemi S.p.a 00:30:8B Brix Networks 00:30:8C Advanced Digital Information 00:30:8D Pinnacle Systems, Inc. 00:30:8E Cross Match Technologies, Inc. 00:30:8F Micrilor, Inc. 00:30:90 Cyra Technologies, Inc. 00:30:91 Taiwan First Line Elec. Corp. 00:30:92 Modunorm Gmbh 00:30:93 Sonnet Technologies, Inc. 00:30:94 Cisco Systems, Inc. 00:30:95 Procomp Informatics, Ltd. 00:30:96 Cisco Systems, Inc. 00:30:97 Exomatic Ab 00:30:98 Global Converging Technologies 00:30:99 Boenig Und Kallenbach Ohg 00:30:9A Astro Terra Corp. 00:30:9B Smartware 00:30:9C Timing Applications, Inc. 00:30:9D Nimble Microsystems, Inc. 00:30:9E Workbit Corporation. 00:30:9F Amber Networks 00:30:A0 Tyco Submarine Systems, Ltd. 00:30:A1 Opti Tech Co., Ltd. 00:30:A2 Lightner Engineering 00:30:A3 Cisco Systems, Inc. 00:30:A4 Woodwind Communications System 00:30:A5 Active Power 00:30:A6 Vianet Technologies, Ltd. 00:30:A7 Schweitzer Engineering 00:30:A8 Ol'e Communications, Inc. 00:30:A9 Netiverse, Inc. 00:30:AA Axus Microsystems, Inc. 00:30:AB Delta Networks, Inc. 00:30:AC Systeme Lauer Gmbh & Co., Ltd. 00:30:AD Shanghai Communication 00:30:AE Times N System, Inc. 00:30:AF Honeywell Reqelsysteme Gmbh 00:30:B0 Convergenet Technologies 00:30:B1 Goc Gesellschaft Fur Optische 00:30:B2 Wescam - Healdsburg 00:30:B3 San Valley Systems, Inc. 00:30:B4 Intersil Corp. 00:30:B5 Tadiran Microwave Networks 00:30:B6 Cisco Systems, Inc. 00:30:B7 Teletrol Systems, Inc. 00:30:B8 Riverdelta Networks 00:30:B9 Ectel 00:30:BA Ac&t System Co., Ltd. 00:30:BB Cacheflow, Inc. 00:30:BC Optronic Ag 00:30:BD Belkin Components 00:30:BE City-net Technology, Inc. 00:30:BF Multidata Gmbh 00:30:C0 Lara Technology, Inc. 00:30:C1 Hewlett-packard 00:30:C2 Comone 00:30:C3 Flueckiger Elektronik Ag 00:30:C4 Niigata Canotec Co., Inc. 00:30:C5 Cadence Design Systems 00:30:C6 Control Solutions, Inc. 00:30:C7 Macromate Corp. 00:30:C8 Gad Line, Ltd. 00:30:C9 Luxn, N 00:30:CA Discovery Com 00:30:CB Omni Flow Computers, Inc. 00:30:CC Tenor Networks, Inc. 00:30:CD Conexant Systems, Inc. 00:30:CE Zaffire 00:30:CF Two Technologies, Inc. 00:30:D0 Private 00:30:D1 Inova Corporation 00:30:D2 Win Technologies, Co., Ltd. 00:30:D3 Agilent Technologies 00:30:D4 Comtier 00:30:D5 Dresearch Gmbh 00:30:D6 Msc Vertriebs Gmbh 00:30:D7 Innovative Systems, L.l.c. 00:30:D8 Sitek 00:30:D9 Datacore Software Corp. 00:30:DA Comtrend Co. 00:30:DB Mindready Solutions, Inc. 00:30:DC Rightech Corporation 00:30:DD Indigita Corporation 00:30:DE Wago Kontakttechnik Gmbh 00:30:DF Kb/tel Telecomunicaciones 00:30:E0 Oxford Semiconductor Ltd. 00:30:E1 Acrotron Systems, Inc. 00:30:E2 Garnet Systems Co., Ltd. 00:30:E3 Sedona Networks Corp. 00:30:E4 Chiyoda System Riken 00:30:E5 Amper Datos S.a. 00:30:E6 Siemens Medical Systems 00:30:E7 Cnf Mobile Solutions, Inc. 00:30:E8 Ensim Corp. 00:30:E9 Gma Communication Manufact'g 00:30:EA Teraforce Technology Corporation 00:30:EB Turbonet Communications, Inc. 00:30:EC Borgardt 00:30:ED Expert Magnetics Corp. 00:30:EE Dsg Technology, Inc. 00:30:EF Neon Technology, Inc. 00:30:F0 Uniform Industrial Corp. 00:30:F1 Accton Technology Corp. 00:30:F2 Cisco Systems, Inc. 00:30:F3 At Work Computers 00:30:F4 Stardot Technologies 00:30:F5 Wild Lab. Ltd. 00:30:F6 Securelogix Corporation 00:30:F7 Ramix Inc. 00:30:F8 Dynapro Systems, Inc. 00:30:F9 Sollae Systems Co., Ltd. 00:30:FA Telica, Inc. 00:30:FB Azs Technology Ag 00:30:FC Terawave Communications, Inc. 00:30:FD Integrated Systems Design 00:30:FE Dsa Gmbh 00:30:FF Datafab Systems, Inc. 00:40:00 Pci Componentes Da Amzonia Ltd 00:40:01 Zyxel Communications, Inc. 00:40:02 Perle Systems Limited 00:40:03 Westinghouse Process Control 00:40:04 Icm Co. Ltd. 00:40:05 Ani Communications Inc. 00:40:06 Sampo Technology Corporation 00:40:07 Telmat Informatique 00:40:08 A Plus Info Corporation 00:40:09 Tachibana Tectron Co., Ltd. 00:40:0A Pivotal Technologies, Inc. 00:40:0B Cisco Systems, Inc. 00:40:0C General Micro Systems, Inc. 00:40:0D Lannet Data Communications,ltd 00:40:0E Memotec Communications, Inc. 00:40:0F Datacom Technologies 00:40:10 Sonic Systems, Inc. 00:40:11 Andover Controls Corporation 00:40:12 Windata, Inc. 00:40:13 Ntt Data Comm. Systems Corp. 00:40:14 Comsoft Gmbh 00:40:15 Ascom Infrasys Ag 00:40:16 Hadax Electronics, Inc. 00:40:17 Xcd Inc. 00:40:18 Adobe Systems, Inc. 00:40:19 Aeon Systems, Inc. 00:40:1A Fuji Electric Co., Ltd. 00:40:1B Printer Systems Corp. 00:40:1C Ast Research, Inc. 00:40:1D Invisible Software, Inc. 00:40:1E Icc 00:40:1F Colorgraph Ltd 00:40:20 Pinacl Communication 00:40:21 Raster Graphics 00:40:22 Klever Computers, Inc. 00:40:23 Logic Corporation 00:40:24 Compac Inc. 00:40:25 Molecular Dynamics 00:40:26 Melco, Inc. 00:40:27 Smc Massachusetts, Inc. 00:40:28 Netcomm Limited 00:40:29 Compex 00:40:2A Canoga-perkins 00:40:2B Trigem Computer, Inc. 00:40:2C Isis Distributed Systems, Inc. 00:40:2D Harris Adacom Corporation 00:40:2E Precision Software, Inc. 00:40:2F Xlnt Designs Inc. 00:40:30 Gk Computer 00:40:31 Kokusai Electric Co., Ltd 00:40:32 Digital Communications 00:40:33 Addtron Technology Co., Ltd. 00:40:34 Bustek Corporation 00:40:35 Opcom 00:40:36 Tribe Computer Works, Inc. 00:40:37 Sea-ilan, Inc. 00:40:38 Talent Electric Incorporated 00:40:39 Optec Daiichi Denko Co., Ltd. 00:40:3A Impact Technologies 00:40:3B Synerjet International Corp. 00:40:3C Forks, Inc. 00:40:3D Teradata 00:40:3E Raster Ops Corporation 00:40:3F Ssangyong Computer Systems 00:40:40 Ring Access, Inc. 00:40:41 Fujikura Ltd. 00:40:42 N.a.t. Gmbh 00:40:43 Nokia Telecommunications 00:40:44 Qnix Computer Co., Ltd. 00:40:45 Twinhead Corporation 00:40:46 Udc Research Limited 00:40:47 Wind River Systems 00:40:48 Smd Informatica S.a. 00:40:49 Tegimenta Ag 00:40:4A West Australian Department 00:40:4B Maple Computer Systems 00:40:4C Hypertec Pty Ltd. 00:40:4D Telecommunications Techniques 00:40:4E Fluent, Inc. 00:40:4F Space & Naval Warfare Systems 00:40:50 Ironics, Incorporated 00:40:51 Gracilis, Inc. 00:40:52 Star Technologies, Inc. 00:40:53 Ampro Computers 00:40:54 Connection Machines Services 00:40:55 Metronix Gmbh 00:40:56 Mcm Japan Ltd. 00:40:57 Lockheed - Sanders 00:40:58 Kronos, Inc. 00:40:59 Yoshida Kogyo K. K. 00:40:5A Goldstar Information & Comm. 00:40:5B Funasset Limited 00:40:5C Future Systems, Inc. 00:40:5D Star-tek, Inc. 00:40:5E North Hills Israel 00:40:5F Afe Computers Ltd. 00:40:60 Comendec Ltd 00:40:61 Datatech Enterprises Co., Ltd. 00:40:62 E-systems, Inc./garland Div. 00:40:63 Via Technologies, Inc. 00:40:64 Kla Instruments Corporation 00:40:65 Gte Spacenet 00:40:66 Hitachi Cable, Ltd. 00:40:67 Omnibyte Corporation 00:40:68 Extended Systems 00:40:69 Lemcom Systems, Inc. 00:40:6A Kentek Information Systems,inc 00:40:6B Sysgen 00:40:6C Copernique 00:40:6D Lanco, Inc. 00:40:6E Corollary, Inc. 00:40:6F Sync Research Inc. 00:40:70 Interware Co., Ltd. 00:40:71 Atm Computer Gmbh 00:40:72 Applied Innovation Inc. 00:40:73 Bass Associates 00:40:74 Cable And Wireless 00:40:75 M-trade (uk) Ltd 00:40:76 Sun Conversion Technologies 00:40:77 Maxton Technology Corporation 00:40:78 Wearnes Automation Pte Ltd 00:40:79 Juko Manufacture Company, Ltd. 00:40:7A Societe D'exploitation Du Cnit 00:40:7B Scientific Atlanta 00:40:7C Qume Corporation 00:40:7D Extension Technology Corp. 00:40:7E Evergreen Systems, Inc. 00:40:7F Flir Systems 00:40:80 Athenix Corporation 00:40:81 Mannesmann Scangraphic Gmbh 00:40:82 Laboratory Equipment Corp. 00:40:83 Tda Industria De Produtos 00:40:84 Honeywell Inc. 00:40:85 Saab Instruments Ab 00:40:86 Michels & Kleberhoff Computer 00:40:87 Ubitrex Corporation 00:40:88 Mobius Technologies, Inc. 00:40:89 Meidensha Corporation 00:40:8A Tps Teleprocessing Sys. Gmbh 00:40:8B Raylan Corporation 00:40:8C Axis Communications Ab 00:40:8D The Goodyear Tire & Rubber Co. 00:40:8E Digilog, Inc. 00:40:8F Wm-data Minfo Ab 00:40:90 Ansel Communications 00:40:91 Procomp Industria Eletronica 00:40:92 Asp Computer Products, Inc. 00:40:93 Paxdata Networks Ltd. 00:40:94 Shographics, Inc. 00:40:95 R.p.t. Intergroups Int'l Ltd. 00:40:96 Aironet Wireless Communication 00:40:97 Datex Division Of 00:40:98 Dressler Gmbh & Co. 00:40:99 Newgen Systems Corp. 00:40:9A Network Express, Inc. 00:40:9B Hal Computer Systems Inc. 00:40:9C Transware 00:40:9D Digiboard, Inc. 00:40:9E Concurrent Technologies Ltd. 00:40:9F Lancast/casat Technology, Inc. 00:40:A0 Goldstar Co., Ltd. 00:40:A1 Ergo Computing 00:40:A2 Kingstar Technology Inc. 00:40:A3 Microunity Systems Engineering 00:40:A4 Rose Electronics 00:40:A5 Clinicomp Intl. 00:40:A6 Cray, Inc. 00:40:A7 Itautec Philco S.a. 00:40:A8 Imf International Ltd. 00:40:A9 Datacom Inc. 00:40:AA Valmet Automation Inc. 00:40:AB Roland Dg Corporation 00:40:AC Super Workstation, Inc. 00:40:AD Sma Regelsysteme Gmbh 00:40:AE Delta Controls, Inc. 00:40:AF Digital Products, Inc. 00:40:B0 Bytex Corporation, Engineering 00:40:B1 Codonics Inc. 00:40:B2 Systemforschung 00:40:B3 Par Microsystems Corporation 00:40:B4 Nextcom K.k. 00:40:B5 Video Technology Computers Ltd 00:40:B6 Computerm Corporation 00:40:B7 Stealth Computer Systems 00:40:B8 Idea Associates 00:40:B9 Macq Electronique Sa 00:40:BA Alliant Computer Systems Corp. 00:40:BB Goldstar Cable Co., Ltd. 00:40:BC Algorithmics Ltd. 00:40:BD Starlight Networks, Inc. 00:40:BE Boeing Defense & Space 00:40:BF Channel Systems Intern'l Inc. 00:40:C0 Vista Controls Corporation 00:40:C1 Bizerba-werke Wilheim Kraut 00:40:C2 Applied Computing Devices 00:40:C3 Fischer And Porter Co. 00:40:C4 Kinkei System Corporation 00:40:C5 Micom Communications Inc. 00:40:C6 Fibernet Research, Inc. 00:40:C7 Ruby Tech Corporation 00:40:C8 Milan Technology Corporation 00:40:C9 Ncube 00:40:CA First Internat'l Computer, Inc 00:40:CB Lanwan Technologies 00:40:CC Silcom Manuf'g Technology Inc. 00:40:CD Tera Microsystems, Inc. 00:40:CE Net-source, Inc. 00:40:CF Strawberry Tree, Inc. 00:40:D0 Mitac International Corp. 00:40:D1 Fukuda Denshi Co., Ltd. 00:40:D2 Pagine Corporation 00:40:D3 Kimpsion International Corp. 00:40:D4 Gage Talker Corp. 00:40:D5 Sartorius Ag 00:40:D6 Locamation B.v. 00:40:D7 Studio Gen Inc. 00:40:D8 Ocean Office Automation Ltd. 00:40:D9 American Megatrends Inc. 00:40:DA Telspec Ltd 00:40:DB Advanced Technical Solutions 00:40:DC Tritec Electronic Gmbh 00:40:DD Hong Technologies 00:40:DE Elettronica San Giorgio 00:40:DF Digalog Systems, Inc. 00:40:E0 Atomwide Ltd. 00:40:E1 Marner International, Inc. 00:40:E2 Mesa Ridge Technologies, Inc. 00:40:E3 Quin Systems Ltd 00:40:E4 E-m Technology, Inc. 00:40:E5 Sybus Corporation 00:40:E6 C.a.e.n. 00:40:E7 Arnos Instruments & Computer 00:40:E8 Charles River Data Systems,inc 00:40:E9 Accord Systems, Inc. 00:40:EA Plain Tree Systems Inc 00:40:EB Martin Marietta Corporation 00:40:EC Mikasa System Engineering 00:40:ED Network Controls Int'natl Inc. 00:40:EE Optimem 00:40:EF Hypercom, Inc. 00:40:F0 Micro Systems, Inc. 00:40:F1 Chuo Electronics Co., Ltd. 00:40:F2 Janich & Klass Computertechnik 00:40:F3 Netcor 00:40:F4 Cameo Communications, Inc. 00:40:F5 Oem Engines 00:40:F6 Katron Computers Inc. 00:40:F7 Polaroid Medical Imaging Sys. 00:40:F8 Systemhaus Discom 00:40:F9 Combinet 00:40:FA Microboards, Inc. 00:40:FB Cascade Communications Corp. 00:40:FC Ibr Computer Technik Gmbh 00:40:FD Lxe 00:40:FE Symplex Communications 00:40:FF Telebit Corporation 00:42:52 Rlx Technologies 00:50:00 Nexo Communications, Inc. 00:50:01 Yamashita Systems Corp. 00:50:02 Omnisec Ag 00:50:03 Gretag Macbeth Ag 00:50:04 3com Corporation 00:50:06 Tac Ab 00:50:07 Siemens Telecommunication Systems Limited 00:50:08 Compaq WL100 00:50:09 Philips Broadband Networks 00:50:0A Iris Technologies, Inc. 00:50:0B Cisco Systems, Inc. 00:50:0C E-tek Labs, Inc. 00:50:0D Satori Electoric Co., Ltd. 00:50:0E Chromatis Networks, Inc. 00:50:0F Cisco Systems, Inc. 00:50:10 Novanet Learning, Inc. 00:50:12 Cbl - Gmbh 00:50:13 Chaparral Network Storage 00:50:14 Cisco Systems, Inc. 00:50:15 Bright Star Engineering 00:50:16 Sst/woodhead Industries 00:50:17 Rsr S.r.l. 00:50:18 Advanced Multimedia Internet Technology Inc. 00:50:19 Spring Tide Networks, Inc. 00:50:1A Uisiqn 00:50:1B Abl Canada, Inc. 00:50:1C Jatom Systems, Inc. 00:50:1E Miranda Technologies, Inc. 00:50:1F Mrg Systems, Ltd. 00:50:20 Mediastar Co., Ltd. 00:50:21 Eis International, Inc. 00:50:22 Zonet Technology, Inc. 00:50:23 Pg Design Electronics, Inc. 00:50:24 Navic Systems, Inc. 00:50:26 Cosystems, Inc. 00:50:27 Genicom Corporation 00:50:28 Aval Communications 00:50:29 1394 Printer Working Group 00:50:2A Cisco Systems, Inc. 00:50:2B Genrad Ltd. 00:50:2C Soyo Computer, Inc. 00:50:2D Accel, Inc. 00:50:2E Cambex Corporation 00:50:2F Tollbridge Technologies, Inc. 00:50:30 Future Plus Systems 00:50:31 Aeroflex Laboratories, Inc. 00:50:32 Picazo Communications, Inc. 00:50:33 Mayan Networks 00:50:36 Netcam, Ltd. 00:50:37 Koga Electronics Co. 00:50:38 Dain Telecom Co., Ltd. 00:50:39 Mariner Networks 00:50:3A Datong Electronics Ltd. 00:50:3B Mediafire Corporation 00:50:3C Tsinghua Novel Electronics 00:50:3E Cisco Systems, Inc. 00:50:3F Anchor Games 00:50:40 Emware, Inc. 00:50:41 Ctx Opto Electronic Corp. 00:50:42 Sci Manufacturing Singapore Pte, Ltd. 00:50:43 Marvell Semiconductor, Inc. 00:50:44 Asaca Corporation 00:50:45 Rioworks Solutions, Inc. 00:50:46 Menicx International Co., Ltd. 00:50:47 Private 00:50:48 Infolibria 00:50:49 Ellacoya Networks, Inc. 00:50:4A Elteco A.s. 00:50:4B Barconet N.v. 00:50:4C Galil Motion Control, Inc. 00:50:4D Tokyo Electron Device Ltd. 00:50:4E Sierra Monitor Corp. 00:50:4F Olencom Electronics 00:50:50 Cisco Systems, Inc. 00:50:51 Iwatsu Electric Co., Ltd. 00:50:52 Tiara Networks, Inc. 00:50:53 Cisco Systems, Inc. 00:50:54 Cisco Systems, Inc. 00:50:55 Doms A/s 00:50:56 Vmware, Inc. 00:50:57 Broadband Access Systems 00:50:58 Vegastream Limited 00:50:59 Suite Technology Systems Network 00:50:5A Network Alchemy, Inc. 00:50:5B Kawasaki Lsi U.s.a., Inc. 00:50:5C Tundo Corporation 00:50:5E Digitek Micrologic S.a. 00:50:5F Brand Innovators 00:50:60 Tandberg Telecom As 00:50:62 Kouwell Electronics Corp. ** 00:50:63 Oy Comsel System Ab 00:50:64 Cae Electronics 00:50:65 Densei-lambad Co., Ltd. 00:50:66 Atecom Gmbh Advanced Telecomunication Modules 00:50:67 Aerocomm, Inc. 00:50:68 Electronic Industries Association 00:50:69 Pixstream Incorporated 00:50:6A Edeva, Inc. 00:50:6B Spx-ateg 00:50:6C G & L Beijer Electronics Ab 00:50:6D Videojet Systems 00:50:6E Corder Engineering Corporation 00:50:6F G-connect 00:50:70 Chaintech Computer Co., Ltd. 00:50:71 Aiwa Co., Ltd. 00:50:72 Corvis Corporation 00:50:73 Cisco Systems, Inc. 00:50:74 Advanced Hi-tech Corp. 00:50:75 Kestrel Solutions 00:50:76 Ibm 00:50:77 Prolific Technology, Inc. 00:50:78 Megaton House, Ltd. 00:50:79 Private 00:50:7A Xpeed, Inc. 00:50:7B Merlot Communications 00:50:7C Videocon Ag 00:50:7D Ifp 00:50:7E Newer Technology 00:50:7F Draytek Corp. 00:50:80 Cisco Systems, Inc. 00:50:81 Murata Machinery, Ltd. 00:50:82 Foresson Corporation 00:50:83 Gilbarco, Inc. 00:50:84 Atl Products 00:50:86 Telkom Sa, Ltd. 00:50:87 Terasaki Electric Co., Ltd. 00:50:88 Amano Corporation 00:50:89 Safety Management Systems 00:50:8B Compaq Computer Corporation 00:50:8C Rsi Systems 00:50:8D Abit Computer Corporation 00:50:8E Optimation, Inc. 00:50:8F Asita Technologies Int'l Ltd. 00:50:90 Dctri 00:50:91 Netaccess, Inc. 00:50:92 Rigaku Industrial Corporation 00:50:93 Boeing 00:50:94 Pace Micro Technology Plc 00:50:95 Peracom Networks 00:50:96 Salix Technologies, Inc. 00:50:97 Mmc-embedded Computertechnik Gmbh 00:50:98 Globaloop, Ltd. 00:50:99 3com Europe, Ltd. 00:50:9A Tag Electronic Systems 00:50:9B Switchcore Ab 00:50:9C Beta Research 00:50:9D The Industree B.v. 00:50:9E Les Technologies Softacoustik Inc. 00:50:9F Horizon Computer 00:50:A0 Delta Computer Systems, Inc. 00:50:A1 Carlo Gavazzi, Inc. 00:50:A2 Cisco Systems, Inc. 00:50:A3 Transmedia Communications, Inc. 00:50:A4 Io Tech, Inc. 00:50:A5 Capitol Business Systems, Ltd. 00:50:A6 Optronics 00:50:A7 Cisco Systems, Inc. 00:50:A8 Opencon Systems, Inc. 00:50:A9 Moldat Wireless Technolgies 00:50:AA Konica Corporation 00:50:AB Naltec, Inc. 00:50:AC Maple Computer Corporation 00:50:AD Communique Wireless Corp. 00:50:AE Iwaki Electronics Co., Ltd. 00:50:AF Intergon, Inc. 00:50:B0 Technology Atlanta Corporation 00:50:B1 Giddings & Lewis 00:50:B2 Brodel Automation 00:50:B3 Voiceboard Corporation 00:50:B4 Satchwell Control Systems, Ltd 00:50:B5 Fichet-bauche 00:50:B6 Good Way Ind. Co., Ltd. 00:50:B7 Boser Technology Co., Ltd. 00:50:B8 Inova Computers Gmbh & Co. Kg 00:50:B9 Xitron Technologies, Inc. 00:50:BA D-link 00:50:BB Cms Technologies 00:50:BC Hammer Storage Solutions 00:50:BD Cisco Systems, Inc. 00:50:BE Fast Multimedia Ag 00:50:BF Mototech Inc. 00:50:C0 Gatan, Inc. 00:50:C1 Gemflex Networks, Ltd. 00:50:C2 Ieee Registration Authority 00:50:C4 Imd 00:50:C5 Ads Technologies, Inc. 00:50:C6 Loop Telecommunication International, Inc. 00:50:C8 Addonics Communications, Inc. 00:50:C9 Maspro Denkoh Corp. 00:50:CA Net To Net Technologies 00:50:CB Jetter 00:50:CC Xyratex 00:50:CD Digianswer A/s 00:50:CE Lg International Corp. 00:50:CF Vanlink Communication Technology Research Institute 00:50:D0 Minerva Systems 00:50:D1 Cisco Systems, Inc. 00:50:D2 Bae Systems Canada, Inc. 00:50:D3 Digital Audio Processing Pty. Ltd. 00:50:D4 Joohong Information & 00:50:D5 Ad Systems Corp. 00:50:D6 Atlas Copco Tools Ab 00:50:D7 Telstrat 00:50:D8 Unicorn Computer Corp. 00:50:D9 Engetron-engenharia Eletronica Ind. E Com. Ltda 00:50:DA 3Com 3CRWE73796B 00:50:DB Contemporary Control 00:50:DC Tas Telefonbau A. Schwabe Gmbh & Co. Kg 00:50:DD Serra Soldadura, S.a. 00:50:DE Signum Systems Corp. 00:50:DF Airfiber, Inc. 00:50:E1 Ns Tech Electronics Sdn Bhd 00:50:E2 Cisco Systems, Inc. 00:50:E3 Telegate 00:50:E4 Apple Computer, Inc. 00:50:E6 Hakusan Corporation 00:50:E7 Paradise Innovations (asia) 00:50:E8 Nomadix Inc. 00:50:EA Xel Communications, Inc. 00:50:EB Alpha-top Corporation 00:50:EC Olicom A/s 00:50:ED Anda Networks 00:50:EE Tek Digitel Corporation 00:50:EF Spe Systemhaus Gmbh 00:50:F0 Cisco Systems, Inc. 00:50:F1 Libit Signal Processing, Ltd. 00:50:F2 Microsoft Corp. 00:50:F3 Global Net Information Co., Ltd. 00:50:F4 Sigmatek Gmbh & Co. Kg 00:50:F6 Pan-international Industrial Corp. 00:50:F7 Venture Manufacturing (singapore) Ltd. 00:50:F8 Entrega Technologies, Inc. 00:50:F9 Private 00:50:FA Oxtel, Ltd. 00:50:FB Vsk Electronics 00:50:FC Edimax Technology Co., Ltd. 00:50:FD Visioncomm Co., Ltd. 00:50:FE Pctvnet Asa 00:50:FF Hakko Electronics Co., Ltd. 00:60:00 Xycom Inc. 00:60:01 Innosys, Inc. 00:60:02 Screen Subtitling Systems, Ltd 00:60:03 Teraoka Weigh System Pte, Ltd. 00:60:04 Computadores Modulares Sa 00:60:05 Feedback Data Ltd. 00:60:06 Sotec Co., Ltd 00:60:07 Acres Gaming, Inc. 00:60:08 3com Corporation 00:60:09 Cisco Systems, Inc. 00:60:0A Sord Computer Corporation 00:60:0B Logware Gmbh 00:60:0C Applied Data Systems, Inc. 00:60:0D Digital Logic Gmbh 00:60:0E Wavenet International, Inc. 00:60:0F Westell, Inc. 00:60:10 Network Machines, Inc. 00:60:11 Crystal Semiconductor Corp. 00:60:12 Power Computing Corporation 00:60:13 Netstal Maschinen Ag 00:60:14 Edec Co., Ltd. 00:60:15 Net2net Corporation 00:60:16 Clariion 00:60:17 Tokimec Inc. 00:60:18 Stellar One Corporation 00:60:19 Roche Diagnostics 00:60:1A Keithley Instruments 00:60:1B Mesa Electronics 00:60:1C Telxon Corporation 00:60:1D Lucent Technologies 00:60:1E Softlab, Inc. 00:60:1F Stallion Technologies 00:60:20 Pivotal Networking, Inc. 00:60:21 Dsc Corporation 00:60:22 Vicom Systems, Inc. 00:60:23 Pericom Semiconductor Corp. 00:60:24 Gradient Technologies, Inc. 00:60:25 Active Imaging Plc 00:60:26 Viking Components, Inc. 00:60:27 Superior Modular Products 00:60:28 Macrovision Corporation 00:60:29 Cary Peripherals Inc. 00:60:2A Symicron Computer Communications, Ltd. 00:60:2B Peak Audio 00:60:2C Linx Data Terminals, Inc. 00:60:2D Alerton Technologies, Inc. 00:60:2E Cyclades Corporation 00:60:2F Cisco Systems, Inc. 00:60:30 Village Tronic Entwicklung 00:60:31 Hrk Systems 00:60:32 I-cube, Inc. 00:60:33 Acuity Imaging, Inc. 00:60:34 Robert Bosch Gmbh 00:60:35 Dallas Semiconductor, Inc. 00:60:36 Austrian Research Center Seibersdorf 00:60:37 Philips Semiconductors 00:60:38 Nortel Networks 00:60:39 Sancom Technology, Inc. 00:60:3A Quick Controls Ltd. 00:60:3B Amtec Spa 00:60:3C Hagiwara Sys-com Co., Ltd. 00:60:3D 3cx 00:60:3E Cisco Systems, Inc. 00:60:3F Patapsco Designs 00:60:40 Netro Corp. 00:60:41 Yokogawa Electric Corporation 00:60:42 Tks (usa), Inc. 00:60:43 Comsoft Systems, Inc. 00:60:44 Litton/poly-scientific 00:60:45 Pathlight Technologies 00:60:46 Vmetro, Inc. 00:60:47 Cisco Systems, Inc. 00:60:48 Emc Corporation 00:60:49 Vina Technologies 00:60:4A Saic Ideas Group 00:60:4B Biodata Gmbh 00:60:4C Sat 00:60:4D Mmc Networks, Inc. 00:60:4E Cycle Computer Corporation, Inc. 00:60:4F Suzuki Mfg. Co., Ltd. 00:60:50 Internix Inc. 00:60:51 Quality Semiconductor 00:60:52 Peripherals Enterprise Co., Ltd. 00:60:53 Toyoda Machine Works, Ltd. 00:60:54 Controlware Gmbh 00:60:55 Cornell University 00:60:56 Network Tools, Inc. 00:60:57 Murata Manufacturing Co., Ltd. 00:60:58 Copper Mountain Communications, Inc. 00:60:59 Technical Communications Corp. 00:60:5A Celcore, Inc. 00:60:5B Intraserver Technology, Inc. 00:60:5C Cisco Systems, Inc. 00:60:5D Scanivalve Corp. 00:60:5E Liberty Technology Networking 00:60:5F Nippon Unisoft Corporation 00:60:60 Dawning Technologies, Inc. 00:60:61 Whistle Communications Corp. 00:60:62 Telesync, Inc. 00:60:63 Psion Dacom Plc. 00:60:64 Netcomm Limited 00:60:65 Bernecker & Rainer Industrie-elektronic Gmbh 00:60:66 Lacroix Technolgie 00:60:67 Acer Netxus Inc. 00:60:68 Eicon Technology Corporation 00:60:69 Brocade Communications Systems, Inc. 00:60:6A Mitsubishi Wireless Communications. Inc. 00:60:6B Synclayer Inc. 00:60:6C Arescom 00:60:6D Cabletron CSIBB-AA 00:60:6E Davicom Semiconductor, Inc. 00:60:6F Clarion Corporation Of America 00:60:70 Cisco Systems, Inc. 00:60:71 Midas Lab, Inc. 00:60:72 Vxl Instruments, Limited 00:60:73 Redcreek Communications, Inc. 00:60:74 Qsc Audio Products 00:60:75 Pentek, Inc. 00:60:76 Schlumberger Technologies Retail Petroleum Systems 00:60:77 Prisa Networks 00:60:78 Power Measurement Ltd. 00:60:79 Mainstream Data, Inc. 00:60:7A Dvs Gmbh 00:60:7B Fore Systems, Inc. 00:60:7C Waveaccess, Ltd. 00:60:7D Sentient Networks Inc. 00:60:7E Gigalabs, Inc. 00:60:7F Aurora Technologies, Inc. 00:60:80 Microtronix Datacom Ltd. 00:60:81 Tv/com International 00:60:82 Novalink Technologies, Inc. 00:60:83 Cisco Systems, Inc. 00:60:84 Digital Video 00:60:85 Storage Concepts 00:60:86 Logic Replacement Tech. Ltd. 00:60:87 Kansai Electric Co., Ltd. 00:60:88 White Mountain Dsp, Inc. 00:60:89 Xata 00:60:8A Citadel Computer 00:60:8B Confertech International 00:60:8C 3com Corporation 00:60:8D Unipulse Corp. 00:60:8E He Electronics, Technologie & Systemtechnik Gmbh 00:60:8F Tekram Technology Co., Ltd. 00:60:90 Able Communications, Inc. 00:60:91 First Pacific Networks, Inc. 00:60:92 Micro/sys, Inc. 00:60:93 Varian 00:60:94 Ibm Corp. 00:60:95 Accu-time Systems, Inc. 00:60:96 T.s. Microtech Inc. 00:60:97 3com Corporation 00:60:98 Ht Communications 00:60:99 Lan Media Corporation 00:60:9A Njk Techno Co. 00:60:9B Astro-med, Inc. 00:60:9C Perkin-elmer Incorporated 00:60:9D Pmi Food Equipment Group 00:60:9E Asc X3 - Information Technology Standards Secretariats 00:60:9F Phast Corporation 00:60:A0 Switched Network Technologies, Inc. 00:60:A1 Vpnet, Inc. 00:60:A2 Nihon Unisys Limited Co. 00:60:A3 Continuum Technology Corp. 00:60:A4 Grinaker System Technologies 00:60:A5 Performance Telecom Corp. 00:60:A6 Particle Measuring Systems 00:60:A7 Microsens Gmbh & Co. Kg 00:60:A8 Tidomat Ab 00:60:A9 Gesytec Mbh 00:60:AA Intelligent Devices Inc. (idi) 00:60:AB Larscom Incorporated 00:60:AC Resilience Corporation 00:60:AD Megachips Corporation 00:60:AE Trio Information Systems Ab 00:60:AF Pacific Micro Data, Inc. 00:60:B0 Hewlett-packard Co. 00:60:B1 Input/output, Inc. 00:60:B2 Process Control Corp. 00:60:B3 SMC SMC2642W 00:60:B4 Glenayre R&d Inc. 00:60:B5 Keba Gmbh 00:60:B6 Land Computer Co., Ltd. 00:60:B7 Channelmatic, Inc. 00:60:B8 Corelis Inc. 00:60:B9 Nitsuko Corporation 00:60:BA Sahara Networks, Inc. 00:60:BB Cabletron - Netlink, Inc. 00:60:BC Keunyoung Electronics & Communication Co., Ltd. 00:60:BD Hubbell-pulsecom 00:60:BE Webtronics 00:60:BF Macraigor Systems, Inc. 00:60:C0 Nera As 00:60:C1 Wavespan Corporation 00:60:C2 Mpl Ag 00:60:C3 Netvision Corporation 00:60:C4 Soliton Systems K.k. 00:60:C5 Ancot Corp. 00:60:C6 Dcs Ag 00:60:C7 Amati Communications Corp. 00:60:C8 Kuka Welding Systems & Robots 00:60:C9 Controlnet, Inc. 00:60:CA Harmonic Systems Incorporated 00:60:CB Hitachi Zosen Corporation 00:60:CC Emtrak, Incorporated 00:60:CD Videoserver, Inc. 00:60:CE Acclaim Communications 00:60:CF Alteon Networks, Inc. 00:60:D0 Snmp Research Incorporated 00:60:D1 Cascade Communications 00:60:D2 Lucent Technologies Taiwan Telecommunications Co., Ltd. 00:60:D3 At&t 00:60:D4 Eldat Communication Ltd. 00:60:D5 Miyachi Technos Corp. 00:60:D6 Novatel Wireless Technologies Ltd. 00:60:D7 Ecole Polytechnique Federale De Lausanne (epfl) 00:60:D8 Elmic Systems, Inc. 00:60:D9 Transys Networks Inc. 00:60:DA Jbm Electronics Co. 00:60:DB Ntp Elektronik A/s 00:60:DC Toyo Communication Equipment Co., Ltd. 00:60:DD Myricom, Inc. 00:60:DE Kayser-threde Gmbh 00:60:DF Inrange Technologies Corp. 00:60:E0 Axiom Technology Co., Ltd. 00:60:E1 Orckit Communications Ltd. 00:60:E2 Quest Engineering & Development 00:60:E3 Arbin Instruments 00:60:E4 Compuserve, Inc. 00:60:E5 Fuji Automation Co., Ltd. 00:60:E6 Shomiti Systems Incorporated 00:60:E7 Randata 00:60:E8 Hitachi Computer Products (america), Inc. 00:60:E9 Atop Technologies, Inc. 00:60:EA Streamlogic 00:60:EB Fourthtrack Systems 00:60:EC Hermary Opto Electronics Inc. 00:60:ED Ricardo Test Automation Ltd. 00:60:EE Apollo 00:60:EF Flytech Technology Co., Ltd. 00:60:F0 Johnson & Johnson Medical, Inc 00:60:F1 Exp Computer, Inc. 00:60:F2 Lasergraphics, Inc. 00:60:F3 Netcom Systems, Inc. 00:60:F4 Advanced Computer Solutions, Inc. 00:60:F5 Icon West, Inc. 00:60:F6 Nextest Communications Products, Inc. 00:60:F7 Datafusion Systems 00:60:F8 Loran International Technologies Inc. 00:60:F9 Diamond Lane Communications 00:60:FA Educational Technology Resources, Inc. 00:60:FB Packeteer, Inc. 00:60:FC Conservation Through Innovation Ltd. 00:60:FD Netics, Inc. 00:60:FE Lynx System Developers, Inc. 00:60:FF Quvis, Inc. 00:70:B0 M/a-com Inc. Companies 00:70:B3 Data Recall Ltd. 00:80:00 Multitech Systems, Inc. 00:80:01 Periphonics Corporation 00:80:02 Satelcom (uk) Ltd 00:80:03 Hytec Electronics Ltd. 00:80:04 Antlow Communications, Ltd. 00:80:05 Cactus Computer Inc. 00:80:06 Compuadd Corporation 00:80:07 Dlog Nc-systeme 00:80:08 Dynatech Computer Systems 00:80:09 Jupiter Systems, Inc. 00:80:0A Japan Computer Corp. 00:80:0B Csk Corporation 00:80:0C Videcom Limited 00:80:0D Vosswinkel F.u. 00:80:0E Atlantix Corporation 00:80:0F Standard Microsystems 00:80:10 Commodore International 00:80:11 Digital Systems Int'l. Inc. 00:80:12 Integrated Measurement Systems 00:80:13 Thomas-conrad Corporation 00:80:14 Esprit Systems 00:80:15 Seiko Systems, Inc. 00:80:16 Wandel And Goltermann 00:80:17 Pfu Limited 00:80:18 Kobe Steel, Ltd. 00:80:19 Dayna Communications, Inc. 00:80:1A Bell Atlantic 00:80:1B Kodiak Technology 00:80:1C Newport Systems Solutions 00:80:1D Integrated Inference Machines 00:80:1E Xinetron, Inc. 00:80:1F Krupp Atlas Electronik Gmbh 00:80:20 Network Products 00:80:21 Newbridge Research Corp. 00:80:22 Scan-optics 00:80:23 Integrated Business Networks 00:80:24 Kalpana, Inc. 00:80:25 Stollmann Gmbh 00:80:26 Network Products Corporation 00:80:27 Adaptive Systems, Inc. 00:80:28 Tradpost (hk) Ltd 00:80:29 Eagle Technology, Inc. 00:80:2A Test Systems & Simulations Inc 00:80:2B Integrated Marketing Co 00:80:2C The Sage Group Plc 00:80:2D Xylogics Inc 00:80:2E Castle Rock Computing 00:80:2F National Instruments Corp. 00:80:30 Nexus Electronics 00:80:31 Basys, Corp. 00:80:32 Access Co., Ltd. 00:80:33 Formation, Inc. 00:80:34 Smt Goupil 00:80:35 Technology Works, Inc. 00:80:36 Reflex Manufacturing Systems 00:80:37 Ericsson Group 00:80:38 Data Research & Applications 00:80:39 Alcatel Stc Australia 00:80:3A Varityper, Inc. 00:80:3B Apt Communications, Inc. 00:80:3C Tvs Electronics Ltd 00:80:3D Surigiken Co., Ltd. 00:80:3E Synernetics 00:80:3F Tatung Company 00:80:40 John Fluke Manufacturing Co. 00:80:41 Veb Kombinat Robotron 00:80:42 Force Computers 00:80:43 Networld, Inc. 00:80:44 Systech Computer Corp. 00:80:45 Matsushita Electric Ind. Co 00:80:46 University Of Toronto 00:80:47 In-net Corp. 00:80:48 Compex Incorporated 00:80:49 Nissin Electric Co., Ltd. 00:80:4A Pro-log 00:80:4B Eagle Technologies Pty.ltd. 00:80:4C Contec Co., Ltd. 00:80:4D Cyclone Microsystems, Inc. 00:80:4E Apex Computer Company 00:80:4F Daikin Industries, Ltd. 00:80:50 Ziatech Corporation 00:80:51 Fibermux 00:80:52 Technically Elite Concepts 00:80:53 Intellicom, Inc. 00:80:54 Frontier Technologies Corp. 00:80:55 Fermilab 00:80:56 Sphinx Elektronik Gmbh 00:80:57 Adsoft, Ltd. 00:80:58 Printer Systems Corporation 00:80:59 Stanley Electric Co., Ltd 00:80:5A Tulip Computers Internat'l B.v 00:80:5B Condor Systems, Inc. 00:80:5C Agilis Corporation 00:80:5D Canstar 00:80:5E Lsi Logic Corporation 00:80:5F Compaq Computer Corporation 00:80:60 Network Interface Corporation 00:80:61 Litton Systems, Inc. 00:80:62 Interface Co. 00:80:63 Richard Hirschmann Gmbh & Co. 00:80:64 Wyse Technology 00:80:65 Cybergraphic Systems Pty Ltd. 00:80:66 Arcom Control Systems, Ltd. 00:80:67 Square D Company 00:80:68 Yamatech Scientific Ltd. 00:80:69 Computone Systems 00:80:6A Eri (empac Research Inc.) 00:80:6B Schmid Telecommunication 00:80:6C Cegelec Projects Ltd 00:80:6D Century Systems Corp. 00:80:6E Nippon Steel Corporation 00:80:6F Onelan Ltd. 00:80:70 Computadoras Micron 00:80:71 Sai Technology 00:80:72 Microplex Systems Ltd. 00:80:73 Dwb Associates 00:80:74 Fisher Controls 00:80:75 Parsytec Gmbh 00:80:76 Mcnc 00:80:77 Brother Industries, Ltd. 00:80:78 Practical Peripherals, Inc. 00:80:79 Microbus Designs Ltd. 00:80:7A Aitech Systems Ltd. 00:80:7B Artel Communications Corp. 00:80:7C Fibercom, Inc. 00:80:7D Equinox Systems Inc. 00:80:7E Southern Pacific Ltd. 00:80:7F Dy-4 Incorporated 00:80:80 Datamedia Corporation 00:80:81 Kendall Square Research Corp. 00:80:82 Pep Modular Computers Gmbh 00:80:83 Amdahl 00:80:84 The Cloud Inc. 00:80:85 H-three Systems Corporation 00:80:86 Computer Generation Inc. 00:80:87 Oki Electric Industry Co., Ltd 00:80:88 Victor Company Of Japan, Ltd. 00:80:89 Tecnetics (pty) Ltd. 00:80:8A Summit Microsystems Corp. 00:80:8B Dacoll Limited 00:80:8C Netscout Systems, Inc. 00:80:8D Westcoast Technology B.v. 00:80:8E Radstone Technology 00:80:8F C. Itoh Electronics, Inc. 00:80:90 Microtek International, Inc. 00:80:91 Tokyo Electric Co.,ltd 00:80:92 Japan Computer Industry, Inc. 00:80:93 Xyron Corporation 00:80:94 Alfa Laval Automation Ab 00:80:95 Basic Merton Handelsges.m.b.h. 00:80:96 Human Designed Systems, Inc. 00:80:97 Centralp Automatismes 00:80:98 Tdk Corporation 00:80:99 Klockner Moeller Ipc 00:80:9A Novus Networks Ltd 00:80:9B Justsystem Corporation 00:80:9C Luxcom, Inc. 00:80:9D Commscraft Ltd. 00:80:9E Datus Gmbh 00:80:9F Alcatel Business Systems 00:80:A0 Edisa Hewlett Packard S/a 00:80:A1 Microtest, Inc. 00:80:A2 Creative Electronic Systems 00:80:A3 Lantronix 00:80:A4 Liberty Electronics 00:80:A5 Speed International 00:80:A6 Republic Technology, Inc. 00:80:A7 Measurex Corp. 00:80:A8 Vitacom Corporation 00:80:A9 Clearpoint Research 00:80:AA Maxpeed 00:80:AB Dukane Network Integration 00:80:AC Imlogix, Division Of Genesys 00:80:AD Cnet Technology, Inc. 00:80:AE Hughes Network Systems 00:80:AF Allumer Co., Ltd. 00:80:B0 Advanced Information 00:80:B1 Softcom A/s 00:80:B2 Network Equipment Technologies 00:80:B3 Aval Data Corporation 00:80:B4 Sophia Systems 00:80:B5 United Networks Inc. 00:80:B6 Themis Computer 00:80:B7 Stellar Computer 00:80:B8 Bug, Incorporated 00:80:B9 Arche Technoligies Inc. 00:80:BA Specialix (asia) Pte, Ltd 00:80:BB Hughes Lan Systems 00:80:BC Hitachi Engineering Co., Ltd 00:80:BD The Furukawa Electric Co., Ltd 00:80:BE Aries Research 00:80:BF Takaoka Electric Mfg. Co. Ltd. 00:80:C0 Penril Datacomm 00:80:C1 Lanex Corporation 00:80:C2 Ieee 802 Committee 00:80:C3 Bicc Information Systems & Svc 00:80:C4 Document Technologies, Inc. 00:80:C5 Novellco De Mexico 00:80:C6 National Datacomm Corporation 00:80:C7 Netwave (Xircom Netwave/Netwave Airsurfer) 00:80:C8 D-link Systems, Inc. 00:80:C9 Alberta Microelectronic Centre 00:80:CA Netcom Research Incorporated 00:80:CB Falco Data Products 00:80:CC Microwave Bypass Systems 00:80:CD Micronics Computer, Inc. 00:80:CE Broadcast Television Systems 00:80:CF Embedded Performance Inc. 00:80:D0 Computer Peripherals, Inc. 00:80:D1 Kimtron Corporation 00:80:D2 Shinnihondenko Co., Ltd. 00:80:D3 Shiva Corp. 00:80:D4 Chase Research Ltd. 00:80:D5 Cadre Technologies 00:80:D6 Nuvotech, Inc. 00:80:D7 Fantum Engineering 00:80:D8 Network Peripherals Inc. 00:80:D9 Emk Elektronik 00:80:DA Bruel & Kjaer 00:80:DB Graphon Corporation 00:80:DC Picker International 00:80:DD Gmx Inc/gimix 00:80:DE Gipsi S.a. 00:80:DF Adc Codenoll Technology Corp. 00:80:E0 Xtp Systems, Inc. 00:80:E1 Stmicroelectronics 00:80:E2 T.d.i. Co., Ltd. 00:80:E3 Coral Network Corporation 00:80:E4 Northwest Digital Systems, Inc 00:80:E5 Mylex Corporation 00:80:E6 Peer Networks, Inc. 00:80:E7 Lynwood Scientific Dev. Ltd. 00:80:E8 Cumulus Corporatiion 00:80:E9 Madge Networks 00:80:EA Adva Optical Networking Ltd. 00:80:EB Compcontrol B.v. 00:80:EC Supercomputing Solutions, Inc. 00:80:ED Iq Technologies, Inc. 00:80:EE Thomson Csf 00:80:EF Rational 00:80:F0 Kyushu Matsushita Electric Co. 00:80:F1 Opus Systems 00:80:F2 Raycom Systems Inc 00:80:F3 Sun Electronics Corp. 00:80:F4 Telemecanique Electrique 00:80:F5 Quantel Ltd 00:80:F6 Synergy Microsystems 00:80:F7 Zenith Electronics 00:80:F8 Mizar, Inc. 00:80:F9 Heurikon Corporation 00:80:FA Rwt Gmbh 00:80:FB Bvm Limited 00:80:FC Avatar Corporation 00:80:FD Exsceed Corpration 00:80:FE Azure Technologies, Inc. 00:80:FF Soc. De Teleinformatique Rtc 00:90:00 Diamond Multimedia 00:90:01 Nishimu Electronics Industries Co., Ltd. 00:90:02 Allgon Ab 00:90:03 Aplio 00:90:04 3com Europe Ltd. 00:90:05 Protech Systems Co., Ltd. 00:90:06 Hamamatsu Photonics K.k. 00:90:07 Domex Technology Corp. 00:90:08 Hana Systems Inc. 00:90:09 I Controls, Inc. 00:90:0A Proton Electronic Industrial Co., Ltd. 00:90:0B Lanner Electronics, Inc. 00:90:0C Cisco Systems, Inc. 00:90:0D Overland Data Inc. 00:90:0E Handlink Technologies, Inc. 00:90:0F Kawasaki Heavy Industries, Ltd 00:90:10 Simulation Laboratories, Inc. 00:90:11 Wavtrace, Inc. 00:90:12 Globespan Semiconductor, Inc. 00:90:13 Samsan Corp. 00:90:14 Rotork Instruments, Ltd. 00:90:15 Centigram Communications Corp. 00:90:16 Zac 00:90:17 Zypcom, Inc. 00:90:18 Ito Electric Industry Co, Ltd. 00:90:19 Hermes Electronics Co., Ltd. 00:90:1A Unisphere Solutions 00:90:1B Digital Controls 00:90:1C Mps Software Gmbh 00:90:1D Pec (nz) Ltd. 00:90:1E Selesta Ingegne Ria S.p.a. 00:90:1F Adtec Productions, Inc. 00:90:20 Philips Analytical X-ray B.v. 00:90:21 Cisco Systems, Inc. 00:90:22 Ivex 00:90:23 Zilog Inc. 00:90:24 Pipelinks, Inc. 00:90:25 Vision Systems Ltd. Pty 00:90:26 Advanced Switching Communications, Inc. 00:90:27 Intel Corporation 00:90:28 Nippon Signal Co., Ltd. 00:90:29 Crypto Ag 00:90:2A Communication Devices, Inc. 00:90:2B Cisco Systems, Inc. 00:90:2C Data & Control Equipment Ltd. 00:90:2D Data Electronics (aust.) Pty, Ltd. 00:90:2E Namco Limited 00:90:2F Netcore Systems, Inc. 00:90:30 Honeywell-dating 00:90:31 Mysticom, Ltd. 00:90:32 Pelcombe Group Ltd. 00:90:33 Innovaphone Gmbh 00:90:34 Imagic, Inc. 00:90:35 Alpha Telecom, Inc. 00:90:36 Ens, Inc. 00:90:37 Acucomm, Inc. 00:90:38 Fountain Technologies, Inc. 00:90:39 Shasta Networks 00:90:3A Nihon Media Tool Inc. 00:90:3B Triems Research Lab, Inc. 00:90:3C Atlantic Network Systems 00:90:3D Biopac Systems, Inc. 00:90:3E N.v. Philips Industrial Activities 00:90:3F Aztec Radiomedia 00:90:40 Siemens Network Convergence Llc 00:90:41 Applied Digital Access 00:90:42 Eccs, Inc. 00:90:43 Nichibei Denshi Co., Ltd. 00:90:44 Assured Digital, Inc. 00:90:45 Marconi Communications 00:90:46 Dexdyne, Ltd. 00:90:47 Giga Fast E. Ltd. 00:90:48 Zeal Corporation 00:90:49 Entridia Corporation 00:90:4A Concur System Technologies 00:90:4B Gemtek Technology Co., Ltd. 00:90:4C Epigram, Inc. 00:90:4D Spec S.a. 00:90:4E Delem Bv 00:90:4F Abb Power T&d Company, Inc. 00:90:50 Teleste Oy 00:90:51 Ultimate Technology Corp. 00:90:52 Selcom Elettronica S.r.l. 00:90:53 Daewoo Electronics Co., Ltd. 00:90:54 Innovative Semiconductors, Inc 00:90:55 Parker Hannifin Corporation Compumotor Division 00:90:56 Telestream, Inc. 00:90:57 Aanetcom, Inc. 00:90:58 Ultra Electronics Ltd., Command And Control Systems 00:90:59 Telecom Device K.k. 00:90:5A Dearborn Group, Inc. 00:90:5B Raymond And Lae Engineering 00:90:5C Edmi 00:90:5D Netcom Sicherheitstechnik Gmbh 00:90:5E Rauland-borg Corporation 00:90:5F Cisco Systems, Inc. 00:90:60 System Create Corp. 00:90:61 Pacific Research & Engineering Corporation 00:90:62 Icp Vortex Computersysteme Gmbh 00:90:63 Coherent Communications Systems Corporation 00:90:64 Thomson Broadcast Systems 00:90:65 Finisar Corporation 00:90:66 Troika Networks, Inc. 00:90:67 Walkabout Computers, Inc. 00:90:68 Dvt Corp. 00:90:69 Juniper Networks, Inc. 00:90:6A Turnstone Systems, Inc. 00:90:6B Applied Resources, Inc. 00:90:6C Gwt Global Weighing Technologies Gmbh 00:90:6D Cisco Systems, Inc. 00:90:6E Praxon, Inc. 00:90:6F Cisco Systems, Inc. 00:90:70 Neo Networks, Inc. 00:90:71 Applied Innovation Inc. 00:90:72 Simrad As 00:90:73 Gaio Technology 00:90:74 Argon Networks, Inc. 00:90:75 Nec Do Brasil S.a. 00:90:76 Fmt Aircraft Gate Support Systems Ab 00:90:77 Advanced Fibre Communications 00:90:78 Mer Telemanagement Solutions, Ltd. 00:90:79 Clearone, Inc. 00:90:7A Spectralink Corp. 00:90:7B E-tech, Inc. 00:90:7C Digitalcast, Inc. 00:90:7D Lake Communications 00:90:7E Vetronix Corp. 00:90:7F Watchguard Technologies, Inc. 00:90:80 Not Limited, Inc. 00:90:81 Aloha Networks, Inc. 00:90:82 Force Institute 00:90:83 Turbo Communication, Inc. 00:90:84 Atech System 00:90:85 Golden Enterprises, Inc. 00:90:86 Cisco Systems, Inc. 00:90:87 Itis 00:90:88 Baxall Security Ltd. 00:90:89 Softcom Microsystems, Inc. 00:90:8A Bayly Communications, Inc. 00:90:8B Cell Computing, Inc. 00:90:8C Etrend Electronics, Inc. 00:90:8D Vickers Electronics Systems 00:90:8E Nortel Networks Broadband Access 00:90:8F Audio Codes Ltd. 00:90:90 I-bus 00:90:91 Digitalscape, Inc. 00:90:92 Cisco Systems, Inc. 00:90:93 Nanao Corporation 00:90:94 Osprey Technologies, Inc. 00:90:95 Universal Avionics 00:90:96 Askey Computer Corp. 00:90:97 Sycamore Networks 00:90:98 Sbc Designs, Inc. 00:90:99 Allied Telesis, K.k. 00:90:9A One World Systems, Inc. 00:90:9B Markpoint Ab 00:90:9C Combox, Ltd. 00:90:9D Gse Systems, Inc. 00:90:9E Critical Io, Llc 00:90:9F Digi-data Corporation 00:90:A0 8x8 Inc. 00:90:A1 Flying Pig Systems, Ltd. 00:90:A2 Cybertan Technology, Inc. 00:90:A3 Corecess Inc. 00:90:A4 Altiga Networks 00:90:A5 Spectra Logic 00:90:A6 Cisco Systems, Inc. 00:90:A7 Clientec Corporation 00:90:A8 Ninetiles Networks, Ltd. 00:90:A9 Western Digital 00:90:AA Indigo Active Vision Systems Limited 00:90:AB Cisco Systems, Inc. 00:90:AC Optivision, Inc. 00:90:AD Aspect Electronics, Inc. 00:90:AE Italtel S.p.a. 00:90:AF J. Morita Mfg. Corp. 00:90:B0 Vadem 00:90:B1 Cisco Systems, Inc. 00:90:B2 Avici Systems Inc. 00:90:B3 Agranat Systems 00:90:B4 Willowbrook Technologies 00:90:B5 Nikon Corporation 00:90:B6 Fibex Systems 00:90:B7 Digital Lightwave, Inc. 00:90:B8 Rohde & Schwarz Gmbh & Co. Kg 00:90:B9 Beran Instruments Ltd. 00:90:BA Valid Networks, Inc. 00:90:BB Tainet Communication System Corp. 00:90:BC Telemann Co., Ltd. 00:90:BD Omnia Communications, Inc. 00:90:BE Ibc/integrated Business Computers 00:90:BF Cisco Systems, Inc. 00:90:C0 K.j. Law Engineers, Inc. 00:90:C1 Peco Ii, Inc. 00:90:C2 Jk Microsystems, Inc. 00:90:C3 Topic Semiconductor Corp. 00:90:C4 Javelin Systems, Inc. 00:90:C5 Internet Magic, Inc. 00:90:C6 Optim Systems, Inc. 00:90:C7 Icom Inc. 00:90:C8 Waverider Communications (canada) Inc. 00:90:C9 Productivity Enhancement Products., Inc. 00:90:CA Accord Video Telecommunications, Ltd. 00:90:CB Wireless Online, Inc. 00:90:CC Planet Communications, Inc. 00:90:CD Ent-empresa Nacional De Telecommunicacoes, S.a. 00:90:CE Tetra Gmbh 00:90:CF Nortel 00:90:D0 Thomson Belgium 00:90:D1 LeArtery SyncByAir LN101 00:90:D2 Artel Video Systems 00:90:D3 Giesecke & Devrient Gmbh 00:90:D4 Bindview Development Corp. 00:90:D5 Euphonix, Inc. 00:90:D6 Crystal Group 00:90:D7 Netboost Corp. 00:90:D8 Whitecross Systems 00:90:D9 Cisco Systems, Inc. 00:90:DA Dynarc, Inc. 00:90:DB Next Level Communications 00:90:DC Teco Information Systems 00:90:DD The Miharu Communications Co., Ltd. 00:90:DE Cardkey Systems, Inc. 00:90:DF Mitsubishi Chemical America, Inc. 00:90:E0 Systran Corp. 00:90:E1 Telena S.p.a. 00:90:E2 Distributed Processing Technology 00:90:E3 Avex Electronics Inc. 00:90:E4 Nec America, Inc. 00:90:E5 Teknema, Inc. 00:90:E6 Acer Laboratories, Inc. 00:90:E7 Horsch Elektronik Ag 00:90:E8 Moxa Technologies Corp., Ltd. 00:90:E9 Janz Computer Ag 00:90:EA Alpha Technologies, Inc. 00:90:EB Sentry Telecom Systems 00:90:EC Pyrescom 00:90:ED Central System Research Co., Ltd. 00:90:EE Personal Communications Technologies 00:90:EF Integrix, Inc. 00:90:F0 Harmonic Lightwaves, Ltd. 00:90:F1 Dot Hill Systems Corporation 00:90:F2 Cisco Systems, Inc. 00:90:F3 Aspect Communications 00:90:F4 Lightning Instrumentation 00:90:F5 Clevo Co. 00:90:F6 Escalate Networks, Inc. 00:90:F7 Nbase Communications Ltd. 00:90:F8 Mediatrix Telecom 00:90:F9 Leitch 00:90:FA Giganet, Inc. 00:90:FB Portwell, Inc. 00:90:FC Network Computing Devices 00:90:FD Coppercom, Inc. 00:90:FE Elecom Co., Ltd. (laneed Div.) 00:90:FF Tellus Technology Inc. 00:91:D6 Crystal Group, Inc. 00:9D:8E Cardiac Recorders, Inc. 00:A0:00 Centillion Networks, Inc. 00:A0:01 Watkins-johnson Company 00:A0:02 Leeds & Northrup Australia Pty Ltd 00:A0:03 Staefa Control System 00:A0:04 Netpower, Inc. 00:A0:05 Daniel Instruments, Ltd. 00:A0:06 Image Data Processing System Group 00:A0:07 Apexx Technology, Inc. 00:A0:08 Netcorp 00:A0:09 Whitetree Network 00:A0:0A R.d.c. Communication 00:A0:0B Computex Co., Ltd. 00:A0:0C Kingmax Technology, Inc. 00:A0:0D The Panda Project 00:A0:0E Visual Networks, Inc. 00:A0:0F Broadband Technologies 00:A0:10 Syslogic Datentechnik Ag 00:A0:11 Mutoh Industries Ltd. 00:A0:12 B.a.t.m. Advanced Technologies 00:A0:13 Teltrend Ltd. 00:A0:14 Csir 00:A0:15 Wyle 00:A0:16 Micropolis Corp. 00:A0:17 J B M Corporation 00:A0:18 Creative Controllers, Inc. 00:A0:19 Nebula Consultants, Inc. 00:A0:1A Binar Elektronik Ab 00:A0:1B Premisys Communications, Inc. 00:A0:1C Nascent Networks Corporation 00:A0:1D Sixnet 00:A0:1E Est Corporation 00:A0:1F Tricord Systems, Inc. 00:A0:20 Citicorp/tti 00:A0:21 General Dynamics- 00:A0:22 Centre For Development Of Advanced Computing 00:A0:23 Applied Creative Technology, Inc. 00:A0:24 3com Corporation 00:A0:25 Redcom Labs Inc. 00:A0:26 Teldat, S.a. 00:A0:27 Firepower Systems, Inc. 00:A0:28 Conner Peripherals 00:A0:29 Coulter Corporation 00:A0:2A Trancell Systems 00:A0:2B Transitions Research Corp. 00:A0:2C Interwave Communications 00:A0:2D 1394 Trade Association 00:A0:2E Brand Communications, Ltd. 00:A0:2F Pirelli Cavi 00:A0:30 Captor Nv/sa 00:A0:31 Hazeltine Corporation, Ms 1-17 00:A0:32 Ges Singapore Pte. Ltd. 00:A0:33 Imc Mebsysteme Gmbh 00:A0:34 Axel 00:A0:35 Cylink Corporation 00:A0:36 Applied Network Technology 00:A0:37 Datascope Corporation 00:A0:38 Email Electronics 00:A0:39 Ross Technology, Inc. 00:A0:3A Kubotek Corporation 00:A0:3B Toshin Electric Co., Ltd. 00:A0:3C Eg&g Nuclear Instruments 00:A0:3D Opto-22 00:A0:3E Atm Forum 00:A0:3F Computer Society Microprocessor & Microprocessor Standards C 00:A0:40 Apple Computer 00:A0:41 Leybold-inficon 00:A0:42 Spur Products Corp. 00:A0:43 American Technology Labs, Inc. 00:A0:44 Ntt Intelligent Technology 00:A0:45 Phoenix Contact Gmbh & Co. 00:A0:46 Scitex Corp. Ltd. 00:A0:47 Integrated Fitness Corp. 00:A0:48 Questech, Ltd. 00:A0:49 Digitech Industries, Inc. 00:A0:4A Nisshin Electric Co., Ltd. 00:A0:4B Tfl Lan Inc. 00:A0:4C Innovative Systems & Technologies, Inc. 00:A0:4D Eda Instruments, Inc. 00:A0:4E Voelker Technologies, Inc. 00:A0:4F Ameritec Corp. 00:A0:50 Cypress Semiconductor 00:A0:51 Angia Communications. Inc. 00:A0:52 Stanilite Electronics Pty. Ltd 00:A0:53 Compact Devices, Inc. 00:A0:54 Private 00:A0:55 Linktech, Inc. 00:A0:56 Micropross 00:A0:57 Lancom Systems Gmbh 00:A0:58 Glory, Ltd. 00:A0:59 Hamilton Hallmark 00:A0:5A Kofax Image Products 00:A0:5B Marquip, Inc. 00:A0:5C Inventory Conversion, Inc./ 00:A0:5D Cs Computer Systeme Gmbh 00:A0:5E Myriad Logic Inc. 00:A0:5F Btg Engineering Bv 00:A0:60 Acer Peripherals, Inc. 00:A0:61 Puritan Bennett 00:A0:62 Aes Prodata 00:A0:63 Jrl Systems, Inc. 00:A0:64 Kvb/analect 00:A0:65 Nexland, Inc. 00:A0:66 Isa Co., Ltd. 00:A0:67 Network Services Group 00:A0:68 Bhp Limited 00:A0:69 Truetime 00:A0:6A Verilink Corp. 00:A0:6B Dms Dorsch Mikrosystem Gmbh 00:A0:6C Shindengen Electric Mfg. Co., Ltd. 00:A0:6D Mannesmann Tally Corporation 00:A0:6E Austron, Inc. 00:A0:6F The Appcon Group, Inc. 00:A0:70 Coastcom 00:A0:71 Video Lottery Technologies,inc 00:A0:72 Ovation Systems Ltd. 00:A0:73 Com21, Inc. 00:A0:74 Perception Technology 00:A0:75 Micron Technology, Inc. 00:A0:76 Cardware Lab, Inc. 00:A0:77 Fujitsu Nexion, Inc. 00:A0:78 Marconi Communications 00:A0:79 Alps Electric (usa), Inc. 00:A0:7A Advanced Peripherals Technologies, Inc. 00:A0:7B Dawn Computer Incorporation 00:A0:7C Tonyang Nylon Co., Ltd. 00:A0:7D Seeq Technology, Inc. 00:A0:7E Avid Technology, Inc. 00:A0:7F Gsm-syntel, Ltd. 00:A0:80 Antares Microsystems 00:A0:81 Alcatel Data Networks 00:A0:82 Nkt Elektronik A/s 00:A0:83 Asimmphony Turkey 00:A0:84 Dataplex Pty. Ltd. 00:A0:85 Private 00:A0:86 Amber Wave Systems, Inc. 00:A0:87 Zarlink Semiconductor Ltd. 00:A0:88 Essential Communications 00:A0:89 Xpoint Technologies, Inc. 00:A0:8A Brooktrout Technology, Inc. 00:A0:8B Aston Electronic Designs Ltd. 00:A0:8C Multimedia Lans, Inc. 00:A0:8D Jacomo Corporation 00:A0:8E Nokia Internet Communications 00:A0:8F Desknet Systems, Inc. 00:A0:90 Timestep Corporation 00:A0:91 Applicom International 00:A0:92 H. Bollmann Manufacturers, Ltd 00:A0:93 B/e Aerospace, Inc. 00:A0:94 Comsat Corporation 00:A0:95 Acacia Networks, Inc. 00:A0:96 Mitumi Electric Co., Ltd. 00:A0:97 Jc Information Systems 00:A0:98 Network Appliance Corp. 00:A0:99 K-net Ltd. 00:A0:9A Nihon Kohden America 00:A0:9B Qpsx Communications, Ltd. 00:A0:9C Xyplex, Inc. 00:A0:9D Johnathon Freeman Technologies 00:A0:9E Ictv 00:A0:9F Commvision Corp. 00:A0:A0 Compact Data, Ltd. 00:A0:A1 Epic Data Inc. 00:A0:A2 Digicom S.p.a. 00:A0:A3 Reliable Power Meters 00:A0:A4 Micros Systems, Inc. 00:A0:A5 Teknor Microsysteme, Inc. 00:A0:A6 M.i. Systems, K.k. 00:A0:A7 Vorax Corporation 00:A0:A8 Renex Corporation 00:A0:A9 Gn Nettest (canada) Navtel Division 00:A0:AA Spacelabs Medical 00:A0:AB Netcs Informationstechnik Gmbh 00:A0:AC Gilat Satellite Networks, Ltd. 00:A0:AD Marconi Spa 00:A0:AE Nucom Systems, Inc. 00:A0:AF Wms Industries 00:A0:B0 I-o Data Device, Inc. 00:A0:B1 First Virtual Corporation 00:A0:B2 Shima Seiki 00:A0:B3 Zykronix 00:A0:B4 Texas Microsystems, Inc. 00:A0:B5 3h Technology 00:A0:B6 Sanritz Automation Co., Ltd. 00:A0:B7 Cordant, Inc. 00:A0:B8 Symbios Logic Inc. 00:A0:B9 Eagle Technology, Inc. 00:A0:BA Patton Electronics Co. 00:A0:BB Hilan Gmbh 00:A0:BC Viasat, Incorporated 00:A0:BD I-tech Corp. 00:A0:BE Integrated Circuit Systems, Inc. Communications Group 00:A0:BF Wireless Data Group Motorola 00:A0:C0 Digital Link Corp. 00:A0:C1 Ortivus Medical Ab 00:A0:C2 R.a. Systems Co., Ltd. 00:A0:C3 Unicomputer Gmbh 00:A0:C4 Cristie Electronics Ltd. 00:A0:C5 Zyxel Communication 00:A0:C6 Qualcomm Incorporated 00:A0:C7 Tadiran Telecommunications 00:A0:C8 Adtran Inc. 00:A0:C9 Intel Corporation - Hf1-06 00:A0:CA Fujitsu Denso Ltd. 00:A0:CB Ark Telecommunications, Inc. 00:A0:CC Lite-on Communications, Inc. 00:A0:CD Dr. Johannes Heidenhain Gmbh 00:A0:CE Astrocom Corporation 00:A0:CF Sotas, Inc. 00:A0:D0 Ten X Technology, Inc. 00:A0:D1 Inventec Corporation 00:A0:D2 Allied Telesis International Corporation 00:A0:D3 Instem Computer Systems, Ltd. 00:A0:D4 Radiolan, Inc. 00:A0:D5 Sierra Wireless Inc. 00:A0:D6 Sbe, Inc. 00:A0:D7 Kasten Chase Applied Research 00:A0:D8 Spectra - Tek 00:A0:D9 Convex Computer Corporation 00:A0:DA Integrated Systems Technology, Inc. 00:A0:DB Fisher & Paykel Production 00:A0:DC O.n. Electronic Co., Ltd. 00:A0:DD Azonix Corporation 00:A0:DE Yamaha Corporation 00:A0:DF Sts Technologies, Inc. 00:A0:E0 Tennyson Technologies Pty Ltd 00:A0:E1 Westport Research Associates, Inc. 00:A0:E2 Keisoku Giken Corp. 00:A0:E3 Xkl Systems Corp. 00:A0:E4 Optiquest 00:A0:E5 Nhc Communications 00:A0:E6 Dialogic Corporation 00:A0:E7 Central Data Corporation 00:A0:E8 Reuters Holdings Plc 00:A0:E9 Electronic Retailing Systems International 00:A0:EA Ethercom Corp. 00:A0:EB Fastcomm Communications Corp. 00:A0:EC Transmitton Ltd. 00:A0:ED Pri Automation 00:A0:EE Nashoba Networks 00:A0:EF Lucidata Ltd. 00:A0:F0 Toronto Microelectronics Inc. 00:A0:F1 Mti 00:A0:F2 Infotek Communications, Inc. 00:A0:F3 Staubli 00:A0:F4 Ge 00:A0:F5 Radguard Ltd. 00:A0:F6 Autogas Systems Inc. 00:A0:F7 V.i Computer Corp. 00:A0:F8 Symbol Spectrum24 00:A0:F9 Bintec Communications Gmbh 00:A0:FA Marconi Communication Gmbh 00:A0:FB Toray Engineering Co., Ltd. 00:A0:FC Image Sciences, Inc. 00:A0:FD Scitex Digital Printing, Inc. 00:A0:FE Boston Technology, Inc. 00:A0:FF Tellabs Operations, Inc. 00:AA:00 Intel Corporation 00:AA:01 Intel Corporation 00:AA:02 Intel Corporation 00:AA:3C Olivetti Telecom Spa (olteco) 00:B0:09 Grass Valley Group 00:B0:17 Infogear Technology Corp. 00:B0:19 Casi-rusco 00:B0:1C Westport Technologies 00:B0:1E Rantic Labs, Inc. 00:B0:2A Orsys Gmbh 00:B0:2D Viagate Technologies, Inc. 00:B0:3B Hiq Networks 00:B0:48 Marconi Communications Inc. 00:B0:4A Cisco Systems, Inc. 00:B0:52 Intellon Corporation 00:B0:64 Cisco Systems, Inc. 00:B0:69 Honewell Oy 00:B0:6D Jones Futurex Inc. 00:B0:80 Mannesmann Ipulsys B.v. 00:B0:86 Locsoft Limited 00:B0:8E Cisco Systems, Inc. 00:B0:91 Transmeta Corp. 00:B0:94 Alaris, Inc. 00:B0:9A Morrow Technologies Corp. 00:B0:9D Point Grey Research Inc. 00:B0:AC Siae-microelettronica S.p.a. 00:B0:AE Symmetricom 00:B0:B3 Xstreamis Plc 00:B0:C2 Cisco Systems, Inc. 00:B0:C7 Tellabs Operations, Inc. 00:B0:CE Technology Rescue 00:B0:D0 Dell Computer Corp. 00:B0:DB Nextcell, Inc. 00:B0:DF Reliable Data Technology, Inc. 00:B0:E7 British Federal Ltd. 00:B0:EC Eacem 00:B0:EE Ajile Systems, Inc. 00:B0:F0 Caly Networks 00:B0:F5 Networth Technologies, Inc. 00:BB:01 Octothorpe Corp. 00:BB:F0 Ungermann-bass Inc. 00:C0:00 Lanoptics, Ltd. 00:C0:01 Diatek Patient Managment 00:C0:02 Sercomm Corporation 00:C0:03 Globalnet Communications 00:C0:04 Japan Business Computer Co.ltd 00:C0:05 Livingston Enterprises, Inc. 00:C0:06 Nippon Avionics Co., Ltd. 00:C0:07 Pinnacle Data Systems, Inc. 00:C0:08 Seco Srl 00:C0:09 Kt Technology (s) Pte Ltd 00:C0:0A Micro Craft 00:C0:0B Norcontrol A.s. 00:C0:0C Relia Technolgies 00:C0:0D Advanced Logic Research, Inc. 00:C0:0E Psitech, Inc. 00:C0:0F Quantum Software Systems Ltd. 00:C0:10 Hirakawa Hewtech Corp. 00:C0:11 Interactive Computing Devices 00:C0:12 Netspan Corporation 00:C0:13 Netrix 00:C0:14 Telematics Calabasas Int'l,inc 00:C0:15 New Media Corporation 00:C0:16 Electronic Theatre Controls 00:C0:17 Forte Networks 00:C0:18 Lanart Corporation 00:C0:19 Leap Technology, Inc. 00:C0:1A Corometrics Medical Systems 00:C0:1B Socket Communications, Inc. 00:C0:1C Interlink Communications Ltd. 00:C0:1D Grand Junction Networks, Inc. 00:C0:1E La Francaise Des Jeux 00:C0:1F S.e.r.c.e.l. 00:C0:20 Arco Electronic, Control Ltd. 00:C0:21 Netexpress 00:C0:22 Lasermaster Technologies, Inc. 00:C0:23 Tutankhamon Electronics 00:C0:24 Eden Sistemas De Computacao Sa 00:C0:25 Dataproducts Corporation 00:C0:26 Lans Technology Co., Ltd. 00:C0:27 Cipher Systems, Inc. 00:C0:28 Jasco Corporation 00:C0:29 Nexans Deutschland Ag - Ans 00:C0:2A Ohkura Electric Co., Ltd. 00:C0:2B Gerloff Gesellschaft Fur 00:C0:2C Centrum Communications, Inc. 00:C0:2D Fuji Photo Film Co., Ltd. 00:C0:2E Netwiz 00:C0:2F Okuma Corporation 00:C0:30 Integrated Engineering B. V. 00:C0:31 Design Research Systems, Inc. 00:C0:32 I-cubed Limited 00:C0:33 Telebit Communications Aps 00:C0:34 Transaction Network 00:C0:35 Quintar Company 00:C0:36 Raytech Electronic Corp. 00:C0:37 Dynatem 00:C0:38 Raster Image Processing System 00:C0:39 Tdk Semiconductor Corporation 00:C0:3A Men-mikro Elektronik Gmbh 00:C0:3B Multiaccess Computing Corp. 00:C0:3C Tower Tech S.r.l. 00:C0:3D Wiesemann & Theis Gmbh 00:C0:3E Fa. Gebr. Heller Gmbh 00:C0:3F Stores Automated Systems, Inc. 00:C0:40 Ecci 00:C0:41 Digital Transmission Systems 00:C0:42 Datalux Corp. 00:C0:43 Stratacom 00:C0:44 Emcom Corporation 00:C0:45 Isolation Systems, Ltd. 00:C0:46 Kemitron Ltd. 00:C0:47 Unimicro Systems, Inc. 00:C0:48 Bay Technical Associates 00:C0:49 U.s. Robotics, Inc. 00:C0:4A Group 2000 Ag 00:C0:4B Creative Microsystems 00:C0:4C Department Of Foreign Affairs 00:C0:4D Mitec, Inc. 00:C0:4E Comtrol Corporation 00:C0:4F Dell Computer Corporation 00:C0:50 Toyo Denki Seizo K.k. 00:C0:51 Advanced Integration Research 00:C0:52 Burr-brown 00:C0:53 Davox Corporation 00:C0:54 Network Peripherals, Ltd. 00:C0:55 Modular Computing Technologies 00:C0:56 Somelec 00:C0:57 Myco Electronics 00:C0:58 Dataexpert Corp. 00:C0:59 Nippon Denso Co., Ltd. 00:C0:5A Semaphore Communications Corp. 00:C0:5B Networks Northwest, Inc. 00:C0:5C Elonex Plc 00:C0:5D L&n Technologies 00:C0:5E Vari-lite, Inc. 00:C0:5F Fine-pal Company Limited 00:C0:60 Id Scandinavia As 00:C0:61 Solectek Corporation 00:C0:62 Impulse Technology 00:C0:63 Morning Star Technologies, Inc 00:C0:64 General Datacomm Ind. Inc. 00:C0:65 Scope Communications, Inc. 00:C0:66 Docupoint, Inc. 00:C0:67 United Barcode Industries 00:C0:68 Philip Drake Electronics Ltd. 00:C0:69 Adaptive Broadband Corporation 00:C0:6A Zahner-elektrik Gmbh & Co. Kg 00:C0:6B Osi Plus Corporation 00:C0:6C Svec Computer Corp. 00:C0:6D Boca Research, Inc. 00:C0:6E Haft Technology, Inc. 00:C0:6F Komatsu Ltd. 00:C0:70 Sectra Secure-transmission Ab 00:C0:71 Areanex Communications, Inc. 00:C0:72 Knx Ltd. 00:C0:73 Xedia Corporation 00:C0:74 Toyoda Automatic Loom 00:C0:75 Xante Corporation 00:C0:76 I-data International A-s 00:C0:77 Daewoo Telecom Ltd. 00:C0:78 Computer Systems Engineering 00:C0:79 Fonsys Co.,ltd. 00:C0:7A Priva B.v. 00:C0:7B Ascend Communications, Inc. 00:C0:7C Hightech Information 00:C0:7D Risc Developments Ltd. 00:C0:7E Kubota Corporation Electronic 00:C0:7F Nupon Computing Corp. 00:C0:80 Netstar, Inc. 00:C0:81 Metrodata Ltd. 00:C0:82 Moore Products Co. 00:C0:83 Trace Mountain Products, Inc. 00:C0:84 Data Link Corp. Ltd. 00:C0:85 Electronics For Imaging, Inc. 00:C0:86 The Lynk Corporation 00:C0:87 Uunet Technologies, Inc. 00:C0:88 Ekf Elektronik Gmbh 00:C0:89 Telindus Distribution 00:C0:8A Lauterbach Datentechnik Gmbh 00:C0:8B Risq Modular Systems, Inc. 00:C0:8C Performance Technologies, Inc. 00:C0:8D Tronix Product Development 00:C0:8E Network Information Technology 00:C0:8F Matsushita Electric Works, Ltd 00:C0:90 Praim S.r.l. 00:C0:91 Jabil Circuit, Inc. 00:C0:92 Mennen Medical Inc. 00:C0:93 Alta Research Corp. 00:C0:94 Vmx Inc. 00:C0:95 Znyx 00:C0:96 Tamura Corporation 00:C0:97 Archipel Sa 00:C0:98 Chuntex Electronic Co., Ltd. 00:C0:99 Yoshiki Industrial Co.,ltd. 00:C0:9A Photonics Corporation 00:C0:9B Reliance Comm/tec, R-tec 00:C0:9C Toa Electronic Ltd. 00:C0:9D Distributed Systems Int'l, Inc 00:C0:9E Cache Computers, Inc. 00:C0:9F Quanta Computer, Inc. 00:C0:A0 Advance Micro Research, Inc. 00:C0:A1 Tokyo Denshi Sekei Co. 00:C0:A2 Intermedium A/s 00:C0:A3 Dual Enterprises Corporation 00:C0:A4 Unigraf Oy 00:C0:A5 Dickens Data Systems 00:C0:A6 Exicom Australia Pty. Ltd 00:C0:A7 Seel Ltd. 00:C0:A8 Gvc Corporation 00:C0:A9 Barron Mccann Ltd. 00:C0:AA Silicon Valley Computer 00:C0:AB Telco Systems, Inc. 00:C0:AC Gambit Computer Communications 00:C0:AD Marben Communication Systems 00:C0:AE Towercom Co. Inc. Dba Pc House 00:C0:AF Teklogix Inc. 00:C0:B0 Gcc Technologies,inc. 00:C0:B1 Genius Net Co. 00:C0:B2 Norand Corporation 00:C0:B3 Comstat Datacomm Corporation 00:C0:B4 Myson Technology, Inc. 00:C0:B5 Corporate Network Systems,inc. 00:C0:B6 Snap Appliances, Inc. 00:C0:B7 American Power Conversion Corp 00:C0:B8 Fraser's Hill Ltd. 00:C0:B9 Funk Software, Inc. 00:C0:BA Netvantage 00:C0:BB Forval Creative, Inc. 00:C0:BC Telecom Australia/cssc 00:C0:BD Inex Technologies, Inc. 00:C0:BE Alcatel - Sel 00:C0:BF Technology Concepts, Ltd. 00:C0:C0 Shore Microsystems, Inc. 00:C0:C1 Quad/graphics, Inc. 00:C0:C2 Infinite Networks Ltd. 00:C0:C3 Acuson Computed Sonography 00:C0:C4 Computer Operational 00:C0:C5 Sid Informatica 00:C0:C6 Personal Media Corp. 00:C0:C7 Sparktrum Microsystems, Inc. 00:C0:C8 Micro Byte Pty. Ltd. 00:C0:C9 Elsag Bailey Process 00:C0:CA Alfa, Inc. 00:C0:CB Control Technology Corporation 00:C0:CC Telesciences Co Systems, Inc. 00:C0:CD Comelta, S.a. 00:C0:CE Cei Systems & Engineering Pte 00:C0:CF Imatran Voima Oy 00:C0:D0 Ratoc System Inc. 00:C0:D1 Comtree Technology Corporation 00:C0:D2 Syntellect, Inc. 00:C0:D3 Olympus Image Systems, Inc. 00:C0:D4 Axon Networks, Inc. 00:C0:D5 Quancom Electronic Gmbh 00:C0:D6 J1 Systems, Inc. 00:C0:D7 Taiwan Trading Center Dba 00:C0:D8 Universal Data Systems 00:C0:D9 Quinte Network Confidentiality 00:C0:DA Nice Systems Ltd. 00:C0:DB Ipc Corporation (pte) Ltd. 00:C0:DC Eos Technologies, Inc. 00:C0:DD Qlogic Corporation 00:C0:DE Zcomm, Inc. 00:C0:DF Kye Systems Corp. 00:C0:E0 Dsc Communication Corp. 00:C0:E1 Sonic Solutions 00:C0:E2 Calcomp, Inc. 00:C0:E3 Ositech Communications, Inc. 00:C0:E4 Siemens Building 00:C0:E5 Gespac, S.a. 00:C0:E6 Verilink Corporation 00:C0:E7 Fiberdata Ab 00:C0:E8 Plexcom, Inc. 00:C0:E9 Oak Solutions, Ltd. 00:C0:EA Array Technology Ltd. 00:C0:EB Seh Computertechnik Gmbh 00:C0:EC Dauphin Technology 00:C0:ED Us Army Electronic 00:C0:EE Kyocera Corporation 00:C0:EF Abit Corporation 00:C0:F0 Kingston Technology Corp. 00:C0:F1 Shinko Electric Co., Ltd. 00:C0:F2 Transition Networks 00:C0:F3 Network Communications Corp. 00:C0:F4 Interlink System Co., Ltd. 00:C0:F5 Metacomp, Inc. 00:C0:F6 Celan Technology Inc. 00:C0:F7 Engage Communication, Inc. 00:C0:F8 About Computing Inc. 00:C0:F9 Harris And Jeffries, Inc. 00:C0:FA Canary Communications, Inc. 00:C0:FB Advanced Technology Labs 00:C0:FC Elastic Reality, Inc. 00:C0:FD Prosum 00:C0:FE Aptec Computer Systems, Inc. 00:C0:FF Dot Hill Systems Corporation 00:CB:BD Cambridge Broadband Ltd. 00:CF:1C Communication Machinery Corp. 00:D0:00 Ferran Scientific, Inc. 00:D0:01 Vst Technologies, Inc. 00:D0:02 Ditech Corporation 00:D0:03 Comda Enterprises Corp. 00:D0:04 Pentacom Ltd. 00:D0:05 Zhs Zeitmanagementsysteme 00:D0:06 Cisco Systems, Inc. 00:D0:07 Mic Associates, Inc. 00:D0:08 Mactell Corporation 00:D0:09 Hsing Tech. Enterprise Co. Ltd 00:D0:0A Lanaccess Telecom S.a. 00:D0:0B Rhk Technology, Inc. 00:D0:0C Snijder Micro Systems 00:D0:0D Micromeritics Instrument 00:D0:0E Pluris, Inc. 00:D0:0F Speech Design Gmbh 00:D0:10 Convergent Networks, Inc. 00:D0:11 Prism Video, Inc. 00:D0:12 Gateworks Corp. 00:D0:13 Primex Aerospace Company 00:D0:14 Root, Inc. 00:D0:15 Univex Microtechnology Corp. 00:D0:16 Scm Microsystems, Inc. 00:D0:17 Syntech Information Co., Ltd. 00:D0:18 Qwes. Com, Inc. 00:D0:19 Dainippon Screen Corporate 00:D0:1A Urmet Sud S.p.a. 00:D0:1B Mimaki Engineering Co., Ltd. 00:D0:1C Sbs Technologies, 00:D0:1D Furuno Electric Co., Ltd. 00:D0:1E Pingtel Corp. 00:D0:1F Ctam Pty. Ltd. 00:D0:20 Aim System, Inc. 00:D0:21 Regent Electronics Corp. 00:D0:22 Incredible Technologies, Inc. 00:D0:23 Infortrend Technology, Inc. 00:D0:24 Cognex Corporation 00:D0:25 Xrosstech, Inc. 00:D0:26 Hirschmann Austria Gmbh 00:D0:27 Applied Automation, Inc. 00:D0:28 Omneon Video Networks 00:D0:29 Wakefern Food Corporation 00:D0:2A Flexion Systems 00:D0:2B Jetcell, Inc. 00:D0:2C Campbell Scientific, Inc. 00:D0:2D Ademco 00:D0:2E Communication Automation Corp. 00:D0:2F Vlsi Technology Inc. 00:D0:30 Safetran Systems Corp. 00:D0:31 Industrial Logic Corporation 00:D0:32 Yano Electric Co., Ltd. 00:D0:33 Dalian Daxian Network 00:D0:34 Ormec Systems Corp. 00:D0:35 Behavior Tech. Computer Corp. 00:D0:36 Technology Atlanta Corp. 00:D0:37 Philips-dvs-lo Bdr 00:D0:38 Fivemere, Ltd. 00:D0:39 Utilicom, Inc. 00:D0:3A Zoneworx, Inc. 00:D0:3B Vision Products Pty. Ltd. 00:D0:3C Vieo, Inc. 00:D0:3D Private 00:D0:3E Rocketchips, Inc. 00:D0:3F American Communication 00:D0:40 Sysmate Co., Ltd. 00:D0:41 Amigo Technology Co., Ltd. 00:D0:42 Mahlo Gmbh & Co. Ug 00:D0:43 Zonal Retail Data Systems 00:D0:44 Alidian Networks, Inc. 00:D0:45 Kvaser Ab 00:D0:46 Dolby Laboratories, Inc. 00:D0:47 Xn Technologies 00:D0:48 Ecton, Inc. 00:D0:49 Impresstek Co., Ltd. 00:D0:4A Presence Technology Gmbh 00:D0:4B La Cie Group S.a. 00:D0:4C Eurotel Telecom Ltd. 00:D0:4D Div Of Research & Statistics 00:D0:4E Logibag 00:D0:4F Bitronics, Inc. 00:D0:50 Iskratel 00:D0:51 O2 Micro, Inc. 00:D0:52 Ascend Communications, Inc. 00:D0:53 Connected Systems 00:D0:54 Sas Institute Inc. 00:D0:55 Kathrein-werke Kg 00:D0:56 Somat Corporation 00:D0:57 Ultrak, Inc. 00:D0:58 Cisco Systems, Inc. 00:D0:59 Ambit Microsystems Corp. 00:D0:5A Symbionics, Ltd. 00:D0:5B Acroloop Motion Control 00:D0:5C Technotrend Systemtechnik Gmbh 00:D0:5D Intelliworxx, Inc. 00:D0:5E Stratabeam Technology, Inc. 00:D0:5F Valcom, Inc. 00:D0:60 Panasonic European 00:D0:61 Tremon Enterprises Co., Ltd. 00:D0:62 Digigram 00:D0:63 Cisco Systems, Inc. 00:D0:64 Multitel 00:D0:65 Toko Electric 00:D0:66 Wintriss Engineering Corp. 00:D0:67 Campio Communications 00:D0:68 Iwill Corporation 00:D0:69 Technologic Systems 00:D0:6A Linkup Systems Corporation 00:D0:6B Sr Telecom Inc. 00:D0:6C Sharewave, Inc. 00:D0:6D Acrison, Inc. 00:D0:6E Trendview Recorders Ltd. 00:D0:6F Kmc Controls 00:D0:70 Long Well Electronics Corp. 00:D0:71 Echelon Corp. 00:D0:72 Broadlogic 00:D0:73 Acn Advanced Communications 00:D0:74 Taqua Systems, Inc. 00:D0:75 Alaris Medical Systems, Inc. 00:D0:76 Merrill Lynch & Co., Inc. 00:D0:77 Lucent Technologies 00:D0:78 Eltex Of Sweden Ab 00:D0:79 Cisco Systems, Inc. 00:D0:7A Amaquest Computer Corp. 00:D0:7B Comcam International Ltd. 00:D0:7C Koyo Electronics Inc. Co.,ltd. 00:D0:7D Cosine Communications 00:D0:7E Keycorp Ltd. 00:D0:7F Strategy & Technology, Limited 00:D0:80 Exabyte Corporation 00:D0:81 Real Time Devices Usa, Inc. 00:D0:82 Iowave Inc. 00:D0:83 Invertex, Inc. 00:D0:84 Nexcomm Systems, Inc. 00:D0:85 Otis Elevator Company 00:D0:86 Foveon, Inc. 00:D0:87 Microfirst Inc. 00:D0:88 Mainsail Networks, Inc. 00:D0:89 Dynacolor, Inc. 00:D0:8A Photron Usa 00:D0:8B Adva Limited 00:D0:8C Genoa Technology, Inc. 00:D0:8D Phoenix Group, Inc. 00:D0:8E Nvision Inc. 00:D0:8F Ardent Technologies, Inc. 00:D0:90 Cisco Systems, Inc. 00:D0:91 Smartsan Systems, Inc. 00:D0:92 Glenayre Western Multiplex 00:D0:93 Tq - Components Gmbh 00:D0:94 Timeline Vista, Inc. 00:D0:95 Xylan Corporation 00:D0:96 3com Europe Ltd. 00:D0:97 Cisco Systems, Inc. 00:D0:98 Photon Dynamics Canada Inc. 00:D0:99 Elcard Oy 00:D0:9A Filanet Corporation 00:D0:9B Spectel Ltd. 00:D0:9C Kapadia Communications 00:D0:9D Veris Industries 00:D0:9E 2wire, Inc. 00:D0:9F Novtek Test Systems 00:D0:A0 Mips Denmark 00:D0:A1 Oskar Vierling Gmbh + Co. Kg 00:D0:A2 Integrated Device 00:D0:A3 Vocal Data, Inc. 00:D0:A4 Alantro Communications 00:D0:A5 American Arium 00:D0:A6 Lanbird Technology Co., Ltd. 00:D0:A7 Tokyo Sokki Kenkyujo Co., Ltd. 00:D0:A8 Network Engines, Inc. 00:D0:A9 Shinano Kenshi Co., Ltd. 00:D0:AA Chase Communications 00:D0:AB Deltakabel Telecom Cv 00:D0:AC Grayson Wireless 00:D0:AD Tl Industries 00:D0:AE Oresis Communications, Inc. 00:D0:AF Cutler-hammer, Inc. 00:D0:B0 Bitswitch Ltd. 00:D0:B1 Omega Electronics Sa 00:D0:B2 Xiotech Corporation 00:D0:B3 Drs Flight Safety And 00:D0:B4 Katsujima Co., Ltd. 00:D0:B5 Ipricot Formerly Dotcom 00:D0:B6 Crescent Networks, Inc. 00:D0:B7 Intel Corporation 00:D0:B8 Iomega Corp. 00:D0:B9 Microtek International, Inc. 00:D0:BA Cisco Systems, Inc. 00:D0:BB Cisco Systems, Inc. 00:D0:BC Cisco Systems, Inc. 00:D0:BD Sican Gmbh 00:D0:BE Emutec Inc. 00:D0:BF Pivotal Technologies 00:D0:C0 Cisco Systems, Inc. 00:D0:C1 Harmonic Data Systems, Ltd. 00:D0:C2 Balthazar Technology Ab 00:D0:C3 Vivid Technology Pte, Ltd. 00:D0:C4 Teratech Corporation 00:D0:C5 Computational Systems, Inc. 00:D0:C6 Thomas & Betts Corp. 00:D0:C7 Pathway, Inc. 00:D0:C8 I/o Consulting A/s 00:D0:C9 Advantech Co., Ltd. 00:D0:CA Intrinsyc Software Inc. 00:D0:CB Dasan Co., Ltd. 00:D0:CC Technologies Lyre Inc. 00:D0:CD Atan Technology Inc. 00:D0:CE Asyst Electronic 00:D0:CF Moreton Bay 00:D0:D0 Zhongxing Telecom Ltd. 00:D0:D1 Sirocco Systems, Inc. 00:D0:D2 Epilog Corporation 00:D0:D3 Cisco Systems, Inc. 00:D0:D4 V-bits, Inc. 00:D0:D5 Grundig Ag 00:D0:D6 Aethra Telecomunicazioni 00:D0:D7 B2c2, Inc. 00:D0:D8 3com Corporation 00:D0:D9 Dedicated Microcomputers 00:D0:DA Taicom Data Systems Co., Ltd. 00:D0:DB Mcquay International 00:D0:DC Modular Mining Systems, Inc. 00:D0:DD Sunrise Telecom, Inc. 00:D0:DE Philips Multimedia Network 00:D0:DF Kuzumi Electronics, Inc. 00:D0:E0 Dooin Electronics Co. 00:D0:E1 Avionitek Israel Inc. 00:D0:E2 Mrt Micro, Inc. 00:D0:E3 Ele-chem Engineering Co., Ltd. 00:D0:E4 Cisco Systems, Inc. 00:D0:E5 Solidum Systems Corp. 00:D0:E6 Ibond Inc. 00:D0:E7 Vcon Telecommunication Ltd. 00:D0:E8 Mac System Co., Ltd. 00:D0:E9 Advantage Century 00:D0:EA Nextone Communications, Inc. 00:D0:EB Lightera Networks, Inc. 00:D0:EC Nakayo Telecommunications, Inc 00:D0:ED Xiox 00:D0:EE Dictaphone Corporation 00:D0:EF Igt 00:D0:F0 Convision Technology Gmbh 00:D0:F1 Sega Enterprises, Ltd. 00:D0:F2 Monterey Networks 00:D0:F3 Solari Di Udine Spa 00:D0:F4 Carinthian Tech Institute 00:D0:F5 Orange Micro, Inc. 00:D0:F6 Alcatel Canada 00:D0:F7 Next Nets Corporation 00:D0:F8 Fujian Star Terminal 00:D0:F9 Acute Communications Corp. 00:D0:FA Racal Guardata 00:D0:FB Tek Microsystems, Incorporated 00:D0:FC Granite Microsystems 00:D0:FD Optima Tele.com, Inc. 00:D0:FE Astral Point 00:D0:FF Cisco Systems, Inc. 00:DD:00 Ungermann-bass Inc. 00:DD:01 Ungermann-bass Inc. 00:DD:02 Ungermann-bass Inc. 00:DD:03 Ungermann-bass Inc. 00:DD:04 Ungermann-bass Inc. 00:DD:05 Ungermann-bass Inc. 00:DD:06 Ungermann-bass Inc. 00:DD:07 Ungermann-bass Inc. 00:DD:08 Ungermann-bass Inc. 00:DD:09 Ungermann-bass Inc. 00:DD:0A Ungermann-bass Inc. 00:DD:0B Ungermann-bass Inc. 00:DD:0C Ungermann-bass Inc. 00:DD:0D Ungermann-bass Inc. 00:DD:0E Ungermann-bass Inc. 00:DD:0F Ungermann-bass Inc. 00:E0:00 Fujitsu, Ltd 00:E0:01 Strand Lighting Limited 00:E0:02 Crossroads Systems, Inc. 00:E0:03 Nokia Wireless Business Commun 00:E0:04 Pmc-sierra, Inc. 00:E0:05 Technical Corp. 00:E0:06 Silicon Integrated Sys. Corp. 00:E0:07 Network Alchemy Ltd. 00:E0:08 Amazing Controls! Inc. 00:E0:09 Marathon Technologies Corp. 00:E0:0A Diba, Inc. 00:E0:0B Rooftop Communications Corp. 00:E0:0C Motorola 00:E0:0D Radiant Systems 00:E0:0E Avalon Imaging Systems, Inc. 00:E0:0F Shanghai Baud Data 00:E0:10 Hess Sb-automatenbau Gmbh 00:E0:11 Uniden San Diego R&d Center, Inc. 00:E0:12 Pluto Technologies International Inc. 00:E0:13 Eastern Electronic Co., Ltd. 00:E0:14 Cisco Systems, Inc. 00:E0:15 Heiwa Corporation 00:E0:16 Rapid City Communications 00:E0:17 Exxact Gmbh 00:E0:18 Asustek Computer Inc. 00:E0:19 Ing. Giordano Elettronica 00:E0:1A Comtec Systems. Co., Ltd. 00:E0:1B Sphere Communications, Inc. 00:E0:1C Mobility Electronicsy 00:E0:1D Webtv Networks, Inc. 00:E0:1E Cisco Systems, Inc. 00:E0:1F Avidia Systems, Inc. 00:E0:20 Tecnomen Oy 00:E0:21 Freegate Corp. 00:E0:22 Medialight, Inc. 00:E0:23 Telrad 00:E0:24 Gadzoox Networks 00:E0:25 Dit Co., Ltd. 00:E0:26 Eastman Kodak Co. 00:E0:27 Dux, Inc. 00:E0:28 Aptix Corporation 00:E0:29 OEM OEM 00:E0:2A Tandberg Television As 00:E0:2B Extreme Networks 00:E0:2C Ast Computer 00:E0:2D Innomedialogic, Inc. 00:E0:2E Spc Electronics Corporation 00:E0:2F Mcns Holdings, L.p. 00:E0:30 Melita International Corp. 00:E0:31 Hagiwara Electric Co., Ltd. 00:E0:32 Misys Financial Systems, Ltd. 00:E0:33 E.e.p.d. Gmbh 00:E0:34 Cisco Systems, Inc. 00:E0:35 Loughborough Sound Images, Plc 00:E0:36 Pioneer Corporation 00:E0:37 Century Corporation 00:E0:38 Proxima Corporation 00:E0:39 Paradyne Corp. 00:E0:3A Cabletron Systems, Inc. 00:E0:3B Prominet Corporation 00:E0:3C Advansys 00:E0:3D Focon Electronic Systems A/s 00:E0:3E Alfatech, Inc. 00:E0:3F Jaton Corporation 00:E0:40 Deskstation Technology, Inc. 00:E0:41 Cspi 00:E0:42 Pacom Systems Ltd. 00:E0:43 Vitalcom 00:E0:44 Lsics Corporation 00:E0:45 Touchwave, Inc. 00:E0:46 Bently Nevada Corp. 00:E0:47 Infocus Systems 00:E0:48 Sdl Communications, Inc. 00:E0:49 Microwi Electronic Gmbh 00:E0:4A Enhanced Messaging Systems, Inc 00:E0:4B Jump Industrielle Computertechnik Gmbh 00:E0:4C Realtek Semiconductor Corp. 00:E0:4D Internet Initiative Japan, Inc 00:E0:4E Sanyo Denki Co., Ltd. 00:E0:4F Cisco Systems, Inc. 00:E0:50 Executone Information Systems, Inc. 00:E0:51 Talx Corporation 00:E0:52 Foundry Networks, Inc. 00:E0:53 Cellport Labs, Inc. 00:E0:54 Kodai Hitec Co., Ltd. 00:E0:55 Ingenieria Electronica Comercial Inelcom S.a. 00:E0:56 Holontech Corporation 00:E0:57 Han Microtelecom. Co., Ltd. 00:E0:58 Phase One Denmark A/s 00:E0:59 Controlled Environments, Ltd. 00:E0:5A Galea Network Security 00:E0:5B West End Systems Corp. 00:E0:5C Matsushita Kotobuki Electronics Industries, Ltd. 00:E0:5D Unitec Co., Ltd. 00:E0:5E Japan Aviation Electronics Industry, Ltd. 00:E0:5F E-net, Inc. 00:E0:60 Sherwood 00:E0:61 Edgepoint Networks, Inc. 00:E0:62 Host Engineering 00:E0:63 Cabletron - Yago Systems, Inc. 00:E0:64 Samsung Electronics 00:E0:65 Optical Access International 00:E0:66 Promax Systems, Inc. 00:E0:67 Eac Automation-consulting Gmbh 00:E0:68 Merrimac Systems Inc. 00:E0:69 Jaycor 00:E0:6A Kapsch Ag 00:E0:6B W&g Special Products 00:E0:6C Aep Systems International Ltd 00:E0:6D Compuware Corporation 00:E0:6E Far Systems S.p.a. 00:E0:6F Terayon Corp. 00:E0:70 Dh Technology 00:E0:71 Epis Microcomputer 00:E0:72 Lynk 00:E0:73 National Amusement Network, Inc. 00:E0:74 Tiernan Communications, Inc. 00:E0:75 Atlas Computer Equipment, Inc. 00:E0:76 Development Concepts, Inc. 00:E0:77 Webgear, Inc. 00:E0:78 Berkeley Networks 00:E0:79 A.t.n.r. 00:E0:7A Mikrodidakt Ab 00:E0:7B Bay Networks 00:E0:7C Mettler-toledo, Inc. 00:E0:7D Netronix, Inc. 00:E0:7E Walt Disney Imagineering 00:E0:7F Logististem S.r.l. 00:E0:80 Control Resources Corporation 00:E0:81 Tyan Computer Corp. 00:E0:82 Anerma 00:E0:83 Jato Technologies, Inc. 00:E0:84 Compulite R&d 00:E0:85 Global Maintech, Inc. 00:E0:86 Cybex Computer Products 00:E0:87 Lecroy - Networking Productions Division 00:E0:88 Ltx Corporation 00:E0:89 Ion Networks, Inc. 00:E0:8A Gec Avery, Ltd. 00:E0:8B Qlogic Corp. 00:E0:8C Neoparadigm Labs, Inc. 00:E0:8D Pressure Systems, Inc. 00:E0:8E Utstarcom 00:E0:8F Cisco Systems, Inc. 00:E0:90 Beckman Lab. Automation Div. 00:E0:91 Lg Electronics, Inc. 00:E0:92 Admtek Incorporated 00:E0:93 Ackfin Networks 00:E0:94 Osai Srl 00:E0:95 Advanced-vision Technolgies Corp. 00:E0:96 Shimadzu Corporation 00:E0:97 Carrier Access Corporation 00:E0:98 Abocom Systems, Inc. 00:E0:99 Samson Ag 00:E0:9A Positron Industries, Inc. 00:E0:9B Engage Networks, Inc. 00:E0:9C Mii 00:E0:9D Sarnoff Corporation 00:E0:9E Quantum Corporation 00:E0:9F Pixel Vision 00:E0:A0 Wiltron Co. 00:E0:A1 Hima Paul Hildebrandt Gmbh Co. Kg 00:E0:A2 Microslate Inc. 00:E0:A3 Cisco Systems, Inc. 00:E0:A4 Esaote S.p.a. 00:E0:A5 Comcore Semiconductor, Inc. 00:E0:A6 Telogy Networks, Inc. 00:E0:A7 Ipc Information Systems, Inc. 00:E0:A8 Sat Gmbh & Co. 00:E0:A9 Funai Electric Co., Ltd. 00:E0:AA Electrosonic Ltd. 00:E0:AB Dimat S.a. 00:E0:AC Midsco, Inc. 00:E0:AD Ees Technology, Ltd. 00:E0:AE Xaqti Corporation 00:E0:AF General Dynamics Information Systems 00:E0:B0 Cisco Systems, Inc. 00:E0:B1 Packet Engines, Inc. 00:E0:B2 Telmax Communications Corp. 00:E0:B3 Etherwan Systems, Inc. 00:E0:B4 Techno Scope Co., Ltd. 00:E0:B5 Ardent Communications Corp. 00:E0:B6 Entrada Networks 00:E0:B7 Pi Group, Ltd. 00:E0:B8 Gateway 2000 00:E0:B9 Byas Systems 00:E0:BA Berghof Automationstechnik Gmbh 00:E0:BB Nbx Corporation 00:E0:BC Symon Communications, Inc. 00:E0:BD Interface Systems, Inc. 00:E0:BE Genroco International, Inc. 00:E0:BF Torrent Networking Technologies Corp. 00:E0:C0 Seiwa Electric Mfg. Co., Ltd. 00:E0:C1 Memorex Telex Japan, Ltd. 00:E0:C2 Necsy S.p.a. 00:E0:C3 Sakai System Development Corp. 00:E0:C4 Horner Electric, Inc. 00:E0:C5 Bcom Electronics Inc. 00:E0:C6 Link2it, L.l.c. 00:E0:C7 Eurotech Srl 00:E0:C8 Virtual Access, Ltd. 00:E0:C9 Automatedlogic Corporation 00:E0:CA Best Data Products 00:E0:CB Reson, Inc. 00:E0:CC Hero Systems, Ltd. 00:E0:CD Sensis Corporation 00:E0:CE Arn 00:E0:CF Integrated Device Technology, Inc. 00:E0:D0 Netspeed, Inc. 00:E0:D1 Telsis Limited 00:E0:D2 Versanet Communications, Inc. 00:E0:D3 Datentechnik Gmbh 00:E0:D4 Excellent Computer 00:E0:D5 Arcxel Technologies, Inc. 00:E0:D6 Computer & Communication Research Lab. 00:E0:D7 Sunshine Electronics, Inc. 00:E0:D8 Lanbit Computer, Inc. 00:E0:D9 Tazmo Co., Ltd. 00:E0:DA Assured Access Technology, Inc. 00:E0:DB Viavideo Communications, Inc. 00:E0:DC Nexware Corp. 00:E0:DD Zenith Electronics Corporation 00:E0:DE Datax Nv 00:E0:DF Ke Kommunikations-electronik 00:E0:E0 Si Electronics, Ltd. 00:E0:E1 G2 Networks, Inc. 00:E0:E2 Innova Corp. 00:E0:E3 Sk-elektronik Gmbh 00:E0:E4 Fanuc Robotics North America, Inc. 00:E0:E5 Cinco Networks, Inc. 00:E0:E6 Incaa Datacom B.v. 00:E0:E7 Raytheon E-systems, Inc. 00:E0:E8 Gretacoder Data Systems Ag 00:E0:E9 Data Labs, Inc. 00:E0:EA Innovat Communications, Inc. 00:E0:EB Digicom Systems, Incorporated 00:E0:EC Celestica Inc. 00:E0:ED Silicom, Ltd. 00:E0:EE Marel Hf 00:E0:EF Dionex 00:E0:F0 Abler Technology, Inc. 00:E0:F1 That Corporation 00:E0:F2 Arlotto Comnet, Inc. 00:E0:F3 Websprint Communications, Inc. 00:E0:F4 Inside Technology A/s 00:E0:F5 Teles Ag 00:E0:F6 Decision Europe 00:E0:F7 Cisco Systems, Inc. 00:E0:F8 Dicna Control Ab 00:E0:F9 Cisco Systems, Inc. 00:E0:FA Trl Technology, Ltd. 00:E0:FB Leightronix, Inc. 00:E0:FC Huawei Technologies Co., Ltd. 00:E0:FD A-trend Technology Co., Ltd. 00:E0:FE Cisco Systems, Inc. 00:E0:FF Security Dynamics Technologies, Inc. 00:E6:D3 Nixdorf Computer Corp. 02:07:01 Racal-datacom 02:1C:7C Perq Systems Corporation 02:60:86 Logic Replacement Tech. Ltd. 02:60:8C 3com Corporation 02:70:01 Racal-datacom 02:70:B0 M/a-com Inc. Companies 02:70:B3 Data Recall Ltd 02:9D:8E Cardiac Recorders Inc. 02:AA:3C Olivetti Telecomm Spa (olteco) 02:BB:01 Octothorpe Corp. 02:C0:8C 3com Corporation 02:CF:1C Communication Machinery Corp. 02:E6:D3 Nixdorf Computer Corporation 04:0A:E0 Xmit Ag Computer Networks 04:E0:C4 Triumph-adler Ag 08:00:01 Computervision Corporation 08:00:02 Bridge Communications Inc. 08:00:03 Advanced Computer Comm. 08:00:04 Cromemco Incorporated 08:00:05 Symbolics Inc. 08:00:06 Siemens Ag 08:00:07 Apple Computer Inc. 08:00:08 Bolt Beranek And Newman Inc. 08:00:09 Hewlett Packard 08:00:0A Nestar Systems Incorporated 08:00:0B Unisys Corporation 08:00:0C Miklyn Development Co. 08:00:0D International Computers Ltd. 08:00:0E Ncr Corporation 08:00:0F Mitel Corporation 08:00:11 Tektronix Inc. 08:00:12 Bell Atlantic Integrated Syst. 08:00:13 Exxon 08:00:14 Excelan 08:00:15 Stc Business Systems 08:00:16 Barrister Info Sys Corp 08:00:17 National Semiconductor 08:00:18 Pirelli Focom Networks 08:00:19 General Electric Corporation 08:00:1A Tiara/ 10net 08:00:1B Data General 08:00:1C Kdd-kokusai Debnsin Denwa Co. 08:00:1D Able Communications Inc. 08:00:1E Apollo Computer Inc. 08:00:1F Sharp Corporation 08:00:20 Sun Microsystems Inc. 08:00:21 3m Company 08:00:22 Nbi Inc. 08:00:23 Matsuhita Graphic Comm Sys Inc 08:00:24 10net Communications/dca 08:00:25 Control Data 08:00:26 Norsk Data A.s. 08:00:27 Cadmus Computer Systems 08:00:28 Texas Instruments 08:00:29 Megatek Corporation 08:00:2A Mosaic Technologies Inc. 08:00:2B Digital Equipment Corporation 08:00:2C Britton Lee Inc. 08:00:2D Lan-tec Inc. 08:00:2E Metaphor Computer Systems 08:00:2F Prime Computer Inc. 08:00:30 Cern 08:00:31 Little Machines Inc. 08:00:32 Tigan Incorporated 08:00:33 Bausch & Lomb 08:00:34 Filenet Corporation 08:00:35 Microfive Corporation 08:00:36 Intergraph Corporation 08:00:37 Fuji-xerox Co. Ltd. 08:00:38 Cii Honeywell Bull 08:00:39 Spider Systems Limited 08:00:3A Orcatech Inc. 08:00:3B Torus Systems Limited 08:00:3C Schlumberger Well Services 08:00:3D Cadnetix Corporations 08:00:3E Codex Corporation 08:00:3F Fred Koschara Enterprises 08:00:40 Ferranti Computer Sys. Limited 08:00:41 Racal-milgo Information Sys.. 08:00:42 Japan Macnics Corp. 08:00:43 Pixel Computer Inc. 08:00:44 David Systems Inc. 08:00:45 Concurrent Computer Corp. 08:00:46 Sony Corporation Ltd. 08:00:47 Sequent Computer Systems Inc. 08:00:48 Eurotherm Gauging Systems 08:00:49 Univation 08:00:4A Banyan Systems Inc. 08:00:4B Planning Research Corp. 08:00:4C Hydra Computer Systems Inc. 08:00:4D Corvus Systems Inc. 08:00:4E 3com Europe Ltd. 08:00:4F Cygnet Systems 08:00:50 Daisy Systems Corp. 08:00:51 Experdata 08:00:52 Insystec 08:00:53 Middle East Tech. University 08:00:55 Stanford Telecomm. Inc. 08:00:56 Stanford Linear Accel. Center 08:00:57 Evans & Sutherland 08:00:58 Systems Concepts 08:00:59 A/s Mycron 08:00:5A Ibm Corporation 08:00:5B Vta Technologies Inc. 08:00:5C Four Phase Systems 08:00:5D Gould Inc. 08:00:5E Counterpoint Computer Inc. 08:00:5F Saber Technology Corp. 08:00:60 Industrial Networking Inc. 08:00:61 Jarogate Ltd. 08:00:62 General Dynamics 08:00:63 Plessey 08:00:64 Autophon Ag 08:00:65 Genrad Inc. 08:00:66 Agfa Corporation 08:00:67 Comdesign 08:00:68 Ridge Computers 08:00:69 Silicon Graphics Inc. 08:00:6A Att Bell Laboratories 08:00:6B Accel Technologies Inc. 08:00:6C Suntek Technology Int'l 08:00:6D Whitechapel Computer Works 08:00:6E Masscomp 08:00:6F Philips Apeldoorn B.v. 08:00:70 Mitsubishi Electric Corp. 08:00:71 Matra (dsie) 08:00:72 Xerox Corp Univ Grant Program 08:00:73 Tecmar Inc. 08:00:74 Casio Computer Co. Ltd. 08:00:75 Dansk Data Electronik 08:00:76 Pc Lan Technologies 08:00:77 Tsl Communications Ltd. 08:00:78 Accell Corporation 08:00:79 The Droid Works 08:00:7A Indata 08:00:7B Sanyo Electric Co. Ltd. 08:00:7C Vitalink Communications Corp. 08:00:7E Amalgamated Wireless(aus) Ltd 08:00:7F Carnegie-mellon University 08:00:80 Aes Data Inc. 08:00:81 Astech Inc. 08:00:82 Veritas Software 08:00:83 Seiko Instrum. And Electronics 08:00:84 Tomen Electronics Corp. 08:00:85 Elxsi 08:00:86 Imagen Corporation 08:00:87 Xyplex 08:00:88 Mcdata Corporation 08:00:89 Kinetics 08:00:8A Performance Technology 08:00:8B Pyramid Technology Corp. 08:00:8C Network Research Corporation 08:00:8D Xyvision Inc. 08:00:8E Tandem Computers 08:00:8F Chipcom Corporation 08:00:90 Sonoma Systems 08:14:43 Unibrain S.a. 08:BB:CC Ak-nord Edv Vertriebsges. Mbh 10:00:00 Private 10:00:5A Ibm Corporation 10:00:E8 National Semiconductor 11:00:AA Private 80:00:10 Att Bell Laboratories A0:6A:00 Verilink Corporation AA:00:00 Digital Equipment Corporation AA:00:01 Digital Equipment Corporation AA:00:02 Digital Equipment Corporation AA:00:03 Digital Equipment Corporation AA:00:04 Digital Equipment Corporation pads-1.2/etc/pads.conf0000664000076400007640000000431310243661477011622 00000000000000# ------------------------------------------------------------------------------ # # pads.conf # # Matt Shelton # # This file contains configuration parameters for the PADS application. Please # visit http://passive.sourceforge.net for further information. # # $Id: pads.conf,v 1.5 2005/05/21 16:35:11 mattshelton Exp $ # # ------------------------------------------------------------------------------ # daemon # ------------------------- # This parameter determines whether the application will go into the background. # 0 = Disable, 1 = Enable daemon 0 # pid_file # ------------------------- # Filename of the pads PID file. This value should be set if you are planning # on using daemon mode. pid_file /var/run/pads.pid # sig_file # ------------------------- # Alternate location for the pads-signature-list file. #sig_file /usr/local/pads/share/pads/pads-signature-list # mac_file # ------------------------- # Alternate location for the pads-ether-codes file. #mac_file /usr/local/pads/share/pads/pads-ether-codes # user # ------------------------- # This is the name of the user pads-archiver will run as when started as root. #user pads # group # ------------------------- # This is the name of the group pads-archiver will run as when started as root. #group pads # interface # ------------------------- # This contains the name of the interface PADS will listen to. #interface eth0 # filter # ------------------------- # This value contains a libpcap filter to be applied to the PADS session. #filter port 22 # network # ------------------------- # This string contains a comma seperated list of networks to be monitored. #network 192.168.0.0/24,192.168.1.0/24,10.10.10.0/24 # output: screen # ------------------------- # This output plugin displays PADS data to the screen. It is mainly used for # debugging purposes. output screen # output: csv # ------------------------- # This output plugin writes PADS data to a CSV file. Optionally, a CSV filename # can be specified as an argument. output csv: assets.csv # output: fifo # ------------------------- # This output plugin writes PADS data to a FIFO file. Optionally, a FIFO # filename can be specified as an argument. #output fifo: pads.fifo pads-1.2/etc/pads-signature-list0000664000076400007640000002111610202574617013640 00000000000000############################################################################ # # Passive Asset Detection System - Signature List # # This contains a database of device signatures to be used with # the Passive Asset Detection System. # # Format: # ,, # # Service: This describes the service name used by the signature. # Examples would include SSH, HTTP, SMTP, etc. # # Version Info: This contains a NMAP-like template for the service # discovered by the signature. The field follows this format: # v/vendorproductname/version/info/ # # Signature: This is a PCRE compatable regular expression without the # surrounding /'s. The signature should have one or two sets of ()'s # depending on the Version Info field. # # $Id: pads-signature-list,v 1.1 2005/02/10 06:05:03 mattshelton Exp $ # ############################################################################ ssh,v/OpenSSH/$2/Protocol $1/,SSH-([.\d]+)-OpenSSH[_-](\S+) ssh,v/Cisco SSH/$2/Protocol $1/,SSH-([.\d]+)-Cisco[_-](\S+) ssh,v/Sun SSH/$2/Protocol $1/,SSH-([.\d]+)-Sun_SSH[_-](\S+) ssh,v/Cisco IDS SSH/$2/Protocol $1/,SSH-([.\d]+)-CiscoIDS\/LoginServer[_-](\S+) # WWW Signatures www,v/Apache/$1//,Server: Apache\/([\S]+)[\r\n] www,v/Apache/$1/$2/,Server: Apache\/([\S]+)[\s]+\((.*)\) www,v/Apache/$1/$2/,Server: Apache\/([\S]+)[\s]+([\S]+) www,v/Apache///,Server: Apache[\r\n] www,v/Stronghold/$1/$2/,Server: Stronghold\/([\S]+) ([\S]+) www,v/Microsoft-IIS/$1//,Server: Microsoft-IIS\/([\S]+)[\r\n] www,v/Netscape Enterprise/$1//,Server: Netscape-Enterprise\/([\S]+) www,v/NetCache//$1/,Server: NetCache (\(.*\)) www,v/Switch and Data - EdgePrism/$1//,Server: EdgePrism\/([\S]+) www,v/thttp/$1/$2/,Server: thttpd\/([\S]+) ([\S]+) www,v/Apache Tomcat/$1/$2/,Server: Apache Tomcat\/([\S]+) (\(.*\)) www,v/Apache Coyote/$1//,Server: Apache Coyote\/([\S]+) www,v/DoubleClick Adserver///,Server: DCLK-HttpSvr www,v/Resin JSP Engine/$1//,Server: Resin\/([\S]+) www,v/Akamai Ghost///,Server: AkamaiGHost www,v/Footprint Distributor/$1//,Server: Footprint Distributor V([\S]+) www,v/AOLserver/$1//,Server: AOLserver\/([\S]+) www,v/IBM WebSphere Application Server/$1//,Server: WebSphere Application Server\/([\S]+) www,v/Netscape Brew/$1//,Server: Netscape-Brew\/([\S]+) www,v/swcd/$1//,Server: swcd\/([\S]+)[\r\n] www,v/TrueSpectra Image Server/$1//,Server: TrueSpectra Image Server Version ([\S]+) www,v/Oracle Apache Server/$1/$2/,Server: Oracle HTTP Server Powered by Apache\/([\S]+) (\([\S]+\)) www,v/Enhydra Application Server/$1//,Server: Enhydra-MultiServer\/([\S]+) www,v/Zeus Web Server/$1//,Server: Zeus\/([\S]+) www,v/Inktomi Traffic Cache/$2/$1/,Via: HTTP/1.. ([\S]+) \(Traffic-Server\/([\S]+) www,v/Cougar/$1//,Server: Cougar\/([\S]+)[\r\n] www,v/GWS/$1//,Server: GWS\/([\S]+)[\r\n] www,v/Apache AdvancedExtranetServer/$1/$2/,Server: Apache-AdvancedExtranetServer\/([\S]+) \(([\S|\s]+)\) www,v/IBM HTTP Server/$1/$2/,Server: IBM_HTTP_Server\/([\S]+) ([\S]+) www,v/Boa Web Server/$1//,Server: Boa\/([\S]+) www,v/Netscape Enterprise/$1/AOL/,Server: Netscape-Enterprise\/([\S]+) AOL www,v/$1///,Server: (.*)\r\n # Fallback WWW Signature www,v/Unknown HTTP//$1/,^(HTTP/\d.\d) # SSL Signatures ssl,v/Generic TLS 1.0 SSL///,^\x16\x03\x01..\x02\0\0.\x03\x01 ssl,v/OpenSSL///,^\x16\x03\0\0J\x02\0\0F\x03\0 # SMB Sigantures smb,v/Windows SMB///,\xffSMBr # Mail Signatures imap,v/Microsoft Exchange Server IMAP/$1/$2/,\* OK Microsoft Exchange Server ([\S]+) IMAP4rev1 server version ([\S]+) imap,v/Cyrus IMAP4 Server/$1//,\* OK [-.\w]+ Cyrus IMAP4 v([-.\w]+) server ready imap,v/UW IMAP Server/$1//,\* OK \[CAPABILITY IMAP4REV1 .*IMAP4rev1 (200\d\.[-.\w]+) ati # FTP Signatures ftp,v/Microsoft FTP Server/$1//,Microsoft FTP Service \(Version ([\S]+)\). ftp,v/NcFTPd Server//$1/,NcFTPd Server \((.*)\) ready. ftp,v/vsFTPd///,FTP server \(vsftpd\) ftp,v/vsFTPd/$1//,220 \(vsFTPd ([\S]+)\) ftp,v/ProFTPD Server/$1//,220 ProFTPD ([\S]+) Server ftp,v/ProFTPD Server//$1/,220 ProFTPD \[(.*)\] ftp,v/ProFTPD Server///,220 ProFTPD Server ftp,v/WU-FTPD Server/$1//,FTP server \(Version wu-([\S]+) ftp,v/Compaq Tru64 FTP Server/$2/$1/,220 ([-.\w]+) FTP server \(Compaq Tru64 UNIX Version ([\S]+)\) ready.[\r\n] ftp,v/War-FTPD FTP Server/$2/$1/,220- ([\S]+) WAR-FTPD ([\S]+) Ready[\r\n] ftp,v/Flash FTP Server/$1//,220 Flash FTP Server ([\S]+) ready ftp,v/SFTPD//$1/,220- ([\S]+) FTP Server (SFTPD) ftp,v/FreeBSD ftpd/$2/$1/,220 ([-.\w]+) FTP server \(Version (6.0\w+)\) ready.\r\n ftp,v/FTP Generic//$1/,220 Welcome to ([\S]+) ftp,v/FTP Generic//$1/,220 ([-.\w]+) FTP server ready ftp,v/FTP Generic///,220 FTP server ready ftp,v/GNU FTP Generic///,220 GNU FTP server ready ftp,v/FTP Generic//$1,220 ([\S]+) FTP Server Ready # Remote Access Systems vnc,v/VNC//Protocol $1/,RFB ([\S]+)\n rdp,v/Remote Desktop Protocol//Windows 2000 Server/,\x03\0\0\x0b\x06\xd0\0\0\x12.\0 rdp,v/Remote Desktop Protocol//Netmeeting Remote Assistance/,\x03\0\0\x17\x08\x02\0\0Z~\0\x0b\x05\x05@\x06\0\x08\x91J\0\x02X ica,v/Citrix ICA Protocol///,/7f/7fICA/00 pcanywhere,v/PCAnywhere///,^\0X\x08\0\}\x08\r\n\0\.\x08.*\.\.\.\r\n # IRC irc,v/Dancer IRCD/$1//,running version dancer-ircd-([\S]+) # SMTP smtp,v/Postfix SMTP//$1/,^220 ([-.\w]+) ESMTP Postfix smtp,v/Lotus Notes SMTP//$1/,^220 ([-.\w]+) Lotus SMTP MTA Service Ready\r\n smtp,v/Lotus Domino SMTP/$2/$1,220 ([\S]+) ESMTP Service \(Lotus Domino Release ([\S]+)\) smtp,v/Microsoft Exchange SMTP/$2/$1/,220 ([-.\w]+) Microsoft ESMTP MAIL Service, Version: ([\S]+) smtp,v/Microsoft Exchange SMTP/$2/$1/,220 ([\S]+) ESMTP Server \(Microsoft Exchange Internet Mail Service ([\S]+)\) ready smtp,v/Sendmail SMTP/$2/$1/,220 ([-.\w]+) ESMTP Sendmail (.*); smtp,v/Maillennium SMTP/MULTIBOX//$1/,220 ([-.\w]+) - Maillennium ESMTP/MULTIBOX smtp,v/IMail NT-ESMTP/$2/$1/,220 ([-.\w]+) \(IMail ([^)]+)\) NT-ESMTP Server smtp,v/SMTPD ?//$2/,220 \[SMTPD]: ([-.\w]+) hello smtp,v/Kerio MailServer/$2/$1/,220 ([-.\w]+) Kerio MailServer ([\S]+) ESMTP smtp,v/Kerio MailServer/$2/$1/,220 ([\S]+) esmtp Kerio MailServer ([\S]+) ESMTP ready smtp,v/Sendmail EDS Secure SMTP//$1/,220 ([-.\w]+) ESMTP Sendmail EDS Secure; smtp,v/Proxy SMTP Service/$1/$2/,220 ([-.\w]+) SMTP Proxy Service Ready \(Version: ([^)]+)\) smtp,v/Proxy SMTP Service///,220 SMTP Proxy Server Ready smtp,v/Yahoo! SMTP Service//$1/,220 YSmtp ([\S]+) ESMTP service ready smtp,v/SurgeMail/$2/$1/,220 ([-.\w]+) SurgeSMTP \(Version ([\S]+)\) http:\/\/surgemail.com smtp,v/PowerMTA SMTP/$2/$1/,220 ([\S]+) \(PowerMTA ([\S|\s]+)\) ESMTP service ready smtp,v/Exim/$2/$1/,220 ([\S]+) SMTP Exim ([\S]+) smtp,v/Exim/$2/$1/,220-([\S]+) SMTP Exim ([\S]+) smtp,v/LSMTP for Windows NT/$2/$1/,220 ([\S]+) \(LSMTP for Windows NT ([\S]+)\) ESMTP server ready smtp,v/Postini Perimeter Manager/$2/$1/,220 ([\S]+) ESMTP ([\S]+) ready. CA Business and Professions Code smtp,v/Sun iPlanet Messaging Server//$1/,220 ([\S]+) -- Server ESMTP \(Iplanet Messaging Server\) smtp,v/Sigaba Secure Email Gateway//$1/,220 ([\S]+) ESMTP Sigaba Gateway; smtp,v/Terrace MailWatcher/$2/$1/,220 ([\S]+) ESMTP Terrace MailWatcher ([\S]+) smtp,v/CheckPoint Firewall-1 SMTP Proxy///,220 CheckPoint FireWall-1 secure ESMTP server smtp,v/MailPass SMTP Server/$2/$1/,220 ([\S]+) MailPass SMTP server ([\S]+) smtp,v/CommuniGate Pro/$2/$1/,220 ([\S]+) ESMTP CommuniGate Pro ([\S]+) smtp,v/MailSite SMTP Server/$2/$1/,220 ([\S]+)[\s]+MailSite ESMTP Receiver Version ([\S]+) Ready smtp,v/MailEnable SMTP Server/$2/$1/,220 ([\S]+) ESMTP MailEnable Service, Version:[\s]+([\S]+)-- ready smtp,v/InterMail SMTP Server/$2/$2/,220 ([\S]+) ESMTP server \(InterMail ([\S]+) smtp,v/Perl SMTP::Server Module///,220 MacGyver SMTP Ready. smtp,v/McAfee WebShield SMTP Proxy/$2/$1/,220 ([\S]+) WebShield SMTP ([\S]+) [\S]+ Network Associates, Inc. smtp,v/Trend Micro InterScan/$2/$1/,220 ([\S]+) Trend Micro InterScan Messaging Security Suite, Version:[\s]+([\S]+) ready smtp,v/Worldmail/$2/$1/,220 ([\S]+) ESMTP Service \(Worldmail ([\S]+)\) ready smtp,v/Novell GroupWise/$2/$1/,220 ([\S]+) GroupWise Internet Agent (\S+) smtp,v/$2 - Server SMTP//$1/,220 ([\S]+) -- Server ESMTP \(([.*]+)\) smtp,v/Generic SMTP - Possible Postfix//$1/,220 ([-.\w]+) ESMTP\r\n smtp,v/Generic SMTP//$1/,220 ([\S]+) Simple Mail Transfer Service Ready smtp,v/Generic SMTP/$2/$1/,220 ([\S]+) SMTP Server \(([\S]+)\) smtp,v/Generic SMTP//$1/,220 ([\S]+) SMTP smtp,v/Generic SMTP//$1/,220 ([-.\w]+) ESMTP Server[\r\n] smtp,v/Generic SMTP//$1/,220 ([\S]+) ESMTP Service smtp,v/Generic SMTP//$1/,220[\s]+([-.\w]+) SMTP Server is ready to process smtp,v/Generic SMTP/$2/$1/,220 ([\S]+) ESMTP ([\S]+) # P2P signatures bit,v/Bittorrent///,^\x13BitTorrent\x20protocol # Database signatures razor,v/Razor///,sn\=[DNC]\x26srl\= # DNS Signatures dns,v/TCP DNS Server///,^[\x02-\xFF]...\x84\x80 pads-1.2/etc/Makefile.am0000664000076400007640000000034010241455740012044 00000000000000## $Id: Makefile.am,v 1.2 2005/05/14 20:13:20 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies EXTRA_DIST = pads* #pkgdata_DATA = sysconf_DATA = pads.conf \ pads-signature-list \ pads-ether-codes pads-1.2/configure0000775000076400007640000054471410254172217011165 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for pads 1.2. # # Report bugs to . # # Copyright (C) 2003 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 Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local ac_config_libobj_dir=. cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME='pads' PACKAGE_TARNAME='pads' PACKAGE_VERSION='1.2' PACKAGE_STRING='pads 1.2' PACKAGE_BUGREPORT='matt@mattshelton.com' ac_default_prefix=/usr/local # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os PCRE_OBJS EXTRA_DEFINES EXTRA_INCLUDES EXTRA_LIBS LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. ac_init_help= ac_init_version=false # 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. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= 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 ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -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 | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$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 ;; -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 ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) 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 ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=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 ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && 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'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac 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 echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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 # 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 its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | 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 if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP # # 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 pads 1.2 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 \`..'] _ACEOF cat <<_ACEOF 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] --datadir=DIR read-only architecture-independent data [PREFIX/share] --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] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _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 System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of pads 1.2:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-vendor Disable MAC Vendor resolution. --disable-gcc-version-check Disable configure's GCC version check. Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if 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 . _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style 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 elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF pads configure 1.2 generated by GNU Autoconf 2.59 Copyright (C) 2003 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 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by pads $as_me 1.2, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF { 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` hostinfo = `(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=. echo "PATH: $as_dir" done } >&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_sep= 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" # Get rid of the leading space. ac_sep=" " ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------- ## ## Output files. ## ## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=$`echo $ac_var` echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >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 # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" 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. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 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 `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 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 { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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_config_headers="$ac_config_headers config.h" am__api_version="1.9" 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 { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # 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. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done 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. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$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' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 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 $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$AWK" && break done echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="$(MAKE)"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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='pads' VERSION='1.2' 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"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_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" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done 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 echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl 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 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out 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. echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= # b.out is created by i960 compilers. for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; conftest.$ac_ext ) # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool, # but it would be cool to find out if it's true. Does anybody # maintain Libtool? --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$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 echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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 -std1 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 -std1. */ int osf4_cc_array ['\x00' == 0 ? 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 # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration #include int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 continue fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext 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 done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6 rm -f confinc confmf # Check whether --enable-dependency-tracking or --disable-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='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} 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 echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi cat >>confdefs.h <<\_ACEOF #define PACKAGE_DATE "06/17/05" _ACEOF ## # Define the arguments that that we accept. ## # Determine whether or not MAC Vendor resolution will be enabled. # Check whether --enable-vendor or --disable-vendor was given. if test "${enable_vendor+set}" = set; then enableval="$enable_vendor" cat >>confdefs.h <<\_ACEOF #define DISABLE_VENDOR 1 _ACEOF fi; # The user has the option to ignore GCC version checks. # Check whether --enable-gcc-version-check or --disable-gcc-version-check was given. if test "${enable_gcc_version_check+set}" = set; then enableval="$enable_gcc_version_check" DISABLE_GCC_CHECK="yes" else DISABLE_GCC_CHECK="no" fi; echo echo 'Configurating Passive Asset Dection System ...' echo ## # Configure Paths ## if test "$prefix" = "NONE"; then prefix="/usr/local" fi if test "$exec_prefix" = "NONE"; then exec_prefix=$prefix fi cat >>confdefs.h <<_ACEOF #define INSTALL_PREFIX "`eval echo $prefix`" _ACEOF cat >>confdefs.h <<_ACEOF #define INSTALL_EXECPREFIX "`eval echo $exec_prefix`" _ACEOF cat >>confdefs.h <<_ACEOF #define INSTALL_SYSCONFDIR "`eval echo $sysconfdir`" _ACEOF cat >>confdefs.h <<_ACEOF #define INSTALL_DATADIR "`eval echo $datadir`" _ACEOF cat >>confdefs.h <<_ACEOF #define INSTALL_LIBDIR "`eval echo $libdir`" _ACEOF cat >>confdefs.h <<_ACEOF #define INSTALL_BINDIR "`eval echo $bindir`" _ACEOF ## # Configure PCRE ## CPPFLAGS="${CPPFLAGS} `pcre-config --cflags`" 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 echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&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 to if __STDC__ is defined, since # exists even on freestanding compilers. # 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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 echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$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 to if __STDC__ is defined, since # exists even on freestanding compilers. # 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } 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 echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | (grep -E '(a|b)') >/dev/null 2>&1 then ac_cv_prog_egrep='grep -E' else ac_cv_prog_egrep='egrep' fi fi echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 echo "${ECHO_T}$ac_cv_prog_egrep" >&6 EGREP=$ac_cv_prog_egrep echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #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)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in pcre.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ----------------------------------- ## ## Report this to matt@mattshelton.com ## ## ----------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_PCRE_H 1 _ACEOF else { { echo "$as_me:$LINENO: error: Cannot find PCRE header files!" >&5 echo "$as_me: error: Cannot find PCRE header files!" >&2;} { (exit 1); exit 1; }; } fi done LDFLAGS="${LDFLAGS} `pcre-config --libs`" echo "$as_me:$LINENO: checking for pcre_compile in -lpcre" >&5 echo $ECHO_N "checking for pcre_compile in -lpcre... $ECHO_C" >&6 if test "${ac_cv_lib_pcre_pcre_compile+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpcre $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pcre_compile (); int main () { pcre_compile (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pcre_pcre_compile=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pcre_pcre_compile=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pcre_pcre_compile" >&5 echo "${ECHO_T}$ac_cv_lib_pcre_pcre_compile" >&6 if test $ac_cv_lib_pcre_pcre_compile = yes; then EXTRA_LIBS="$EXTRA_LIBS -lpcre" else { { echo "$as_me:$LINENO: error: Cannot find PCRE library files!" >&5 echo "$as_me: error: Cannot find PCRE library files!" >&2;} { (exit 1); exit 1; }; } fi ## # Configure PCAP ## if test "${ac_cv_header_pcap_h+set}" = set; then echo "$as_me:$LINENO: checking for pcap.h" >&5 echo $ECHO_N "checking for pcap.h... $ECHO_C" >&6 if test "${ac_cv_header_pcap_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: $ac_cv_header_pcap_h" >&5 echo "${ECHO_T}$ac_cv_header_pcap_h" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking pcap.h usability" >&5 echo $ECHO_N "checking pcap.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking pcap.h presence" >&5 echo $ECHO_N "checking pcap.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: pcap.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: pcap.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: pcap.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: pcap.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: pcap.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: pcap.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: pcap.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: pcap.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: pcap.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: pcap.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: pcap.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: pcap.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: pcap.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: pcap.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: pcap.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: pcap.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ----------------------------------- ## ## Report this to matt@mattshelton.com ## ## ----------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for pcap.h" >&5 echo $ECHO_N "checking for pcap.h... $ECHO_C" >&6 if test "${ac_cv_header_pcap_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_pcap_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_pcap_h" >&5 echo "${ECHO_T}$ac_cv_header_pcap_h" >&6 fi if test $ac_cv_header_pcap_h = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_PCAP_H 1 _ACEOF else { { echo "$as_me:$LINENO: error: Cannot find pcap.h!" >&5 echo "$as_me: error: Cannot find pcap.h!" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: checking for pcap_open_live in -lpcap" >&5 echo $ECHO_N "checking for pcap_open_live in -lpcap... $ECHO_C" >&6 if test "${ac_cv_lib_pcap_pcap_open_live+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpcap $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char pcap_open_live (); int main () { pcap_open_live (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_pcap_pcap_open_live=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pcap_pcap_open_live=no fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_pcap_pcap_open_live" >&5 echo "${ECHO_T}$ac_cv_lib_pcap_pcap_open_live" >&6 if test $ac_cv_lib_pcap_pcap_open_live = yes; then LIBS="$LIBS -lpcap" else { { echo "$as_me:$LINENO: error: Cannot find PCAP libraries!!" >&5 echo "$as_me: error: Cannot find PCAP libraries!!" >&2;} { (exit 1); exit 1; }; } fi ## # Checks for header files. ## for ac_header in stdio.h stdarg.h signal.h time.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ----------------------------------- ## ## Report this to matt@mattshelton.com ## ## ----------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ## # Checks for typedefs, structures, and compiler characteristics. ## echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi ## # Checks for library functions. ## echo "$as_me:$LINENO: checking return type of signal handlers" >&5 echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 if test "${ac_cv_type_signal+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifdef signal # undef signal #endif #ifdef __cplusplus extern "C" void (*signal (int, void (*)(int)))(int); #else void (*signal ()) (); #endif int main () { int i; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_signal=void else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_signal=int fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 echo "${ECHO_T}$ac_cv_type_signal" >&6 cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF for ac_func in strlcpy do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* 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_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strlcat do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" { #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char $ac_func (); /* 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_$ac_func) || defined (__stub___$ac_func) choke me #else char (*f) () = $ac_func; #endif #ifdef __cplusplus } #endif int main () { return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ## # Determine GCC Version ## if test "$DISABLE_GCC_CHECK" = "no"; then GCC_VERSION_FULL=`${CC} --version | sed -n '1s/^[^ ]* (.*) //;s/ .*$//;1p'` case "${GCC_VERSION_FULL}" in *2.95*) { { echo "$as_me:$LINENO: error: GCC 2.95.* is not supported. Please use a more recent (>= 3.0) version of GCC." >&5 echo "$as_me: error: GCC 2.95.* is not supported. Please use a more recent (>= 3.0) version of GCC." >&2;} { (exit 1); exit 1; }; } ;; *) echo "$as_me:$LINENO: result: GCC ${GCC_VERSION_FULL} is supported." >&5 echo "${ECHO_T}GCC ${GCC_VERSION_FULL} is supported." >&6 ;; esac fi ## # Determine OS ## # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` cat >>confdefs.h <<_ACEOF #define OS_TYPE "$host" _ACEOF case "$host" in *linux*) cat >>confdefs.h <<\_ACEOF #define OS LINUX _ACEOF cat >>confdefs.h <<\_ACEOF #define LINUX 1 _ACEOF ;; *freebsd*) cat >>confdefs.h <<\_ACEOF #define OS FREEBSD _ACEOF cat >>confdefs.h <<\_ACEOF #define FREEBSD 1 _ACEOF ;; *bsd*) cat >>confdefs.h <<\_ACEOF #define OS BSD _ACEOF cat >>confdefs.h <<\_ACEOF #define BSD 1 _ACEOF ;; *solaris*) cat >>confdefs.h <<\_ACEOF #define OS SOLARIS _ACEOF cat >>confdefs.h <<\_ACEOF #define SOLARIS 1 _ACEOF ;; *darwin*) cat >>confdefs.h <<\_ACEOF #define OS DARWIN _ACEOF cat >>confdefs.h <<\_ACEOF #define DARWIN 1 _ACEOF ;; *) cat >>confdefs.h <<\_ACEOF #define OS UNKNOWN_OS _ACEOF cat >>confdefs.h <<\_ACEOF #define UNKNOWN_OS 1 _ACEOF { echo "$as_me:$LINENO: WARNING: Your OS ($target_os) is not supported yet. Try playing with the build host and target options. " >&5 echo "$as_me: WARNING: Your OS ($target_os) is not supported yet. Try playing with the build host and target options. " >&2;} sleep 3 ;; esac ## # Define the global variables. ## ## # And we're done! ## ac_config_files="$ac_config_files Makefile doc/Makefile etc/Makefile lib/Makefile lib/bstring/Makefile src/Makefile src/output/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, don't put newlines in cache variables' values. # 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. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *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 \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" 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}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # Work around bugs in pre-3.0 UWIN ksh. $as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1; 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 # Name of the executable. as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # 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 # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. 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 ;; 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 { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # 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 sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # 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'" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by pads $as_me 1.2, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet 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 --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ pads config.status 1.2 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. 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=$1 ac_optarg=$2 ac_shift=shift ;; *) # This is not an option, so the user has probably given explicit # arguments. ac_option=$1 ac_need_defaults=false;; esac case $ac_option in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; 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 if \$ac_cs_recheck; then echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS section. # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "etc/Makefile" ) CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "lib/bstring/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/bstring/Makefile" ;; "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/output/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/output/Makefile" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers 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 to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./confstat$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@CYGPATH_W@,$CYGPATH_W,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@install_sh@,$install_sh,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t s,@mkdir_p@,$mkdir_p,;t t s,@AWK@,$AWK,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@am__leading_dot@,$am__leading_dot,;t t s,@AMTAR@,$AMTAR,;t t s,@am__tar@,$am__tar,;t t s,@am__untar@,$am__untar,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@DEPDIR@,$DEPDIR,;t t s,@am__include@,$am__include,;t t s,@am__quote@,$am__quote,;t t s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t s,@CCDEPMODE@,$CCDEPMODE,;t t s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@PCRE_OBJS@,$PCRE_OBJS,;t t s,@EXTRA_DEFINES@,$EXTRA_DEFINES,;t t s,@EXTRA_INCLUDES@,$EXTRA_INCLUDES,;t t s,@EXTRA_LIBS@,$EXTRA_LIBS,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # 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. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_HEADER section. # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' ac_uD=',;t' for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } # Do quote $f, to prevent DOS paths from being IFS'd. echo "$f";; *) # Relative if test -f "$f"; then # Build tree echo "$f" elif test -f "$srcdir/$f"; then # Source tree echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF # Transform confdefs.h into two sed scripts, `conftest.defines' and # `conftest.undefs', that substitutes the proper values into # config.h.in to produce config.h. The first handles `#define' # templates, and the second `#undef' templates. # And first: Protect against being on the right side of a sed subst in # config.status. Protect against being in an unquoted here document # in config.status. rm -f conftest.defines conftest.undefs # Using a here document instead of a string reduces the quoting nightmare. # Putting comments in sed scripts is not portable. # # `end' is used to avoid that the second main sed command (meant for # 0-ary CPP macros) applies to n-ary macro definitions. # See the Autoconf documentation for `clear'. cat >confdef2sed.sed <<\_ACEOF s/[\\&,]/\\&/g s,[\\$`],\\&,g t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF # If some macros were called several times there might be several times # the same #defines, which is useless. Nevertheless, we may not want to # sort them, since we want the *last* AC-DEFINE to be honored. uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF # Break up conftest.defines because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.defines >/dev/null do # Write a limited-size here document to $tmp/defines.sed. echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/defines.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines echo ' fi # grep' >>$CONFIG_STATUS echo >>$CONFIG_STATUS # Break up conftest.undefs because some shells have a limit on the size # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #undef templates' >>$CONFIG_STATUS rm -f conftest.tail while grep . conftest.undefs >/dev/null do # Write a limited-size here document to $tmp/undefs.sed. echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS echo ': clr' >>$CONFIG_STATUS sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS echo 'CEOF sed -f $tmp/undefs.sed $tmp/in >$tmp/out rm -f $tmp/in mv $tmp/out $tmp/in ' >>$CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail rm -f conftest.undefs mv conftest.tail conftest.undefs done rm -f conftest.undefs cat >>$CONFIG_STATUS <<\_ACEOF # 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. */ if test x"$ac_file" = x-; then echo "/* Generated by configure. */" >$tmp/config.h else echo "/* $ac_file. Generated by configure. */" >$tmp/config.h fi cat $tmp/in >>$tmp/config.h rm -f $tmp/in if test x"$ac_file" != x-; then if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } rm -f $ac_file mv $tmp/config.h $ac_file fi else cat $tmp/config.h rm -f $tmp/config.h fi # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # # CONFIG_COMMANDS section. # for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue ac_dest=`echo "$ac_file" | sed 's,:.*,,'` ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_dir=`(dirname "$ac_dest") 2>/dev/null || $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_dest" : 'X\(//\)[^/]' \| \ X"$ac_dest" : 'X\(//\)$' \| \ X"$ac_dest" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_dest" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p "$ac_dir" else as_dir="$ac_dir" as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Do not use `cd foo && pwd` to compute absolute paths, because # the directories may not exist. case `pwd` in .) ac_abs_builddir="$ac_dir";; *) case "$ac_dir" in .) ac_abs_builddir=`pwd`;; [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; *) ac_abs_builddir=`pwd`/"$ac_dir";; esac;; esac case $ac_abs_builddir in .) ac_abs_top_builddir=${ac_top_builddir}.;; *) case ${ac_top_builddir}. in .) ac_abs_top_builddir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; esac;; esac case $ac_abs_builddir in .) ac_abs_srcdir=$ac_srcdir;; *) case $ac_srcdir in .) ac_abs_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; esac;; esac case $ac_abs_builddir in .) ac_abs_top_srcdir=$ac_top_srcdir;; *) case $ac_top_srcdir in .) ac_abs_top_srcdir=$ac_abs_builddir;; [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; esac;; esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 echo "$as_me: executing $ac_dest commands" >&6;} case $ac_dest in depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`(dirname "$mf") 2>/dev/null || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || 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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`(dirname "$file") 2>/dev/null || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { if $as_mkdir_p; then mkdir -p $dirpart/$fdir else as_dir=$dirpart/$fdir as_dirs= while test ! -d "$as_dir"; do as_dirs="$as_dir $as_dirs" as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` done test ! -n "$as_dirs" || mkdir $as_dirs fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # 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 || { (exit 1); exit 1; } fi pads-1.2/install-sh0000755000076400007640000002176610126442331011250 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2004-09-10.20 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # 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}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit 0;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit 0;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -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 test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # 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 $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: pads-1.2/COPYING0000664000076400007640000004312710202573346010302 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy 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 of the License, 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 Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. pads-1.2/Makefile.am0000664000076400007640000000031610202573346011274 00000000000000## $Id: Makefile.am,v 1.1 2005/02/10 05:53:42 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies SUBDIRS = doc etc lib src EXTRA_DIST = COPYING CLEANFILES = -R auto4te.cache *~ *.log *.out *.cache pads-1.2/lib/0000777000076400007640000000000010254172540010066 500000000000000pads-1.2/lib/Makefile.in0000664000076400007640000003201510254172224012051 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ subdir = lib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = depcomp = am__depfiles_maybe = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-exec-recursive install-info-recursive \ install-recursive installcheck-recursive installdirs-recursive \ pdf-recursive ps-recursive uninstall-info-recursive \ uninstall-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign no-dependencies SUBDIRS = bstring all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh uninstall-info-am: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(mkdir_p) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-exec-am: install-info: install-info-recursive install-man: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-info-am uninstall-info: uninstall-info-recursive .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ clean clean-generic clean-recursive ctags ctags-recursive \ distclean distclean-generic distclean-recursive distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-exec \ install-exec-am install-info install-info-am install-man \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-generic \ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-info-am # 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: pads-1.2/lib/bstring/0000777000076400007640000000000010254172540011536 500000000000000pads-1.2/lib/bstring/bstrlib.h0000664000076400007640000001441310203712162013263 00000000000000/* * This source file is part of the bstring string library. This code was * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source * license. Refer to the accompanying documentation for details on usage and * license. */ /* * bstrlib.c * * This file is the core module for implementing the bstring functions. */ #ifndef BSTRLIB_INCLUDE #define BSTRLIB_INCLUDE #ifdef __cplusplus extern "C" { #endif #include #include #include #define BSTR_ERR (-1) #define BSTR_OK (0) typedef struct tagbstring * bstring; /* Copy functions */ #define cstr2bstr bfromcstr extern bstring bfromcstr (const char * str); extern bstring blk2bstr (const void * blk, int len); extern char * bstr2cstr (const bstring s, char z); extern int bcstrfree (char * s); extern bstring bstrcpy (const bstring b1); extern int bassign (bstring a, const bstring b); /* Destroy function */ extern int bdestroy (bstring b); /* Space allocation hinting function */ extern int balloc (bstring s, int len); /* Substring extraction */ extern bstring bmidstr (const bstring b, int left, int len); /* Various standard manipulations */ extern int bconcat (bstring b0, const bstring b1); extern int bconchar (bstring b0, char c); extern int bcatcstr (bstring b, const char * s); extern int bcatblk (bstring b, const unsigned char * s, int len); extern int binsert (bstring s1, int pos, const bstring s2, unsigned char fill); extern int binsertch (bstring s1, int pos, int len, unsigned char fill); extern int breplace (bstring b1, int pos, int len, const bstring b2, unsigned char fill); extern int bdelete (bstring s1, int pos, int len); extern int bsetstr (bstring b0, int pos, const bstring b1, unsigned char fill); /* Scan/search functions */ extern int bstricmp (const bstring b0, const bstring b1); extern int bstrnicmp (const bstring b0, const bstring b1, int n); extern int biseqcaseless (const bstring b0, const bstring b1); extern int biseq (const bstring b0, const bstring b1); extern int biseqcstr (const bstring b, const char * s); extern int bstrcmp (const bstring b0, const bstring b1); extern int bstrncmp (const bstring b0, const bstring b1, int n); extern int binstr (const bstring s1, int pos, const bstring s2); extern int binstrr (const bstring s1, int pos, const bstring s2); extern int bstrchr (const bstring b, int c); extern int bstrrchr (const bstring b, int c); extern int binchr (const bstring b0, int pos, const bstring b1); extern int binchrr (const bstring b0, int pos, const bstring b1); extern int bninchr (const bstring b0, int pos, const bstring b1); extern int bninchrr (const bstring b0, int pos, const bstring b1); extern int bfindreplace (bstring b, const bstring find, const bstring repl, int pos); struct bstrList { int qty; bstring entry[1]; }; /* String split and join functions */ extern struct bstrList * bsplit (const bstring str, unsigned char splitChar); extern struct bstrList * bsplits (const bstring str, const bstring splitStr); extern bstring bjoin (const struct bstrList * bl, const bstring sep); extern int bstrListDestroy (struct bstrList * sl); extern int bsplitcb (const bstring str, unsigned char splitChar, int pos, int (* cb) (void * parm, int ofs, int len), void * parm); extern int bsplitscb (const bstring str, const bstring splitStr, int pos, int (* cb) (void * parm, int ofs, int len), void * parm); /* Miscellaneous functions */ extern int bpattern (bstring b, int len); extern int btoupper (bstring b); extern int btolower (bstring b); extern bstring bformat (const char * fmt, ...); extern int bformata (bstring b, const char * fmt, ...); typedef int (*bNgetc) (void *parm); typedef size_t (* bNread) (void *buff, size_t elsize, size_t nelem, void *parm); /* Input functions */ extern bstring bgets (bNgetc getcPtr, void * parm, char terminator); extern bstring bread (bNread readPtr, void * parm); /* Stream functions */ extern struct bStream * bsopen (bNread readPtr, void * parm); extern void * bsclose (struct bStream * s); extern int bsbufflength (struct bStream * s, int sz); extern int bsreadln (bstring b, struct bStream * s, char terminator); extern int bsreadlns (bstring r, struct bStream * s, const bstring term); extern int bsread (bstring b, struct bStream * s, int n); extern int bsreadlna (bstring b, struct bStream * s, char terminator); extern int bsreadlnsa (bstring r, struct bStream * s, const bstring term); extern int bsreada (bstring b, struct bStream * s, int n); extern int bsunread (struct bStream * s, const bstring b); extern int bspeek (bstring r, const struct bStream * s); extern int bssplitscb (struct bStream * s, const bstring splitStr, int (* cb) (void * parm, int ofs, const bstring entry), void * parm); extern int bseof (const struct bStream * s); struct tagbstring { int mlen; int slen; unsigned char * data; }; /* Accessor macros */ #define blengthe(b, e) (((b) == (void *)0 || (b)->slen < 0) ? (unsigned int)(e) : ((b)->slen)) #define blength(b) (blengthe ((b), 0)) #define bdataofse(b, o, e) (((b) == (void *)0 || (b)->data == (void*)0) ? (unsigned char *)(e) : ((b)->data) + (o)) #define bdataofs(b, o) (bdataofse ((b), (o), (void *)0)) #define bdatae(b, e) (bdataofse (b, 0, e)) #define bdata(b) (bdataofs (b, 0)) #define bchare(b, p, e) ((((unsigned)(p)) < (unsigned)blength(b)) ? ((b)->data[(p)]) : (e)) #define bchar(b, p) bchare ((b), (p), '\0') /* Static constant string initialization macro */ #define bsStatic(q) {-__LINE__, sizeof(q)-1, (unsigned char *)(q)} /* Reference building macros */ #define cstr2tbstr btfromcstr #define btfromcstr(t,s) { \ (t).data = (unsigned char *) (s); \ (t).slen = (int) (strlen) ((char *)(t).data); \ (t).mlen = -1; \ } #define blk2tbstr(t,s,l) { \ (t).slen = l; \ (t).mlen = -1; \ (t).data = (unsigned char *) (s); \ } /* Write protection macros */ #define bwriteprotect(t) { if ((t).mlen >= 0) (t).mlen = -1; } #define bwriteallow(t) { if ((t).mlen == -1) (t).mlen = (t).slen + ((t).slen == 0); } #ifdef __cplusplus } #endif #endif pads-1.2/lib/bstring/util.h0000664000076400007640000000247110203712162012600 00000000000000/************************************************************************* * util.h * * Matt Shelton * * This header file contains information relating to the bstring/util.c * module. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: util.h,v 1.1 2005/02/13 17:54:58 mattshelton Exp $ * **************************************************************************/ /* INCLUDES ---------------------------------------- */ #include "bstrlib.h" /* PROTOTYPES -------------------------------------- */ int bltrim (bstring string); int brtrim (bstring string); int btrim (bstring string); pads-1.2/lib/bstring/Makefile.in0000664000076400007640000002537110254172225013531 00000000000000# Makefile.in generated by automake 1.9.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004 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@ SOURCES = $(libbstring_a_SOURCES) srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ 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 = : build_triplet = @build@ host_triplet = @host@ subdir = lib/bstring DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru libbstring_a_AR = $(AR) $(ARFLAGS) libbstring_a_LIBADD = am_libbstring_a_OBJECTS = bstrlib.$(OBJEXT) bstraux.$(OBJEXT) \ util.$(OBJEXT) libbstring_a_OBJECTS = $(am_libbstring_a_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = am__depfiles_maybe = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libbstring_a_SOURCES) DIST_SOURCES = $(libbstring_a_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ 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@ EXTRA_DEFINES = @EXTRA_DEFINES@ EXTRA_INCLUDES = @EXTRA_INCLUDES@ EXTRA_LIBS = @EXTRA_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PCRE_OBJS = @PCRE_OBJS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ac_ct_CC = @ac_ct_CC@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ prefix = @prefix@ program_transform_name = @program_transform_name@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ # $Id: Makefile.am,v 1.1 2005/02/13 17:54:58 mattshelton Exp $ AUTOMAKE_OPTIONS = foreign no-dependencies noinst_LIBRARIES = libbstring.a libbstring_a_SOURCES = bstrlib.c bstrlib.h bstraux.c bstraux.h util.c util.h INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/bstring/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign lib/bstring/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libbstring.a: $(libbstring_a_OBJECTS) $(libbstring_a_DEPENDENCIES) -rm -f libbstring.a $(libbstring_a_AR) libbstring.a $(libbstring_a_OBJECTS) $(libbstring_a_LIBADD) $(RANLIB) libbstring.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c .c.o: $(COMPILE) -c $< .c.obj: $(COMPILE) -c `$(CYGPATH_W) '$<'` uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -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-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-info-am # 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: pads-1.2/lib/bstring/bstraux.h0000664000076400007640000000521010203712162013305 00000000000000/* * This source file is part of the bstring string library. This code was * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source * license. Refer to the accompanying documentation for details on usage and * license. */ /* * bstraux.h * * This file is not necessarily part of the core bstring library itself, but * is just an auxilliary module which includes miscellaneous or trivial * functions. */ #ifndef BSTRAUX_INCLUDE #define BSTRAUX_INCLUDE #include "bstrlib.h" #ifdef __cplusplus extern "C" { #endif #define bstrDeclare(b) bstring (b) = NULL; #define bstrFree(b) {if ((b) != NULL && (b)->slen >= 0 && (b)->mlen >= (b)->slen) { bdestroy (b); (b) = NULL; }} /* Backward compatibilty with previous version of Bstrlib */ #define bAssign(a,b) ((bassign)((a), (b))) #define bSubs(b,pos,len,a,c) ((breplace)((b),(pos),(len),(a),(unsigned char)(c))) #define bStrchr(b,c) ((bstrchr)((b),(c))) #define bStrchrFast(b,c) ((bstrchr)((b),(c))) #define bCatCstr(b,s) ((bcatcstr)((b), (s))) #define bCatBlk(b,s,len) ((bcatblk)((b),(s),(len))) #define bCatStatic(b,s) bCatBlk ((b), (s), sizeof (s) - 1) #define bReplaceAll(b,find,repl,pos) ((bfindreplace)((b),(find),(repl),(pos))) #define bUppercase(b) ((btoupper)(b)) #define bLowercase(b) ((btolower)(b)) #define bCaselessCmp(a,b) ((bstricmp)(a,b)) #define bCaselessNCmp(a,b,n) ((bstrnicmp)(a,b,n)) /* Unusual functions */ extern int bTrunc (bstring b, int n); extern bstring bTail (bstring b, int n); extern bstring bHead (bstring b, int n); extern int bFill (bstring a, char c, int len); extern int bReplicate (bstring b, int n); extern int bReverse (bstring b); extern int bInsertChrs (bstring b, int pos, int len, unsigned char c, unsigned char fill); /* Spacing formatting */ extern int bJustifyLeft (bstring b, int space); extern int bJustifyRight (bstring b, int width, int space); extern int bJustifyMargin (bstring b, int width, int space); extern int bJustifyCenter (bstring b, int width, int space); /* Esoteric standards specific functions */ extern char * bStr2NetStr (const bstring b); extern bstring bNetStr2Bstr (const char * buf); extern bstring bBase64Encode (const bstring b); extern bstring bBase64Decode (const bstring b); extern bstring bUuDecode (const bstring src); extern bstring bUuEncode (const bstring src); extern bstring bYEncode (const bstring src); extern bstring bYDecode (const bstring src); #ifdef __cplusplus } #endif #endif pads-1.2/lib/bstring/util.c0000664000076400007640000000516610203712162012577 00000000000000/************************************************************************* * bstring/util.c * * Matt Shelton * * This file contains utility functions to the Better String Library. * * Copyright (C) 2004 Matt Shelton * * 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 of the License, 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: util.c,v 1.1 2005/02/13 17:54:58 mattshelton Exp $ * **************************************************************************/ #include "util.h" /* ---------------------------------------------------------- * FUNCTION : bltrim * DESCRIPTION : This function will trim the whitespace from * : the left side of a string. * INPUT : 0 - String * ---------------------------------------------------------- */ int bltrim (bstring string) { int i; int len = 0; /* Find Whitespace */ for (i = 0; i < string->slen; i++) { if (string->data[i] == ' ' || string->data[i] == '\t') len++; else break; } /* Remove Whitespace */ if (len > 0) bdelete(string, 0, len); return 0; } /* ---------------------------------------------------------- * FUNCTION : brtrim * DESCRIPTION : This function will trim the whitespace from * : the right side of a string. * INPUT : 0 - String * ---------------------------------------------------------- */ int brtrim (bstring string) { int i; int len = 0; /* Find Whitespace */ for (i = (string->slen - 1); i > 0; i--) { if (string->data[i] == ' ' || string->data[i] == '\t') len++; else break; } /* Remove Whitespace */ if (len > 0) bdelete(string, i + 1, len); return 0; } /* ---------------------------------------------------------- * FUNCTION : btrim * DESCRIPTION : This function will trim the whitespace from * : both sides of a bstring. * INPUT : 0 - String * ---------------------------------------------------------- */ int btrim (bstring string) { if ((bltrim(string)) != 0) return -1; if ((brtrim(string)) != 0) return -1; return 0; } pads-1.2/lib/bstring/bstrlib.c0000664000076400007640000016351710203712162013270 00000000000000/* * This source file is part of the bstring string library. This code was * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source * license. Refer to the accompanying documentation for details on usage and * license. */ /* * bstrlib.c * * This file is the core module for implementing the bstring functions. */ #include #include #include #include #include #include "bstrlib.h" /* Optionally include a mechanism for debugging memory */ #if defined(MEMORY_DEBUG) || defined(BSTRLIB_MEMORY_DEBUG) #include "memdbg.h" #endif /* Just a length safe wrapper for memmove. */ #define bBlockCopy(D,S,L) { if ((L) > 0) memmove ((D),(S),(L)); } /* Compute the snapped size for a given requested size. By snapping to powers of 2 like this, repeated reallocations are avoided. */ static int snapUpSize (int i) { if (i < 8) { i = 8; } else { unsigned int j; j = i; /* Assumes your system is at least 32 bits, and your string is at most 4GB is size. */ j |= (j >> 1); j |= (j >> 2); j |= (j >> 4); j |= (j >> 8); j |= (j >> 16); i = j + 1; /* Least power of two greater than i */ } return i; } /* int balloc (bstring b, int len) * * Increase the size of the memory backing the bstring b to at least len. */ int balloc (bstring b, int len) { if (b == NULL || b->data == NULL || b->slen < 0 || b->mlen < 0 || b->mlen < b->slen || len <= 0) { return BSTR_ERR; } if (len >= b->mlen) { unsigned char * x; len = snapUpSize (len); /* Assume probability of a non-moving realloc is 0.125 */ if (7 * b->mlen < 8 * b->slen) { /* If slen is close to mlen in size then use realloc to reduce the memory defragmentation */ x = (unsigned char *) realloc (b->data, len); if (x == NULL) return BSTR_ERR; } else { /* If slen is not close to mlen then avoid the penalty of copying the extra bytes that are allocated, but not considered part of the string */ x = (unsigned char *) malloc (len); if (x == NULL) { x = (unsigned char *) realloc (b->data, len); if (x == NULL) return BSTR_ERR; } else { if (b->slen) memcpy ((char *) x, (char *) b->data, b->slen); free (b->data); } } b->data = x; b->mlen = len; b->data[b->slen] = '\0'; } return BSTR_OK; } /* bstring bfromcstr (const char * str) * * Create a bstring which contains the content of the '\0' terminated char * * buffer str. */ bstring bfromcstr (const char * str) { bstring b; int i,j; if (str == NULL) return NULL; b = (bstring) malloc (sizeof (struct tagbstring)); if (b == NULL) return NULL; j = (int) (strlen) (str); b->slen = j; i = j + (2 - (j != 0)); i = snapUpSize (i); b->mlen = i; b->data = (unsigned char *) malloc (b->mlen); if (b->data == NULL) { free (b); return NULL; } memcpy (b->data, str, j+1); return b; } /* bstring blk2bstr (const void * blk, int len) * * Create a bstring which contains the content of the block blk of length * len. */ bstring blk2bstr (const void * blk, int len) { bstring b; int i; if (blk == NULL || len < 0) return NULL; b = (bstring) malloc (sizeof (struct tagbstring)); if (b == NULL) return NULL; b->slen = len; i = len + (2 - (len != 0)); i = snapUpSize (i); b->mlen = i; b->data = (unsigned char *) malloc (b->mlen) ; if (b->data == NULL) { free (b); return NULL; } if (len > 0) memcpy (b->data, blk, len); b->data[len] = '\0'; return b; } /* char * bstr2cstr (const bstring s, char z) * * Create a '\0' terminated char * buffer which is equal to the contents of * the bstring s, except that any contained '\0' characters are converted to * the character in z. This returned value should be freed with a free() * call, by the calling application. */ char * bstr2cstr (const bstring b, char z) { int i,l; char * r; if (b == NULL || b->slen < 0 || b->data == NULL) return NULL; l = b->slen; r = (char *) malloc (l + 1); if (r == NULL) return r; for (i=0; i < l; i ++) { r[i] = (char) ((b->data[i] == '\0') ? z : (char) (b->data[i])); } r[l] = '\0'; return r; } /* int bcstrfree (const char * s) * * Frees a C-string generated by bstr2cstr (). This is normally unnecessary * since it just wraps a call to free (), however, if malloc () and free () * have been redefined as a macros within the bstrlib module (via defining * them in memdbg.h after defining BSTRLIB_MEMORY_DEBUG) with some * difference in behaviour from the std library functions, then this allows * a correct way of freeing the memory that allows higher level code to be * independent from these macro redefinitions. */ int bcstrfree (char * s) { if (s) { free (s); return BSTR_OK; } return BSTR_ERR; } /* int bconcat (bstring b0, const bstring b1) * * Concatenate the bstring b1 to the bstring b0. */ int bconcat (bstring b0, const bstring b1) { int len, d; if (b0 == NULL || b1 == NULL) return BSTR_ERR; d = b0->slen; len = b1->slen; if ((d | (b0->mlen - d) | len) < 0) return BSTR_ERR; if (balloc (b0, d + len + 1) != BSTR_OK) return BSTR_ERR; bBlockCopy (&b0->data[d], &b1->data[0], len); b0->data[d + len] = '\0'; b0->slen += len; return 0; } /* int bconchar (bstring b, char c) * * Concatenate the single character c to the bstring b. */ int bconchar (bstring b, char c) { int d; if (b == NULL) return BSTR_ERR; d = b->slen; if ((d | (b->mlen - d)) < 0 || balloc (b, d + 2) != BSTR_OK) return BSTR_ERR; b->data[d] = (unsigned char) c; b->data[d + 1] = '\0'; b->slen++; return 0; } /* int bcatcstr (bstring b, const char * s) * * Concatenate a char * string to a bstring. */ int bcatcstr (bstring b, const char * s) { struct tagbstring t; char * d; int i, l; if (b == NULL || b->data == NULL || b->slen < 0 || s == NULL) return BSTR_ERR; /* Optimistically concatenate directly */ l = b->mlen - b->slen; d = (char *) &b->data[b->slen]; for (i=0; i < l; i++) { if ((*d++ = *s++) == '\0') { b->slen += i; return BSTR_OK; } } b->slen += i; /* Need to explicitely resize and concatenate tail */ cstr2tbstr (t, s); return bconcat (b, &t); } /* int bcatblk (bstring b, unsigned char * s, int len) * * Concatenate a fixed length buffer to a bstring. */ int bcatblk (bstring b, const unsigned char * s, int len) { struct tagbstring t; if (s == NULL || len < 0) return BSTR_ERR; blk2tbstr (t, s, len); return bconcat (b, &t); } /* bstring bstrcpy (const bstring b) * * Create a copy of the bstring b. */ bstring bstrcpy (const bstring b) { bstring b0; int i,j; /* Attempted to copy an invalid string? */ if (b == NULL || b->slen < 0 || b->data == NULL) return NULL; b0 = (bstring) malloc (sizeof (struct tagbstring)); if (b0 == NULL) { /* Unable to allocate memory for string header */ return NULL; } i = b->slen; j = snapUpSize (i + 1); b0->data = (unsigned char *) malloc (j); if (b0->data == NULL) { j = i + 1; b0->data = (unsigned char *) malloc (j); if (b0->data == NULL) { /* Unable to allocate memory for string data */ free (b0); return NULL; } } b0->mlen = j; b0->slen = i; if (i) memcpy ((char *) b0->data, (char *) b->data, i); b0->data[b0->slen] = '\0'; return b0; } /* int bassign (bstring a, const bstring b) * * Overwrite the string a with the contents of string b. */ int bassign (bstring a, const bstring b) { if (b == NULL || b->data == NULL || b->slen < 0 ) return BSTR_ERR; if (b->slen != 0) { if (balloc (a, b->slen) != BSTR_OK) return BSTR_ERR; memmove (a->data, b->data, b->slen); } else { if (a == NULL || a->data == NULL || a->mlen < a->slen || a->slen < 0 || a->mlen == 0) return BSTR_ERR; } a->data[b->slen] = '\0'; a->slen = b->slen; return BSTR_OK; } #define ascii(c) ((unsigned char)(c) < 128) #define upcase(c) ((c) + (((ascii(c) && islower(c)) ? ('A'-'a') : 0))) #define downcase(c) ((c) + (((ascii(c) && isupper(c)) ? ('a'-'A') : 0))) /* int btoupper (bstring b) * * Convert contents of bstring to upper case. */ int btoupper (bstring b) { int i, len; if (b == NULL || b->data == NULL || b->mlen < b->slen || b->slen < 0) return BSTR_ERR; for (i=0, len = b->slen; i < len; i++) { b->data[i] = (unsigned char) upcase (b->data[i]); } return BSTR_OK; } /* int btolower (bstring b) * * Convert contents of bstring to lower case. */ int btolower (bstring b) { int i, len; if (b == NULL || b->data == NULL || b->mlen < b->slen || b->slen < 0) return BSTR_ERR; for (i=0, len = b->slen; i < len; i++) { b->data[i] = (unsigned char) downcase (b->data[i]); } return 0; } /* int bstricmp (const bstring b0, const bstring b1) * * Compare two strings without differentiating between case. The return * value is the difference of the values of the characters where the two * strings first differ, (taking a '\0' to be the character at the end of * any bstring) otherwise 0 is returned indicating that the strings are * equal. */ int bstricmp (const bstring b0, const bstring b1) { int i, v, n; if (bdata (b0) == NULL || b0->slen < 0 || bdata (b1) == NULL || b1->slen < 0) return SHRT_MIN; n = b0->slen; if (n > b1->slen) n = b1->slen; if (b0->slen == b1->slen && b0->data == b1->data) return 0; for (i = 0; i < n; i ++) { v = ((char) downcase (b0->data[i])); v -= ((char) downcase (b1->data[i])); if (v != 0) return v; if (b0->data[i] == '\0') return 0; } if (b0->slen > n) return ((char) downcase (b0->data[n])); if (b1->slen > n) return - ((char) downcase (b1->data[n])); return 0; } /* int bstrnicmp (const bstring b0, const bstring b1, int n) * * Compare two strings without differentiating between case for at most n * characters. If the position where the two strings first differ is * before the nth position, the return value is the difference of the values * of the characters, (taking a '\0' to be the character at the end of any * bstring) otherwise 0 is returned. */ int bstrnicmp (const bstring b0, const bstring b1, int n) { int i, v, m; if (bdata (b0) == NULL || b0->slen < 0 || bdata (b1) == NULL || b1->slen < 0 || n < 0) return SHRT_MIN; m = n; if (m > b0->slen) m = b0->slen; if (m > b1->slen) m = b1->slen; if (b0->data != b1->data) { for (i = 0; i < m; i ++) { v = ((char) downcase (b0->data[i])); v -= ((char) downcase (b1->data[i])); if (v != 0) return v; if (b0->data[i] == '\0') return 0; } } if (n == m || b0->slen == b1->slen) return 0; if (b0->slen > m) return (char) downcase (b0->data[m]); return - (char) downcase (b1->data[m]); } /* int biseqcaseless (const bstring b0, const bstring b1) * * Compare two strings for equality without differentiating between case. * If the strings differ other than in case, 0 is returned, if the strings * are the same, 1 is returned, if there is an error, -1 is returned. If * the length of the strings are different, this function is O(1). '\0' * termination characters are not treated in any special way. */ int biseqcaseless (const bstring b0, const bstring b1) { int i, n; if (bdata (b0) == NULL || b0->slen < 0 || bdata (b1) == NULL || b1->slen < 0) return BSTR_ERR; if (b0->slen != b1->slen) return 0; if (b0->data == b1->data || b0->slen == 0) return 1; for (i=0, n=b0->slen; i < n; i++) { if (b0->data[i] != b1->data[i]) { unsigned char c = (unsigned char) downcase (b0->data[i]); if (c != (unsigned char) downcase (b1->data[i])) return 0; } } return 1; } /* int biseq (const bstring b0, const bstring b1) * * Compare the string b0 and b1. If the strings differ, 0 is returned, if * the strings are the same, 1 is returned, if there is an error, -1 is * returned. If the length of the strings are different, this function is * O(1). '\0' termination characters are not treated in any special way. */ int biseq (const bstring b0, const bstring b1) { if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL || b0->slen < 0 || b1->slen < 0) return BSTR_ERR; if (b0->slen != b1->slen) return 0; if (b0->data == b1->data || b0->slen == 0) return 1; return !memcmp (b0->data, b1->data, b0->slen); } /* int biseqcstr (const bstring b, const char *s) * * Compare the bstring b and char * string s. The C string s must be '\0' * terminated at exactly the length of the bstring b, and the contents * between the two must be identical with the bstring b with no '\0' * characters for the two contents to be considered equal. This is * equivalent to the condition that their current contents will be always be * equal when comparing them in the same format after converting one or the * other. If the strings are equal 1 is returned, if they are unequal 0 is * returned and if there is a detectable error BSTR_ERR is returned. */ int biseqcstr (const bstring b, const char * s) { int i; if (b == NULL || s == NULL || b->data == NULL || b->slen < 0) return BSTR_ERR; for (i=0; i < b->slen; i++) { if (s[i] == '\0' || b->data[i] != s[i]) return 0; } return s[i] == '\0'; } /* int bstrcmp (const bstring b0, const bstring b1) * * Compare the string b0 and b1. If there is an error, SHRT_MIN is returned, * otherwise a value less than or greater than zero, indicating that the * string pointed to by b0 is lexicographically less than or greater than * the string pointed to by b1 is returned. If the the string lengths are * unequal but the characters up until the length of the shorter are equal * then a value less than, or greater than zero, indicating that the string * pointed to by b0 is shorter or longer than the string pointed to by b1 is * returned. 0 is returned if and only if the two strings are the same. If * the length of the strings are different, this function is O(n). Like its * standard C library counter part strcmp, the comparison does not proceed * past any '\0' termination characters encountered. */ int bstrcmp (const bstring b0, const bstring b1) { int i, v, n; if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL || b0->slen < 0 || b1->slen < 0) return SHRT_MIN; n = b0->slen; if (n > b1->slen) n = b1->slen; if (b0->slen == b1->slen && (b0->data == b1->data || b0->slen == 0)) return 0; for (i = 0; i < n; i ++) { v = ((char) b0->data[i]) - ((char) b1->data[i]); if (v != 0) return v; if (b0->data[i] == '\0') return 0; } if (b0->slen > n) return 1; if (b1->slen > n) return -1; return 0; } /* int bstrncmp (const bstring b0, const bstring b1, int n) * * Compare the string b0 and b1 for at most n characters. If there is an * error, SHRT_MIN is returned, otherwise a value is returned as if b0 and * b1 were first truncated to at most n characters then bstrcmp was called * with these new strings are paremeters. If the length of the strings are * different, this function is O(n). Like its standard C library counter * part strcmp, the comparison does not proceed past any '\0' termination * characters encountered. */ int bstrncmp (const bstring b0, const bstring b1, int n) { int i, v, m; if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL || b0->slen < 0 || b1->slen < 0) return SHRT_MIN; m = n; if (m > b0->slen) m = b0->slen; if (m > b1->slen) m = b1->slen; if (b0->data != b1->data) { for (i = 0; i < m; i ++) { v = ((char) b0->data[i]) - ((char) b1->data[i]); if (v != 0) return v; if (b0->data[i] == '\0') return 0; } } if (n == m || b0->slen == b1->slen) return 0; if (b0->slen > m) return 1; return -1; } /* bstring bmidstr (const bstring b, int left, int len) * * Create a bstring which is the substring of b starting from position left * and running for a length len (clamped by the end of the bstring b.) If * b is detectably invalid, then NULL is returned. The section described * by (left, len) is clamped to the boundaries of b. */ bstring bmidstr (const bstring b, int left, int len) { if (b == NULL || b->slen < 0 || b->data == NULL) return NULL; if (left < 0) { len += left; left = 0; } if (len > b->slen - left) len = b->slen - left; if (len <= 0) return bfromcstr (""); return blk2bstr (b->data + left, len); } /* int bdelete (bstring b, int pos, int len) * * Removes characters from pos to pos+len-1 inclusive and shifts the tail of * the bstring starting from pos+len to pos. len must be positive for this * call to have any effect. The section of the string described by (pos, * len) is clamped to boundaries of the bstring b. */ int bdelete (bstring b, int pos, int len) { /* Clamp to left side of bstring */ if (pos < 0) { len += pos; pos = 0; } if (len < 0 || b == NULL || b->data == NULL || b->slen < 0 || b->mlen < b->slen) return BSTR_ERR; if (len > 0 && pos < b->slen) { if (pos + len >= b->slen) { b->slen = pos; } else { bBlockCopy ((char *) (b->data + pos), (char *) (b->data + pos + len), b->slen - (pos+len)); b->slen -= len; } b->data[b->slen] = '\0'; } return BSTR_OK; } /* int bdestroy (bstring b) * * free up the bstring. Note that if b is detectably invalid or not writable * then no action is performed and BSTR_ERR is returned. Like a freed memory * allocation, dereferences, writes or any other action on b after it has * been bdestroyed is undefined. */ int bdestroy (bstring b) { if (b == NULL || b->slen < 0 || b->mlen <= 0 || b->data == NULL) return BSTR_ERR; free (b->data); /* In case there is any stale usage, there is one more chance to notice this error. */ b->slen = -1; b->mlen = -__LINE__; b->data = NULL; free (b); return 0; } /* int binstr (const bstring b1, int pos, const bstring b2) * * Search for the bstring b2 in b1 starting from position pos, and searching * forward. If it is found then return with the first position where it is * found, otherwise return BSTR_ERR. Note that this is just a brute force * string searcher that does not attempt clever things like the Boyer-Moore * search algorithm. Because of this there are many degenerate cases where * this can take much longer than it needs to. */ int binstr (const bstring b1, int pos, const bstring b2) { int j, i, l, ll; unsigned char * d0, * d1; if (b1 == NULL || b1->data == NULL || b1->slen < 0 || b2 == NULL || b2->data == NULL || b2->slen < 0) return BSTR_ERR; if (b1->slen == pos) return (b2->slen == 0)?pos:BSTR_ERR; if (b1->slen < pos || pos < 0) return BSTR_ERR; if (b2->slen == 0) return pos; l = b1->slen - b2->slen + 1; /* No space to find such a string? */ if (l <= pos) return BSTR_ERR; /* An obvious alias case */ if (b1->data == b2->data && pos == 0) return 0; i = pos; j = 0; d0 = b2->data; d1 = b1->data; ll = b2->slen; for (;;) { if (d0[j] == d1[i + j]) { j ++; if (j >= ll) return i; } else { i ++; if (i >= l) break; j=0; } } return BSTR_ERR; } /* int binstrr (const bstring b1, int pos, const bstring b2) * * Search for the bstring b2 in b1 starting from position pos, and searching * backward. If it is found then return with the first position where it is * found, otherwise return BSTR_ERR. Note that this is just a brute force * string searcher that does not attempt clever things like the Boyer-Moore * search algorithm. Because of this there are many degenerate cases where * this can take much longer than it needs to. */ int binstrr (const bstring b1, int pos, const bstring b2) { int j, i, l; unsigned char * d0, * d1; if (b1 == NULL || b1->data == NULL || b1->slen < 0 || b2 == NULL || b2->data == NULL || b2->slen < 0) return BSTR_ERR; if (b1->slen == pos && b2->slen == 0) return pos; if (b1->slen < pos || pos < 0) return BSTR_ERR; if (b2->slen == 0) return pos; /* Obvious alias case */ if (b1->data == b2->data && pos == 0 && b2->slen <= b1->slen) return 0; i = pos; if ((l = b1->slen - b2->slen) < 0) return BSTR_ERR; /* If no space to find such a string then snap back */ if (l + 1 <= i) i = l; j = 0; d0 = b2->data; d1 = b1->data; l = b2->slen; for (;;) { if (d0[j] == d1[i + j]) { j ++; if (j >= l) return i; } else { i --; if (i < 0) break; j=0; } } return BSTR_ERR; } /* int bstrchr (const bstring b, int c) * * Search for the character c in b forwards from the start of the string. */ int bstrchr (const bstring b, int c) { unsigned char * p; if (b == NULL || b->data == NULL || b->slen <= 0) return BSTR_ERR; p = memchr (b->data, (unsigned char) c, b->slen); if (p) return (int) (p - b->data); return BSTR_ERR; } /* int bstrrchr (const bstring b, int c) * * Search for the character c in b backwards from the end of the string. */ int bstrrchr (const bstring b, int c) { int i; if (b == NULL || b->data == NULL || b->slen <= 0) return BSTR_ERR; for (i=b->slen-1; i >= 0; i--) { if (b->data[i] == (unsigned char) c) return i; } return BSTR_ERR; } #define LONG_LOG_BITS_QTY (5) #define LONG_BITS_QTY (1 << LONG_LOG_BITS_QTY) #define LONG_TYPE unsigned long struct charField { LONG_TYPE content[(1 << CHAR_BIT) / LONG_BITS_QTY]; }; #define testInCharField(cf,c) ((cf)->content[(c) >> LONG_LOG_BITS_QTY] & (((long)1) << ((c) & (LONG_BITS_QTY-1)))) /* Convert a bstring to charField */ static int buildCharField (struct charField * cf, const bstring b1) { int i; if (b1 == NULL || b1->data == NULL || b1->slen <= 0) return BSTR_ERR; memset ((void *) &cf->content, 0, sizeof (struct charField)); for (i=0; i < b1->slen; i++) { unsigned int c = (unsigned int) b1->data[i]; cf->content[c >> LONG_LOG_BITS_QTY] |= ((LONG_TYPE) 1) << (c & (LONG_BITS_QTY-1)); } return 0; } static void invertCharField (struct charField * cf) { int i; for (i=0; i < ((1 << CHAR_BIT) / LONG_BITS_QTY); i++) cf->content[i] = ~cf->content[i]; } /* Inner engine for binchr */ static int binchrCF (const unsigned char * data, int len, int pos, const struct charField * cf) { int i; for (i=pos; i < len; i++) { unsigned int c = (unsigned int) data[i]; if (testInCharField (cf, c)) return i; } return BSTR_ERR; } /* int binchr (const bstring b0, int pos, const bstring b1); * * Search for the first position in b0 starting from pos or after, in which * one of the characters in b1 is found and return it. If such a position * does not exist in b0, then BSTR_ERR is returned. */ int binchr (const bstring b0, int pos, const bstring b1) { struct charField chrs; if (pos < 0 || b0 == NULL || b0->data == NULL || b0->slen <= pos) return BSTR_ERR; if (buildCharField (&chrs, b1) < 0) return BSTR_ERR; return binchrCF (b0->data, b0->slen, pos, &chrs); } /* Inner engine for binchrr */ static int binchrrCF (const unsigned char * data, int pos, const struct charField * cf) { int i; for (i=pos; i >= 0; i--) { unsigned int c = (unsigned int) data[i]; if (testInCharField (cf, c)) return i; } return BSTR_ERR; } /* int binchrr (const bstring b0, int pos, const bstring b1); * * Search for the last position in b0 no greater than pos, in which one of * the characters in b1 is found and return it. If such a position does not * exist in b0, then BSTR_ERR is returned. */ int binchrr (const bstring b0, int pos, const bstring b1) { struct charField chrs; if (pos < 0 || b0 == NULL || b0->data == NULL || b0->slen < pos) return BSTR_ERR; if (pos == b0->slen) pos--; if (buildCharField (&chrs, b1) < 0) return BSTR_ERR; return binchrrCF (b0->data, pos, &chrs); } /* int bninchr (const bstring b0, int pos, const bstring b1); * * Search for the first position in b0 starting from pos or after, in which * none of the characters in b1 is found and return it. If such a position * does not exist in b0, then BSTR_ERR is returned. */ int bninchr (const bstring b0, int pos, const bstring b1) { struct charField chrs; if (pos < 0 || b0 == NULL || b0->data == NULL || b0->slen <= pos) return BSTR_ERR; if (buildCharField (&chrs, b1) < 0) return BSTR_ERR; invertCharField (&chrs); return binchrCF (b0->data, b0->slen, pos, &chrs); } /* int bninchrr (const bstring b0, int pos, const bstring b1); * * Search for the last position in b0 no greater than pos, in which none of * the characters in b1 is found and return it. If such a position does not * exist in b0, then BSTR_ERR is returned. */ int bninchrr (const bstring b0, int pos, const bstring b1) { struct charField chrs; if (pos < 0 || b0 == NULL || b0->data == NULL || b0->slen < pos) return BSTR_ERR; if (pos == b0->slen) pos--; if (buildCharField (&chrs, b1) < 0) return BSTR_ERR; invertCharField (&chrs); return binchrrCF (b0->data, pos, &chrs); } /* int bsetstr (bstring b0, int pos, bstring b1, unsigned char fill) * * Overwrite the string b0 starting at position pos with the string b1. If * the position pos is past the end of b0, then the character "fill" is * appended as necessary to make up the gap between the end of b0 and pos. * If b1 is NULL, it behaves as if it were a 0-length string. */ int bsetstr (bstring b0, int pos, const bstring b1, unsigned char fill) { int d; int newlen; if (pos < 0 || b0 == NULL || b0->slen < 0 || b0->mlen < b0->slen) return BSTR_ERR; if (b1 != NULL && (b1->slen < 0 || b1->data == NULL)) return BSTR_ERR; /* Aliasing case */ if ((b1 != NULL) && (b0->data == b1->data) && (pos < b0->slen)) { bstring tmp = bstrcpy (b1); if (tmp == NULL) return BSTR_ERR; d = bsetstr (b0, pos, tmp, fill); bdestroy (tmp); return d; } /* Increase memory size if necessary */ d = pos + blength (b1); if (balloc (b0, d + 1) != BSTR_OK) return BSTR_ERR; newlen = b0->slen; /* Fill in "fill" character as necessary */ if (pos > newlen) { int i; for (i = b0->slen; i < pos; i ++) b0->data[i] = fill; newlen = pos; } /* Copy b1 to position pos in b0. */ if (b1 != NULL) { bBlockCopy ((char *) (b0->data + pos), (char *) b1->data, b1->slen); } /* Indicate the potentially increased size of b0 */ if (d > newlen) newlen = d; b0->slen = newlen; b0->data[newlen] = '\0'; return BSTR_OK; } /* int binsert (bstring b1, int pos, bstring b2, unsigned char fill) * * Inserts the string b2 into b1 at position pos. If the position pos is * past the end of b1, then the character "fill" is appended as necessary to * make up the gap between the end of b1 and pos. Unlike bsetstr, binsert * does not allow b2 to be NULL. */ int binsert (bstring b1, int pos, const bstring b2, unsigned char fill) { int d, l; if (pos < 0 || b1 == NULL || b2 == NULL || b1->slen < 0 || b2->slen < 0 || b1->mlen < b1->slen) return BSTR_ERR; /* Aliasing case */ if ((unsigned int)(b2->data - b1->data) < (unsigned int)b1->slen) { bstring tmp; d = binsert (b1, pos, tmp = bstrcpy (b2), fill); bdestroy (tmp); return d; } /* Compute the two possible end pointers */ d = b1->slen + b2->slen; l = pos + b2->slen; if (l > d) { /* Inserting past the end of the string */ if (balloc (b1, l + 1) != BSTR_OK) return BSTR_ERR; for (d = b1->slen; d < pos; d++) b1->data[d] = fill; b1->slen = l; } else { /* Inserting in the middle of the string */ if (balloc (b1, d + 1) != BSTR_OK) return BSTR_ERR; for (l = d - 1; l >= pos + b2->slen; l--) { b1->data[l] = b1->data[l - b2->slen]; } b1->slen = d; } bBlockCopy (b1->data + pos, b2->data, b2->slen); b1->data[b1->slen] = '\0'; return 0; } /* int breplace (bstring b1, int pos, int len, bstring b2, * unsigned char fill) * * Replace a section of a string from pos for a length len with the string b2. * fill is used is pos > b1->slen. */ int breplace (bstring b1, int pos, int len, const bstring b2, unsigned char fill) { int ret; if (pos < 0 || len < 0 || b1 == NULL || b2 == NULL || b1->data == NULL || b2->data == NULL || b1->slen < 0 || b2->slen < 0 || b1->mlen < b1->slen) return BSTR_ERR; /* Straddles the end? */ if (pos + len >= b1->slen) { if ((ret = bsetstr (b1, pos, b2, fill)) < 0) return ret; if (pos + b2->slen < b1->slen) { b1->slen = pos + b2->slen; b1->data[b1->slen] = '\0'; } return ret; } /* Aliasing case */ if ((unsigned int)(b2->data - b1->data) < (unsigned int)b1->slen) { bstring tmp; ret = breplace (b1, pos, len, tmp = bstrcpy (b2), fill); bdestroy (tmp); return ret; } if (b2->slen > len) { if (balloc (b1, b1->slen + b2->slen - len) != BSTR_OK) return BSTR_ERR; } if (b2->slen != len) memmove (b1->data + pos + b2->slen, b1->data + pos + len, b1->slen - (pos + len)); memcpy (b1->data + pos, b2->data, b2->slen); b1->slen += b2->slen - len; b1->data[b1->slen] = '\0'; return BSTR_OK; } /* int bfindreplace (bstring b, const bstring find, const bstring repl, * int pos) * * Replace all occurrences of a find string with a replace string after a * given point in a bstring. */ int bfindreplace (bstring b, const bstring find, const bstring repl, int pos) { int i, ret, slen, mlen, delta, acc; int * d; if (b == NULL || b->data == NULL || find == NULL || find->data == NULL || repl == NULL || repl->data == NULL || pos < 0 || find->slen <= 0 || b->mlen < 0 || b->slen > b->mlen || b->slen < 0 || repl->slen < 0) return BSTR_ERR; if (pos > b->slen - find->slen) return 0; /* Alias with find string */ i = find->data - b->data; if (pos - find->slen < i && i < b->slen) { bstring t; i = bfindreplace (b, t = bstrcpy (find), repl, pos); bdestroy (t); return i; } /* Alias with repl string */ i = repl->data - b->data; if (pos - repl->slen < i && i < b->slen) { bstring t; i = bfindreplace (b, find, t = bstrcpy (repl), pos); bdestroy (t); return i; } delta = find->slen - repl->slen; /* in-place replacement since find and replace strings are of equal length */ if (delta == 0) { while ((pos = binstr (b, pos, find)) >= 0) { memcpy (b->data + pos, repl->data, repl->slen); pos += find->slen; } return 0; } /* shrinking replacement since find->slen > repl->slen */ if (delta > 0) { acc = 0; while ((i = binstr (b, pos, find)) >= 0) { if (acc && i > pos) { memmove (b->data + pos - acc, b->data + pos, i - pos); } if (repl->slen) { memmove (b->data + i - acc, repl->data, repl->slen); } acc += delta; pos = i + find->slen; } if (acc) { i = b->slen; if (i > pos) { memmove (b->data + pos - acc, b->data + pos, i - pos); } b->slen -= acc; b->data[b->slen] = '\0'; } return 0; } /* expanding replacement since find->slen < repl->slen. Its a lot more complicated. */ mlen = 8; d = (int *) malloc (sizeof (int *) * mlen); if (d == NULL) return BSTR_ERR; slen = 0; while ((pos = binstr (b, pos, find)) >= 0) { int * t; if (slen + 1 >= mlen) { mlen += mlen; t = (int *) realloc (d, sizeof (int *) * mlen); if (t == NULL) { free (d); return BSTR_ERR; } d = t; } d[slen] = pos; slen++; pos += find->slen; } d[slen] = b->slen; acc = slen * (-delta); if (BSTR_OK == (ret = balloc (b, b->slen + acc + 1))) { b->slen += acc; for (i = slen-1; i >= 0; i--) { int s, l; s = d[i] + find->slen; l = d[i+1] - s; if (l) { memmove (b->data + s + acc, b->data + s, l); } if (repl->slen) { memmove (b->data + s + acc - repl->slen, repl->data, repl->slen); } acc += delta; } b->data[b->slen] = '\0'; } free (d); return ret; } /* int binsertch (bstring b, int pos, int len, unsigned char fill) * * Inserts the character fill repeatedly into b at position pos for a * length len. If the position pos is past the end of b, then the * character "fill" is appended as necessary to make up the gap between the * end of b and the position pos + len. */ int binsertch (bstring b, int pos, int len, unsigned char fill) { int d, l; if (pos < 0 || b == NULL || b->slen < 0 || b->mlen < b->slen || len < 0) return BSTR_ERR; /* Compute the two possible end pointers */ d = b->slen + len; l = pos + len; if (l > d) { /* Inserting past the end of the string */ if (balloc (b, l + 1) != BSTR_OK) return BSTR_ERR; len += pos - b->slen; pos = b->slen; b->slen = l; } else { /* Inserting in the middle of the string */ if (balloc (b, d + 1) != BSTR_OK) return BSTR_ERR; for (l = d - 1; l >= pos + len; l--) { b->data[l] = b->data[l - len]; } b->slen = d; } d = pos + len; for (l=pos; l < d; l++) b->data[l] = fill; b->data[b->slen] = '\0'; return 0; } /* int bpattern (bstring b, int len) * * Replicate the starting bstring, b, end to end repeatedly until it surpasses * len characters, then chop the result to exactly len characters. This * function operates in-place. The function will return with BSTR_ERR if b * is NULL or of length 0, otherwise BSTR_OK is returned. */ int bpattern (bstring b, int len) { int i, d; d = blength (b); if (d <= 0 || len < 0 || balloc (b, len + 1) != BSTR_OK) return BSTR_ERR; if (len > 0) { if (d == 1) return bsetstr (b, len, NULL, b->data[0]); for (i = d; i < len; i++) b->data[i] = b->data[i - d]; } b->data[len] = '\0'; b->slen = len; return 0; } /* bstring bgets (bNgetc getcPtr, void * parm, char terminator) * * Use an fgetc-like single character stream reading function (getcPtr) to * obtain a sequence of characters which are concatenated into a bstring. * The stream read is terminated by the passed in terminator function. * * If getcPtr returns with a negative number, or the terminator character * (which is appended) is read, then the stream reading is halted as the * result obtained thus far is returned. If no characters are read, or * there is some other detectable error, NULL is returned. */ bstring bgets (bNgetc getcPtr, void * parm, char terminator) { int c, d, e; bstring buff; if (getcPtr == NULL) return NULL; buff = bfromcstr (""); if (buff == NULL) return NULL; d = 0; e = buff->mlen - 2; while ((c = getcPtr (parm)) >= 0) { if (d > e) { buff->slen = d; if (balloc (buff, d + 2) != BSTR_OK) { bdestroy (buff); return NULL; } e = buff->mlen - 2; } buff->data[d] = (unsigned char) c; d++; if (c == terminator) break; } buff->data[d] = '\0'; buff->slen = d; if (d == 0) { bdestroy (buff); buff = NULL; } return buff; } #define BS_BUFF_SZ (1024) /* bstring bread (bNread readPtr, void * parm) * * Translate a finite buffer fread-like function into something which can * fill in a bstring in a roughly efficient way. */ bstring bread (bNread readPtr, void * parm) { int i, l, n; bstring buff; if (readPtr == NULL) return NULL; buff = bfromcstr (""); if (buff == NULL) return NULL; for (i=0, n=16; ; n += ((n < BS_BUFF_SZ) ? n : BS_BUFF_SZ)) { if (BSTR_OK != balloc (buff, n + 1)) { bdestroy (buff); return NULL; } l = (int) readPtr ((void *) (buff->data + i), 1, n - i, parm); i += l; buff->slen = i; if (i < n) break; } buff->data[i] = '\0'; return buff; } struct bStream { bstring buff; /* Buffer for over-reads */ void * parm; /* The stream handle for core stream */ bNread readFnPtr; /* fread compatible fnptr for core stream */ int isEOF; /* track file's EOF state */ int maxBuffSz; }; /* struct bStream * bsopen (bNread readPtr, void * parm) * * Wrap a given open stream (described by a fread compatible function * pointer and stream handle) into an open bStream suitable for the bstring * library streaming functions. */ struct bStream * bsopen (bNread readPtr, void * parm) { struct bStream * s; if (readPtr == NULL) return NULL; s = (struct bStream *) malloc (sizeof (struct bStream)); if (s == NULL) return NULL; s->parm = parm; s->buff = bfromcstr (""); s->readFnPtr = readPtr; s->maxBuffSz = BS_BUFF_SZ; s->isEOF = 0; return s; } /* int bsbufflength (struct bStream * s, int sz) * * Set the length of the buffer used by the bsStream. If sz is zero, the * length is not set. This function returns with the previous length. */ int bsbufflength (struct bStream * s, int sz) { int oldSz; if (s == NULL || sz < 0) return BSTR_ERR; oldSz = s->maxBuffSz; if (sz > 0) s->maxBuffSz = sz; return oldSz; } int bseof (const struct bStream * s) { if (s == NULL || s->readFnPtr == NULL) return BSTR_ERR; return s->isEOF && (s->buff->slen == 0); } /* void * bsclose (struct bStream * s) * * Close the bStream, and return the handle to the stream that was originally * used to open the given stream. */ void * bsclose (struct bStream * s) { void * parm; if (s == NULL) return NULL; s->readFnPtr = NULL; if (s->buff) bdestroy (s->buff); s->buff = NULL; parm = s->parm; s->parm = NULL; s->isEOF = 1; free (s); return parm; } /* int bsreadlna (bstring r, struct bStream * s, char terminator) * * Read a bstring terminated by the terminator character or the end of the * stream from the bStream (s) and return it into the parameter r. This * function may read additional characters from the core stream that are not * returned, but will be retained for subsequent read operations. */ int bsreadlna (bstring r, struct bStream * s, char terminator) { int i, l; char * b; struct tagbstring x; if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0) return BSTR_ERR; l = s->buff->slen; if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR; b = (char *) s->buff->data; x.data = (unsigned char *) b; /* First check if the current buffer holds the terminator */ b[l] = terminator; for (i=0; b[i] != terminator; i++) ; if (i < l) { int ret; x.slen = i + 1; ret = bconcat (r, &x); s->buff->slen = l; if (BSTR_OK == ret) bdelete (s->buff, 0, i + 1); return BSTR_ERR & -(r->slen == 0); } /* If not then just concatenate the entire buffer to the output */ x.slen = l; if (BSTR_OK != bconcat (r, &x)) return BSTR_ERR; /* Perform direct in-place reads into the destination to allow for the minimum of data-copies */ for (;;) { balloc (r, r->slen + s->maxBuffSz + 1); b = (char *) (r->data + r->slen); l = (int) s->readFnPtr (b, 1, s->maxBuffSz, s->parm); if (l <= 0) { r->data[r->slen] = '\0'; s->buff->slen = 0; s->isEOF = 1; /* If nothing was read return with an error message */ return BSTR_ERR & -(r->slen == 0); } b[l] = terminator; for (i=0; b[i] != terminator; i++) ; if (i < l) { /* Terminator found, push over-read back to buffer */ i++; r->slen += i; s->buff->slen = l - i; memcpy (s->buff->data, b + i, l - i); r->data[r->slen] = '\0'; return BSTR_OK; } r->slen += l; } } /* int bsreadlnsa (bstring r, struct bStream * s, bstring term) * * Read a bstring terminated by any character in the term string or the end * of the stream from the bStream (s) and return it into the parameter r. * This function may read additional characters from the core stream that * are not returned, but will be retained for subsequent read operations. */ int bsreadlnsa (bstring r, struct bStream * s, const bstring term) { int i, l; unsigned char * b; struct tagbstring x; struct charField cf; if (s == NULL || s->buff == NULL || r == NULL || term == NULL || term->data == NULL || r->mlen <= 0) return BSTR_ERR; if (term->slen == 1) return bsreadlna (r, s, term->data[0]); if (term->slen < 1 || buildCharField (&cf, term)) return BSTR_ERR; l = s->buff->slen; if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR; b = (unsigned char *) s->buff->data; x.data = b; /* First check if the current buffer holds the terminator */ b[l] = term->data[0]; for (i=0; !testInCharField (&cf, b[i]); i++) ; if (i < l) { int ret; x.slen = i + 1; ret = bconcat (r, &x); s->buff->slen = l; if (BSTR_OK == ret) bdelete (s->buff, 0, i + 1); return BSTR_ERR & -(r->slen == 0); } /* If not then just concatenate the entire buffer to the output */ x.slen = l; if (BSTR_OK != bconcat (r, &x)) return BSTR_ERR; /* Perform direct in-place reads into the destination to allow for the minimum of data-copies */ for (;;) { balloc (r, r->slen + s->maxBuffSz + 1); b = (unsigned char *) (r->data + r->slen); l = (int) s->readFnPtr (b, 1, s->maxBuffSz, s->parm); if (l <= 0) { r->data[r->slen] = '\0'; s->buff->slen = 0; s->isEOF = 1; /* If nothing was read return with an error message */ return BSTR_ERR & -(r->slen == 0); } b[l] = term->data[0]; for (i=0; !testInCharField (&cf, b[i]); i++) ; if (i < l) { /* Terminator found, push over-read back to buffer */ i++; r->slen += i; s->buff->slen = l - i; memcpy (s->buff->data, b + i, l - i); r->data[r->slen] = '\0'; return BSTR_OK; } r->slen += l; } } /* int bsreada (bstring r, struct bStream * s, int n) * * Read a bstring of length n (or, if it is fewer, as many bytes as is * remaining) from the bStream. This function may read additional * characters from the core stream that are not returned, but will be * retained for subsequent read operations. This function will not read * additional characters from the core stream beyond virtual stream pointer. */ int bsreada (bstring r, struct bStream * s, int n) { int l; char * b; struct tagbstring x; if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0 || r->slen < 0 || n <= 0) return BSTR_ERR; n += r->slen; if (n <= 0) return BSTR_ERR; l = s->buff->slen; if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR; b = (char *) s->buff->data; x.data = (unsigned char *) b; do { if (l + r->slen >= n) { int ret; x.slen = n - r->slen; ret = bconcat (r, &x); s->buff->slen = l; if (BSTR_OK == ret) bdelete (s->buff, 0, x.slen); return BSTR_ERR & -(r->slen == 0); } x.slen = l; if (BSTR_OK != bconcat (r, &x)) break; l = n - r->slen; if (l > s->maxBuffSz) l = s->maxBuffSz; l = (int) s->readFnPtr (b, 1, l, s->parm); } while (l > 0); if (l < 0) l = 0; if (l == 0) s->isEOF = 1; s->buff->slen = l; return BSTR_ERR & -(r->slen == 0); } /* int bsreadln (bstring r, struct bStream * s, char terminator) * * Read a bstring terminated by the terminator character or the end of the * stream from the bStream (s) and return it into the parameter r. This * function may read additional characters from the core stream that are not * returned, but will be retained for subsequent read operations. */ int bsreadln (bstring r, struct bStream * s, char terminator) { if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0) return BSTR_ERR; if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR; r->slen = 0; return bsreadlna (r, s, terminator); } /* int bsreadlns (bstring r, struct bStream * s, bstring term) * * Read a bstring terminated by any character in the term string or the end * of the stream from the bStream (s) and return it into the parameter r. * This function may read additional characters from the core stream that * are not returned, but will be retained for subsequent read operations. */ int bsreadlns (bstring r, struct bStream * s, const bstring term) { if (s == NULL || s->buff == NULL || r == NULL || term == NULL || term->data == NULL || r->mlen <= 0) return BSTR_ERR; if (term->slen == 1) return bsreadln (r, s, term->data[0]); if (term->slen < 1) return BSTR_ERR; if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR; r->slen = 0; return bsreadlnsa (r, s, term); } /* int bsread (bstring r, struct bStream * s, int n) * * Read a bstring of length n (or, if it is fewer, as many bytes as is * remaining) from the bStream. This function may read additional * characters from the core stream that are not returned, but will be * retained for subsequent read operations. This function will not read * additional characters from the core stream beyond virtual stream pointer. */ int bsread (bstring r, struct bStream * s, int n) { if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0 || n <= 0) return BSTR_ERR; if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR; r->slen = 0; return bsreada (r, s, n); } /* int bsunread (struct bStream * s, const bstring b) * * Insert a bstring into the bStream at the current position. These * characters will be read prior to those that actually come from the core * stream. */ int bsunread (struct bStream * s, const bstring b) { if (s == NULL || s->buff == NULL) return BSTR_ERR; return binsert (s->buff, 0, b, '?'); } /* int bspeek (bstring r, const struct bStream * s) * * Return the currently buffered characters from the bStream that will be * read prior to reads from the core stream. */ int bspeek (bstring r, const struct bStream * s) { if (s == NULL || s->buff == NULL || r == NULL || r->slen > r->mlen || r->slen < 0) return BSTR_ERR; r->slen = 0; return bconcat (r, s->buff); } /* bstring bjoin (const struct bstrList * bl, const bstring sep); * * Join the entries of a bstrList into one bstring by sequentially * concatenating them with the sep string in between. If there is an error * NULL is returned, otherwise a bstring with the correct result is returned. */ bstring bjoin (const struct bstrList * bl, const bstring sep) { bstring b; int i, c, v; if (bl == NULL || bl->qty < 0) return NULL; if (sep != NULL && (sep->slen < 0 || sep->data == NULL)) return NULL; b = (bstring) malloc (sizeof (struct tagbstring)); if (b == NULL) return NULL; /* Out of memory */ for (i = 0, c = 1; i < bl->qty; i++) { v = bl->entry[i]->slen; if (v < 0) return NULL; /* Invalid input */ c += v; if (c < 0) return NULL; /* Wrap around ?? */ } if (sep != NULL) c += (bl->qty - 1) * sep->slen; b->data = (unsigned char *) malloc (c); if (b->data == NULL) return NULL; b->mlen = c; b->slen = c-1; for (i = 0, c = 0; i < bl->qty; i++) { if (i > 0 && sep != NULL) { memcpy (b->data + c, sep->data, sep->slen); c += sep->slen; } v = bl->entry[i]->slen; memcpy (b->data + c, bl->entry[i]->data, v); c += v; } b->data[c] = '\0'; return b; } #define BSSSC_BUFF_LEN (256) /* int bssplitscb (struct bStream * s, const bstring splitStr, * int (* cb) (void * parm, int ofs, const bstring entry), void * parm) * * Iterate the set of disjoint sequential substrings read from a stream * divided by any of the characters in splitStr. An empty splitStr causes * the whole stream to be iterated once. * * Note: At the point of calling the cb function, the bStream pointer is * pointed exactly at the position right after having read the split * character. The cb function can act on the stream by causing the bStream * pointer to move, and bssplitscb will continue by starting the next split * at the position of the pointer after the return from cb. * * However, if the cb causes the bStream s to be destroyed then the cb must * return with a negative value, otherwise bssplitscb will continue in an * undefined manner. */ int bssplitscb (struct bStream * s, const bstring splitStr, int (* cb) (void * parm, int ofs, const bstring entry), void * parm) { struct charField chrs; bstring buff; int i, p, ret; if (cb == NULL || s == NULL || s->readFnPtr == NULL || splitStr == NULL || splitStr->slen < 0) return BSTR_ERR; if (NULL == (buff = bfromcstr (""))) return BSTR_ERR; if (splitStr->slen == 0) { while (bsreada (buff, s, BSSSC_BUFF_LEN) >= 0) ; if ((ret = cb (parm, 0, buff)) > 0) ret = 0; } else { buildCharField (&chrs, splitStr); ret = p = i = 0; for (;;) { if (i >= buff->slen) { bsreada (buff, s, BSSSC_BUFF_LEN); if (i >= buff->slen) { if ((ret = cb (parm, p, buff)) > 0) ret = 0; break; } } if (testInCharField (&chrs, buff->data[i])) { struct tagbstring t; blk2tbstr (t, buff->data + i + 1, buff->slen - (i + 1)); if ((ret = bsunread (s, &t)) < 0) break; buff->slen = i; if ((ret = cb (parm, p, buff)) < 0) break; buff->slen = 0; p += i + 1; i = -1; } i++; } } bdestroy (buff); return ret; } /* int bstrListDestroy (struct bstrList * sl) * * Destroy a bstrList that has been created by bsplit or bsplits. */ int bstrListDestroy (struct bstrList * sl) { int i; if (sl == NULL) return BSTR_ERR; for (i=0; i < sl->qty; i++) { if (sl->entry[i]) { bdestroy (sl->entry[i]); sl->entry[i] = NULL; } } sl->qty = -1; free (sl); return BSTR_OK; } /* int bsplitcb (const bstring str, unsigned char splitChar, int pos, * int (* cb) (void * parm, int ofs, int len), void * parm) * * Iterate the set of disjoint sequential substrings over str divided by the * character in splitChar. * * Note: Non-destructive modification of str from within the cb function * while performing this split is not undefined. bsplitcb behaves in * sequential lock step with calls to cb. I.e., after returning from a cb * that return a non-negative integer, bsplitcb continues from the position * 1 character after the last detected split character and it will halt * immediately if the length of str falls below this point. However, if the * cb function destroys str, then it *must* return with a negative value, * otherwise bsplitcb will continue in an undefined manner. */ int bsplitcb (const bstring str, unsigned char splitChar, int pos, int (* cb) (void * parm, int ofs, int len), void * parm) { int i, p, ret; if (cb == NULL || str == NULL || pos < 0 || pos > str->slen) return BSTR_ERR; p = pos; do { for (i=p; i < str->slen; i++) { if (str->data[i] == splitChar) break; } if ((ret = cb (parm, p, i - p)) < 0) return ret; p = i + 1; } while (p < str->slen); return 0; } /* int bsplitscb (const bstring str, const bstring splitStr, int pos, * int (* cb) (void * parm, int ofs, int len), void * parm) * * Iterate the set of disjoint sequential substrings over str divided by any * of the characters in splitStr. An empty splitStr causes the whole str to * be iterated once. * * Note: Non-destructive modification of str from within the cb function * while performing this split is not undefined. bsplitscb behaves in * sequential lock step with calls to cb. I.e., after returning from a cb * that return a non-negative integer, bsplitscb continues from the position * 1 character after the last detected split character and it will halt * immediately if the length of str falls below this point. However, if the * cb function destroys str, then it *must* return with a negative value, * otherwise bsplitscb will continue in an undefined manner. */ int bsplitscb (const bstring str, const bstring splitStr, int pos, int (* cb) (void * parm, int ofs, int len), void * parm) { struct charField chrs; int i, p, ret; if (cb == NULL || str == NULL || pos < 0 || pos > str->slen || splitStr == NULL || splitStr->slen < 0) return BSTR_ERR; if (splitStr->slen == 0) { if ((ret = cb (parm, 0, str->slen)) > 0) ret = 0; return ret; } if (splitStr->slen == 1) return bsplitcb (str, splitStr->data[0], pos, cb, parm); buildCharField (&chrs, splitStr); p = pos; do { for (i=p; i < str->slen; i++) { if (testInCharField (&chrs, str->data[i])) break; } if ((ret = cb (parm, p, i - p)) < 0) return ret; p = i + 1; } while (p < str->slen); return 0; } #include #ifdef offsetof #define BLE_SZ (offsetof (struct bstrList, entry)) #else #define BLE_SZ (sizeof (struct bstrList)) #endif struct genBstrList { bstring b; struct bstrList * bl; int mlen; }; static int bscb (void * parm, int ofs, int len) { struct genBstrList * g = (struct genBstrList *)parm; if (g->bl->qty >= g->mlen) { int mlen = g->mlen * 2; struct bstrList * tbl; while (g->bl->qty >= mlen) mlen += mlen; tbl = (struct bstrList *) realloc (g->bl, BLE_SZ + sizeof (bstring) * (mlen)); if (tbl == NULL) return BSTR_ERR; g->bl = tbl; g->mlen = mlen; } g->bl->entry[g->bl->qty] = bmidstr (g->b, ofs, len); g->bl->qty++; return 0; } /* struct bstrList * bsplit (const bstring str, unsigned char splitChar) * * Create an array of sequential substrings from str divided by the character * splitChar. */ struct bstrList * bsplit (const bstring str, unsigned char splitChar) { struct genBstrList g; if (str == NULL || str->data == NULL || str->slen < 0) return NULL; g.b = str; g.mlen = 4; g.bl = (struct bstrList *) malloc (BLE_SZ + sizeof (bstring) * g.mlen); if (g.bl == NULL) return NULL; g.bl->qty = 0; if (bsplitcb (str, splitChar, 0, bscb, &g) < 0) { bstrListDestroy (g.bl); return NULL; } return g.bl; } /* struct bstrList * bsplits (const bstring str, bstring splitStr) * * Create an array of sequential substrings from str divided by any of the * characters in splitStr. An empty splitStr causes a single entry bstrList * containing a copy of str to be returned. */ struct bstrList * bsplits (const bstring str, const bstring splitStr) { struct genBstrList g; if ( str == NULL || str->slen < 0 || str->data == NULL || splitStr == NULL || splitStr->slen < 0 || splitStr->data == NULL) return NULL; g.b = str; g.mlen = 4; g.bl = (struct bstrList *) malloc (BLE_SZ + sizeof (bstring) * g.mlen); if (g.bl == NULL) return NULL; g.bl->qty = 0; if (bsplitscb (str, splitStr, 0, bscb, &g) < 0) { bstrListDestroy (g.bl); return NULL; } return g.bl; } #if defined(__TURBOC__) # ifndef BSTRLIB_NOVSNP # define BSTRLIB_NOVSNP # endif #endif /* Give WATCOM C/C++, MSVC some latitude for their non-support of vsnprintf */ #if defined(__WATCOMC__) || defined(_MSC_VER) #define exvsnprintf(r,b,n,f,a) {r = _vsnprintf (b,n,f,a);} #else #ifdef BSTRLIB_NOVSNP /* This is just a hack. If you are using a system without a vsnprintf, it is not recommended that bformat be used at all. */ #define exvsnprintf(r,b,n,f,a) {vsprintf (b,f,a); r = -1;} #define START_VSNBUFF (256) #else #ifdef __GNUC__ /* Something is making gcc complain about this prototype not being here, so I've just gone ahead and put it in. */ extern int vsnprintf (char *buf, size_t count, const char *format, va_list arg); #endif #define exvsnprintf(r,b,n,f,a) {r = vsnprintf (b,n,f,a);} #endif #endif #ifndef START_VSNBUFF #define START_VSNBUFF (16) #endif /* On IRIX vsnprintf returns n-1 when the operation would overflow the target buffer, WATCOM and MSVC both return -1, while C99 requires that the returned value be exactly what the length would be if the buffer would be large enough. This leads to the idea that if the return value is larger than n, then changing n to the return value will reduce the number of iterations required. */ /* bstring bformata (bstring b, const char * fmt, ...) * * Takes the same parameters as printf (), but rather than outputting results * to stdio, it forms appends the results to a bstring which contains what * would have been output. Note that if there is an early generation of a * '\0' character, the bstring will be truncated to this end point. */ int bformata (bstring b, const char * fmt, ...) { va_list arglist; int n, slen, r; if (b == NULL || fmt == NULL || b->data == NULL || b->mlen <= 0 || b->slen < 0 || b->slen > b->mlen) return BSTR_ERR; /* Since the length is not determinable beforehand, a search is performed using the truncating "vsnprintf" call (to avoid buffer overflows) on increasing potential sizes for the output result. */ slen = b->slen; if ((n = 2*strlen (fmt)) < START_VSNBUFF) n = START_VSNBUFF; for (;;) { if (BSTR_OK != balloc (b, n + 2 + slen)) return BSTR_ERR; va_start (arglist, fmt); exvsnprintf (r, (char *) b->data + slen, n + 1, fmt, arglist); va_end (arglist); b->data[n + slen] = '\0'; b->slen = slen + (int) (strlen) ((char *) b->data + slen); if (b->slen - slen < n) break; if (r > n) n = r; else n += n; } return 0; } /* bstring bformat (const char * fmt, ...) * * Takes the same parameters as printf (), but rather than outputting results * to stdio, it forms a bstring which contains what would have been output. * Note that if there is an early generation of a '\0' character, the * bstring will be truncated to this end point. */ bstring bformat (const char * fmt, ...) { va_list arglist; bstring buff; int n, r; if (fmt == NULL) return NULL; /* Since the length is not determinable beforehand, a search is performed using the truncating "vsnprintf" call (to avoid buffer overflows) on increasing potential sizes for the output result. */ if ((n = 2*strlen (fmt)) < START_VSNBUFF) n = START_VSNBUFF; buff = bfromcstr (""); for (;;) { if (BSTR_OK != balloc (buff, n + 2)) { bdestroy (buff); return NULL; } va_start (arglist, fmt); exvsnprintf (r, (char *) buff->data, n + 1, fmt, arglist); va_end (arglist); buff->data[n] = '\0'; buff->slen = (int) (strlen) ((char *) buff->data); if (buff->slen < n) break; if (r > n) n = r; else n += n; } return buff; } pads-1.2/lib/bstring/Makefile.am0000664000076400007640000000040410203712162013500 00000000000000# $Id: Makefile.am,v 1.1 2005/02/13 17:54:58 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies noinst_LIBRARIES = libbstring.a libbstring_a_SOURCES = bstrlib.c bstrlib.h bstraux.c bstraux.h util.c util.h INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src pads-1.2/lib/bstring/bstraux.c0000664000076400007640000003721610203712162013313 00000000000000/* * This source file is part of the bstring string library. This code was * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source * license. Refer to the accompanying documentation for details on usage and * license. */ /* * bstraux.c * * This file is not necessarily part of the core bstring library itself, but * is just an auxilliary module which includes miscellaneous or trivial * functions. */ #include #include #include #include #include "bstrlib.h" #include "bstraux.h" /* int bTrunc (bstring b, int n) * * Truncate the bstring to at most n characters. */ int bTrunc (bstring b, int n) { if (b == NULL || n < 0 || b->mlen < b->slen) return -__LINE__; if (b->slen > n) { b->slen = n; b->data[n] = '\0'; /* Required for Clib interoperability */ } return 0; } /* bstring bTail (bstring b, int n) * * Return with a string of the last n characters of b. */ bstring bTail (bstring b, int n) { if (b == NULL || n < 0 || b->mlen < b->slen) return NULL; if (n >= b->slen) return bstrcpy (b); return bmidstr (b, b->slen - n, n); } /* bstring bHead (bstring b, int n) * * Return with a string of the first n characters of b. */ bstring bHead (bstring b, int n) { if (b == NULL || n < 0 || b->mlen < b->slen) return NULL; if (n >= b->slen) return bstrcpy (b); return bmidstr (b, 0, n); } /* int bFill (bstring a, char c, int len) * * Fill a given bstring with the character in parameter c, for a length n. */ int bFill (bstring a, char c, int len) { if (a == NULL || len < 0 || a->mlen < a->slen) return -__LINE__; a->slen = 0; return bsetstr (a, len, NULL, c); } /* int bReplicate (bstring b, int n) * * Replicate the contents of b end to end n times and replace it in b. */ int bReplicate (bstring b, int n) { return bpattern (b, n * b->slen); } /* int bReverse (bstring b) * * Reverse the contents of b in place. */ int bReverse (bstring b) { int i, n, m; unsigned char t; if (b == NULL || b->slen < 2 || b->mlen < b->slen) return -__LINE__; n = b->slen; m = ((unsigned)n) >> 1; n--; for (i=0; i < m; i++) { t = b->data[n - i]; b->data[n - i] = b->data[i]; b->data[i] = t; } return 0; } /* int bInsertChrs (bstring b, int pos, int len, unsigned char c, unsigned char fill) * * Insert a repeated sequence of a given character into the string at * position pos for a length len. */ int bInsertChrs (bstring b, int pos, int len, unsigned char c, unsigned char fill) { if (b == NULL || b->slen < 0 || b->mlen < b->slen || pos < 0 || len <= 0) return -__LINE__; if (pos > b->slen && 0 > bsetstr (b, pos, NULL, fill)) return -__LINE__; if (0 > balloc (b, b->slen + len)) return -__LINE__; if (pos < b->slen) memmove (b->data + pos + len, b->data + pos, b->slen - pos); memset (b->data + pos, c, len); b->slen += len; b->data[b->slen] = '\0'; return BSTR_OK; } /* int bJustifyLeft (bstring b, int space) * * Left justify a string. */ int bJustifyLeft (bstring b, int space) { int j, i, s, t; unsigned char c = (unsigned char) space; if (b == NULL || b->slen < 0 || b->mlen < b->slen) return -__LINE__; if (space != (int) c) return BSTR_OK; for (s=j=i=0; i < b->slen; i++) { t = s; s = c != (b->data[j] = b->data[i]); j += (t|s); } if (j > 0 && b->data[j-1] == c) j--; b->data[j] = '\0'; b->slen = j; return BSTR_OK; } /* int bJustifyRight (bstring b, int width, int space) * * Right justify a string to within a given width. */ int bJustifyRight (bstring b, int width, int space) { int ret; if (width <= 0) return -__LINE__; if (0 > (ret = bJustifyLeft (b, space))) return ret; if (b->slen <= width) return bInsertChrs (b, 0, width - b->slen, (unsigned char) space, (unsigned char) space); return BSTR_OK; } /* int bJustifyCenter (bstring b, int width, int space) * * Center a string's non-white space characters to within a given width by * inserting whitespaces at the beginning. */ int bJustifyCenter (bstring b, int width, int space) { int ret; if (width <= 0) return -__LINE__; if (0 > (ret = bJustifyLeft (b, space))) return ret; if (b->slen <= width) return bInsertChrs (b, 0, (width - b->slen + 1) >> 1, (unsigned char) space, (unsigned char) space); return BSTR_OK; } /* int bJustifyMargin (bstring b, int width, int space) * * Stretch a string to flush against left and right margins by evenly * distributing additional white space between words. If the line is too * long to be margin justified, it is left justified. */ int bJustifyMargin (bstring b, int width, int space) { struct bstrList * sl; int i, l, c; if (NULL == (sl = bsplit (b, (unsigned char) space))) return -__LINE__; for (l=c=i=0; i < sl->qty; i++) { if (sl->entry[i]->slen > 0) { c ++; l += sl->entry[i]->slen; } } if (l + c >= width || c < 2) { bstrListDestroy (sl); return bJustifyLeft (b, space); } b->slen = 0; for (i=0; i < sl->qty; i++) { if (sl->entry[i]->slen > 0) { if (b->slen > 0) { int s = (width - l + (c / 2)) / c; bInsertChrs (b, b->slen, s, (unsigned char) space, (unsigned char) space); l += s; } bconcat (b, sl->entry[i]); c--; if (c <= 0) break; } } bstrListDestroy (sl); return BSTR_OK; } /* char * bStr2NetStr (const bstring b) * * Convert a bstring to a netstring. See * http://cr.yp.to/proto/netstrings.txt for a description of netstrings. * Note: 1) The value returned should be freed with a call to free() at the * point when it will no longer be referenced to avoid a memory * leak. * 2) If the returned value is non-NULL, then it also '\0' terminated * in the character position one past the "," terminator. */ char * bStr2NetStr (const bstring b) { bstring s; unsigned char * buff; if (b == NULL || b->data == NULL || b->slen < 0) return NULL; if (NULL == (s = bformat ("%d:", b->slen)) || bconcat (s, b) == BSTR_ERR || bconchar (s, ',') == BSTR_ERR) { bdestroy (s); return NULL; } buff = s->data; free (s); return (char *) buff; } /* bstring bNetStr2Bstr (const char * buf) * * Convert a netstring to a bstring. See * http://cr.yp.to/proto/netstrings.txt for a description of netstrings. * Note that the terminating "," *must* be present, however a following '\0' * is *not* required. */ bstring bNetStr2Bstr (const char * buff) { int i, x; bstring b; if (buff == NULL) return NULL; x = 0; for (i=0; buff[i] != ':'; i++) { unsigned int v = buff[i] - '0'; if (v > 9 || x > ((INT_MAX - (signed int)v) / 10)) return NULL; x = (x * 10) + v; } /* This thing has to be properly terminated */ if (buff[i + 1 + x] != ',') return NULL; if (NULL == (b = bfromcstr (""))) return NULL; if (balloc (b, x + 1) != BSTR_OK) { bdestroy (b); return NULL; } memcpy (b->data, buff + i + 1, x); b->data[x] = '\0'; b->slen = x; return b; } static unsigned char b64ETable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /* bstring bBase64Encode (const bstring b) * * Generate a base64 encoding. */ bstring bBase64Encode (const bstring b) { int i, c0, c1, c2, c3; bstring out; if (b == NULL || b->slen < 0 || b->data == NULL) return NULL; out = bfromcstr (""); for (i=0; i + 2 < b->slen; i += 3) { if (i && ((i % 57) == 0)) { if (bconchar (out, '\015') < 0 || bconchar (out, '\012') < 0) { bdestroy (out); return NULL; } } c0 = b->data[i] >> 2; c1 = ((b->data[i] << 4) | (b->data[i+1] >> 4)) & 0x3F; c2 = ((b->data[i+1] << 2) | (b->data[i+2] >> 6)) & 0x3F; c3 = b->data[i+2] & 0x3F; if (bconchar (out, b64ETable[c0]) < 0 || bconchar (out, b64ETable[c1]) < 0 || bconchar (out, b64ETable[c2]) < 0 || bconchar (out, b64ETable[c3]) < 0) { bdestroy (out); return NULL; } } if (i && ((i % 57) == 0)) { if (bconchar (out, '\015') < 0 || bconchar (out, '\012') < 0) { bdestroy (out); return NULL; } } switch (i + 2 - b->slen) { case 0: c0 = b->data[i] >> 2; c1 = ((b->data[i] << 4) | (b->data[i+1] >> 4)) & 0x3F; c2 = (b->data[i+1] << 2) & 0x3F; if (bconchar (out, b64ETable[c0]) < 0 || bconchar (out, b64ETable[c1]) < 0 || bconchar (out, b64ETable[c2]) < 0 || bconchar (out, '=') < 0) { bdestroy (out); return NULL; } break; case 1: c0 = b->data[i] >> 2; c1 = (b->data[i] << 4) & 0x3F; if (bconchar (out, b64ETable[c0]) < 0 || bconchar (out, b64ETable[c1]) < 0 || bconchar (out, '=') < 0 || bconchar (out, '=') < 0) { bdestroy (out); return NULL; } break; case 2: break; } return out; } #define B64_PAD (-2) #define B64_ERR (-1) static int base64DecodeSymbol (unsigned char alpha) { if ((alpha >= 'A') && (alpha <= 'Z')) return (int)(alpha - 'A'); else if ((alpha >= 'a') && (alpha <= 'z')) return 26 + (int)(alpha - 'a'); else if ((alpha >= '0') && (alpha <= '9')) return 52 + (int)(alpha - '0'); else if (alpha == '+') return 62; else if (alpha == '/') return 63; else if (alpha == '=') return B64_PAD; else return B64_ERR; } /* bstring bBase64Decode (const bstring b) * * Decode a base64 block of data. All MIME headers are assumed to have been * removed. */ bstring bBase64Decode (const bstring b) { int i, v; unsigned char c0, c1, c2; bstring out; if (b == NULL || b->slen < 0 || b->data == NULL) return NULL; out = bfromcstr (""); i = 0; for (;;) { do { if (i >= b->slen) return out; if (b->data[i] == '=') { bdestroy (out); return NULL; } v = base64DecodeSymbol (b->data[i]); i++; } while (v < 0); c0 = (unsigned char) (v << 2); do { if (i >= b->slen || b->data[i] == '=') { bdestroy (out); return NULL; } v = base64DecodeSymbol (b->data[i]); i++; } while (v < 0); c0 |= (unsigned char) (v >> 4); c1 = (unsigned char) (v << 4); do { if (i >= b->slen) { bdestroy (out); return NULL; } if (b->data[i] == '=') { i++; if (i >= b->slen || b->data[i] != '=' || bconchar (out, c0) < 0) { bdestroy (out); return NULL; } return out; } v = base64DecodeSymbol (b->data[i]); i++; } while (v < 0); c1 |= (unsigned char) (v >> 2); c2 = (unsigned char) (v << 6); do { if (i >= b->slen) { bdestroy (out); return NULL; } if (b->data[i] == '=') { if (bconchar (out, c0) < 0 || bconchar (out, c1) < 0) { bconchar (out, c0); return NULL; } return out; } v = base64DecodeSymbol (b->data[i]); i++; } while (v < 0); c2 |= (unsigned char) (v); if (bconchar (out, c0) < 0 || bconchar (out, c1) < 0 || bconchar (out, c2) < 0) { bconchar (out, c0); return NULL; } } } #define UU_DECODE_BYTE(b) (((b) == (signed int)'`') ? 0 : (b) - (signed int)' ') struct bUuInOut { bstring src, dst; }; static int bUuDecLine (void * parm, int ofs, int len) { struct bUuInOut * io = (struct bUuInOut *) parm; bstring s = io->src; bstring t = io->dst; int i, llen; if (len == 0) return 0; llen = UU_DECODE_BYTE (s->data[ofs]); if (((unsigned) llen) > 45) return -__LINE__; if (len > (i = (int) ((4/3.0)*llen + 1.5))) len = i; for (i=1; i < len; i += 4) { int c0, c1, c2, c3; c0 = UU_DECODE_BYTE (s->data[ofs + i + 0]); c1 = (i + 1 < len) ? UU_DECODE_BYTE (s->data[ofs + i + 1]) : -1; c2 = (i + 2 < len) ? UU_DECODE_BYTE (s->data[ofs + i + 2]) : -1; c3 = (i + 3 < len) ? UU_DECODE_BYTE (s->data[ofs + i + 3]) : -1; if (((unsigned) (c0|c1) >= 0x40) || c2 >= 0x40 || c3 >= 0x40) return -__LINE__; if (bconchar (t, (char)((c0 << 2) | ((c1 >> 4) & 0x03))) < 0) return -__LINE__; if ((unsigned) c2 < 0x40) { if (bconchar (t, (char)((c1 << 4) | ((c2 >> 2) & 0x0F))) < 0) return -__LINE__; if ((unsigned) c3 < 0x40) if (bconchar (t, (char)((c2 << 6) | (c3 & 0x3F))) < 0) return -__LINE__; } } return 0; } /* bstring bUuDecode (const bstring src) * * Performs a UUDecode of a block of data. It is assumed that the "begin" * and "end" lines have already been stripped off. The potential security * problem of writing the filename in the begin line is something that is * beyond the scope of a portable library. */ #ifdef _MSC_VER #pragma warning(disable:4204) #endif bstring bUuDecode (const bstring src) { struct tagbstring ws = bsStatic ("\r\n"); struct bUuInOut io; if (src == NULL || src->slen < 0 || src->data == NULL) return NULL; io.src = src; io.dst = bfromcstr (""); if (bsplitscb (src, &ws, 0, bUuDecLine, &io) < 0) bstrFree (io.dst); return io.dst; } #define UU_MAX_LINELEN 45 #define UU_ENCODE_BYTE(b) (char) (((b) == 0) ? '`' : ((b) + ' ')) /* bstring bUuEncode (const bstring src) * * Performs a UUEncode of a block of data. The "begin" and "end" lines are * not appended. */ bstring bUuEncode (const bstring src) { bstring out; int i, j, jm; unsigned int c0, c1, c2; if (src == NULL || src->slen < 0 || src->data == NULL) return NULL; if ((out = bfromcstr ("")) == NULL) return NULL; for (i=0; i < src->slen; i += UU_MAX_LINELEN) { if ((jm = i + UU_MAX_LINELEN) > src->slen) jm = src->slen; if (bconchar (out, UU_ENCODE_BYTE (jm - i)) < 0) { bstrFree (out); break; } for (j = i; j < jm; j += 3) { c0 = bchar (src, j ); c1 = bchar (src, j + 1); c2 = bchar (src, j + 2); if (bconchar (out, UU_ENCODE_BYTE ( (c0 & 0xFC) >> 2)) < 0 || bconchar (out, UU_ENCODE_BYTE (((c0 & 0x03) << 4) | ((c1 & 0xF0) >> 4))) < 0 || bconchar (out, UU_ENCODE_BYTE (((c1 & 0x0F) << 2) | ((c2 & 0xC0) >> 6))) < 0 || bconchar (out, UU_ENCODE_BYTE ( (c2 & 0x3F))) < 0) { bstrFree (out); goto End; } } if (bconchar (out, '\r') < 0 || bconchar (out, '\n') < 0) { bstrFree (out); break; } } End:; return out; } /* bstring bYEncode (const bstring src) * * Performs a YEncode of a block of data. No header or tail info is * appended. See: http://www.yenc.org/whatis.htm and * http://www.yenc.org/yenc-draft.1.3.txt */ bstring bYEncode (const bstring src) { int i; bstring out; unsigned char c; if (src == NULL || src->slen < 0 || src->data == NULL) return NULL; if ((out = bfromcstr ("")) == NULL) return NULL; for (i=0; i < src->slen; i++) { c = (unsigned char)(src->data[i] + 42); if (c == '=' || c == '\0' || c == '\r' || c == '\n') { if (0 > bconchar (out, '=')) { bdestroy (out); return NULL; } c += (unsigned char) 64; } if (0 > bconchar (out, c)) { bdestroy (out); return NULL; } } return out; } /* bstring bYDecode (const bstring src) * * Performs a YDecode of a block of data. See: * http://www.yenc.org/whatis.htm and http://www.yenc.org/yenc-draft.1.3.txt */ bstring bYDecode (const bstring src) { int i; bstring out; unsigned char c; if (src == NULL || src->slen < 0 || src->data == NULL) return NULL; if ((out = bfromcstr ("")) == NULL) return NULL; for (i=0; i < src->slen; i++) { c = src->data[i]; if (c == '=') { i++; if (i >= src->slen) { bdestroy (out); return NULL; } c = (unsigned char) (src->data[i] - 64); } else { if (c == '\0') { bdestroy (out); return NULL; } /* Extraneous CR/LFs are to be ignored. */ if (c == '\r' || c == '\n') continue; } if (0 > bconchar (out, (char)(c - (unsigned char) 42))) { bdestroy (out); return NULL; } } return out; } pads-1.2/lib/Makefile.am0000664000076400007640000000017310203712162012033 00000000000000## $Id: Makefile.am,v 1.2 2005/02/13 17:54:58 mattshelton Exp $ AUTOMAKE_OPTIONS=foreign no-dependencies SUBDIRS = bstring