diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 004965cba..88c7a1695 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,71 +23,6 @@ on: - 'README.md' jobs: - linux-autotools: - name: Linux (autotools) - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - include: - # Debian 11 Bullseye - - os: ubuntu-22.04 - compiler: gcc-10 - - os: ubuntu-22.04 - compiler: clang-11 - # Debian 12 Bookworm - - os: ubuntu-24.04 - compiler: gcc-12 - - os: ubuntu-24.04 - compiler: clang-14 - # Debian 13 Trixie - - os: ubuntu-24.04 - compiler: gcc-14 - - os: ubuntu-24.04 - compiler: clang-19 - # Ubuntu 22.04 Jammy - - os: ubuntu-22.04 - compiler: gcc-11 - - os: ubuntu-22.04 - compiler: clang-14 - # Ubuntu 24.04 Noble - - os: ubuntu-24.04 - compiler: gcc-13 - - os: ubuntu-24.04 - compiler: clang-18 - - env: - CC: ${{ matrix.compiler }} - RUNNING_IN_CI: yes - - steps: - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y --no-install-recommends \ - ${CC} \ - automake \ - autoconf \ - libtool \ - libltdl-dev \ - libsqlite3-dev \ - libhyperscan-dev \ - # EOF - - uses: actions/checkout@main - with: - persist-credentials: false - submodules: recursive - - name: autogen.sh - run: bash autogen.sh - - name: configure - run: ./configure --enable-assert=hard --enable-warnings - - name: make - run: make -j2 - - name: make check - run: make check - - name: make install - run: make install - linux-meson: name: Linux (meson) runs-on: ${{ matrix.os }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index cf95ee57f..000000000 --- a/.gitignore +++ /dev/null @@ -1,79 +0,0 @@ -tags -Makefile -*~ -*.a -*.o -*.so -*.lo -*.la -*.orig -*.log -*.sw? -.deps -.dirstamp -.libs -authd/authd -bandb/bandb -bandb/solanum-bantool -autom4te.cache -aclocal.m4 -compile -confdefs.h -config.guess -config.sub -depcomp -ltmain.sh -missing -config.log -config.status -configure -stamp-h1 -libltdl/ -librb/configure -librb/compile -librb/depcomp -librb/aclocal.m4 -librb/include/librb_config.h -librb/include/librb_config.h.in -librb/include/librb-config.h -librb/include/serno.h -librb/librb.pc -librb/ltmain.sh -librb/missing -librb/libratbox.pc -librb/libtool -librb/src/version.c -librb/src/version.c.last -scripts/*.tar.bz2 -scripts/*.tar.gz -include/setup.h -include/setup.h.in -ircd/solanum -ircd/ircd_parser.c -ircd/ircd_parser.h -ircd/ircd_lexer.c -ircd/version.c -ircd/version.c.last -ssld/ssld -testsuite/ircd.pid.* -tools/solanum-mkpasswd -tools/solanum-mkfingerprint -tools/genssl -tools/mkpasswd -tools/viconf -include/serno.h -ircd/solanum -ircd/version.c -ircd/version.c.last -/libtool -Makefile.in -m4/argz.m4 -m4/libtool.m4 -m4/ltargz.m4 -m4/ltdl.m4 -m4/ltoptions.m4 -m4/ltsugar.m4 -m4/ltversion.m4 -m4/lt~obsolete.m4 -*.dSYM/ -*.exe diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index b8a0cb55d..000000000 --- a/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -AUTOMAKE_OPTIONS = foreign -ACLOCAL_AMFLAGS = -I m4 - -SUBDIRS = librb - -if BUILD_LTDL -SUBDIRS += libltdl -endif - -SUBDIRS += ircd \ - ssld \ - authd \ - bandb \ - tests \ - tools \ - modules \ - extensions \ - help \ - doc - -BUILT_SOURCES = include/serno.h include/datecode.h - -include/serno.h include/datecode.h: - @cd include/ && sh ./serno.h.SH - -install-data-hook: - test -d ${DESTDIR}${logdir} || mkdir -p ${DESTDIR}${logdir} - @# needed for FHS paths: - test -d ${DESTDIR}${pkglocalstatedir} || mkdir -p ${DESTDIR}${pkglocalstatedir} - -install-exec-hook: - rm -f ${DESTDIR}${libdir}/*.la - rm -f ${DESTDIR}${moduledir}/*.la - rm -f ${DESTDIR}${moduledir}/autoload/*.la - rm -f ${DESTDIR}${moduledir}/extensions/*.la - rm -f ${DESTDIR}${libdir}/*.dll.a - rm -f ${DESTDIR}${moduledir}/*.dll.a - rm -f ${DESTDIR}${moduledir}/autoload/*.dll.a - rm -f ${DESTDIR}${moduledir}/extensions/*.dll.a - -distclean-local: - rm -f librb/include/librb-config.h - -clean-local: - rm -f include/serno.h - rm -f include/datecode.h - rm -f ircd/ircd_lexer.c - rm -f ircd/ircd_parser.c - rm -f ircd/ircd_parser.h - rm -f ircd/version.c - rm -f ircd/version.c.last diff --git a/authd/Makefile.am b/authd/Makefile.am deleted file mode 100644 index 999699459..000000000 --- a/authd/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -pkglibexec_PROGRAMS = authd -AM_CFLAGS=$(WARNFLAGS) -AM_CPPFLAGS = -I../include -I../librb/include - -authd_SOURCES = \ - authd.c \ - dns.c \ - notice.c \ - provider.c \ - res.c \ - reslib.c \ - providers/dnsbl.c \ - providers/ident.c \ - providers/rdns.c \ - providers/opm.c - -authd_LDADD = ../librb/src/librb.la diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index 6348810bc..000000000 --- a/autogen.sh +++ /dev/null @@ -1,96 +0,0 @@ -#! /bin/sh - -TOP_DIR=$(dirname $0) -LAST_DIR=$PWD - -if test ! -f $TOP_DIR/configure.ac ; then - echo "You must execute this script from the top level directory." - exit 1 -fi - -AUTOCONF=${AUTOCONF:-autoconf} -ACLOCAL=${ACLOCAL:-aclocal} -AUTOMAKE=${AUTOMAKE:-automake} -AUTOHEADER=${AUTOHEADER:-autoheader} -LIBTOOLIZE=${LIBTOOLIZE:-libtoolize} -#SHTOOLIZE=${SHTOOLIZE:-shtoolize} - -dump_help_screen () -{ - echo "Usage: $0 [options]" - echo - echo "options:" - echo " -n skip CVS changelog creation" - echo " -h,--help show this help screen" - echo - exit 0 -} - -parse_options () -{ - while test "$1" != "" ; do - case $1 in - -h|--help) - dump_help_screen - ;; - -n) - SKIP_CVS_CHANGELOG=yes - ;; - *) - echo Invalid argument - $1 - dump_help_screen - ;; - esac - shift - done -} - -run_or_die () -{ - COMMAND=$1 - - # check for empty commands - if test -z "$COMMAND" ; then - echo "*warning* no command specified" - return 1 - fi - - shift; - - OPTIONS="$@" - - # print a message - echo -n "*info* running $COMMAND" - if test -n "$OPTIONS" ; then - echo " ($OPTIONS)" - else - echo - fi - - # run or die - $COMMAND $OPTIONS ; RESULT=$? - if test $RESULT -ne 0 ; then - echo "*error* $COMMAND failed. (exit code = $RESULT)" - exit 1 - fi - - return 0 -} - -parse_options "$@" - -echo "Building librb autotools files." - -cd "$TOP_DIR"/librb -sh autogen.sh - -echo "Building main autotools files." - -cd "$LAST_DIR" - -run_or_die $ACLOCAL -I m4 -run_or_die $LIBTOOLIZE --force --copy -run_or_die $AUTOHEADER -run_or_die $AUTOCONF -run_or_die $AUTOMAKE --add-missing --copy -#run_or_die $SHTOOLIZE all diff --git a/bandb/Makefile.am b/bandb/Makefile.am deleted file mode 100644 index 8128e4841..000000000 --- a/bandb/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -pkglibexec_PROGRAMS = bandb -bin_PROGRAMS = solanum-bantool -AM_CFLAGS=$(WARNFLAGS) - -AM_CPPFLAGS = -I../include -I../librb/include @SQLITE_INCLUDES@ - -bandb_SOURCES = bandb.c rsdb_sqlite3.c rsdb_snprintf.c -bandb_LDADD = ../librb/src/librb.la @SQLITE_LD@ - -solanum_bantool_SOURCES = bantool.c rsdb_sqlite3.c rsdb_snprintf.c -solanum_bantool_LDADD = ../librb/src/librb.la @SQLITE_LD@ diff --git a/configure.ac b/configure.ac deleted file mode 100644 index d86eff8e6..000000000 --- a/configure.ac +++ /dev/null @@ -1,664 +0,0 @@ -dnl TODO: clean up all the OpenSSL and shared module checking stuff; -dnl the most major changes have already been made and it looks like -dnl said functions need to be just about as complex as they already are. - -AC_PREREQ(2.60) - -AC_INIT([solanum], [1.0-dev]) - -AC_LANG(C) -AC_USE_SYSTEM_EXTENSIONS -AC_GNU_SOURCE - -AC_PROG_CC_C99 - -if test x"$ac_cv_prog_cc_c99" = "xno"; then - AC_ERROR([solanum requires a C99 capable compiler]) -fi - -AC_PREFIX_DEFAULT($HOME/ircd) -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_HEADER(include/setup.h) - -AC_CONFIG_SUBDIRS([librb]) -AC_CONFIG_AUX_DIR([libltdl/config]) - -AM_INIT_AUTOMAKE([subdir-objects]) -AM_SILENT_RULES([yes]) -AM_PROG_AR - -LT_INIT([dlopen disable-static]) -LT_CONFIG_LTDL_DIR([libltdl]) -LTDL_INIT - -build_ltdl=$with_included_ltdl -AM_CONDITIONAL([BUILD_LTDL], [test x"$build_ltdl" = x"yes"]) - -if test "$ac_cv_c_compiler_gnu" = yes; then - IRC_CFLAGS="$IRC_CFLAGS -O0 -Wall" -fi - -dnl If we support -g, use it! -if test "$ac_cv_prog_cc_g" = yes; then - IRC_CFLAGS="$IRC_CFLAGS -g" -fi - -dnl check for /dev/null so we can use it to hold evil fd's -AC_MSG_CHECKING([for /dev/null]) -if test -c /dev/null ; then - AC_DEFINE(PATH_DEVNULL, "/dev/null", [Path to /dev/null]) - AC_MSG_RESULT(yes) -else - AC_DEFINE(PATH_DEVNULL, "devnull.log", [Path to /dev/null]) - AC_MSG_RESULT(no - using devnull.log) -fi - -dnl jdc -- If CFLAGS is defined, best use it everywhere... -dnl NOTE: jv says it must be added to the *END*, because things like -dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid. -if test ! -z "$CFLAGS"; then - IRC_CFLAGS="$IRC_CFLAGS $CFLAGS" -fi - -AC_ISC_POSIX -AC_C_INLINE -AC_PROG_MAKE_SET -AC_PROG_INSTALL -AC_PATH_PROG(RM, rm) -AC_PATH_PROG(CP, cp) -AC_PATH_PROG(MV, mv) -AC_PATH_PROG(LN, ln) -AC_PATH_PROG(SED, sed) -AC_PATH_PROG(AR, ar) -AC_PATH_PROG(LD, ld) -AC_PATH_PROG(RANLIB, ranlib) -AC_PATH_PROG(TOUCH, touch) - -AC_PROG_YACC - -dnl AC_PROG_YACC defaults to yacc unconditionally if nothing can be found -if test "$YACC" = "yacc" -a -z "`which $YACC 2>/dev/null`"; then - AC_MSG_ERROR([could not locate a suitable parser generator; install bison, yacc, or byacc]) -fi - -AC_PROG_LEX - -if test "$LEX" = ":"; then - AC_MSG_ERROR([could not locate a suitable lexical generator, install flex or lex.]) -fi - -AC_ARG_ENABLE([fhs-paths], - [AS_HELP_STRING([--enable-fhs-paths], [Use more FHS-like pathnames (for packagers).])], - [], - [dnl detect if the user appears to want --enable-fhs-paths - AS_IF([test "$libexecdir" = '${exec_prefix}/libexec' && \ - test "$localstatedir" = '${prefix}/var' && \ - test "$libdir" = '${exec_prefix}/lib'], - [enable_fhs_paths=no], - [enable_fhs_paths=yes]) - ]) -dnl use directory structure of cached as default (hack) -AS_IF([test "x$enable_fhs_paths" = "xyes"], - [dnl Avoid name collisions. - pkglibexecdir='${libexecdir}/${PACKAGE_TARNAME}' - rundir=${rundir-'${prefix}/run'} - pkgrundir='${rundir}/${PACKAGE_TARNAME}' - pkglocalstatedir='${localstatedir}/lib/${PACKAGE_TARNAME}' - AC_DEFINE([ENABLE_FHS_PATHS], [1], [Uncomment if FHS pathnames are enabled])], - [libexecdir='${bindir}' - pkglibexecdir='${libexecdir}' - rundir='${sysconfdir}' - pkgrundir='${rundir}' - localstatedir='${prefix}' - pkglocalstatedir='${sysconfdir}']) -pkglibdir='${libdir}/${PACKAGE_TARNAME}' -AC_SUBST([pkglibdir]) -AC_SUBST([rundir]) -AC_SUBST([pkgrundir]) -AC_SUBST([pkglocalstatedir]) -AC_DEFINE_DIR([PKGLOCALSTATEDIR], [pkglocalstatedir], [[Directory in which to store state, such as ban database]]) -AC_SUBST([pkglibexecdir]) -AC_DEFINE_DIR([PKGLIBEXECDIR], [pkglibexecdir], [Directory where binaries the IRCd itself spawns live]) - -dnl Checks for header files. -AC_HEADER_STDC -AC_HEADER_STDBOOL - -AC_CHECK_HEADERS([crypt.h sys/param.h sys/syslog.h sys/epoll.h machine/endian.h]) - -dnl Stuff that the memory manager (imalloc) depends on -dnl ================================================== - -AC_C_CONST -if test "$ac_cv_header_machine_endian_h" = "no" ; then - AC_C_BIGENDIAN -fi -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_CHECK_SIZEOF(short) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) -AC_CHECK_SIZEOF(long long) - -dnl Networking Functions -dnl ==================== - -AC_SEARCH_LIBS(socket, socket,, [AC_MSG_ERROR([You have no socket()! Aborting.])]) - -dnl SunOS/Solaris required libnsl for inet_ntoa() -if test x"$SUN" = xyes; then - AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])]) -fi - -AC_SEARCH_LIBS(crypt, [crypt descrypt],,) - -CRYPT_LIB=$ac_cv_search_crypt - -if test "$CRYPT_LIB" = "none required"; then - unset CRYPT_LIB -elif test "$CRYPT_LIB" = no; then - unset CRYPT_LIB -fi - -AC_SUBST(CRYPT_LIB) - -AC_C_BIGENDIAN - -dnl Check for stdarg.h - if we can't find it, halt configure -AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - solanum will not compile without it **])]) -AC_CHECK_FUNCS([strlcat strlcpy]) - -AC_TYPE_INT16_T -AC_TYPE_INT32_T - -AC_CHECK_TYPES([uintptr_t]) - -dnl check for various functions... - -AC_FUNC_ALLOCA - -dnl OpenSSL support -AC_MSG_CHECKING(for OpenSSL) -AC_ARG_ENABLE(openssl, -[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).]) -AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])], -[cf_enable_openssl=$enableval], -[cf_enable_openssl="auto"]) - -if test "$cf_enable_openssl" != "no" ; then - cf_openssl_basedir="" - if test "$cf_enable_openssl" != "auto" && - test "$cf_enable_openssl" != "yes" ; then - dnl Support for --enable-openssl=/some/place - cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`" - else - dnl Do the auto-probe here. Check some common directory paths. - for dirs in /usr/local/ssl /usr/pkg /usr/local \ - /usr/local/openssl ; do - if test -f "${dirs}/include/openssl/opensslv.h" ; then - cf_openssl_basedir="${dirs}" - break - fi - done - unset dirs - fi - dnl Now check cf_openssl_found to see if we found anything. - if test ! -z "$cf_openssl_basedir"; then - if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then - SSL_INCLUDES="-I${cf_openssl_basedir}/include" - SSL_LIBS="-L${cf_openssl_basedir}/lib" - else - dnl OpenSSL wasn't found in the directory specified. Naughty - dnl administrator... - cf_openssl_basedir="" - fi - else - dnl Check for stock FreeBSD 4.x and 5.x systems, since their files - dnl are in /usr/include and /usr/lib. In this case, we don't want to - dnl change INCLUDES or LIBS, but still want to enable OpenSSL. - dnl We can't do this check above, because some people want two versions - dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl) - dnl and they want /usr/local/ssl to have preference. - if test -f "/usr/include/openssl/opensslv.h" ; then - cf_openssl_basedir="/usr" - fi - fi - - dnl If we have a basedir defined, then everything is okay. Otherwise, - dnl we have a problem. - if test ! -z "$cf_openssl_basedir"; then - AC_MSG_RESULT($cf_openssl_basedir) - cf_enable_openssl="yes" - else - AC_MSG_RESULT([not found. Specify a correct path?]) - cf_enable_openssl="no" - fi - unset cf_openssl_basedir -else - dnl If --disable-openssl was specified - AC_MSG_RESULT(disabled) -fi - -save_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $SSL_INCLUDES" -save_LIBS="$LIBS" -LIBS="$LIBS $SSL_LIBS" -if test "$cf_enable_openssl" != no; then - dnl Check OpenSSL version (must be 1.1.0 or above!) - AC_MSG_CHECKING(for OpenSSL 1.1.0 or above) - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [#include - #include ], - [[if ( OPENSSL_VERSION_NUMBER >= 0x10100000) - exit(0); else exit(1);]])], - cf_openssl_version_ok=yes, - cf_openssl_version_ok=no, - cf_openssl_version_ok=no) - - if test "$cf_openssl_version_ok" = yes; then - AC_MSG_RESULT(found) - - dnl Work around pmake/gmake conditional incompatibilities - AC_SUBST(ENCSPEED, encspeed) - - dnl Check the library is linkable - CPPFLAGS="$CPPFLAGS $SSL_LIBS" - AC_CHECK_LIB([crypto], [RSA_free], [ - AC_DEFINE([HAVE_OPENSSL], [1], [Define if OpenSSL appears usable]) - ]) - SSL_LIBS="$SSL_LIBS -lcrypto" - SSL_SRCS_ENABLE='$(SSL_SRCS)' - else - AC_MSG_RESULT(no - OpenSSL support disabled) - fi -fi - -CPPFLAGS="$save_CPPFLAGS" -LIBS="$save_LIBS" - -dnl End OpenSSL detection - - -dnl Specialized functions and libraries -dnl =================================== - -AC_ARG_ENABLE(hyperscan, -AC_HELP_STRING([--disable-hyperscan],[Disable hyperscan support]), -[hyperscan=$enableval],[hyperscan=yes]) - -AS_IF([test "$hyperscan" = yes], [ - save_CPPFLAGS="$CPPFLAGS" - save_LIBS="$LIBS" - PKG_CHECK_MODULES([HS], [libhs >= 4], [], [hyperscan=no]) - CPPFLAGS="$CPPFLAGS $HS_CFLAGS" - LIBS="$LIBS $HS_LIBS" - AC_CHECK_HEADER([hs_common.h], [], [hyperscan=no]) - AC_CHECK_FUNC([hs_scan], [], [hyperscan=no]) -]) - -AS_IF([test "$hyperscan" = no], [ - CPPFLAGS="$save_CPPFLAGS" - LIBS="$save_LIBS" -]) - -AM_CONDITIONAL([HAVE_HYPERSCAN], [test "$hyperscan" = "yes"]) - - -AC_ARG_WITH(sctp-path, -AC_HELP_STRING([--with-sctp-path=DIR],[Path to libsctp.so for SCTP support.]), -[LIBS="$LIBS -L$withval"],) - -AC_ARG_ENABLE(sctp, -AC_HELP_STRING([--disable-sctp],[Disable SCTP support]), -[sctp=$enableval],[sctp=yes]) - -if test "$sctp" = yes; then - -AC_CHECK_HEADER(netinet/sctp.h, [ - AC_SEARCH_LIBS(sctp_bindx, sctp, - [ - AC_DEFINE(HAVE_LIBSCTP, 1, [Define to 1 if libsctp (-lsctp) is available.]) - ], sctp=no) -], sctp=no) - -fi - -dnl Check for shared sqlite -dnl ====================== -PKG_CHECK_MODULES(SQLITE, [sqlite3], [], AC_ERROR([sqlite3 is required])) - -AC_SUBST(SQLITE_LD, "$SQLITE_LIBS") -AC_SUBST(SQLITE_INCLUDES, "$SQLITE_CFLAGS") - -dnl ********************************************************************** -dnl Check for --with-confdir [deprecated, use --sysconfdir instead] -dnl ********************************************************************** - -AC_ARG_WITH([confdir], - [AC_HELP_STRING([--with-confdir=DIR], - [Directory to install config files [deprecated, use --sysconfdir instead].])], - [ sysconfdir=`echo $withval | sed 's/\/$//'` ], - [ confdir='${sysconfdir}' ]) -AC_DEFINE_DIR([ETC_DIR], [sysconfdir], [Prefix where config files are installed.]) - -dnl ********************************************************************** -dnl Check for --with-logdir -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to modify logdir]) -AC_ARG_WITH(logdir, -AC_HELP_STRING([--with-logdir=DIR], - [Directory where to write logfiles.]), - [ logdir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes)], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [logdir='${localstatedir}/log/${PACKAGE_TARNAME}'], - [logdir='${prefix}/logs']) - AC_MSG_RESULT(no)]) -AC_DEFINE_DIR([LOG_DIR], [logdir], [Prefix where to write logfiles.]) -AC_SUBST_DIR([logdir]) - -dnl ********************************************************************** -dnl Check for --with-helpdir -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to modify helpdir]) -AC_ARG_WITH(helpdir, -AC_HELP_STRING([--with-helpdir=DIR], - [Directory to install help files.]), - [ helpdir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes) ], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [helpdir='${datadir}/${PACKAGE_TARNAME}/help'], - [helpdir='${prefix}/help']) - AC_MSG_RESULT(no) ]) -AC_DEFINE_DIR([HELP_DIR], [helpdir], [Prefix where help files are installed.]) -AC_SUBST_DIR([helpdir]) - -dnl ********************************************************************** -dnl Check for --with-moduledir -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to modify moduledir]) -AC_ARG_WITH(moduledir, - [AC_HELP_STRING([--with-moduledir=DIR], - [Directory to install modules.])], - [ moduledir=`echo $withval | sed 's/\/$//'` - AC_MSG_RESULT(yes)], - [ AS_IF([test "x$enable_fhs_paths" = "xyes"], - [moduledir='${pkglibdir}/modules'], - [moduledir='${prefix}/modules']) - AC_MSG_RESULT(no) - ]) -AC_DEFINE_DIR(MODULE_DIR, moduledir, [Prefix where modules are installed.]) -AC_SUBST_DIR([moduledir]) - -dnl Check for --with-rundir - -AC_MSG_CHECKING([whether or modify rundir]) -AC_ARG_WITH([rundir], - [AC_HELP_STRING([--with-rundir=DIR], - [Directory in which to store pidfile.])], - [AC_MSG_RESULT([yes]) - rundir=`echo $withval | sed 's/\/$//'`], - [AC_MSG_RESULT([no]) - AS_IF([test "x$enable_fhs_paths" = "xyes"], - [rundir='${prefix}/run'], - [rundir='${sysconfdir}'])]) -AC_SUBST([rundir]) -AC_DEFINE_DIR([PKGRUNDIR], [pkgrundir], [Directory to store pidfile in.]) - -dnl Installed utility program prefixes (does not affect binaries -dnl installed into pkglibexecdir) -AC_MSG_CHECKING([for program prefix]) -AC_ARG_WITH([program-prefix], - [AS_HELP_STRING([--with-program-prefix=], [If set, programs installed into PATH will be installed with names prefixed by this prefix.])], - [test "x$with_program_prefix" = "xno" && with_program_prefix=], - [with_program_prefix=]) -AC_MSG_RESULT(["$with_program_prefix"]) -PROGRAM_PREFIX="$with_program_prefix" -AC_SUBST([PROGRAM_PREFIX]) -AC_DEFINE_UNQUOTED([PROGRAM_PREFIX], ["$with_program_prefix"], [String with which all programs intended to be in PATH are prefixed.]) - -dnl ********************************************************************** -dnl Branding -dnl ********************************************************************** - -AC_MSG_CHECKING([whether custom branding is requested]) -AC_ARG_WITH(custom-branding, -AC_HELP_STRING([--with-custom-branding=NAME], - [Custom branding name.]), - [BRANDING_NAME=$withval - AC_MSG_RESULT([yes])], - [BRANDING_NAME=$PACKAGE_NAME - AC_MSG_RESULT([no])] -) - -AC_MSG_CHECKING([whether a custom version is requested]) -AC_ARG_WITH(custom-version, -AC_HELP_STRING([--with-custom-version=NAME], - [Custom version branding.]), - [BRANDING_VERSION=$withval - AC_MSG_RESULT([yes])], - [BRANDING_VERSION=$PACKAGE_VERSION - AC_MSG_RESULT([no])] -) - -AC_DEFINE_UNQUOTED(BRANDING_NAME, ["$BRANDING_NAME"], [Custom branding name.]) -AC_DEFINE_UNQUOTED(BRANDING_VERSION, ["$BRANDING_VERSION"], [Custom branding name.]) - -if test "x$BRANDING_NAME" != "x$PACKAGE_NAME"; then - AC_DEFINE(CUSTOM_BRANDING, 1, [Define if custom branding is enabled.]) -fi - -dnl ********************************************************************** -dnl Enable oper chghost -dnl ********************************************************************** - -AC_ARG_ENABLE(oper-chghost, -AC_HELP_STRING([--enable-oper-chghost],[Enable opers to use the CHGHOST command]), -[operchghost=$enableval],[operchghost=no]) - -if test "$operchghost" = yes; then - AC_DEFINE(ENABLE_OPER_CHGHOST, 1, [Define this to enable opers to use the CHGHOST command.]) -fi - -dnl Debug-related options -dnl ===================== - -AC_ARG_ENABLE(assert, -AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]), -[assert=$enableval], [assert=no]) - -if test "$assert" = no; then - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = soft; then - AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.]) - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = yes; then - assert="hard" -fi - -AC_MSG_CHECKING(if you want to do a profile build) -AC_ARG_ENABLE(profile, -AC_HELP_STRING([--enable-profile],[Enable profiling]), -[profile=$enableval], [profile=no]) - -if test "$profile" = yes; then - if test "$ac_cv_c_compiler_gnu" = yes; then - IRC_CFLAGS="$IRC_CFLAGS -pg" - AC_MSG_RESULT([yes, adding -pg]) - AC_DEFINE(SOLANUM_PROFILE, 1, [Define this if you are profiling.]) - else - AC_MSG_RESULT([no, profile builds only work with gcc]) - fi -else - AC_MSG_RESULT(no) -fi - -AC_DEFINE([NICKNAMEHISTORYLENGTH], 15000, [Size of the WHOWAS array.]) -AC_DEFINE([CHANNEL_HEAP_SIZE], 8192, [Size of the channel heap.]) -AC_DEFINE([BAN_HEAP_SIZE], 4096, [Size of the ban heap.]) -AC_DEFINE([CLIENT_HEAP_SIZE], 8192, [Size of the client heap.]) -AC_DEFINE([LCLIENT_HEAP_SIZE], 1024, [Size of the local client heap.]) -AC_DEFINE([PCLIENT_HEAP_SIZE], 256, [Size of the pre-client heap.]) -AC_DEFINE([USER_HEAP_SIZE], 8192, [Size of the user heap.]) -AC_DEFINE([DNODE_HEAP_SIZE], 8192, [Size of the dlink_node heap.]) -AC_DEFINE([TOPIC_HEAP_SIZE], 4096, [Size of the topic heap.]) -AC_DEFINE([LINEBUF_HEAP_SIZE], 2048, [Size of the linebuf heap.]) -AC_DEFINE([MEMBER_HEAP_SIZE], 32768, [Sizeof member heap.]) -AC_DEFINE([ND_HEAP_SIZE], 512, [Size of the nick delay heap.]) -AC_DEFINE([CONFITEM_HEAP_SIZE], 256, [Size of the confitem heap.]) -AC_DEFINE([MONITOR_HEAP_SIZE], 1024, [Size of the monitor heap.]) -AC_DEFINE([FD_HEAP_SIZE], 1024, [Size of fd heap.]) -AC_DEFINE([AWAY_HEAP_SIZE], 512, [Size of away heap.]) - -AC_ARG_WITH(nicklen, -AC_HELP_STRING([--with-nicklen=LENGTH],[Set the upper-bound nick length to LENGTH (default 31, max 50)]), -[ - if ! expr "$withval" + 0 >/dev/null 2>&1; then - AC_ERROR([NICKLEN must be a numeric value]) - fi - if test $withval -gt 50; then - NICKLEN=50 - AC_MSG_WARN([NICKLEN has a hard limit of 50. Setting NICKLEN=50]) - elif test $withval -lt 9; then - NICKLEN=9 - AC_MSG_WARN([NICKLEN has a lower limit of 9. Setting NICKLEN=9]) - else - NICKLEN="$withval" - fi -], [NICKLEN=31]) - -AC_ARG_WITH(topiclen, -AC_HELP_STRING([--with-topiclen=NUMBER],[Set the max topic length to NUMBER (default 390, max 390)]), -[ - if test $withval -gt 390; then - TOPICLEN=390 - AC_MSG_WARN([TOPICLEN has a hard limit of 390. Setting TOPICLEN=390]) - else - TOPICLEN=$withval - fi -], [TOPICLEN=390]) - -AC_DEFINE_UNQUOTED(TOPICLEN, ${TOPICLEN}, [Maximum topic length (<=390)]) -AC_DEFINE_UNQUOTED(NICKLEN, (${NICKLEN}+1), [Nickname length]) - - -AC_ARG_WITH(asan, -AC_HELP_STRING([--with-asan],[Build with Address Sanitizer]), -[ - CFLAGS="$CFLAGS -fsanitize=address" - LDFLAGS="$LDFLAGS -fsanitize=address" -]) - -# rpath, for finding librb.so at run time -hold_ldflags=$LDFLAGS -AC_MSG_CHECKING(for the ld -rpath flag) -LDFLAGS="${LDFLAGS} -Wl,-rpath=${libdir}" -AC_LINK_IFELSE([AC_LANG_PROGRAM([],[int i;])], found=yes, found=no) -LDFLAGS=$hold_ldflags -AC_MSG_RESULT($found) -if test "$found" = yes; then - LDFLAGS="${LDFLAGS} -Wl,-rpath=\${libdir}" -fi - -# This must be down here, or it will mess up checks like the ones -# for -Wl,-export-dynamic -# -- jilles -CWARNS="" -AC_ARG_ENABLE(warnings, -AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]), -[ -IRC_CFLAGS="$IRC_CFLAGS -O0" -CFLAGS="$IRC_CFLAGS" - -SOLANUM_C_GCC_TRY_FLAGS([-Wall], solanum_cv_c_gcc_w_all) -SOLANUM_C_GCC_TRY_FLAGS([-Wpointer-arith], solanum_cv_c_gcc_w_pointer_arith) -SOLANUM_C_GCC_TRY_FLAGS([-Wimplicit -Wnested-externs], solanum_cv_c_gcc_w_implicit) -SOLANUM_C_GCC_TRY_FLAGS([-Wcast-align], solanum_cv_c_gcc_w_cast_align) -SOLANUM_C_GCC_TRY_FLAGS([-Wcast-qual], solanum_cv_c_gcc_w_cast_qual) -SOLANUM_C_GCC_TRY_FLAGS([-Wwrite-strings], solanum_cv_c_gcc_w_write_strings) -SOLANUM_C_GCC_TRY_FLAGS([-Werror-implicit-function-declaration], solanum_cv_c_gcc_w_error_implicit_function_declaration) -SOLANUM_C_GCC_TRY_FLAGS([-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations], solanum_cv_c_gcc_prototypes) -SOLANUM_C_GCC_TRY_FLAGS([-Wparentheses], solanum_cv_c_gcc_parentheses) -SOLANUM_C_GCC_TRY_FLAGS([-W -Wno-unused], solanum_cv_c_gcc_w) -SOLANUM_C_GCC_TRY_FLAGS([-Wextra], solanum_cv_c_gcc_w_extra) -SOLANUM_C_GCC_TRY_FLAGS([-Wshadow], solanum_cv_c_gcc_w_shadow) -SOLANUM_C_GCC_TRY_FLAGS([-Wmissing-noreturn], solanum_cv_c_gcc_w_missing_noreturn) -SOLANUM_C_GCC_TRY_FLAGS([-Wundef], solanum_cv_c_gcc_w_undef) -SOLANUM_C_GCC_TRY_FLAGS([-Wpacked], solanum_cv_c_gcc_w_packed) -SOLANUM_C_GCC_TRY_FLAGS([-Wnested-externs], solanum_cv_c_gcc_w_nested_externs) -SOLANUM_C_GCC_TRY_FLAGS([-Wunused-function -Wunused-label -Wunused-variable], solanum_cv_c_gcc_w_unused) -SOLANUM_C_GCC_TRY_FLAGS([-Wredundant-decls], solanum_cv_c_gcc_w_redundant_decls) -SOLANUM_C_GCC_TRY_FLAGS([-Wfloat-equal], solanum_cv_c_gcc_w_float_equal) -SOLANUM_C_GCC_TRY_FLAGS([-Wformat -Wformat-y2k -Wno-format-security], solanum_cv_c_gcc_w_format) - -IRC_CFLAGS="$CFLAGS" -],[]) - -IRC_CFLAGS="$IRC_CFLAGS $CWARNS" - -AC_SUBST(MODULES_LIBS) -AC_SUBST(MOD_TARGET) - -AC_SUBST(SSL_SRCS_ENABLE) -AC_SUBST(SSL_INCLUDES) -AC_SUBST(SSL_LIBS) - -AC_SUBST(LDFLAGS) -AC_SUBST(PICFLAGS) -AC_SUBST(IRC_CFLAGS) -AC_SUBST(SEDOBJ) - - -if test "$prefix" = "NONE"; then - AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$ac_default_prefix", [Prefix where the ircd is installed.]) -else - dnl Strip trailing slashes to prevent a path of '//' - prefix=`echo $prefix | sed 's/\/$//'` - AC_DEFINE_UNQUOTED(IRCD_PREFIX, "$prefix", [Prefix where the ircd is installed.]) -fi - -if test "x${RUNNING_IN_CI}" = "xyes"; then - IRC_CFLAGS="${IRC_CFLAGS} -Werror -Wno-unused-value -Wno-unused-parameter" - AC_SUBST(IRC_CFLAGS) -fi - -AC_CONFIG_FILES( \ - Makefile \ - authd/Makefile \ - bandb/Makefile \ - ssld/Makefile \ - extensions/Makefile \ - ircd/Makefile \ - modules/Makefile \ - tests/Makefile \ - tools/Makefile \ - tools/genssl \ - doc/Makefile \ - help/Makefile \ -) -AC_CONFIG_COMMANDS([tools/genssl_chmod], [chmod 755 tools/genssl]) - -AC_OUTPUT - -if test "$cf_openssl_version_ok" = yes; then - openssl="yes" -else - openssl="no" -fi - -echo " -Configuration of ${BRANDING_NAME}-${BRANDING_VERSION}: - Install directory : $prefix - - OpenSSL : $openssl - SCTP : $sctp - - Nickname length : $NICKLEN - Topic length : $TOPICLEN - -Use (g)make to compile $BRANDING_NAME, then (g)make install to install it. -" diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index 2bc4110c0..000000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -exec_suffix = @exec_suffix@ -bindir = @bindir@ -libexecdir = @libexecdir@ -sysconfdir = @sysconfdir@ -localstatedir = @localstatedir@ - -# Local to the etc Makefile - -CONFS = ircd.conf.example ircd.motd.example reference.conf - -install-mkdirs: - -@if test ! -d $(DESTDIR)$(sysconfdir); then \ - echo "mkdir -p $(sysconfdir)"; \ - mkdir -p $(DESTDIR)$(sysconfdir); \ - fi - -install: install-mkdirs - @echo "ircd: installing example config files ($(CONFS))" - @for i in $(CONFS); do \ - if test -f $(DESTDIR)$(sysconfdir)/$$i; then \ - $(MV) $(DESTDIR)$(sysconfdir)/$$i $(DESTDIR)$(sysconfdir)/$$i.old; \ - fi; \ - $(INSTALL_DATA) $$i $(DESTDIR)$(sysconfdir); \ - done - - -@if test -f $(DESTDIR)$(sysconfdir)/links.txt; then \ - $(RM) $(DESTDIR)$(sysconfdir)/links.txt; \ - fi - diff --git a/extensions/Makefile.am b/extensions/Makefile.am deleted file mode 100644 index 86466f9e0..000000000 --- a/extensions/Makefile.am +++ /dev/null @@ -1,79 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/librb/include $(LTDLINCL) -AM_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined -shared -AM_LDFLAGS += -export-symbols-regex _mheader -LIBS += $(top_srcdir)/ircd/libircd.la - -extensiondir=@moduledir@/extensions - -extension_LTLIBRARIES = \ - cap_oper.la \ - cap_realhost.la \ - chantype_dummy.la \ - chm_adminonly.la \ - chm_operonly.la \ - chm_insecure.la \ - chm_nonotice.la \ - chm_operpeace.la \ - chm_regmsg.la \ - chm_sslonly.la \ - createauthonly.la \ - createoperonly.la \ - drain.la \ - extb_account.la \ - extb_canjoin.la \ - extb_channel.la \ - extb_guest.la \ - extb_hostmask.la \ - extb_oper.la \ - extb_server.la \ - extb_ssl.la \ - extb_realname.la \ - extb_usermode.la \ - extb_extgecos.la \ - extb_combi.la \ - force_user_invis.la \ - helpops.la \ - hide_uncommon_channels.la \ - hurt.la \ - identify_msg.la \ - invex_regonly.la \ - invite_notify.la \ - ip_cloaking.la \ - ip_cloaking_old.la \ - ip_cloaking_3.0.la \ - ip_cloaking_4.0.la \ - m_adminwall.la \ - m_echotags.la \ - m_extendchans.la \ - m_findforwards.la \ - m_identify.la \ - m_locops.la \ - m_mkpasswd.la \ - m_ojoin.la \ - m_okick.la \ - m_omode.la \ - m_opme.la \ - m_remove.la \ - m_sendbans.la \ - m_shedding.la \ - m_webirc.la \ - no_kill_services.la \ - no_locops.la \ - no_oper_invis.la \ - override.la \ - override_kick_immunity.la \ - restrict-unauthenticated.la \ - sasl_usercloak.la \ - sno_channelcreate.la \ - sno_farconnect.la \ - sno_globalnickchange.la \ - sno_globaloper.la \ - tag_message_id.la \ - tag_typing.la \ - umode_hide_idle_time.la \ - umode_noctcp.la \ - example_module.la - -if HAVE_HYPERSCAN - extension_LTLIBRARIES += filter.la -endif diff --git a/help/Makefile.am b/help/Makefile.am deleted file mode 100644 index 74659b905..000000000 --- a/help/Makefile.am +++ /dev/null @@ -1,47 +0,0 @@ -# Generated automatically from Makefile.in by configure. -# makefile for help/ - -AUTOMAKE_OPTIONS = foreign - -prefix= @prefix@ -exec_prefix= @execprefix@ -helpdir= @helpdir@ -uhelpdir= ${helpdir}/users -ohelpdir= ${helpdir}/opers - -CLEANFILES= users/index users/index.tmp opers/index opers/index.tmp - -SYMLINKS= topic accept cmode admin names links away whowas \ - version kick who invite quit join list nick oper part \ - time credits motd userhost users whois ison lusers \ - user help pass error challenge knock ping pong \ - map trace chantrace extban monitor batch - -all: -build: -depend: -lint: - -index: - @$(SHELL) ./make_index.SH ./ $(helpdir) - -install: index - @echo "ircd: setting up help directory structure" - @mkdir -p -m 755 $(DESTDIR)$(helpdir) - @mkdir -p -m 755 $(DESTDIR)$(helpdir)/opers - @mkdir -p -m 755 $(DESTDIR)$(helpdir)/users - - @for help in opers/*; do \ - if [ -f $$help ]; then \ - ${INSTALL_DATA} $$help $(DESTDIR)$(ohelpdir); \ - fi \ - done - @for help in users/*; do \ - if [ -f $$help ]; then \ - $(INSTALL_DATA) $$help $(DESTDIR)$(uhelpdir); \ - fi \ - done - @for link in $(SYMLINKS); do \ - rm -f $(DESTDIR)$(uhelpdir)/$$link; \ - ln -s $(ohelpdir)/$$link $(DESTDIR)$(uhelpdir); \ - done diff --git a/ircd/Makefile.am b/ircd/Makefile.am deleted file mode 100644 index 77bb8a2fc..000000000 --- a/ircd/Makefile.am +++ /dev/null @@ -1,76 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -prefix = @prefix@ -libircddir = @libdir@ - -AM_CPPFLAGS = @LTDLINCL@ -I$(top_srcdir)/include -I$(top_srcdir)/librb/include -AM_LDFLAGS = -L$(top_srcdir)/librb/src -export-dynamic -avoid-version -no-undefined -AM_YFLAGS = -d - -BUILT_SOURCES = ircd_parser.h version.c - -version.c: version.c.SH ../CREDITS ../include/patchlevel.h ../include/serno.h ../include/datecode.h - $(SHELL) version.c.SH - $(CP) version.c version.c.last - touch version.c.SH - -libircd_la_SOURCES = \ - authproc.c \ - bandbi.c \ - batch.c \ - cache.c \ - capability.c \ - channel.c \ - chmode.c \ - class.c \ - client.c \ - client_tags.c \ - dns.c \ - extban.c \ - getopt.c \ - hash.c \ - hook.c \ - hostmask.c \ - ircd.c \ - ircd_parser.y \ - ircd_lexer.l \ - ircd_signal.c \ - listener.c \ - logger.c \ - match.c \ - modules.c \ - monitor.c \ - msgbuf.c \ - newconf.c \ - operhash.c \ - packet.c \ - parse.c \ - privilege.c \ - ratelimit.c \ - reject.c \ - restart.c \ - s_conf.c \ - s_newconf.c \ - s_serv.c \ - s_user.c \ - scache.c \ - send.c \ - snomask.c \ - sslproc.c \ - substitution.c \ - supported.c \ - tgchange.c \ - version.c \ - whowas.c - -libircd_la_LDFLAGS = $(EXTRA_FLAGS) -avoid-version -no-undefined -libircd_la_LIBADD = @LIBLTDL@ -L$(top_srcdir)/librb/src -lrb -libircd_LTLIBRARIES = libircd.la - -bin_PROGRAMS = solanum -solanum_SOURCES = main.c -solanum_LDFLAGS = $(EXTRA_FLAGS) -dlopen self -solanum_LDADD = libircd.la -L$(top_srcdir)/librb/src -lrb - -install-exec-hook: install-libircdLTLIBRARIES - $(RM) -f version.c diff --git a/ircd/version.c.SH b/ircd/version.c.SH deleted file mode 100644 index c6d0d3e55..000000000 --- a/ircd/version.c.SH +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh - -set -eu - -echo "Extracting solanum/ircd/version.c..." - -if test -r version.c.last -then - generation=`sed -n 's/^const char \*generation = "\(.*\)";/\1/p' < version.c.last` - if test ! "$generation" ; then generation=0; fi -else - generation=0 -fi - -generation=`expr $generation + 1` - -if test -n "${SOURCE_DATE_EPOCH:-}" -a "${EXTERNAL_BUILD_TIMESTAMP:-}" = '' ; then - EXTERNAL_BUILD_TIMESTAMP=$SOURCE_DATE_EPOCH -fi -if test "${EXTERNAL_BUILD_TIMESTAMP:-}" = ''; then - creation=`LC_ALL=C date | \ -awk '{if (NF == 6) \ - { print $1 " " $2 " " $3 " " $6 " at " $4 " " $5 } \ -else \ - { print $1 " " $2 " " $3 " " $7 " at " $4 " " $5 " " $6 }}'` -else - creation="$EXTERNAL_BUILD_TIMESTAMP" - generation=1 -fi - -# Generate CREDITS content -credits=$(sed 's/^$/ /;s/.*/ "&",/' ../CREDITS) - -# Read template and substitute -sed -e "s/@GENERATION@/$generation/" \ - -e "s/@CREATION@/$creation/" \ - -e "/@CREDITS@/r /dev/stdin" \ - -e "/@CREDITS@/d" \ - version.c.in > version.c << EOF -$credits -EOF diff --git a/librb/Makefile.am b/librb/Makefile.am deleted file mode 100644 index 5de883728..000000000 --- a/librb/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -AUTOMAKE_OPTIONS = foreign - -SUBDIRS = src - -BUILT_SOURCES = include/serno.h include/datecode.h - -# NOTE: you'll want to change the below if you are unbundling -include/serno.h: - @if [ -f ../include/serno.h ]; then \ - cp ../include/serno.h include/; \ - else \ - echo '#define SERNO "unknown"' >include/serno.h; \ - fi - -include/datecode.h: - @if [ -f ../include/datecode.h ]; then \ - cp ../include/datecode.h include/; \ - else \ - echo '#define DATECODE 0UL' >include/datecode.h; \ - fi - -clean-local: - rm -f include/serno.h - rm -f include/datecode.h - rm -f src/version.c - rm -f src/version.c.last diff --git a/librb/acinclude.m4 b/librb/acinclude.m4 deleted file mode 100644 index ae4b425ee..000000000 --- a/librb/acinclude.m4 +++ /dev/null @@ -1,149 +0,0 @@ -AC_DEFUN([AC_DEFINE_DIR], [ - test "x$prefix" = xNONE && prefix="$ac_default_prefix" - test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - last_ac_define_dir=`eval echo [$]$2` - ac_define_dir=`eval echo [$]last_ac_define_dir` - ac_define_dir_counter=0 - while test "x[$]last_ac_define_dir" != "x[$]ac_define_dir"; do - last_ac_define_dir="[$]ac_define_dir" - ac_define_dir=`eval echo [$]last_ac_define_dir` - AS_VAR_ARITH([ac_define_dir_counter], [$ac_define_dir_counter + 1]) - AS_VAR_IF([ac_define_dir_counter], [128], - [AC_MSG_ERROR([detected recusive directory expansion when expanding $1=[$]$2: [$]ac_define_dir]) - break]) - done - $1="$ac_define_dir" - AC_SUBST($1) - ifelse($3, , - AC_DEFINE_UNQUOTED($1, "$ac_define_dir"), - AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3)) -]) - -AC_DEFUN([AC_SUBST_DIR], [ - ifelse($2,,,$1="[$]$2") - $1=`( - test "x$prefix" = xNONE && prefix="$ac_default_prefix" - test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" - eval echo \""[$]$1"\" - )` - AC_SUBST($1) -]) - - -dnl IPv6 support macros..pretty much swiped from wget - -dnl RB_PROTO_INET6 - -AC_DEFUN([RB_PROTO_INET6],[ - AC_CACHE_CHECK([for INET6 protocol support], [rb_cv_proto_inet6],[ - AC_TRY_CPP([ -#include -#include -#ifndef PF_INET6 -#error Missing PF_INET6 -#endif -#ifndef AF_INET6 -#error Mlssing AF_INET6 -#endif - ],[ - rb_cv_proto_inet6=yes - ],[ - rb_cv_proto_inet6=no - ]) - ]) - - if test "X$rb_cv_proto_inet6" = "Xyes"; then : - $1 - else : - $2 - fi -]) - - -AC_DEFUN([RB_TYPE_STRUCT_SOCKADDR_IN6],[ - rb_have_sockaddr_in6= - AC_CHECK_TYPES([struct sockaddr_in6],[ - rb_have_sockaddr_in6=yes - ],[ - rb_have_sockaddr_in6=no - ],[ -#include -#include -#include - ]) - - if test "X$rb_have_sockaddr_in6" = "Xyes"; then : - $1 - else : - $2 - fi -]) - - -AC_DEFUN([RB_CHECK_TIMER_CREATE], - [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], - [rb__cv_timer_create_works], - [AC_TRY_RUN([ -#include -#include -#include -int main(int argc, char *argv[]) -{ -#if HAVE_TIMER_CREATE - struct sigevent ev; - timer_t timer; - ev.sigev_notify = SIGEV_SIGNAL; - ev.sigev_signo = SIGVTALRM; - if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) { - return 1; - } -#else - return 1; -#endif - return 0; -} - ], - [rb__cv_timer_create_works=yes], - [rb__cv_timer_create_works=no], - [rb__cv_timer_create_works=no]) - ]) -case $rb__cv_timer_create_works in - yes) AC_DEFINE([USE_TIMER_CREATE], 1, - [Define to 1 if we can use timer_create(CLOCK_REALTIME,...)]);; -esac -]) - - - -AC_DEFUN([RB_CHECK_TIMERFD_CREATE], - [AC_CACHE_CHECK([for a working timerfd_create(CLOCK_REALTIME)], - [rb__cv_timerfd_create_works], - [AC_TRY_RUN([ -#include -#include -#include -#ifdef HAVE_SYS_TIMERFD_H -#include -#endif -int main(int argc, char *argv[]) -{ -#if defined(HAVE_TIMERFD_CREATE) && defined(HAVE_SYS_TIMERFD_H) - if (timerfd_create(CLOCK_REALTIME, 0) < 0) { - return 1; - } -#else - return 1; -#endif - return 0; -} - ], - [rb__cv_timerfd_create_works=yes], - [rb__cv_timerfd_create_works=no], - [rb__cv_timerfd_create_works=no]) - ]) -case $rb__cv_timerfd_create_works in - yes) AC_DEFINE([USE_TIMERFD_CREATE], 1, - [Define to 1 if we can use timerfd_create(CLOCK_REALTIME,...)]);; -esac -]) - diff --git a/librb/autogen.sh b/librb/autogen.sh deleted file mode 100755 index 11a107675..000000000 --- a/librb/autogen.sh +++ /dev/null @@ -1,89 +0,0 @@ -#! /bin/sh - -TOP_DIR=$(dirname $0) -LAST_DIR=$PWD - -if test ! -f $TOP_DIR/configure.ac ; then - echo "You must execute this script from the top level directory." - exit 1 -fi - -AUTOCONF=${AUTOCONF:-autoconf} -ACLOCAL=${ACLOCAL:-aclocal} -AUTOMAKE=${AUTOMAKE:-automake} -AUTOHEADER=${AUTOHEADER:-autoheader} -LIBTOOLIZE=${LIBTOOLIZE:-libtoolize} -#SHTOOLIZE=${SHTOOLIZE:-shtoolize} - -dump_help_screen () -{ - echo "Usage: $0 [options]" - echo - echo "options:" - echo " -n skip CVS changelog creation" - echo " -h,--help show this help screen" - echo - exit 0 -} - -parse_options () -{ - while test "$1" != "" ; do - case $1 in - -h|--help) - dump_help_screen - ;; - -n) - SKIP_CVS_CHANGELOG=yes - ;; - *) - echo Invalid argument - $1 - dump_help_screen - ;; - esac - shift - done -} - -run_or_die () -{ - COMMAND=$1 - - # check for empty commands - if test -z "$COMMAND" ; then - echo "*warning* no command specified" - return 1 - fi - - shift; - - OPTIONS="$@" - - # print a message - echo -n "*info* running $COMMAND" - if test -n "$OPTIONS" ; then - echo " ($OPTIONS)" - else - echo - fi - - # run or die - $COMMAND $OPTIONS ; RESULT=$? - if test $RESULT -ne 0 ; then - echo "*error* $COMMAND failed. (exit code = $RESULT)" - exit 1 - fi - - return 0 -} - -parse_options "$@" - -cd $TOP_DIR - -run_or_die $ACLOCAL -I ../m4 -run_or_die $LIBTOOLIZE --force --copy -run_or_die $AUTOHEADER -run_or_die $AUTOCONF -run_or_die $AUTOMAKE --add-missing --copy -#run_or_die $SHTOOLIZE all diff --git a/librb/configure.ac b/librb/configure.ac deleted file mode 100644 index 45b773258..000000000 --- a/librb/configure.ac +++ /dev/null @@ -1,500 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -dnl TODO: clean up all the OpenSSL and shared module checking stuff; -dnl the most major changes have already been made and it looks like -dnl said functions need to be just about as complex as they already are. - -AC_PREREQ(2.63) -AUTOMAKE_OPTIONS = 1.10 -dnl Sneaky way to get an Id tag into the configure script -AC_INIT([librb],[devel]) -AM_INIT_AUTOMAKE([subdir-objects]) -AM_SILENT_RULES([yes]) - -AM_CONFIG_HEADER(include/librb_config.h) - -AC_PREFIX_DEFAULT(/usr/local/librb) -AC_GNU_SOURCE - -dnl Checks for programs. -AC_PROG_CC_C99 - -if test x"$ac_cv_prog_cc_c99" = "xno"; then - AC_ERROR([solanum requires a C99 capable compiler]) -fi - - -AC_PROG_INSTALL -AC_PROG_EGREP -AC_PROG_SED - -F77=no -CXX=no -GCJ=no - -AM_DISABLE_STATIC -AM_ENABLE_SHARED -AM_MAINTAINER_MODE - -AC_ISC_POSIX -AC_C_INLINE -AC_C_CONST -AC_C_BIGENDIAN -AC_PROG_MAKE_SET -AC_PROG_INSTALL -AC_PATH_PROG(AUTOMAKE, automake) -AC_PATH_PROG(ACLOCAL, aclocal) -AC_PATH_PROG(AUTOHEADER, autoheader) -AC_PATH_PROG(AS, as) -AC_PATH_PROG(RM, rm) -AC_PATH_PROG(CP, cp) -AC_PATH_PROG(MV, mv) -AC_PATH_PROG(LN, ln) -AC_PATH_PROG(TOUCH, touch) -AC_LANG(C) - -AC_PROG_LIBTOOL - -LIBTOOL="$LIBTOOL --silent" - -case "$host_os" in -*solaris*) - CPPFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_XPG4_2" - ;; -*) - ;; -esac - -# backwards support for IRC_CFLAGS -CFLAGS="$IRC_CFLAGS $CFLAGS -Wall" - -dnl use directory structure of cached as default (hack) -if test "$libexecdir" = '${exec_prefix}/libexec' && - test "$localstatedir" = '${prefix}/var'; then - libexecdir='${bindir}' - localstatedir='${prefix}' -fi - -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_TYPE_SSIZE_T -AC_TYPE_UID_T - - -dnl Checks for header files. -AC_HEADER_STDC - -AC_CHECK_HEADERS([crypt.h sys/poll.h sys/epoll.h sys/select.h sys/devpoll.h sys/event.h port.h sys/signalfd.h sys/timerfd.h]) -AC_HEADER_TIME - -dnl Networking Functions -dnl ==================== - -AC_SEARCH_LIBS(socket, socket,,) - - -AC_CHECK_MEMBER([struct sockaddr.sa_len], [AC_DEFINE(SOCKADDR_IN_HAS_LEN, 1, [Define to 1 if sockaddr has a 'sa_len' -member.])],,[[ -#include -#include -]]) - -dnl Check for stdarg.h - if we cant find it, halt configure -AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - librb will not compile without it **])]) - -dnl check for various functions... -AC_CHECK_FUNCS([getexecname strlcpy strlcat strcasestr signalfd kevent port_create epoll_ctl arc4random timerfd_create]) - -AC_SEARCH_LIBS(dlinfo, dl, AC_DEFINE(HAVE_DLINFO, 1, [Define if you have dlinfo])) -AC_SEARCH_LIBS(timer_create, rt, AC_DEFINE(HAVE_TIMER_CREATE, 1, [Define if you have timer_create])) -RB_CHECK_TIMER_CREATE -RB_CHECK_TIMERFD_CREATE - -AC_FUNC_ALLOCA -AC_FUNC_VFORK -AC_FUNC_MMAP - -AC_MSG_CHECKING(for /dev/poll) -if test -c "/dev/poll"; then - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_DEVPOLL, [1], [Define to 1 if you have devpoll]) -else - AC_MSG_RESULT(no) -fi - - -dnl OpenSSL support -AC_MSG_CHECKING(for OpenSSL) -AC_ARG_ENABLE(openssl, -[AC_HELP_STRING([--enable-openssl[=DIR]],[Enable OpenSSL support (DIR optional).]) -AC_HELP_STRING([--disable-openssl],[Disable OpenSSL support.])], -[cf_enable_openssl=$enableval], -[cf_enable_openssl="auto"]) - -if test "$cf_enable_openssl" != "no" ; then - cf_openssl_basedir="" - if test "$cf_enable_openssl" != "auto" && - test "$cf_enable_openssl" != "yes" ; then - dnl Support for --enable-openssl=/some/place - cf_openssl_basedir="`echo ${cf_enable_openssl} | sed 's/\/$//'`" - else - dnl Do the auto-probe here. Check some common directory paths. - for dirs in /usr/local/ssl /usr/pkg /usr/local \ - /usr/local/openssl ; do - if test -f "${dirs}/include/openssl/opensslv.h" ; then - cf_openssl_basedir="${dirs}" - break - fi - done - unset dirs - fi - dnl Now check cf_openssl_found to see if we found anything. - if test ! -z "$cf_openssl_basedir"; then - if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" ; then - SSL_CFLAGS="-I${cf_openssl_basedir}/include" - SSL_LIBS="-L${cf_openssl_basedir}/lib" - else - dnl OpenSSL wasn't found in the directory specified. Naughty - dnl administrator... - cf_openssl_basedir="" - fi - else - dnl Check for stock FreeBSD 4.x and 5.x systems, since their files - dnl are in /usr/include and /usr/lib. In this case, we don't want to - dnl change INCLUDES or LIBS, but still want to enable OpenSSL. - dnl We can't do this check above, because some people want two versions - dnl of OpenSSL installed (stock FreeBSD 4.x/5.x and /usr/local/ssl) - dnl and they want /usr/local/ssl to have preference. - if test -f "/usr/include/openssl/opensslv.h" ; then - cf_openssl_basedir="/usr" - fi - fi - - dnl If we have a basedir defined, then everything is okay. Otherwise, - dnl we have a problem. - if test ! -z "$cf_openssl_basedir"; then - AC_MSG_RESULT($cf_openssl_basedir) - cf_enable_openssl="yes" - else - AC_MSG_RESULT([not found. Specify a correct path?]) - cf_enable_openssl="no" - fi - unset cf_openssl_basedir -else - dnl If --disable-openssl was specified - AC_MSG_RESULT(disabled) -fi - -save_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $SSL_CFLAGS" -save_LIBS="$LIBS" -LIBS="$LIBS $SSL_LIBS" -if test "$cf_enable_openssl" != no; then - dnl Check OpenSSL version (must be 0.9.7 or above!) - AC_MSG_CHECKING(for OpenSSL 0.9.7 or above) - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [#include - #include ], - [[if (OPENSSL_VERSION_NUMBER >= 0x00907000) - exit(0); else exit(1);]])], - cf_enable_openssl=yes, - cf_enable_openssl=no, - cf_enable_openssl=no) - - if test "$cf_enable_openssl" != no; then - AC_MSG_RESULT(found) - else - AC_MSG_RESULT(no - OpenSSL support disabled) - fi - -fi - - -if test "$cf_enable_openssl" != no; then - CPPFLAGS="$CPPFLAGS $SSL_LIBS" - AC_CHECK_LIB(crypto, RAND_status, - [cf_enable_openssl=yes], - [cf_enable_openssl=no]) -fi - -if test "$cf_enable_openssl" != no; then - CPPFLAGS="$CPPFLAGS $SSL_LIBS" - AC_CHECK_LIB(ssl, SSL_read, - [SSL_LIBS="$SSL_LIBS -lssl -lcrypto"], - [cf_enable_openssl=no], [-lcrypto]) -fi - - -dnl mbedTLS support -AC_ARG_ENABLE(mbedtls, -[AC_HELP_STRING([--enable-mbedtls], [Enable mbedTLS support.]) -AC_HELP_STRING([--disable-mbedtls], [Disable mbedTLS support.])], -[cf_enable_mbedtls=$enableval], -[cf_enable_mbedtls="auto"]) - -if test "$cf_enable_mbedtls" != no; then - save_CPPFLAGS="$CPPFLAGS" - save_LIBS="$LIBS" - LIBS="$LIBS $MBEDTLS_LIBS" - AC_CHECK_LIB(mbedtls, mbedtls_ssl_init, [ - MBEDTLS_LIBS="$MBEDTLS_LIBS -lmbedtls -lmbedx509 -lmbedcrypto" - cf_enable_mbedtls=yes - ], [cf_enable_mbedtls=no], [-lmbedx509 -lmbedcrypto]) -fi - -dnl GnuTLS support -AC_MSG_CHECKING(for GnuTLS) -AC_ARG_ENABLE(gnutls, -[AC_HELP_STRING([--enable-gnutls],[Enable GnuTLS support.]) -AC_HELP_STRING([--disable-gnutls],[Disable GnuTLS support.])], -[cf_enable_gnutls=$enableval], -[cf_enable_gnutls="auto"]) - -if test "$cf_enable_gnutls" != no; then - PKG_CHECK_MODULES(GNUTLS, [gnutls], [ - cf_enable_gnutls="yes" - ], [cf_enable_gnutls="no"]) -fi - -dnl mbed TLS is given highest preference when no specified TLS library is provided -if test "$cf_enable_openssl" = "auto" -a "$cf_enable_mbedtls" = "yes"; then - cf_enable_openssl="no" -fi - -if test "$cf_enable_gnutls" = "auto" -a "$cf_enable_openssl" = "yes" -a "$cf_enable_mbedtls" = "yes"; then - cf_enable_gnutls="no" -fi - -if test x"$cf_enable_openssl" != xno; then - AC_DEFINE(HAVE_OPENSSL,1,[Has OpenSSL]) - GNUTLS_CFLAGS="" - GNUTLS_LIBS="" - MBEDTLS_LIBS="" - MBEDTLS_CFLAGS="" - SSL_TYPE="openssl" -elif test x"$cf_enable_mbedtls" != xno; then - AC_DEFINE(HAVE_MBEDTLS, 1, [Has mbedTLS]) - SSL_LIBS="" - SSL_CFLAGS="" - GNUTLS_CFLAGS="" - GNUTLS_LIBS="" - SSL_TYPE="mbedtls" -elif test x"$cf_enable_gnutls" != xno; then - AC_DEFINE(HAVE_GNUTLS, 1, [Has GnuTLS]) - SSL_LIBS="" - SSL_CFLAGS="" - MBEDTLS_LIBS="" - MBEDTLS_CFLAGS="" - SSL_TYPE="gnutls" -fi - - - - -CPPFLAGS="$save_CPPFLAGS" -LIBS="$save_LIBS" - -dnl End OpenSSL detection - - - -AC_ARG_WITH(sctp-path, -AC_HELP_STRING([--with-sctp-path=DIR],[Path to libsctp.so for SCTP support.]), -[LIBS="$LIBS -L$withval"],) - -AC_ARG_ENABLE(sctp, -AC_HELP_STRING([--disable-sctp],[Disable SCTP support]), -[sctp=$enableval],[sctp=yes]) - -if test "$sctp" = yes; then - -AC_CHECK_HEADER(netinet/sctp.h, [ - AC_SEARCH_LIBS(sctp_bindx, sctp, - [ - AC_DEFINE(HAVE_LIBSCTP, 1, [Define to 1 if libsctp (-lsctp) is available.]) - ], sctp=no) -], sctp=no) - -LIBSCTP_LD=$ac_cv_search_sctp_bindx - -if test "$LIBSCTP_LD" = "none required"; then - unset LIBSCTP_LD -elif test "$LIBSCTP_LD" = no; then - unset LIBSCTP_LD -fi - -AC_SUBST(LIBSCTP_LD) - -fi - - - -dnl Debug-related options -dnl ===================== - -AC_ARG_ENABLE(assert, -AC_HELP_STRING([--enable-assert],[Enable assert(). Choose between soft(warnings) and hard(aborts the daemon)]), -[assert=$enableval], [assert=no]) - -if test "$assert" = no; then - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = soft; then - AC_DEFINE(SOFT_ASSERT, 1, [Define this to enable soft asserts.]) - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -elif test "$assert" = yes; then - assert="hard" -fi - -AC_MSG_CHECKING(if you want to do a profile build) -AC_ARG_ENABLE(profile, -AC_HELP_STRING([--enable-profile],[Enable profiling]), -[profile=$enableval], [profile=no]) - -if test "$profile" = yes; then - if test "$ac_cv_c_compiler_gnu" = yes; then - CFLAGS="$CFLAGS -pg -static" - AC_MSG_RESULT([yes, adding -pg -static]) - else - AC_MSG_RESULT([no, profile builds only work with gcc]) - fi -else - AC_MSG_RESULT(no) -fi - -AC_ARG_ENABLE(warnings, -AC_HELP_STRING([--enable-warnings],[Enable all sorts of warnings for debugging.]), -[CFLAGS="$CFLAGS -Wall -Werror -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -W -Wno-unused -Wunused-function -Wunused-variable -Wno-unused-parameter"],[]) - -AC_SUBST(LDFLAGS) -AC_SUBST(PICFLAGS) -AC_SUBST(CFLAGS) -AC_SUBST(SEDOBJ) -AC_SUBST(SSL_CFLAGS) -AC_SUBST(SSL_LIBS) -AC_SUBST(GNUTLS_CFLAGS) -AC_SUBST(GNUTLS_LIBS) -AC_SUBST(MBEDTLS_CFLAGS) -AC_SUBST(MBEDTLS_LIBS) - -if test "$prefix" = "NONE"; then - AC_DEFINE_UNQUOTED(RB_PREFIX, "$ac_default_prefix", [Prefix where librb is installed.]) -else - dnl Strip trailing slashes to prevent a path of '//' - prefix=`echo $prefix | sed 's/\/$//'` - AC_DEFINE_UNQUOTED(RB_PREFIX, "$prefix", [Prefix where librb is installed.]) -fi - -AC_SUBST(RB_PREFIX) - -AC_CONFIG_COMMANDS([include/librb-config.h], -[ - outfile=include/librb-config.h.tmp - cat > $outfile <<\_______EOF -/* - * librb-config.h: librb config file. Please modify configure.ac - */ - -#ifndef __LIBRB_CONFIG_H -#define __LIBRB_CONFIG_H - -_______EOF - -if test "x$rb_alloca_h" = "xyes"; then - echo '#define RB_HAVE_ALLOCA_H 1' >> $outfile -fi - -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile -echo '#include ' >> $outfile - -if test "x$rb_netinet_sctp_h" == "xyes"; then - echo '#include ' >> $outfile -fi - -echo '#include ' >> $outfile -echo '#include ' >> $outfile - -if test "x$rb_crypt_h" = "xyes"; then - echo '#include ' >> $outfile -fi - -echo '#include ' >> $outfile - -echo "typedef socklen_t rb_socklen_t;" >> $outfile - - -if test "x$rb_sockaddr_sa_len" = "xyes"; then - echo '#define RB_SOCKADDR_HAS_SA_LEN 1' >> $outfile -fi - -echo '#define rb_sockaddr_storage sockaddr_storage' >> $outfile - -cat >> $outfile <<\_______EOF -#endif /* __LIBRB_CONFIG_H */ -_______EOF - -if cmp -s $outfile include/librb-config.h; then - AC_MSG_NOTICE([include/librb-config.h is unchanged]) - ${rb_rm} -f $outfile -else - ${rb_mv} $outfile include/librb-config.h -fi - -],[ - if test x$ac_cv_header_memory_h = xyes; then - rb_header_memory_h=yes - fi - if test "x${ac_cv_working_alloca_h+set}" = xset ; then - rb_alloca_h="$ac_cv_working_alloca_h" - else - rb_alloc_h="$ac_cv_header_alloca_h" - fi - if test x$ac_cv_member_struct_sockaddr_sa_len = xyes; then - rb_sockaddr_sa_len=yes - fi - - if test x$ac_cv_header_netinet_sctp_h = xyes; then - rb_netinet_sctp_h=yes - fi - - if test x$ac_cv_header_crypt_h = xyes; then - rb_crypt_h=yes - fi - - rb_socklen_t="socklen_t" - - rb_mv="$MV" - rb_rm="$RM" -] -) - - -AC_CONFIG_FILES( \ - src/Makefile \ - Makefile -) - -AC_OUTPUT - -dnl Make it look sexay! - -echo -echo "Compiling $PACKAGE_NAME $PACKAGE_VERSION" -echo - -echo "Installing into: $prefix" - -echo "Assert debugging ............... $assert" -echo "SSL Type........................ $SSL_TYPE" -echo "SCTP............................ $sctp" -echo diff --git a/librb/install-sh b/librb/install-sh deleted file mode 100755 index 0b0fdcbba..000000000 --- a/librb/install-sh +++ /dev/null @@ -1,501 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2013-12-25.23; # UTC - -# 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. - -tab=' ' -nl=' -' -IFS=" $tab$nl" - -# Set DOITPROG to "echo" to test this script. - -doit=${DOITPROG-} -doit_exec=${doit:-exec} - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -is_target_a_directory=possibly - -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: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -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. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) is_target_a_directory=never;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; 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 - -if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for 'test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - 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 "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # 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 "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - dstdir=`dirname "$dst"` - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - oIFS=$IFS - IFS=/ - set -f - set fnord $dstdir - shift - set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # 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 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $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 $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - set +f && - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 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. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/librb/src/Makefile.am b/librb/src/Makefile.am deleted file mode 100644 index 140596f75..000000000 --- a/librb/src/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ - -AUTOMAKE_OPTIONS = foreign - -AM_CPPFLAGS = -I. -I../include @SSL_CFLAGS@ @GNUTLS_CFLAGS@ @MBEDTLS_CFLAGS@ - -BUILT_SOURCES = version.c - -version.c: version.c.SH ../CREDITS - $(SHELL) ./version.c.SH - $(CP) version.c version.c.last - -version.lo: version.c ../include/serno.h ../include/datecode.h - $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ - -librb_la_SOURCES = \ - unix.c \ - crypt.c \ - balloc.c \ - commio.c \ - mbedtls.c \ - openssl.c \ - gnutls.c \ - nossl.c \ - event.c \ - rb_lib.c \ - rb_memory.c \ - linebuf.c \ - tools.c \ - helper.c \ - devpoll.c \ - epoll.c \ - poll.c \ - ports.c \ - sigio.c \ - kqueue.c \ - rawbuf.c \ - patricia.c \ - dictionary.c \ - radixtree.c \ - arc4random.c \ - version.c - -librb_la_LDFLAGS = @SSL_LIBS@ @GNUTLS_LIBS@ @MBEDTLS_LIBS@ -avoid-version -no-undefined -export-symbols export-syms.txt -librb_la_LIBADD = @SSL_LIBS@ @GNUTLS_LIBS@ @MBEDTLS_LIBS@ @LIBSCTP_LD@ -lib_LTLIBRARIES = librb.la diff --git a/librb/src/version.c.SH b/librb/src/version.c.SH deleted file mode 100644 index 19e2cf23e..000000000 --- a/librb/src/version.c.SH +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -set -eu - -echo "Extracting librb/src/version.c..." - -if test -r version.c.last -then - generation=`sed -n 's/^const char \*librb_generation = "\(.*\)";/\1/p' < version.c.last` - if test ! "$generation" ; then generation=0; fi -else - generation=0 -fi - -generation=`expr $generation + 1` - -# Generate CREDITS content -credits=$(grep -v '^$Id' ../CREDITS | tr -d '"' | sed 's/.*/ "&",/') - -# Read template and substitute -sed -e "s/@GENERATION@/$generation/" \ - -e "/@CREDITS@/r /dev/stdin" \ - -e "/@CREDITS@/d" \ - version.c.in > version.c << EOF -$credits -EOF diff --git a/m4/charybdis.m4 b/m4/charybdis.m4 deleted file mode 100644 index 75817cd19..000000000 --- a/m4/charybdis.m4 +++ /dev/null @@ -1,58 +0,0 @@ -AC_DEFUN([AC_DEFINE_DIR], [ - test "x$prefix" = xNONE && prefix="$ac_default_prefix" - test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - last_ac_define_dir=`eval echo [$]$2` - ac_define_dir=`eval echo [$]last_ac_define_dir` - ac_define_dir_counter=0 - while test "x[$]last_ac_define_dir" != "x[$]ac_define_dir"; do - last_ac_define_dir="[$]ac_define_dir" - ac_define_dir=`eval echo [$]last_ac_define_dir` - AS_VAR_ARITH([ac_define_dir_counter], [$ac_define_dir_counter + 1]) - AS_VAR_IF([ac_define_dir_counter], [128], - [AC_MSG_ERROR([detected recusive directory expansion when expanding $1=[$]$2: [$]ac_define_dir]) - break]) - done - $1="$ac_define_dir" - AC_SUBST($1) - ifelse($3, , - AC_DEFINE_UNQUOTED($1, "$ac_define_dir"), - AC_DEFINE_UNQUOTED($1, "$ac_define_dir", $3)) -]) - -AC_DEFUN([AC_SUBST_DIR], [ - ifelse($2,,,$1="[$]$2") - $1=`( - test "x$prefix" = xNONE && prefix="$ac_default_prefix" - test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" - eval echo \""[$]$1"\" - )` - AC_SUBST($1) -]) - -dnl SOLANUM_C_GCC_TRY_FLAGS(,) -AC_DEFUN([SOLANUM_C_GCC_TRY_FLAGS],[ - AC_MSG_CHECKING([GCC flag(s) $1]) - if test "${GCC-no}" = yes - then - AC_CACHE_VAL($2,[ - oldcflags="${CFLAGS-}" - CFLAGS="${CFLAGS-} ${CWARNS} $1 -Werror" - AC_TRY_COMPILE([ -#include -#include -int main(void); -],[ - (void)strcmp("a","b"); fprintf(stdout,"test ok\n"); -], [$2=yes], [$2=no]) - CFLAGS="${oldcflags}"]) - if test "x$$2" = xyes; then - CWARNS="${CWARNS}$1 " - AC_MSG_RESULT(ok) - else - $2='' - AC_MSG_RESULT(no) - fi - else - AC_MSG_RESULT(no, not using GCC) - fi -]) diff --git a/m4/pkg.m4 b/m4/pkg.m4 deleted file mode 100644 index 75a89ecfe..000000000 --- a/m4/pkg.m4 +++ /dev/null @@ -1,287 +0,0 @@ -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# 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. -# -# 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. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])# PKG_PROG_PKG_CONFIG - -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])# _PKG_CONFIG - -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED - - -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES - -# PKG_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable pkgconfigdir as the location where a module -# should install pkg-config .pc files. By default the directory is -# $libdir/pkgconfig, but the default can be changed by passing -# DIRECTORY. The user can override through the --with-pkgconfigdir -# parameter. -AC_DEFUN([PKG_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, - [with_pkgconfigdir=]pkg_default) -AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -]) dnl PKG_INSTALLDIR - - -# PKG_NOARCH_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable noarch_pkgconfigdir as the location where a -# module should install arch-independent pkg-config .pc files. By -# default the directory is $datadir/pkgconfig, but the default can be -# changed by passing DIRECTORY. The user can override through the -# --with-noarch-pkgconfigdir parameter. -AC_DEFUN([PKG_NOARCH_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([noarch-pkgconfigdir], - [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, - [with_noarch_pkgconfigdir=]pkg_default) -AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -]) dnl PKG_NOARCH_INSTALLDIR - - -# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# ------------------------------------------- -# Retrieves the value of the pkg-config variable for the given module. -AC_DEFUN([PKG_CHECK_VAR], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl - -_PKG_CONFIG([$1], [variable="][$3]["], [$2]) -AS_VAR_COPY([$1], [pkg_cv_][$1]) - -AS_VAR_IF([$1], [""], [$5], [$4])dnl -])# PKG_CHECK_VAR - -# PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, -# [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], -# [DESCRIPTION], [DEFAULT]) -# -# Prepare a "--with-" configure option using the lowercase [VARIABLE-PREFIX] -# name, merging the behaviour of AC_ARG_WITH and PKG_CHECK_MODULES in a single -# macro -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_WITH_MODULES], -[ -m4_pushdef([with_arg], m4_tolower([$1])) - -m4_pushdef([description], - [m4_default([$5], [build with ]with_arg[ support])]) - -m4_pushdef([def_arg], [m4_default([$6], [auto])]) -m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) -m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) - -m4_case(def_arg, - [yes],[m4_pushdef([with_without], [--without-]with_arg)], - [m4_pushdef([with_without],[--with-]with_arg)]) - -AC_ARG_WITH(with_arg, - AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, - [AS_TR_SH([with_]with_arg)=def_arg]) - -AS_CASE([$AS_TR_SH([with_]with_arg)], - [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], - [auto],[PKG_CHECK_MODULES([$1],[$2], - [m4_n([def_action_if_found]) $3], - [m4_n([def_action_if_not_found]) $4])]) - -m4_popdef([with_arg]) -m4_popdef([description]) -m4_popdef([def_arg]) - -]) dnl PKG_WITH_MODULES - -# PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -# [DESCRIPTION], [DEFAULT]) -# -# Convenience macro to trigger AM_CONDITIONAL after -# PKG_WITH_MODULES check. -# -# HAVE_[VARIABLE-PREFIX] is exported as make variable. -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_HAVE_WITH_MODULES], -[ -PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) - -AM_CONDITIONAL([HAVE_][$1], - [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) -]) - -# PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -# [DESCRIPTION], [DEFAULT]) -# -# Convenience macro to run AM_CONDITIONAL and AC_DEFINE after -# PKG_WITH_MODULES check. -# -# HAVE_[VARIABLE-PREFIX] is exported as make and preprocessor variable. -# -# -------------------------------------------------------------- -AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], -[ -PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) - -AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], - [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) -]) diff --git a/modules/Makefile.am b/modules/Makefile.am deleted file mode 100644 index c994012e1..000000000 --- a/modules/Makefile.am +++ /dev/null @@ -1,98 +0,0 @@ -AUTOMAKE_OPTIONS = subdir-objects - -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/librb/include $(LTDLINCL) -AM_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined -shared -LIBS += $(top_srcdir)/ircd/libircd.la - -auto_load_moddir=@moduledir@/autoload - -auto_load_mod_LTLIBRARIES = \ - cap_account_tag.la \ - cap_server_time.la \ - chm_nocolour.la \ - chm_noctcp.la \ - um_callerid.la \ - um_regonlymsg.la \ - m_accept.la \ - m_admin.la \ - m_alias.la \ - m_away.la \ - m_batch.la \ - m_cap.la \ - m_capab.la \ - m_certfp.la \ - m_challenge.la \ - m_chghost.la \ - m_close.la \ - m_connect.la \ - m_dline.la \ - m_encap.la \ - m_etrace.la \ - m_grant.la \ - m_help.la \ - m_info.la \ - m_invite.la \ - m_ison.la \ - m_kline.la \ - m_knock.la \ - m_links.la \ - m_list.la \ - m_lusers.la \ - m_map.la \ - m_monitor.la \ - m_motd.la \ - m_names.la \ - m_oper.la \ - m_operspy.la \ - m_pass.la \ - m_ping.la \ - m_pong.la \ - m_post.la \ - m_privs.la \ - m_rehash.la \ - m_restart.la \ - m_resv.la \ - m_sasl.la \ - m_scan.la \ - m_services.la \ - m_set.la \ - m_signon.la \ - m_snote.la \ - m_starttls.la \ - m_stats.la \ - m_svinfo.la \ - m_tb.la \ - m_testline.la \ - m_testmask.la \ - m_tginfo.la \ - m_time.la \ - m_topic.la \ - m_trace.la \ - m_unreject.la \ - m_user.la \ - m_userhost.la \ - m_users.la \ - m_version.la \ - m_wallops.la \ - m_who.la \ - m_whois.la \ - m_whowas.la \ - m_xline.la \ - sno_routing.la - -module_LTLIBRARIES = \ - core/m_ban.la \ - core/m_die.la \ - core/m_error.la \ - core/m_join.la \ - core/m_kick.la \ - core/m_kill.la \ - core/m_message.la \ - core/m_mode.la \ - core/m_modules.la \ - core/m_nick.la \ - core/m_part.la \ - core/m_quit.la \ - core/m_server.la \ - core/m_squit.la \ - core/m_identified.la diff --git a/scripts/application.sh b/scripts/application.sh deleted file mode 100755 index cfd83ff70..000000000 --- a/scripts/application.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# application.sh: Special package building rules for solanum. -# -# Copyright (c) 2007-2008 atheme.org -# -# Permission to use, copy, modify, and/or distribute this software for -# any purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -if [ "x$TIP" = "x" ]; then - echo "Please don't run me directly." - exit -fi - -# Solanum wants the git head to be in include/serno.h, in its own format. -SERNO=`git rev-list -1 --no-commit-header --date=format:%Y%m%d --format=%cd-%h HEAD` -DATECODE=`git rev-list -1 --no-commit-header --format=%ct HEAD` - -echo "[solanum] Generating include/serno.h for tip $MYTIP." -cat << _EOF_ > include/serno.h -/* Generated automatically by makepackage. Any changes made here will be lost. */ -#define SERNO "$SERNO" -#define DATECODE ${DATECODE}UL -_EOF_ diff --git a/scripts/makerelease.sh b/scripts/makerelease.sh deleted file mode 100755 index e5dbfd3c6..000000000 --- a/scripts/makerelease.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh -# mkrelease.sh: Creates a release suitable for distfiles.atheme.org. -# -# Copyright (c) 2007, 2011 atheme.org -# -# Permission to use, copy, modify, and/or distribute this software for -# any purpose with or without fee is hereby granted, provided that the above -# copyright notice and this permission notice appear in all copies. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -if [ "x$1" = "x" ]; then - echo "usage: $0 releasename" - exit -else - RELEASENAME="$1" -fi - -TIP=`git rev-list -1 --no-commit-header --format=%h HEAD` - -WRKDIR=`pwd` - -if [ -d $RELEASENAME ]; then - echo "Deleting previous release named $RELEASENAME." - rm -rf $WRKDIR/$RELEASENAME/ -fi - -echo "Making release named $RELEASENAME (tip $TIP)" - -echo -echo "Building root: $RELEASENAME/" -cd .. -git archive --format=tar --prefix=$RELEASENAME/ HEAD | gzip >scripts/$RELEASENAME-working.tar.gz -cd $WRKDIR -tar -xzvf $RELEASENAME-working.tar.gz -cd $RELEASENAME -sh autogen.sh -rm -rf autogen.sh autom4te.cache -rm -rf .gitignore - -# Run application specific instructions here. -if [ -x "$WRKDIR/application.sh" ]; then - . $WRKDIR/application.sh -fi - -cd .. - -echo "Building $RELEASENAME.tgz from $RELEASENAME/" -tar zcf $RELEASENAME.tar.gz $RELEASENAME/ - -echo "Building $RELEASENAME.tbz2 from $RELEASENAME/" -tar jcf $RELEASENAME.tar.bz2 $RELEASENAME/ - -rm $RELEASENAME-working.tar.gz -rm -rf $RELEASENAME - -echo "Done. $RELEASENAME.tar.gz and $RELEASENAME.tar.bz2 built." diff --git a/shtool b/shtool deleted file mode 100755 index ce20f0a57..000000000 --- a/shtool +++ /dev/null @@ -1,4053 +0,0 @@ -#!/bin/sh -## -## GNU shtool -- The GNU Portable Shell Tool -## Copyright (c) 1994-2008 Ralf S. Engelschall -## -## See http://www.gnu.org/software/shtool/ for more information. -## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. -## -## Version: 2.0.8 (18-Jul-2008) -## Contents: all available modules -## - -## -## 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, or contact Ralf S. Engelschall . -## -## NOTICE: Given that you include this file verbatim into your own -## source tree, you are justified in saying that it remains separate -## from your package, and that this way you are simply just using GNU -## shtool. So, in this situation, there is no requirement that your -## package itself is licensed under the GNU General Public License in -## order to take advantage of GNU shtool. -## - -## -## Usage: shtool [] [ [] []] -## -## Available commands: -## echo Print string with optional construct expansion -## mdate Pretty-print modification time of a file or dir -## table Pretty-print a field-separated list as a table -## prop Display progress with a running propeller -## move Move files with simultaneous substitution -## install Install a program, script or datafile -## mkdir Make one or more directories -## mkln Make link with calculation of relative paths -## mkshadow Make a shadow tree through symbolic links -## fixperm Fix file permissions inside a source tree -## rotate Logfile rotation -## tarball Roll distribution tarballs -## subst Apply sed(1) substitution operations -## platform Platform Identification Utility -## arx Extended archive command -## slo Separate linker options by library class -## scpp Sharing C Pre-Processor -## version Maintain a version information file -## path Deal with program paths -## - -# maximum Bourne-Shell compatibility -if [ ".$ZSH_VERSION" != . ] && (emulate sh) >/dev/null 2>&1; then - # reconfigure zsh(1) - emulate sh - NULLCMD=: - alias -g '${1+"$@"}'='"$@"' -elif [ ".$BASH_VERSION" != . ] && (set -o posix) >/dev/null 2>&1; then - # reconfigure bash(1) - set -o posix -fi - -# maximum independence of NLS nuisances -for 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 $var=C; export $var) 2>&1`"); then - eval $var=C; export $var - else - unset $var - fi -done - -# initial command line handling -if [ $# -eq 0 ]; then - echo "$0:Error: invalid command line" 1>&2 - echo "$0:Hint: run \`$0 -h' for usage" 1>&2 - exit 1 -fi -if [ ".$1" = ".-h" ] || [ ".$1" = ".--help" ]; then - echo "This is GNU shtool, version 2.0.8 (18-Jul-2008)" - echo 'Copyright (c) 1994-2008 Ralf S. Engelschall ' - echo 'Report bugs to ' - echo '' - echo 'Usage: shtool [] [ [] []]' - echo '' - echo 'Available global :' - echo ' -v, --version display shtool version information' - echo ' -h, --help display shtool usage help page (this one)' - echo ' -d, --debug display shell trace information' - echo ' -r, --recreate recreate this shtool script via shtoolize' - echo '' - echo 'Available [] []:' - echo ' echo [-n|--newline] [-e|--expand] [ ...]' - echo ' mdate [-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits]' - echo ' [-f|--field-sep ] [-o|--order ] ' - echo ' table [-F|--field-sep ] [-w|--width ] [-c|--columns' - echo ' ] [-s|--strip ] ...' - echo ' prop [-p|--prefix ]' - echo ' move [-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve]' - echo ' ' - echo ' install [-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy]' - echo ' [-C|--compare-copy] [-s|--strip] [-m|--mode ]' - echo ' [-o|--owner ] [-g|--group ] [-e|--exec' - echo ' ] [ ...] ' - echo ' mkdir [-t|--trace] [-f|--force] [-p|--parents] [-m|--mode' - echo ' ] [-o|--owner ] [-g|--group ] ' - echo ' [ ...]' - echo ' mkln [-t|--trace] [-f|--force] [-s|--symbolic] ' - echo ' [ ...] ' - echo ' mkshadow [-v|--verbose] [-t|--trace] [-a|--all] ' - echo ' fixperm [-v|--verbose] [-t|--trace] [ ...]' - echo ' rotate [-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files' - echo ' ] [-s|--size ] [-c|--copy] [-r|--remove]' - echo ' [-a|--archive-dir ] [-z|--compress [:]]' - echo ' [-b|--background] [-d|--delay] [-p|--pad ] [-m|--mode' - echo ' ] [-o|--owner ] [-g|--group ] [-M|--migrate' - echo ' ] [-P|--prolog ] [-E|--epilog ] [...]' - echo ' tarball [-t|--trace] [-v|--verbose] [-o|--output ]' - echo ' [-c|--compress ] [-d|--directory ] [-u|--user' - echo ' ] [-g|--group ] [-e|--exclude ]' - echo ' [ ...]' - echo ' subst [-v|--verbose] [-t|--trace] [-n|--nop] [-w|--warning]' - echo ' [-q|--quiet] [-s|--stealth] [-i|--interactive] [-b|--backup' - echo ' ] [-e|--exec ] [-f|--file ] []' - echo ' [...]' - echo ' platform [-F|--format ] [-S|--sep ] [-C|--conc' - echo ' ] [-L|--lower] [-U|--upper] [-v|--verbose]' - echo ' [-c|--concise] [-n|--no-newline] [-t|--type ]' - echo ' [-V|--version] [-h|--help]' - echo ' arx [-t|--trace] [-C|--command ] [' - echo ' ...]' - echo ' slo [-p|--prefix ] -- -L -l [-L -l' - echo ' ...]' - echo ' scpp [-v|--verbose] [-p|--preserve] [-f|--filter ]' - echo ' [-o|--output ] [-t|--template ] [-M|--mark' - echo ' ] [-D|--define ] [-C|--class ]' - echo ' [ ...]' - echo ' version [-l|--language ] [-n|--name ] [-p|--prefix' - echo ' ] [-s|--set ] [-e|--edit] [-i|--increase' - echo ' ] [-d|--display ] ' - echo ' path [-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename]' - echo ' [-m|--magic] [-p|--path ] [ ...]' - echo '' - exit 0 -fi -if [ ".$1" = ".-v" ] || [ ".$1" = ".--version" ]; then - echo "GNU shtool 2.0.8 (18-Jul-2008)" - exit 0 -fi -if [ ".$1" = ".-r" ] || [ ".$1" = ".--recreate" ]; then - shtoolize -oshtool all - exit 0 -fi -if [ ".$1" = ".-d" ] || [ ".$1" = ".--debug" ]; then - shift - set -x -fi -name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'` -case "$name" in - echo|mdate|table|prop|move|install|mkdir|mkln|mkshadow|fixperm|rotate|tarball|subst|platform|arx|slo|scpp|version|path ) - # implicit tool command selection - tool="$name" - ;; - * ) - # explicit tool command selection - tool="$1" - shift - ;; -esac -arg_spec="" -opt_spec="" -gen_tmpfile=no - -## -## DISPATCH INTO SCRIPT PROLOG -## - -case $tool in - echo ) - str_tool="echo" - str_usage="[-n|--newline] [-e|--expand] [ ...]" - arg_spec="0+" - opt_spec="n.e." - opt_alias="n:newline,e:expand" - opt_n=no - opt_e=no - ;; - mdate ) - str_tool="mdate" - str_usage="[-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits] [-f|--field-sep ] [-o|--order ] " - arg_spec="1=" - opt_spec="n.z.s.d.f:o:" - opt_alias="n:newline,z:zero,s:shorten,d:digits,f:field-sep,o:order" - opt_n=no - opt_z=no - opt_s=no - opt_d=no - opt_f=" " - opt_o="dmy" - ;; - table ) - str_tool="table" - str_usage="[-F|--field-sep ] [-w|--width ] [-c|--columns ] [-s|--strip ] ..." - arg_spec="1+" - opt_spec="F:w:c:s:" - opt_alias="F:field-sep,w:width,c:columns,s:strip" - opt_F=":" - opt_w=15 - opt_c=3 - opt_s=79 - ;; - prop ) - str_tool="prop" - str_usage="[-p|--prefix ]" - arg_spec="0=" - opt_spec="p:" - opt_alias="p:prefix" - opt_p="" - ;; - move ) - str_tool="move" - str_usage="[-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve] " - arg_spec="2=" - opt_spec="v.t.e.p." - opt_alias="v:verbose,t:trace,e:expand,p:preserve" - opt_v=no - opt_t=no - opt_e=no - opt_p=no - ;; - install ) - str_tool="install" - str_usage="[-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy] [-C|--compare-copy] [-s|--strip] [-m|--mode ] [-o|--owner ] [-g|--group ] [-e|--exec ] [ ...] " - arg_spec="1+" - opt_spec="v.t.d.c.C.s.m:o:g:e+" - opt_alias="v:verbose,t:trace,d:mkdir,c:copy,C:compare-copy,s:strip,m:mode,o:owner,g:group,e:exec" - opt_v=no - opt_t=no - opt_d=no - opt_c=no - opt_C=no - opt_s=no - opt_m="0755" - opt_o="" - opt_g="" - opt_e="" - ;; - mkdir ) - str_tool="mkdir" - str_usage="[-t|--trace] [-f|--force] [-p|--parents] [-m|--mode ] [-o|--owner ] [-g|--group ] [ ...]" - arg_spec="1+" - opt_spec="t.f.p.m:o:g:" - opt_alias="t:trace,f:force,p:parents,m:mode,o:owner,g:group" - opt_t=no - opt_f=no - opt_p=no - opt_m="" - opt_o="" - opt_g="" - ;; - mkln ) - str_tool="mkln" - str_usage="[-t|--trace] [-f|--force] [-s|--symbolic] [ ...] " - arg_spec="2+" - opt_spec="t.f.s." - opt_alias="t:trace,f:force,s:symbolic" - opt_t=no - opt_f=no - opt_s=no - ;; - mkshadow ) - str_tool="mkshadow" - str_usage="[-v|--verbose] [-t|--trace] [-a|--all] " - arg_spec="2=" - opt_spec="v.t.a." - opt_alias="v:verbose,t:trace,a:all" - opt_v=no - opt_t=no - opt_a=no - ;; - fixperm ) - str_tool="fixperm" - str_usage="[-v|--verbose] [-t|--trace] [ ...]" - arg_spec="1+" - opt_spec="v.t." - opt_alias="v:verbose,t:trace" - opt_v=no - opt_t=no - ;; - rotate ) - str_tool="rotate" - str_usage="[-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files ] [-s|--size ] [-c|--copy] [-r|--remove] [-a|--archive-dir ] [-z|--compress [:]] [-b|--background] [-d|--delay] [-p|--pad ] [-m|--mode ] [-o|--owner ] [-g|--group ] [-M|--migrate ] [-P|--prolog ] [-E|--epilog ] [...]" - arg_spec="1+" - opt_spec="v.t.f.n:s:c.r.a:z:b.d.p:o:g:m:M:P:E:" - opt_alias="v:verbose,t:trace,f:force,n:num-files,s:size,c:copy,r:remove,a:archive-dir,z:compress,b:background,d:delay,p:pad,o:owner,g:group,m:mode,M:migrate,P:prolog,E:epilog" - opt_v=no - opt_t=no - opt_f=no - opt_n=10 - opt_s="" - opt_c=no - opt_r=no - opt_a="" - opt_z="" - opt_b=no - opt_d=no - opt_p=1 - opt_o="" - opt_g="" - opt_m="" - opt_M="" - opt_P="" - opt_E="" - ;; - tarball ) - str_tool="tarball" - str_usage="[-t|--trace] [-v|--verbose] [-o|--output ] [-c|--compress ] [-d|--directory ] [-u|--user ] [-g|--group ] [-e|--exclude ] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="t.v.o:c:d:u:g:e:" - opt_alias="t:trace,v:verbose,o:output,c:compress,d:directory,u:user,g:group,e:exclude" - opt_t=no - opt_v=no - opt_o="" - opt_c="" - opt_d="" - opt_u="" - opt_g="" - opt_e="CVS,\\.cvsignore,\\.svn,\\.[oa]\$" - ;; - subst ) - str_tool="subst" - str_usage="[-v|--verbose] [-t|--trace] [-n|--nop] [-w|--warning] [-q|--quiet] [-s|--stealth] [-i|--interactive] [-b|--backup ] [-e|--exec ] [-f|--file ] [] [...]" - gen_tmpfile=yes - arg_spec="0+" - opt_spec="v.t.n.w.q.s.i.b:e+f:" - opt_alias="v:verbose,t:trace,n:nop,w:warning,q:quiet,s:stealth,i:interactive,b:backup,e:exec,f:file" - opt_v=no - opt_t=no - opt_n=no - opt_w=no - opt_q=no - opt_s=no - opt_i=no - opt_b="" - opt_e="" - opt_f="" - ;; - platform ) - str_tool="platform" - str_usage="[-F|--format ] [-S|--sep ] [-C|--conc ] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type ] [-V|--version] [-h|--help]" - arg_spec="0=" - opt_spec="F:S:C:L.U.v.c.n.t:d.V.h." - opt_alias="F:format,S:sep,C:conc,L:lower,U:upper,v:verbose,c:consise,t:type,n:no-newline,V:version,h:help" - opt_F="%{sp} (%{ap})" - opt_S=" " - opt_C="/" - opt_L=no - opt_U=no - opt_t="" - opt_v=no - opt_c=no - opt_n=no - opt_V=no - opt_h=no - ;; - arx ) - str_tool="arx" - str_usage="[-t|--trace] [-C|--command ] [ ...]" - arg_spec="2+" - opt_spec="t.C:" - opt_alias="t:trace,C:command" - opt_t=no - opt_C="ar" - ;; - slo ) - str_tool="slo" - str_usage="[-p|--prefix ] -- -L -l [-L -l ...]" - arg_spec="1+" - opt_spec="p:" - opt_alias="p:prefix" - opt_p="SLO_" - ;; - scpp ) - str_tool="scpp" - str_usage="[-v|--verbose] [-p|--preserve] [-f|--filter ] [-o|--output ] [-t|--template ] [-M|--mark ] [-D|--define ] [-C|--class ] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="v.p.f+o:t:M:D:C:" - opt_alias="v:verbose,p:preserve,f:filter,o:output,t:template,M:mark,D:define,C:class" - opt_v=no - opt_p=no - opt_f="" - opt_o="lib.h" - opt_t="lib.h.in" - opt_M="%%MARK%%" - opt_D="cpp" - opt_C="intern" - ;; - version ) - str_tool="version" - str_usage="[-l|--language ] [-n|--name ] [-p|--prefix ] [-s|--set ] [-e|--edit] [-i|--increase ] [-d|--display ] " - arg_spec="1=" - opt_spec="l:n:p:s:i:e.d:" - opt_alias="l:language,n:name,p:prefix,s:set,e:edit,i:increase,d:display" - opt_l="txt" - opt_n="unknown" - opt_p="" - opt_s="" - opt_e="no" - opt_i="" - opt_d="short" - ;; - path ) - str_tool="path" - str_usage="[-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename] [-m|--magic] [-p|--path ] [ ...]" - gen_tmpfile=yes - arg_spec="1+" - opt_spec="s.r.d.b.m.p:" - opt_alias="s:suppress,r:reverse,d:dirname,b:basename,m:magic,p:path" - opt_s=no - opt_r=no - opt_d=no - opt_b=no - opt_m=no - opt_p="$PATH" - ;; - -* ) - echo "$0:Error: unknown option \`$tool'" 2>&1 - echo "$0:Hint: run \`$0 -h' for usage" 2>&1 - exit 1 - ;; - * ) - echo "$0:Error: unknown command \`$tool'" 2>&1 - echo "$0:Hint: run \`$0 -h' for usage" 2>&1 - exit 1 - ;; -esac - -## -## COMMON UTILITY CODE -## - -# commonly used ASCII values -ASC_TAB=" " -ASC_NL=" -" - -# determine name of tool -if [ ".$tool" != . ]; then - # used inside shtool script - toolcmd="$0 $tool" - toolcmdhelp="shtool $tool" - msgprefix="shtool:$tool" -else - # used as standalone script - toolcmd="$0" - toolcmdhelp="sh $0" - msgprefix="$str_tool" -fi - -# parse argument specification string -eval `echo $arg_spec |\ - sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` - -# parse option specification string -eval `echo h.$opt_spec |\ - sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` - -# parse option alias string -eval `echo h:help,$opt_alias |\ - sed -e 's/-/_/g' -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'` - -# interate over argument line -opt_PREV='' -while [ $# -gt 0 ]; do - # special option stops processing - if [ ".$1" = ".--" ]; then - shift - break - fi - - # determine option and argument - opt_ARG_OK=no - if [ ".$opt_PREV" != . ]; then - # merge previous seen option with argument - opt_OPT="$opt_PREV" - opt_ARG="$1" - opt_ARG_OK=yes - opt_PREV='' - else - # split argument into option and argument - case "$1" in - --[a-zA-Z0-9]*=*) - eval `echo "x$1" |\ - sed -e 's/^x--\([a-zA-Z0-9-]*\)=\(.*\)$/opt_OPT="\1";opt_ARG="\2"/'` - opt_STR=`echo $opt_OPT | sed -e 's/-/_/g'` - eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" - ;; - --[a-zA-Z0-9]*) - opt_OPT=`echo "x$1" | cut -c4-` - opt_STR=`echo $opt_OPT | sed -e 's/-/_/g'` - eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" - opt_ARG='' - ;; - -[a-zA-Z0-9]*) - eval `echo "x$1" |\ - sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ - -e 's/";\(.*\)$/"; opt_ARG="\1"/'` - ;; - -[a-zA-Z0-9]) - opt_OPT=`echo "x$1" | cut -c3-` - opt_ARG='' - ;; - *) - break - ;; - esac - fi - - # eat up option - shift - - # determine whether option needs an argument - eval "opt_MODE=\$opt_MODE_${opt_OPT}" - if [ ".$opt_ARG" = . ] && [ ".$opt_ARG_OK" != .yes ]; then - if [ ".$opt_MODE" = ".:" ] || [ ".$opt_MODE" = ".+" ]; then - opt_PREV="$opt_OPT" - continue - fi - fi - - # process option - case $opt_MODE in - '.' ) - # boolean option - eval "opt_${opt_OPT}=yes" - ;; - ':' ) - # option with argument (multiple occurances override) - eval "opt_${opt_OPT}=\"\$opt_ARG\"" - ;; - '+' ) - # option with argument (multiple occurances append) - eval "opt_${opt_OPT}=\"\$opt_${opt_OPT}\${ASC_NL}\$opt_ARG\"" - ;; - * ) - echo "$msgprefix:Error: unknown option: \`$opt_OPT'" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 - exit 1 - ;; - esac -done -if [ ".$opt_PREV" != . ]; then - echo "$msgprefix:Error: missing argument to option \`$opt_PREV'" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 - exit 1 -fi - -# process help option -if [ ".$opt_h" = .yes ]; then - echo "Usage: $toolcmdhelp $str_usage" - exit 0 -fi - -# complain about incorrect number of arguments -case $arg_MODE in - '=' ) - if [ $# -ne $arg_NUMS ]; then - echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - fi - ;; - '+' ) - if [ $# -lt $arg_NUMS ]; then - echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 - echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 - exit 1 - fi - ;; -esac - -# establish a temporary file on request -if [ ".$gen_tmpfile" = .yes ]; then - # create (explicitly) secure temporary directory - if [ ".$TMPDIR" != . ]; then - tmpdir="$TMPDIR" - elif [ ".$TEMPDIR" != . ]; then - tmpdir="$TEMPDIR" - else - tmpdir="/tmp" - fi - tmpdir="$tmpdir/.shtool.$$" - ( umask 077 - rm -rf "$tmpdir" >/dev/null 2>&1 || true - mkdir "$tmpdir" >/dev/null 2>&1 - if [ $? -ne 0 ]; then - echo "$msgprefix:Error: failed to create temporary directory \`$tmpdir'" 1>&2 - exit 1 - fi - ) - - # create (implicitly) secure temporary file - tmpfile="$tmpdir/shtool.tmp" - touch "$tmpfile" -fi - -# utility function: map string to lower case -util_lower () { - echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' -} - -# utility function: map string to upper case -util_upper () { - echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' -} - -# cleanup procedure -shtool_exit () { - rc="$1" - if [ ".$gen_tmpfile" = .yes ]; then - rm -rf "$tmpdir" >/dev/null 2>&1 || true - fi - exit $rc -} - -## -## DISPATCH INTO SCRIPT BODY -## - -case $tool in - -echo ) - ## - ## echo -- Print string with optional construct expansion - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - text="$*" - - # check for broken escape sequence expansion - seo='' - bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" != .3 ]; then - bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" = .3 ]; then - seo='-E' - fi - fi - - # check for existing -n option (to suppress newline) - minusn='' - bytes=`echo -n 123 2>/dev/null | wc -c | awk '{ printf("%s", $1); }'` - if [ ".$bytes" = .3 ]; then - minusn='-n' - fi - - # determine terminal bold sequence - term_bold='' - term_norm='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[Bb]'`" != . ]; then - case $TERM in - # for the most important terminal types we directly know the sequences - xterm|xterm*|vt220|vt220*) - term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` - term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` - ;; - vt100|vt100*) - term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` - term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` - ;; - # for all others, we try to use a possibly existing `tput' or `tcout' utility - * ) - paths=`echo $PATH | sed -e 's/:/ /g'` - for tool in tput tcout; do - for dir in $paths; do - if [ -r "$dir/$tool" ]; then - for seq in bold md smso; do # 'smso' is last - bold="`$dir/$tool $seq 2>/dev/null`" - if [ ".$bold" != . ]; then - term_bold="$bold" - break - fi - done - if [ ".$term_bold" != . ]; then - for seq in sgr0 me rmso init reset; do # 'reset' is last - norm="`$dir/$tool $seq 2>/dev/null`" - if [ ".$norm" != . ]; then - term_norm="$norm" - break - fi - done - fi - break - fi - done - if [ ".$term_bold" != . ] && [ ".$term_norm" != . ]; then - break; - fi - done - ;; - esac - if [ ".$term_bold" = . ] || [ ".$term_norm" = . ]; then - echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 - term_bold='' - term_norm='' - fi - fi - - # determine user name - username='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[uUgG]'`" != . ]; then - username="`(id -un) 2>/dev/null`" - if [ ".$username" = . ]; then - str="`(id) 2>/dev/null`" - if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then - username=`echo $str | sed -e 's/^uid[ ]*=[ ]*[0-9]*(//' -e 's/).*$//'` - fi - if [ ".$username" = . ]; then - username="$LOGNAME" - if [ ".$username" = . ]; then - username="$USER" - if [ ".$username" = . ]; then - username="`(whoami) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$username" = . ]; then - username="`(who am i) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$username" = . ]; then - username='unknown' - fi - fi - fi - fi - fi - fi - fi - - # determine user id - userid='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%U'`" != . ]; then - userid="`(id -u) 2>/dev/null`" - if [ ".$userid" = . ]; then - userid="`(id -u ${username}) 2>/dev/null`" - if [ ".$userid" = . ]; then - str="`(id) 2>/dev/null`" - if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then - userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*$//'` - fi - if [ ".$userid" = . ]; then - userid=`(getent passwd ${username}) 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid=`grep "^${username}:" /etc/passwd 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid=`(ypmatch "${username}" passwd; nismatch "${username}" passwd) 2>/dev/null | \ - sed -e 'q' | sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid=`(nidump passwd . | grep "^${username}:") 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$userid" = . ]; then - userid='?' - fi - fi - fi - fi - fi - fi - fi - fi - - # determine (primary) group id - groupid='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[gG]'`" != . ]; then - groupid="`(id -g ${username}) 2>/dev/null`" - if [ ".$groupid" = . ]; then - str="`(id) 2>/dev/null`" - if [ ".`echo $str | grep 'gid[ ]*=[ ]*[0-9]*('`" != . ]; then - groupid=`echo $str | sed -e 's/^.*gid[ ]*=[ ]*//' -e 's/(.*$//'` - fi - if [ ".$groupid" = . ]; then - groupid=`(getent passwd ${username}) 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$groupid" = . ]; then - groupid=`grep "^${username}:" /etc/passwd 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$groupid" = . ]; then - groupid=`(ypmatch "${username}" passwd; nismatch "${username}" passwd) 2>/dev/null | \ - sed -e 'q' | sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$groupid" = . ]; then - groupid=`(nidump passwd . | grep "^${username}:") 2>/dev/null | \ - sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` - if [ ".$groupid" = . ]; then - groupid='?' - fi - fi - fi - fi - fi - fi - fi - - # determine (primary) group name - groupname='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%g'`" != . ]; then - groupname="`(id -gn ${username}) 2>/dev/null`" - if [ ".$groupname" = . ]; then - str="`(id) 2>/dev/null`" - if [ ".`echo $str | grep 'gid[ ]*=[ ]*[0-9]*('`" != . ]; then - groupname=`echo $str | sed -e 's/^.*gid[ ]*=[ ]*[0-9]*(//' -e 's/).*$//'` - fi - if [ ".$groupname" = . ]; then - groupname=`(getent group) 2>/dev/null | \ - grep "^[^:]*:[^:]*:${groupid}:" | \ - sed -e 's/:.*$//'` - if [ ".$groupname" = . ]; then - groupname=`grep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \ - sed -e 's/:.*$//'` - if [ ".$groupname" = . ]; then - groupname=`(ypcat group; niscat group) 2>/dev/null | \ - sed -e 'q' | grep "^[^:]*:[^:]*:${groupid}:" | \ - sed -e 's/:.*$//'` - if [ ".$groupname" = . ]; then - groupname=`(nidump group .) 2>/dev/null | \ - grep "^[^:]*:[^:]*:${groupid}:" | \ - sed -e 's/:.*$//'` - if [ ".$groupname" = . ]; then - groupname='?' - fi - fi - fi - fi - fi - fi - fi - - # determine host and domain name - hostname='' - domainname='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%h'`" != . ]; then - hostname="`(uname -n) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$hostname" = . ]; then - hostname="`(hostname) 2>/dev/null |\ - awk '{ printf("%s", $1); }'`" - if [ ".$hostname" = . ]; then - hostname='unknown' - fi - fi - case $hostname in - *.* ) - domainname=".`echo $hostname | cut -d. -f2-`" - hostname="`echo $hostname | cut -d. -f1`" - ;; - esac - fi - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%d'`" != . ]; then - if [ ".$domainname" = . ]; then - if [ -f /etc/resolv.conf ]; then - domainname="`grep '^[ ]*domain' /etc/resolv.conf | sed -e 'q' |\ - sed -e 's/.*domain//' \ - -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ - -e 's/^\.//' -e 's/^/./' |\ - awk '{ printf("%s", $1); }'`" - if [ ".$domainname" = . ]; then - domainname="`grep '^[ ]*search' /etc/resolv.conf | sed -e 'q' |\ - sed -e 's/.*search//' \ - -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ - -e 's/ .*//' -e 's/ .*//' \ - -e 's/^\.//' -e 's/^/./' |\ - awk '{ printf("%s", $1); }'`" - fi - fi - fi - fi - - # determine current time - time_day='' - time_month='' - time_year='' - time_monthname='' - if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[DMYm]'`" != . ]; then - time_day=`date '+%d'` - time_month=`date '+%m'` - time_year=`date '+%Y' 2>/dev/null` - if [ ".$time_year" = . ]; then - time_year=`date '+%y'` - case $time_year in - [5-9][0-9]) time_year="19$time_year" ;; - [0-4][0-9]) time_year="20$time_year" ;; - esac - fi - case $time_month in - 1|01) time_monthname='Jan' ;; - 2|02) time_monthname='Feb' ;; - 3|03) time_monthname='Mar' ;; - 4|04) time_monthname='Apr' ;; - 5|05) time_monthname='May' ;; - 6|06) time_monthname='Jun' ;; - 7|07) time_monthname='Jul' ;; - 8|08) time_monthname='Aug' ;; - 9|09) time_monthname='Sep' ;; - 10) time_monthname='Oct' ;; - 11) time_monthname='Nov' ;; - 12) time_monthname='Dec' ;; - esac - fi - - # expand special ``%x'' constructs - if [ ".$opt_e" = .yes ]; then - text=`echo $seo "$text" |\ - sed -e "s/%B/${term_bold}/g" \ - -e "s/%b/${term_norm}/g" \ - -e "s/%u/${username}/g" \ - -e "s/%U/${userid}/g" \ - -e "s/%g/${groupname}/g" \ - -e "s/%G/${groupid}/g" \ - -e "s/%h/${hostname}/g" \ - -e "s/%d/${domainname}/g" \ - -e "s/%D/${time_day}/g" \ - -e "s/%M/${time_month}/g" \ - -e "s/%Y/${time_year}/g" \ - -e "s/%m/${time_monthname}/g" 2>/dev/null` - fi - - # create output - if [ .$opt_n = .no ]; then - echo $seo "$text" - else - # the harder part: echo -n is best, because - # awk may complain about some \xx sequences. - if [ ".$minusn" != . ]; then - echo $seo $minusn "$text" - else - echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text" - fi - fi - - shtool_exit 0 - ;; - -mdate ) - ## - ## mdate -- Pretty-print modification time of a file or dir - ## Copyright (c) 1995-1997 Free Software Foundation, Inc. - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - fod="$1" - case "$opt_o" in - [dmy][dmy][dmy] ) - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-o': $opt_o" 1>&2 - shtool_exit 1 - ;; - esac - if [ ! -r "$fod" ]; then - echo "$msgprefix:Error: file or directory not found: $fod" 1>&2 - shtool_exit 1 - fi - - # GNU ls changes its time format in response to the TIME_STYLE - # variable. Since we cannot assume "unset" works, revert this - # variable to its documented default. - if [ ".$TIME_STYLE" != . ]; then - TIME_STYLE=posix-long-iso - export TIME_STYLE - fi - - # get the extended ls output of the file or directory. - if /bin/ls -L /dev/null >/dev/null 2>&1; then - set - x`/bin/ls -L -l -d $fod` - else - set - x`/bin/ls -l -d $fod` - fi - - # The month is at least the fourth argument - # (3 shifts here, the next inside the loop). - shift; shift; shift - - # Find the month. Next argument is day, followed by the year or time. - month="" - while [ ".$month" = . ]; do - shift - case $1 in - Jan) month=January; nummonth=1 ;; - Feb) month=February; nummonth=2 ;; - Mar) month=March; nummonth=3 ;; - Apr) month=April; nummonth=4 ;; - May) month=May; nummonth=5 ;; - Jun) month=June; nummonth=6 ;; - Jul) month=July; nummonth=7 ;; - Aug) month=August; nummonth=8 ;; - Sep) month=September; nummonth=9 ;; - Oct) month=October; nummonth=10 ;; - Nov) month=November; nummonth=11 ;; - Dec) month=December; nummonth=12 ;; - esac - done - day="$2" - year="$3" - - # We finally have to deal with the problem that the "ls" output - # gives either the time of the day or the year. - case $year in - *:*) - this_year=`date '+%Y' 2>/dev/null` - if [ ".$this_year" = . ]; then - this_year=`date '+%y'` - case $this_year in - [5-9][0-9]) this_year="19$this_year" ;; - [0-4][0-9]) this_year="20$this_year" ;; - esac - fi - # for the following months of the last year the time notation - # is usually also used for files modified in the last year. - this_month=`date '+%m'` - if (expr $nummonth \> $this_month) >/dev/null; then - this_year=`expr $this_year - 1` - fi - year="$this_year" - ;; - esac - - # Optionally fill day and month with leeding zeros - if [ ".$opt_z" = .yes ]; then - case $day in - [0-9][0-9] ) ;; - [0-9] ) day="0$day" ;; - esac - case $nummonth in - [0-9][0-9] ) ;; - [0-9] ) nummonth="0$nummonth" ;; - esac - fi - - # Optionally use digits for month - if [ ".$opt_d" = .yes ]; then - month="$nummonth" - fi - - # Optionally shorten the month name to three characters - if [ ".$opt_s" = .yes ]; then - month=`echo $month | cut -c1-3` - fi - - # Output the resulting date string - echo dummy | awk '{ - for (i = 0; i < 3; i++) { - now = substr(order, 1, 1); - order = substr(order, 2); - if (now == "d") - out = day; - else if (now == "m") - out = month; - else if (now == "y") - out = year; - if (i < 2) - printf("%s%s", out, field); - else - printf("%s", out); - } - if (newline != "yes") - printf("\n"); - }' "day=$day" "month=$month" "year=$year" \ - "field=$opt_f" "order=$opt_o" "newline=$opt_n" - - shtool_exit 0 - ;; - -table ) - ## - ## table -- Pretty-print a field-separated list as a table - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - if [ $opt_c -gt 4 ]; then - echo "$msgprefix:Error: Invalid number of colums (1..4 allowed only)" 1>&2 - shtool_exit 1 - fi - case "x$opt_F" in - x? ) ;; - * ) echo "$msgprefix:Error: Invalid separator (one char allowed only)" 1>&2; shtool_exit 1 ;; - esac - - # split the list into a table - list=` - IFS="$opt_F" - for entry in $*; do - if [ ".$entry" != . ]; then - echo "$entry" - fi - done |\ - awk " - BEGIN { list = \"\"; n = 0; } - { - list = list \\$1; - n = n + 1; - if (n < $opt_c) { - list = list \":\"; - } - if (n == $opt_c) { - list = list \"\\n\"; - n = 0; - } - } - END { print list; } - " - ` - - # format table cells and make sure table - # doesn't exceed maximum width - OIFS="$IFS" - IFS=' -' - for entry in $list; do - case $opt_c in - 1 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s\\n\", \$1); }'" ;; - 2 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s\\n\", \$1, \$2); }'" ;; - 3 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3); }'" ;; - 4 ) eval "echo \"\${entry}\" | awk -F: '{ printf(\"%-${opt_w}s %-${opt_w}s %-${opt_w}s %-${opt_w}s\\n\", \$1, \$2, \$3, \$4); }'" ;; - esac - done |\ - awk "{ - if (length(\$0) > $opt_s) { - printf(\"%s\\n\", substr(\$0, 0, $opt_s-1)); - } else { - print \$0; - } - }" - IFS="$OIFS" - - shtool_exit 0 - ;; - -prop ) - ## - ## prop -- Display progress with a running propeller - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - perl='' - for dir in `echo $PATH | sed -e 's/:/ /g'` .; do - if [ -f "$dir/perl" ]; then - perl="$dir/perl" - break - fi - done - if [ ".$perl" != . ]; then - # Perl is preferred because writing to STDERR in - # Perl really writes immediately as one would expect - $perl -e ' - @p = ("|","/","-","\\"); - $i = 0; - while () { - printf(STDERR "\r%s...%s\b", $ARGV[0], $p[$i++]); - $i = 0 if ($i > 3); - } - printf(STDERR "\r%s \n", $ARGV[0]); - ' "$opt_p" - else - # But if Perl doesn't exists we use Awk even - # some Awk's buffer even the /dev/stderr writing :-( - awk ' - BEGIN { - split("|#/#-#\\", p, "#"); - i = 1; - } - { - printf("\r%s%c\b", prefix, p[i++]) > "/dev/stderr"; - if (i > 4) { i = 1; } - } - END { - printf("\r%s \n", prefix) > "/dev/stderr"; - } - ' "prefix=$opt_p" - fi - - shtool_exit 0 - ;; - -move ) - ## - ## move -- Move files with simultaneous substitution - ## Copyright (c) 1999-2008 Ralf S. Engelschall - ## - - src="$1" - dst="$2" - - # consistency checks - if [ ".$src" = . ] || [ ".$dst" = . ]; then - echo "$msgprefix:Error: Invalid arguments" 1>&2 - shtool_exit 1 - fi - if [ ".$src" = ".$dst" ]; then - echo "$msgprefix:Error: Source and destination files are the same" 1>&2 - shtool_exit 1 - fi - expsrc="$src" - if [ ".$opt_e" = .yes ]; then - expsrc="`echo $expsrc`" - fi - if [ ".$opt_e" = .yes ]; then - if [ ".`echo "$src" | sed -e 's;^.*\\*.*$;;'`" = ".$src" ]; then - echo "$msgprefix:Error: Source doesn't contain wildcard ('*'): $dst" 1>&2 - shtool_exit 1 - fi - if [ ".`echo "$dst" | sed -e 's;^.*%[1-9].*$;;'`" = ".$dst" ]; then - echo "$msgprefix:Error: Destination doesn't contain substitution ('%N'): $dst" 1>&2 - shtool_exit 1 - fi - if [ ".$expsrc" = ".$src" ]; then - echo "$msgprefix:Error: Sources not found or no asterisk : $src" 1>&2 - shtool_exit 1 - fi - else - if [ ! -r "$src" ]; then - echo "$msgprefix:Error: Source not found: $src" 1>&2 - shtool_exit 1 - fi - fi - - # determine substitution patterns - if [ ".$opt_e" = .yes ]; then - srcpat=`echo "$src" | sed -e 's/\\./\\\\./g' -e 's/;/\\;/g' -e 's;\\*;\\\\(.*\\\\);g'` - dstpat=`echo "$dst" | sed -e 's;%\([1-9]\);\\\\\1;g'` - fi - - # iterate over source(s) - for onesrc in $expsrc; do - if [ .$opt_e = .yes ]; then - onedst=`echo $onesrc | sed -e "s;$srcpat;$dstpat;"` - else - onedst="$dst" - fi - errorstatus=0 - if [ ".$opt_v" = .yes ]; then - echo "$onesrc -> $onedst" - fi - if [ ".$opt_p" = .yes ]; then - if [ -r $onedst ]; then - if cmp -s $onesrc $onedst; then - if [ ".$opt_t" = .yes ]; then - echo "rm -f $onesrc" 1>&2 - fi - rm -f $onesrc || errorstatus=$? - else - if [ ".$opt_t" = .yes ]; then - echo "mv -f $onesrc $onedst" 1>&2 - fi - mv -f $onesrc $onedst || errorstatus=$? - fi - else - if [ ".$opt_t" = .yes ]; then - echo "mv -f $onesrc $onedst" 1>&2 - fi - mv -f $onesrc $onedst || errorstatus=$? - fi - else - if [ ".$opt_t" = .yes ]; then - echo "mv -f $onesrc $onedst" 1>&2 - fi - mv -f $onesrc $onedst || errorstatus=$? - fi - if [ $errorstatus -ne 0 ]; then - break; - fi - done - - shtool_exit $errorstatus - ;; - -install ) - ## - ## install -- Install a program, script or datafile - ## Copyright (c) 1997-2008 Ralf S. Engelschall - ## - - # special case: "shtool install -d [...]" internally - # maps to "shtool mkdir -f -p -m 755 [...]" - if [ "$opt_d" = yes ]; then - cmd="$0 mkdir -f -p -m 755" - if [ ".$opt_o" != . ]; then - cmd="$cmd -o '$opt_o'" - fi - if [ ".$opt_g" != . ]; then - cmd="$cmd -g '$opt_g'" - fi - if [ ".$opt_v" = .yes ]; then - cmd="$cmd -v" - fi - if [ ".$opt_t" = .yes ]; then - cmd="$cmd -t" - fi - for dir in "$@"; do - eval "$cmd $dir" || shtool_exit $? - done - shtool_exit 0 - fi - - # determine source(s) and destination - argc=$# - srcs="" - while [ $# -gt 1 ]; do - srcs="$srcs $1" - shift - done - dstpath="$1" - - # type check for destination - dstisdir=0 - if [ -d $dstpath ]; then - dstpath=`echo "$dstpath" | sed -e 's:/$::'` - dstisdir=1 - fi - - # consistency check for destination - if [ $argc -gt 2 ] && [ $dstisdir = 0 ]; then - echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2 - shtool_exit 1 - fi - - # iterate over all source(s) - for src in $srcs; do - dst=$dstpath - - # if destination is a directory, append the input filename - if [ $dstisdir = 1 ]; then - dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'` - dst="$dst/$dstfile" - fi - - # check for correct arguments - if [ ".$src" = ".$dst" ]; then - echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2 - continue - fi - if [ -d "$src" ]; then - echo "$msgprefix:Warning: source \`$src' is a directory - skipped" 1>&2 - continue - fi - - # make a temp file name in the destination directory - dsttmp=`echo $dst |\ - sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \ - -e "s;\$;/#INST@$$#;"` - - # verbosity - if [ ".$opt_v" = .yes ]; then - echo "$src -> $dst" 1>&2 - fi - - # copy or move the file name to the temp name - # (because we might be not allowed to change the source) - if [ ".$opt_C" = .yes ]; then - opt_c=yes - fi - if [ ".$opt_c" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "cp $src $dsttmp" 1>&2 - fi - cp "$src" "$dsttmp" || shtool_exit $? - else - if [ ".$opt_t" = .yes ]; then - echo "mv $src $dsttmp" 1>&2 - fi - mv "$src" "$dsttmp" || shtool_exit $? - fi - - # adjust the target file - if [ ".$opt_e" != . ]; then - sed='sed' - OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS" - for e - do - sed="$sed -e '$e'" - done - cp "$dsttmp" "$dsttmp.old" - chmod u+w $dsttmp - eval "$sed <$dsttmp.old >$dsttmp" || shtool_exit $? - rm -f $dsttmp.old - fi - if [ ".$opt_s" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "strip $dsttmp" 1>&2 - fi - strip $dsttmp || shtool_exit $? - fi - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o $dsttmp" 1>&2 - fi - chown $opt_o $dsttmp || shtool_exit $? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g $dsttmp" 1>&2 - fi - chgrp $opt_g $dsttmp || shtool_exit $? - fi - if [ ".$opt_m" != ".-" ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m $dsttmp" 1>&2 - fi - chmod $opt_m $dsttmp || shtool_exit $? - fi - - # determine whether to do a quick install - # (has to be done _after_ the strip was already done) - quick=no - if [ ".$opt_C" = .yes ]; then - if [ -r $dst ]; then - if cmp -s "$src" "$dst"; then - quick=yes - fi - fi - fi - - # finally, install the file to the real destination - if [ $quick = yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "rm -f $dsttmp" 1>&2 - fi - rm -f $dsttmp - else - if [ ".$opt_t" = .yes ]; then - echo "rm -f $dst && mv $dsttmp $dst" 1>&2 - fi - rm -f $dst && mv $dsttmp $dst - fi - done - - shtool_exit 0 - ;; - -mkdir ) - ## - ## mkdir -- Make one or more directories - ## Copyright (c) 1996-2008 Ralf S. Engelschall - ## - - errstatus=0 - for p in ${1+"$@"}; do - # if the directory already exists... - if [ -d "$p" ]; then - if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then - echo "$msgprefix:Error: directory already exists: $p" 1>&2 - errstatus=1 - break - else - continue - fi - fi - # if the directory has to be created... - if [ ".$opt_p" = .no ]; then - if [ ".$opt_t" = .yes ]; then - echo "mkdir $p" 1>&2 - fi - mkdir $p || errstatus=$? - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o $p" 1>&2 - fi - chown $opt_o $p || errstatus=$? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g $p" 1>&2 - fi - chgrp $opt_g $p || errstatus=$? - fi - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m $p" 1>&2 - fi - chmod $opt_m $p || errstatus=$? - fi - else - # the smart situation - set fnord `echo ":$p" |\ - sed -e 's/^:\//%/' \ - -e 's/^://' \ - -e 's/\// /g' \ - -e 's/^%/\//'` - shift - pathcomp='' - for d in ${1+"$@"}; do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp="./$pathcomp" ;; - esac - if [ ! -d "$pathcomp" ]; then - if [ ".$opt_t" = .yes ]; then - echo "mkdir $pathcomp" 1>&2 - fi - mkdir $pathcomp || errstatus=$? - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o $pathcomp" 1>&2 - fi - chown $opt_o $pathcomp || errstatus=$? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g $pathcomp" 1>&2 - fi - chgrp $opt_g $pathcomp || errstatus=$? - fi - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m $pathcomp" 1>&2 - fi - chmod $opt_m $pathcomp || errstatus=$? - fi - fi - pathcomp="$pathcomp/" - done - fi - done - - shtool_exit $errstatus - ;; - -mkln ) - ## - ## mkln -- Make link with calculation of relative paths - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - # determine source(s) and destination - args=$# - srcs="" - while [ $# -gt 1 ]; do - srcs="$srcs $1" - shift - done - dst="$1" - if [ ! -d $dst ]; then - if [ $args -gt 2 ]; then - echo "$msgprefix:Error: multiple sources not allowed when target isn't a directory" 1>&2 - shtool_exit 1 - fi - fi - - # determine link options - lnopt="" - if [ ".$opt_f" = .yes ]; then - lnopt="$lnopt -f" - fi - if [ ".$opt_s" = .yes ]; then - lnopt="$lnopt -s" - fi - - # iterate over sources - for src in $srcs; do - # determine if one of the paths is an absolute path, - # because then we _have_ to use an absolute symlink - oneisabs=0 - srcisabs=0 - dstisabs=0 - case $src in - /* ) oneisabs=1; srcisabs=1 ;; - esac - case $dst in - /* ) oneisabs=1; dstisabs=1 ;; - esac - - # split source and destination into dir and base name - if [ -d $src ]; then - srcdir=`echo $src | sed -e 's;/*$;;'` - srcbase="" - else - srcdir=`echo $src | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'` - srcbase=`echo $src | sed -e 's;.*/\([^/]*\)$;\1;'` - fi - if [ -d $dst ]; then - dstdir=`echo $dst | sed -e 's;/*$;;'` - dstbase="" - else - dstdir=`echo $dst | sed -e 's;^[^/]*$;;' -e 's;^\(.*/\)[^/]*$;\1;' -e 's;\(.\)/$;\1;'` - dstbase=`echo $dst | sed -e 's;.*/\([^/]*\)$;\1;'` - fi - - # consistency check - if [ ".$dstdir" != . ]; then - if [ ! -d $dstdir ]; then - echo "$msgprefix:Error: destination directory not found: $dstdir" 1>&2 - shtool_exit 1 - fi - fi - - # make sure the source is reachable from the destination - if [ $dstisabs = 1 ]; then - if [ $srcisabs = 0 ]; then - if [ ".$srcdir" = . ]; then - srcdir="`pwd | sed -e 's;/*$;;'`" - srcisabs=1 - oneisabs=1 - elif [ -d $srcdir ]; then - srcdir="`cd $srcdir; pwd | sed -e 's;/*$;;'`" - srcisabs=1 - oneisabs=1 - fi - fi - fi - - # split away a common prefix - prefix="" - if [ ".$srcdir" = ".$dstdir" ] && [ ".$srcdir" != . ]; then - prefix="$srcdir/" - srcdir="" - dstdir="" - else - while [ ".$srcdir" != . ] && [ ".$dstdir" != . ]; do - presrc=`echo $srcdir | sed -e 's;^\([^/]*\)/.*;\1;'` - predst=`echo $dstdir | sed -e 's;^\([^/]*\)/.*;\1;'` - if [ ".$presrc" != ".$predst" ]; then - break - fi - prefix="$prefix$presrc/" - srcdir=`echo $srcdir | sed -e 's;^[^/]*/*;;'` - dstdir=`echo $dstdir | sed -e 's;^[^/]*/*;;'` - done - fi - - # destination prefix is just the common prefix - dstpre="$prefix" - - # determine source prefix which is the reverse directory - # step-up corresponding to the destination directory - srcpre="" - allow_relative_srcpre=no - if [ ".$prefix" != . ] && [ ".$prefix" != ./ ]; then - allow_relative_srcpre=yes - fi - if [ $oneisabs = 0 ]; then - allow_relative_srcpre=yes - fi - if [ ".$opt_s" != .yes ]; then - allow_relative_srcpre=no - fi - if [ ".$allow_relative_srcpre" = .yes ]; then - pl="$dstdir/" - OIFS="$IFS"; IFS='/' - for pe in $pl; do - [ ".$pe" = . ] && continue - [ ".$pe" = .. ] && continue - srcpre="../$srcpre" - done - IFS="$OIFS" - else - if [ $srcisabs = 1 ]; then - srcpre="$prefix" - fi - fi - - # determine destination symlink name - if [ ".$dstbase" = . ]; then - if [ ".$srcbase" != . ]; then - dstbase="$srcbase" - else - dstbase=`echo "$prefix$srcdir" | sed -e 's;/*$;;' -e 's;.*/\([^/]*\)$;\1;'` - fi - fi - - # now finalize source and destination directory paths - srcdir=`echo $srcdir | sed -e 's;\([^/]\)$;\1/;'` - dstdir=`echo $dstdir | sed -e 's;\([^/]\)$;\1/;'` - - # run the final link command - if [ ".$opt_t" = .yes ]; then - echo "ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase" - fi - eval ln$lnopt $srcpre$srcdir$srcbase $dstpre$dstdir$dstbase - done - - shtool_exit 0 - ;; - -mkshadow ) - ## - ## mkshadow -- Make a shadow tree through symbolic links - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - # source and destination directory - src=`echo "$1" | sed -e 's:/$::' -e 's:^\./\(.\):\1:'` - dst=`echo "$2" | sed -e 's:/$::' -e 's:^\./\(.\):\1:'` - - # check whether source exists - if [ ! -d $src ]; then - echo "$msgprefix:Error: source directory not found: \`$src'" 1>&2 - shtool_exit 1 - fi - - # determine if one of the paths is an absolute path, - # because then we have to use an absolute symlink - oneisabs=0 - case $src in - /* ) oneisabs=1 ;; - esac - case $dst in - /* ) oneisabs=1 ;; - esac - - # determine reverse directory for destination directory - dstrevdir='' - if [ $oneisabs = 0 ]; then - # derive reverse path from forward path - pwd=`pwd` - OIFS="$IFS"; IFS='/' - for pe in $dst; do - if [ "x$pe" = "x.." ]; then - OIFS2="$IFS"; IFS="$DIFS" - eval `echo "$pwd" |\ - sed -e 's:\([^/]*\)$:; dir="\1":' \ - -e 's:^\(.*\)/[^/]*;:pwd="\1";:'\ - -e 's:^;:pwd="";:'` - dstrevdir="$dir/$dstrevdir" - IFS="$OIFS2" - else - dstrevdir="../$dstrevdir" - fi - done - IFS="$OIFS" - else - src="`cd $src; pwd`"; - fi - - # create directory tree at destination - if [ ! -d $dst ]; then - if [ ".$opt_t" = .yes ]; then - echo "mkdir $dst" 1>&2 - fi - mkdir $dst - fi - if [ ".$opt_a" = .yes ]; then - DIRS=`cd $src; find . -type d -print |\ - sed -e '/^\.$/d' -e 's:^\./::'` - else - DIRS=`cd $src; find . -type d -print |\ - sed -e '/\/CVS/d' -e '/^\.$/d' -e 's:^\./::'` - fi - for dir in $DIRS; do - if [ ".$opt_t" = .yes ]; then - echo "mkdir $dst/$dir" 1>&2 - fi - mkdir $dst/$dir - done - - # fill directory tree with symlinks to files - if [ ".$opt_a" = .yes ]; then - FILES="`cd $src; find . -depth -print |\ - sed -e 's/^\.\///'`" - else - FILES="`cd $src; find . -depth -print |\ - sed -e '/\.o$/d' -e '/\.a$/d' -e '/\.so$/d' \ - -e '/\.cvsignore$/d' -e '/\/CVS/d' \ - -e '/\/\.#/d' -e '/\.orig$/d' \ - -e 's/^\.\///'`" - fi - for file in $FILES; do - # don't use `-type f' above for find because of symlinks - if [ -d "$src/$file" ]; then - continue - fi - basename=`echo $file | sed -e 's:^.*/::'` - dir=`echo $file | sed -e 's:[^/]*$::' -e 's:/$::' -e 's:$:/:' -e 's:^/$::'` - from=`echo "$src/$file" | sed -e 's/^\.\///'` - to="$dst/$dir$basename" - if [ $oneisabs = 0 ]; then - if [ ".$dir" != . ]; then - subdir=`echo $dir | sed -e 's:/$::'` - # derive reverse path from forward path - revdir='' - OIFS="$IFS"; IFS='/' - for pe in $subdir; do - revdir="../$revdir" - done - IFS="$OIFS" - # finalize from - from="$revdir$from" - fi - from="$dstrevdir$from" - fi - if [ ".$opt_v" = .yes ]; then - echo " $to" 1>&2 - fi - if [ ".$opt_t" = .yes ]; then - echo "ln -s $from $to" 1>&2 - fi - ln -s $from $to - done - - shtool_exit 0 - ;; - -fixperm ) - ## - ## fixperm -- Fix file permissions inside a source tree - ## Copyright (c) 1996-2008 Ralf S. Engelschall - ## - - paths="$*" - - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - - # iterate over paths - for p in $paths; do - for file in `find $p -depth -print`; do - if [ -f $file ]; then - if [ $minusx $file ]; then - if [ ".$opt_v" = .yes ]; then - echo "-rwxr-xr-x $file" 2>&1 - fi - if [ ".$opt_t" = .yes ]; then - echo "chmod 755 $file" 2>&1 - fi - chmod 755 $file - else - if [ ".$opt_v" = .yes ]; then - echo "-rw-r--r-- $file" 2>&1 - fi - if [ ".$opt_t" = .yes ]; then - echo "chmod 644 $file" 2>&1 - fi - chmod 644 $file - fi - continue - fi - if [ -d $file ]; then - if [ ".$opt_v" = .yes ]; then - echo "drwxr-xr-x $file" 2>&1 - fi - if [ ".$opt_t" = .yes ]; then - echo "chmod 755 $file" 2>&1 - fi - chmod 755 $file - continue - fi - if [ ".$opt_v" = .yes ]; then - echo "?????????? $file" 2>&1 - fi - done - done - - shtool_exit 0 - ;; - -rotate ) - ## - ## rotate -- Logfile rotation - ## Copyright (c) 2001-2008 Ralf S. Engelschall - ## - - # make sure we have at least one file to rotate - if [ ".$opt_n" = .0 ]; then - echo "$msgprefix:Error: invalid argument \`$opt_n' to option -n." 1>&2 - shtool_exit 1 - fi - - # canonicalize -s option argument - if [ ".$opt_s" != . ]; then - if [ ".`expr $opt_s : '[0-9]*$'`" != .0 ]; then - : - elif [ ".`expr $opt_s : '[0-9]*[Kk]$'`" != .0 ]; then - opt_s=`expr $opt_s : '\([0-9]*\)[Kk]$'` - opt_s=`expr $opt_s \* 1024` - elif [ ".`expr $opt_s : '[0-9]*[Mm]$'`" != .0 ]; then - opt_s=`expr $opt_s : '\([0-9]*\)[Mm]$'` - opt_s=`expr $opt_s \* 1048576` # 1024*1024 - elif [ ".`expr $opt_s : '[0-9]*[Gg]$'`" != .0 ]; then - opt_s=`expr $opt_s : '\([0-9]*\)[Gg]$'` - opt_s=`expr $opt_s \* 1073741824` # 1024*1024*1024 - else - echo "$msgprefix:Error: invalid argument \`$opt_s' to option -s." 1>&2 - shtool_exit 1 - fi - fi - - # option -d/-z consistency - if [ ".$opt_d" = .yes ] && [ ".$opt_z" = . ]; then - echo "$msgprefix:Error: option -d requires option -z." 1>&2 - shtool_exit 1 - fi - - # make sure target directory exists - if [ ".$opt_a" != . ]; then - if [ ! -d $opt_a ]; then - if [ ".$opt_f" = .no ]; then - echo "$msgprefix:Error: archive directory \`$opt_a' does not exist." 1>&2 - shtool_exit 1 - fi - mkdir $opt_a || shtool_exit $? - chmod 755 $opt_a - fi - if [ ! -w $opt_a ]; then - echo "$msgprefix:Error: archive directory \`$opt_a' not writable." 1>&2 - shtool_exit 1 - fi - fi - - # determine compression approach - if [ ".$opt_z" != . ]; then - comp_lvl="$opt_z" - comp_prg="" - case $comp_lvl in - *:* ) eval `echo $comp_lvl |\ - sed -e 's%^\(.*\):\(.*\)$%comp_prg="\1"; comp_lvl="\2"%'` ;; - esac - - # compression level consistency - case $comp_lvl in - [0-9] ) - ;; - * ) echo "$msgprefix:Error: invalid compression level \`$comp_lvl'" 1>&2 - shtool_exit 1 - ;; - esac - - # determine a suitable compression tool - if [ ".$comp_prg" = . ]; then - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - # search for tools in $PATH - paths="`echo $PATH |\ - sed -e 's%/*:%:%g' -e 's%/*$%%' \ - -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ - -e 's/:/ /g'`" - for prg in bzip2 gzip compress; do - for path in $paths; do - if [ $minusx "$path/$prg" ] && [ ! -d "$path/$prg" ]; then - comp_prg="$prg" - break - fi - done - if [ ".$comp_prg" != . ]; then - break - fi - done - if [ ".$comp_prg" = . ]; then - echo "$msgprefix:Error: no suitable compression tool found in \$PATH" 1>&2 - shtool_exit 1 - fi - fi - - # determine standard compression extension - # and make sure it is a known tool - case $comp_prg in - */bzip2 | bzip2 ) comp_ext="bz2" comp_lvl="-$comp_lvl" ;; - */gzip | gzip ) comp_ext="gz" comp_lvl="-$comp_lvl" ;; - */compress | compress ) comp_ext="Z"; comp_lvl="" ;; - * ) echo "$msgprefix:Error: tool \`$comp_prg' is not a known compression tool" 1>&2 - shtool_exit 1 - ;; - esac - comp_suf=".$comp_ext" - fi - - # iterate over all given logfile arguments - for file in $*; do - # make sure the logfile exists - if [ ! -f $file ]; then - if [ ".$opt_f" = .yes ]; then - continue - fi - echo "$msgprefix:Error: logfile \`$file' not found" 1>&2 - shtool_exit 1 - fi - - # determine log directory (where original logfile is placed) - ldir="." - case $file in - */* ) eval `echo $file | sed -e 's%^\(.*\)/\([^/]*\)$%ldir="\1"; file="\2";%'` ;; - esac - - # determine archive directory (where rotated logfiles are placed) - adir="$ldir" - if [ ".$opt_a" != . ]; then - case "$opt_a" in - /* | ./* ) adir="$opt_a" ;; - * ) adir="$ldir/$opt_a" ;; - esac - fi - - # optionally take logfile size into account - if [ ".$opt_s" != . ]; then - # determine size of logfile - set -- `env -i /bin/ls -l "$ldir/$file" | sed -e "s;$ldir/$file;;" |\ - sed -e 's; -> .*$;;' -e 's;[ ][ ]*; ;g'` - n=`expr $# - 3` - eval "size=\`echo \${$n}\`" - - # skip logfile if size is still too small - if [ $size -lt $opt_s ]; then - if [ ".$opt_v" = .yes ]; then - echo "$ldir/$file: still too small in size -- skipping" - fi - continue - fi - fi - - # verbosity - if [ ".$opt_v" = .yes ]; then - echo "rotating $ldir/$file" - fi - - # execute prolog - if [ ".$opt_P" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "$opt_P" - fi - eval $opt_P - [ $? -ne 0 ] && shtool_exit $? - fi - - # kick away out-rotated logfile - n=`expr $opt_n - 1` - n=`echo dummy | awk "{ printf(\"%0${opt_p}d\", n); }" n=$n` - if [ -f "${adir}/${file}.${n}${comp_suf}" ]; then - # optionally migrate away the out-rotated logfile - if [ ".$opt_M" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "$opt_M ${adir}/${file}.${n}${comp_suf}" - fi - eval "$opt_M ${adir}/${file}.${n}${comp_suf}" - [ $? -ne 0 ] && shtool_exit $? - fi - # finally get rid of the out-rotated logfile - if [ ".$opt_t" = .yes ]; then - echo "rm -f ${adir}/${file}.${n}${comp_suf}" - fi - rm -f ${adir}/${file}.${n}${comp_suf} || shtool_exit $? - fi - - # rotate already archived logfiles - while [ $n -gt 0 ]; do - m=$n - n=`expr $n - 1` - n=`echo dummy | awk "{ printf(\"%0${opt_p}d\", n); }" n=$n` - if [ $n -eq 0 ] && [ ".$opt_d" = .yes ]; then - # special case: first rotation file under delayed compression situation - if [ ! -f "${adir}/${file}.${n}" ]; then - continue - fi - - # compress file (delayed) - if [ ".$opt_b" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "mv ${adir}/${file}.${n} ${adir}/${file}.${m}" - fi - mv ${adir}/${file}.${n} ${adir}/${file}.${m} || shtool_exit $? - if [ ".$opt_t" = .yes ]; then - echo "(${comp_prg} ${comp_lvl} <${adir}/${file}.${m} >${adir}/${file}.${m}${comp_suf}; rm -f ${adir}/${file}.${m}) &" - fi - ( ${comp_prg} ${comp_lvl} \ - <${adir}/${file}.${m} \ - >${adir}/${file}.${m}${comp_suf} || shtool_exit $? - rm -f ${adir}/${file}.${m} || shtool_exit $? - ) /dev/null 2>&1 & - else - if [ ".$opt_t" = .yes ]; then - echo "${comp_prg} ${comp_lvl} <${adir}/${file}.${n} >${adir}/${file}.${m}${comp_suf}" - fi - ${comp_prg} ${comp_lvl} \ - <${adir}/${file}.${n} \ - >${adir}/${file}.${m}${comp_suf} || shtool_exit $? - if [ ".$opt_t" = .yes ]; then - echo "rm -f ${adir}/${file}.${n}" - fi - rm -f ${adir}/${file}.${n} || shtool_exit $? - fi - - # fix file attributes - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o ${adir}/${file}.${m}${comp_suf}" - fi - chown $opt_o ${adir}/${file}.${m}${comp_suf} || shtool_exit $? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g ${adir}/${file}.${m}${comp_suf}" - fi - chgrp $opt_g ${adir}/${file}.${m}${comp_suf} || shtool_exit $? - fi - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m ${adir}/${file}.${m}${comp_suf}" - fi - chmod $opt_m ${adir}/${file}.${m}${comp_suf} || shtool_exit $? - fi - else - # standard case: second and following rotation file - if [ ! -f "${adir}/${file}.${n}${comp_suf}" ]; then - continue - fi - if [ ".$opt_t" = .yes ]; then - echo "mv ${adir}/${file}.${n}${comp_suf} ${adir}/${file}.${m}${comp_suf}" - fi - mv ${adir}/${file}.${n}${comp_suf} ${adir}/${file}.${m}${comp_suf} || shtool_exit $? - fi - done - - # move away current logfile - if [ ".$opt_c" = .yes ]; then - # approach: copy[+truncate] - if [ ".$opt_t" = .yes ]; then - echo "cp -p ${ldir}/${file} ${adir}/${file}.${n}" - fi - cp -p ${ldir}/${file} ${adir}/${file}.${n} || shtool_exit $? - if [ ".$opt_r" = .no ]; then - if [ ".$opt_t" = .yes ]; then - echo "cp /dev/null ${ldir}/${file}" - fi - cp /dev/null ${ldir}/${file} || shtool_exit $? - fi - else - # approach: move[+touch] - if [ ".$opt_t" = .yes ]; then - echo "mv ${ldir}/${file} ${adir}/${file}.${n}" - fi - mv ${ldir}/${file} ${adir}/${file}.${n} || shtool_exit $? - if [ ".$opt_r" = .no ]; then - if [ ".$opt_t" = .yes ]; then - echo "touch ${ldir}/${file}" - fi - touch ${ldir}/${file} || shtool_exit $? - # fix file attributes - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o ${ldir}/${file}" - fi - chown $opt_o ${ldir}/${file} || shtool_exit $? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g ${ldir}/${file}" - fi - chgrp $opt_g ${ldir}/${file} || shtool_exit $? - fi - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m ${ldir}/${file}" - fi - chmod $opt_m ${ldir}/${file} || shtool_exit $? - fi - fi - fi - - # regular compression step - if [ ".$opt_z" != . ] && [ ".$opt_d" = .no ]; then - # compress file - if [ ".$opt_b" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "(${comp_prg} ${comp_lvl} <${adir}/${file}.${n} >${adir}/${file}.${n}${comp_suf}; rm -f ${adir}/${file}.${n}) &" - fi - ( ${comp_prg} ${comp_lvl} \ - <${adir}/${file}.${n} \ - >${adir}/${file}.${n}${comp_suf} || shtool_exit $? - rm -f ${adir}/${file}.${n} || shtool_exit $? - ) /dev/null 2>&1 & - else - if [ ".$opt_t" = .yes ]; then - echo "${comp_prg} ${comp_lvl} <${adir}/${file}.${n} >${adir}/${file}.${n}${comp_suf}" - fi - ${comp_prg} ${comp_lvl} \ - <${adir}/${file}.${n} \ - >${adir}/${file}.${n}${comp_suf} || shtool_exit $? - if [ ".$opt_t" = .yes ]; then - echo "rm -f ${opt_a}${file}.${n}" - fi - rm -f ${adir}/${file}.${n} || shtool_exit $? - fi - - # fix file attributes - if [ ".$opt_o" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown $opt_o ${adir}/${file}.${n}${comp_suf}" - fi - chown $opt_o ${adir}/${file}.${n}${comp_suf} || shtool_exit $? - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp $opt_g ${adir}/${file}.${n}${comp_suf}" - fi - chgrp $opt_g ${adir}/${file}.${n}${comp_suf} || shtool_exit $? - fi - if [ ".$opt_m" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chmod $opt_m ${adir}/${file}.${n}${comp_suf}" - fi - chmod $opt_m ${adir}/${file}.${n}${comp_suf} || shtool_exit $? - fi - fi - - # execute epilog - if [ ".$opt_E" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "$opt_E" - fi - eval $opt_E - [ $? -ne 0 ] && shtool_exit $? - fi - done - - shtool_exit 0 - ;; - -tarball ) - ## - ## tarball -- Roll distribution tarballs - ## Copyright (c) 1999-2008 Ralf S. Engelschall - ## - - srcs="$*" - - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - - # find the tools - paths="`echo $PATH |\ - sed -e 's%/*:%:%g' -e 's%/*$%%' \ - -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ - -e 's/:/ /g'`" - for spec in find:gfind,find tar:gtar,tar tardy:tardy,tarcust; do - prg=`echo $spec | sed -e 's/:.*$//'` - tools=`echo $spec | sed -e 's/^.*://'` - eval "prg_${prg}=''" - # iterate over tools - for tool in `echo $tools | sed -e 's/,/ /g'`; do - # iterate over paths - for path in $paths; do - if [ $minusx "$path/$tool" ] && [ ! -d "$path/$tool" ]; then - eval "prg_${prg}=\"$path/$tool\"" - break - fi - done - eval "val=\$prg_${prg}" - if [ ".$val" != . ]; then - break - fi - done - done - - # expand source paths - exclude='' - for pat in `echo $opt_e | sed 's/,/ /g'`; do - exclude="$exclude | grep -v '$pat'" - done - if [ ".$opt_t" = .yes ]; then - echo "cp /dev/null $tmpfile.lst" 1>&2 - fi - cp /dev/null $tmpfile.lst - for src in $srcs; do - if [ -d $src ]; then - if [ ".$opt_t" = .yes ]; then - echo "(cd $src && $prg_find . -type f -depth -print) | sed -e 's:^\\.\$::' -e 's:^\\./::' | cat $exclude >>$tmpfile.lst" 1>&2 - fi - (cd $src && $prg_find . -type f -depth -print) |\ - sed -e 's:^\.$::' -e 's:^\./::' | eval cat $exclude >>$tmpfile.lst - else - if [ ".$opt_t" = .yes ]; then - echo "echo $src >>$tmpfile.lst" 1>&2 - fi - echo $src >>$tmpfile.lst - fi - done - sort <$tmpfile.lst >$tmpfile.lst.n - mv $tmpfile.lst.n $tmpfile.lst - if [ ".$opt_v" = .yes ]; then - cat $tmpfile.lst | sed -e 's/^/ /' 1>&2 - fi - - # determine tarball file and directory name - if [ ".$opt_o" != . ]; then - tarfile="$opt_o" - if [ ".$opt_d" != . ]; then - tarname="$opt_d" - else - tarname=`echo $tarfile | sed -e 's/\.tar.*$//' -e 's;.*/\([^/]*\)$;\1;'` - fi - else - if [ ".$opt_d" != . ]; then - tarname="$opt_d" - elif [ -d "$from" ]; then - tarname=`echo $from | sed -e 's;.*/\([^/]*\)$;\1;'` - else - tarname="out" - fi - tarfile="$tarname.tar" - fi - - # roll the tarball - compress='' - if [ ".$opt_c" != . ]; then - compress="| $opt_c" - fi - if [ ".$prg_tardy" != . ]; then - # the elegant hackers way - tardy_opt="--prefix=$tarname" - tardy_opt="$tardy_opt --user_number=0 --group_number=0" # security! - if [ ".$opt_u" != . ]; then - tardy_opt="$tardy_opt --user_name=$opt_u" - fi - if [ ".$opt_g" != . ]; then - tardy_opt="$tardy_opt --group_name=$opt_g" - fi - if [ ".$opt_t" = .yes ]; then - echo "cat $tmpfile.lst | xargs $prg_tar cf - | $prg_tardy $tardy_opt | cat $compress >$tmpfile.out" 1>&2 - fi - cat $tmpfile.lst |\ - xargs $prg_tar cf - |\ - $prg_tardy $tardy_opt |\ - eval cat $compress >$tmpfile.out - if [ ".$opt_t" = .yes ]; then - echo "cp $tmpfile.out $tarfile" 1>&2 - fi - cp $tmpfile.out $tarfile - else - # the portable standard way - if [ ".$opt_t" = .yes ]; then - echo "mkdir $tmpdir/$tarname" 1>&2 - fi - mkdir $tmpdir/$tarname || shtool_exit 1 - if [ ".$opt_t" = .yes ]; then - echo "cat $tmpfile.lst | xargs $prg_tar cf - | (cd $tmpdir/$tarname && $prg_tar xf -)" 1>&2 - fi - cat $tmpfile.lst |\ - xargs $prg_tar cf - |\ - (cd $tmpdir/$tarname && $prg_tar xf -) - if [ ".$opt_u" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chown -R $opt_u $tmpdir/$tarname >/dev/null 2>&1" 2>&1 - fi - chown -R $opt_u $tmpdir/$tarname >/dev/null 2>&1 ||\ - echo "$msgprefix:Warning: cannot set user name \`$opt_u' (would require root privileges)" - fi - if [ ".$opt_g" != . ]; then - if [ ".$opt_t" = .yes ]; then - echo "chgrp -R $opt_g $tmpdir/$tarname >/dev/null 2>&1" 2>&1 - fi - chgrp -R $opt_g $tmpdir/$tarname >/dev/null 2>&1 ||\ - echo "$msgprefix:Warning: cannot set group name \`$opt_g' (would require root privileges)" - fi - if [ ".$opt_t" = .yes ]; then - echo "(cd $tmpdir && $prg_find $tarname -type f -depth -print | sort | xargs $prg_tar cf -) | cat $compress >$tmpfile.out" 1>&2 - fi - (cd $tmpdir && $prg_find $tarname -type f -depth -print | sort | xargs $prg_tar cf -) |\ - eval cat $compress >$tmpfile.out - if [ ".$opt_t" = .yes ]; then - echo "cp $tmpfile.out $tarfile" 1>&2 - fi - cp $tmpfile.out $tarfile - if [ ".$opt_t" = .yes ]; then - echo "rm -rf $tmpdir/$tarname" 1>&2 - fi - rm -rf $tmpdir/$tarname - fi - - # cleanup - if [ ".$opt_t" = .yes ]; then - echo "rm -f $tmpfile.lst $tmpfile.out" 1>&2 - fi - rm -f $tmpfile.lst $tmpfile.out - - shtool_exit 0 - ;; - -subst ) - ## - ## subst -- Apply sed(1) substitution operations - ## Copyright (c) 2001-2008 Ralf S. Engelschall - ## - - # remember optional list of file(s) - files="$*" - files_num="$#" - - # parameter consistency check - if [ $# -eq 0 ] && [ ".$opt_b" != . ]; then - echo "$msgprefix:Error: option -b cannot be applied to stdin" 1>&2 - shtool_exit 1 - fi - if [ $# -eq 0 ] && [ ".$opt_s" = .yes ]; then - echo "$msgprefix:Error: option -s cannot be applied to stdin" 1>&2 - shtool_exit 1 - fi - - # build underlying sed(1) command - sedcmd='sed' - if [ ".$opt_e" != . ]; then - OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS" - for e - do - sedcmd="$sedcmd -e '$e'" - done - elif [ ".$opt_f" != . ]; then - if [ ! -f $opt_f ]; then - echo "$msgprefix:Error: command file \`$opt_f' not found or not a regular file" 1>&2 - shtool_exit 1 - fi - sedcmd="$sedcmd -f '$opt_f'" - else - echo "$msgprefix:Error: either -e option(s) or -f option required" 1>&2 - shtool_exit 1 - fi - - # determine extension for original file - orig=".orig" - if [ ".$opt_b" != . ]; then - orig="$opt_b" - fi - - # apply sed(1) operation(s) - if [ ".$files" != . ]; then - # apply operation(s) to files - substdone=no - for file in $files; do - test ".$file" = . && continue - if [ ! -f $file ]; then - echo "$msgprefix:Warning: file \`$file' not found or not a regular file" 1>&2 - continue - fi - - # handle interactive mode - if [ ".$opt_i" = .yes ]; then - eval "$sedcmd <$file >$file.new" - skip=no - if cmp $file $file.new >/dev/null 2>&1; then - rm -f $file.new - skip=yes - else - (diff -U1 $file $file.new >$tmpfile) 2>/dev/null - if [ ".`cat $tmpfile`" = . ]; then - (diff -C1 $file $file.new >$tmpfile) 2>/dev/null - if [ ".`cat $tmpfile`" = . ]; then - echo "$msgprefix:Warning: unable to show difference for file \`$file'" 1>&2 - cp /dev/null $tmpfile - fi - fi - rm -f $file.new - cat $tmpfile - echo dummy | awk '{ printf("%s", TEXT); }' TEXT=">>> Apply [Y/n]: " - read input - if [ ".$input" != .Y ] &&\ - [ ".$input" != .y ] &&\ - [ ".$input" != . ]; then - skip=yes - fi - fi - if [ ".$skip" = .yes ]; then - if [ ".$opt_v" = .yes ]; then - echo "file \`$file' -- skipped" 1>&2 - fi - continue - fi - fi - - # apply sed(1) operation(s) - if [ ".$opt_v" = .yes ]; then - echo "patching \`$file'" 1>&2 - fi - if [ ".$opt_t" = .yes ]; then - echo "\$ cp -p $file $file$orig" - echo "\$ chmod u+w $file" - echo "\$ $sedcmd <$file$orig >$file" - fi - if [ ".$opt_n" = .no ]; then - cp -p $file $file$orig - chmod u+w $file >/dev/null 2>&1 || true - eval "$sedcmd <$file$orig >$file" - fi - - # optionally fix timestamp - if [ ".$opt_s" = .yes ]; then - if [ ".$opt_t" = .yes ]; then - echo "\$ touch -r $file$orig $file" - fi - if [ ".$opt_n" = .no ]; then - touch -r $file$orig $file - fi - fi - - # optionally check whether any content change actually occurred - if [ ".$opt_q" = .no ]; then - if cmp $file$orig $file >/dev/null 2>&1; then - if [ ".$opt_w" = .yes ]; then - echo "$msgprefix:Warning: substitution resulted in no content change on file \"$file\"" 1>&2 - fi - else - substdone=yes - fi - fi - - # optionally remove preserved original file - if [ ".$opt_b" = . ]; then - if [ ".$opt_t" = .yes ]; then - echo "\$ rm -f $file$orig" - fi - if [ ".$opt_n" = .no ]; then - rm -f $file$orig - fi - fi - done - if [ ".$opt_q" = .no ] && [ ".$opt_w" = .no ]; then - if [ ".$substdone" = .no ]; then - if [ ".$files_num" = .1 ]; then - echo "$msgprefix:Warning: substitution resulted in no content change on file \"$file\"" 1>&2 - else - echo "$msgprefix:Warning: substitution resulted in no content change on any file" 1>&2 - fi - fi - fi - else - # apply operation(s) to stdin/stdout - if [ ".$opt_v" = .yes ]; then - echo "patching " 1>&2 - fi - if [ ".$opt_t" = .yes ]; then - echo "\$ $sedcmd" - fi - if [ ".$opt_n" = .no ]; then - eval "$sedcmd" - fi - fi - - shtool_exit 0 - ;; - -platform ) - ## - ## platform -- Platform Identification Utility - ## Copyright (c) 2003-2008 Ralf S. Engelschall - ## - - # option post-processing - if [ ".$opt_t" != . ]; then - case "$opt_t" in - binary ) - # binary package id (OpenPKG RPM) - opt_F="%-%" - opt_L=yes - opt_S="" - opt_C="+" - ;; - build ) - # build time checking (OpenPKG RPM) - opt_F="%-%" - opt_L=yes - opt_S="" - opt_C="+" - ;; - gnu ) - # GNU config.guess style -- - opt_F="%-unknown-%" - opt_L=yes - opt_S="" - opt_C="+" - ;; - web ) - # non-whitespace HTTP Server-header id - opt_F="%-%" - opt_S="/" - opt_C="+" - ;; - summary) - # human readable verbose summary information - opt_F="Class: %[sc] (%[ac])\\nProduct: %[sp] (%[ap])\\nTechnology: %[st] (%[at])" - opt_S=" " - opt_C="/" - ;; - all-in-one ) - # full-table all-in-one information - opt_F="" - opt_F="${opt_F}concise architecture class: %\\n" - opt_F="${opt_F}regular architecture class: %{ac}\\n" - opt_F="${opt_F}verbose architecture class: %[ac]\\n" - opt_F="${opt_F}concise architecture product: %\\n" - opt_F="${opt_F}regular architecture product: %{ap}\\n" - opt_F="${opt_F}verbose architecture product: %[ap]\\n" - opt_F="${opt_F}concise architecture technology: %\\n" - opt_F="${opt_F}regular architecture technology: %{at}\\n" - opt_F="${opt_F}verbose architecture technology: %[at]\\n" - opt_F="${opt_F}concise system class: %\\n" - opt_F="${opt_F}regular system class: %{sc}\\n" - opt_F="${opt_F}verbose system class: %[sc]\\n" - opt_F="${opt_F}concise system product: %\\n" - opt_F="${opt_F}regular system product: %{sp}\\n" - opt_F="${opt_F}verbose system product: %[sp]\\n" - opt_F="${opt_F}concise system technology: %\\n" - opt_F="${opt_F}regular system technology: %{st}\\n" - opt_F="${opt_F}verbose system technology: %[st]" - ;; - * ) - echo "$msgprefix:Error: invalid type \`$opt_t'" 1>&2 - exit 1 - ;; - esac - fi - - # assemble initial platform information - UNAME_MACHINE=`(uname -m) 2>/dev/null` ||\ - UNAME_MACHINE=`(uname -p) 2>/dev/null` ||\ - UNAME_MACHINE='unknown' - UNAME_SYSTEM=`(uname -s) 2>/dev/null` ||\ - UNAME_SYSTEM='unknown' - UNAME_RELEASE=`(uname -r) 2>/dev/null` ||\ - UNAME_RELEASE=`(uname -v) 2>/dev/null` ||\ - UNAME_RELEASE='unknown' - - UNAME="${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}" - - AC=""; AP=""; AT="" - SC=""; SP=""; ST="" - - # dispatch into platform specific sections - case "${UNAME}" in - - # FreeBSD - *:FreeBSD:* ) - # determine architecture - AC="${UNAME_MACHINE}" - case "${AC}" in - i386 ) AC="iX86" ;; - esac - AP="${AC}" - AT="${AP}" - if [ ".${AT}" = ".iX86" ]; then - case "`(/sbin/sysctl -n hw.model) 2>&1`" in - *"Xeon"* | *"Pentium Pro"* | *"Cyrix 6x86MX"* | *"Pentium II"* | *"Pentium III"* | *"Pentium 4"* | *"Celeron"* ) AT="i686" ;; - *"Pentium"* ) AT="i586" ;; *"i486[SD]X"* | *"Cyrix 486"* | *"Cyrix [56]x86"* | *"Blue Lightning" | *"Cyrix 486S/DX" ) AT="i486" ;; - *"i386[SD]X"* | *"NexGen 586"* ) AT="i386" ;; - esac - fi - # determine system - r=`echo "${UNAME_RELEASE}" |\ - sed -e 's;[()];;' -e 's/\(-.*\)$/[\1]/'` - ST="FreeBSD ${r}" - SP="${ST}" - case "${r}" in - 1.* ) SC="4.3BSD" ;; - * ) SC="4.4BSD" ;; - esac - ;; - - # NetBSD - *:NetBSD:* ) - # determine architecture - AT="${UNAME_MACHINE}" - AP="${AT}" - case "${AP}" in - i[3-6]86 ) AP="iX86" ;; - esac - AC="${AP}" - # determine system - r=`echo "${UNAME_RELEASE}" | sed -e 's/\([-_].*\)$/[\1]/'` - ST="NetBSD ${r}" - SP="${ST}" - case "${r}" in - 0.* ) SC="4.3BSD" ;; - * ) SC="4.4BSD" ;; - esac - ;; - - # OpenBSD - *:OpenBSD:* ) - # determine architecture - AT="${UNAME_MACHINE}" - AP="${AT}" - case "${AP}" in - i[3-6]86 ) AP="iX86" ;; - esac - AC="${AP}" - # determine system - r=`echo "${UNAME_RELEASE}" | sed -e 's/\([-_].*\)$/[\1]/'` - ST="OpenBSD ${r}" - SP="${ST}" - SC="4.4BSD" - ;; - - # DragonFly BSD - *:DragonFly:* ) - # determine architecture - AT="${UNAME_MACHINE}" - AP="${AT}" - case "${AP}" in - i[3-6]86 ) AP="iX86" ;; - esac - AC="${AP}" - # determine system - r=`echo "${UNAME_RELEASE}" | sed -e 's/\([-_].*\)$/[\1]/'` - ST="DragonFly ${r}" - SP="${ST}" - SC="4.4BSD" - ;; - - # GNU/Linux - *:Linux:* ) - # determine architecture - AT="${UNAME_MACHINE}" - case "${AT}" in - ia64 ) AT="IA64" ;; - x86_64 ) AT='AMD64' ;; - parisc ) AT="HPPA32" ;; - parisc64 ) AT="HPPA64" ;; - esac - AP="${AT}" - case "${AP}" in - i[3-6]86 ) AP='iX86' ;; - esac - AC="${AP}" - # determine system - v_kern=`echo "${UNAME_RELEASE}" |\ - sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'` - v_libc=`(strings /lib/libc.so.* | grep '^GLIBC_' | sed -e 's/^GLIBC_//' |\ - env -i sort -n | sed -n -e '$p' | sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/') 2>/dev/null` - ST="GNU/${v_libc}/<${v_kern}>" - if [ -f /etc/lsb-release ]; then - eval `( . /etc/lsb-release - echo "SC=\"LSB${LSB_VERSION}\"" - if [ ".${DISTRIB_ID}" != . -a ".${DISTRIB_RELEASE}" != . ]; then - echo "SP=\"${DISTRIB_ID} ${DISTRIB_RELEASE}\"" - fi - ) 2>/dev/null` - fi - if [ ".$SP" = . ]; then - for tagfile in x \ - `cd /etc && \ - /bin/ls *[_-]release *[_-]version 2>/dev/null | env -i sort | \ - sed -e '/^redhat-release$/d' -e '/^lsb-release$/d'; \ - echo redhat-release lsb-release` - do - [ ".${tagfile}" = .x ] && continue - [ ! -f "/etc/${tagfile}" ] && continue - n=`echo ${tagfile} | sed -e 's/[_-]release$//' -e 's/[_-]version$//'` - v=`(grep VERSION /etc/${tagfile}; cat /etc/${tagfile}) | grep '[0-9]' | sed -e 'q' |\ - sed -e 's/^/#/' \ - -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ - -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ - -e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ - -e 's/^#.*$//'` - case "`util_lower ${n}`" in - redhat ) - if [ ".`egrep '(Red Hat Enterprise Linux|CentOS)' /etc/${tagfile}`" != . ]; then - n="ed at nterprise inux" - else - n="ed at inux" - fi - ;; - debian ) n="Debian[ GNU/Linux]" ;; - ubuntu ) n="Ubuntu[ GNU/Linux]" ;; - fedora ) n=" Core[ GNU/Linux]" ;; - suse ) n="[Novell ]SUSE[ Linux]" ;; - mandrake*|mandriva ) n="Mandriva[ Linux]" ;; - gentoo ) n="Gentoo[ GNU/Linux]" ;; - slackware ) n="Slackware[ Linux]" ;; - turbolinux ) n="TurboLinux" ;; - unitedlinux ) n="UnitedLinux" ;; - * ) n="${n}[ GNU/Linux]" ;; - esac - case "$n" in - *"<"*">"* ) SP="$n <$v>" ;; - * ) SP="$n $v" ;; - esac - break - done - fi - [ ".$SP" = . ] && SP="${ST}" - [ ".$SC" = . ] && SC="LSB" - ;; - - # Sun Solaris - *:SunOS:* ) - # determine architecture - AT="${UNAME_MACHINE}" - case "${AT}" in - i86pc ) - AT="iX86" - case "`(/bin/isainfo -k) 2>&1`" in - amd64 ) AT="AMD64" ;; - esac - ;; - esac - AP="${AT}" - case "${AP}" in - sun4[cdm] ) AP="SPARC32" ;; - sun4[uv] ) AP="SPARC64" ;; - sun4* ) AP="SPARC" ;; - esac - AC="${AP}" - case "${AC}" in - SPARC* ) AC="SPARC" ;; - esac - # determine system - ST="[Sun ]SunOS ${UNAME_RELEASE}" - v=`echo "${UNAME_RELEASE}" |\ - sed -e 's;^4\.;1.;' \ - -e 's;^5\.\([0-6]\)[^0-9]*$;2.\1;' \ - -e 's;^5\.\([0-9][0-9]*\).*;\1;'` - SP="[Sun ]Solaris $v" - case "${UNAME_RELEASE}" in - 4.* ) SC="4.3BSD" ;; - 5.* ) SC="SVR4" ;; - esac - ;; - - # SCO UnixWare - *:UnixWare:* ) - # determine architecture - AT="${UNAME_MACHINE}" - case "${AT}" in - i[3-6]86 | ix86at ) AT="iX86" ;; - esac - AP="${AT}" - # determine system - v=`/sbin/uname -v` - ST="[SCO ]UnixWare ${v}" - SP="${ST}" - SC="SVR${UNAME_RELEASE}" - ;; - - # QNX - *:QNX:* ) - # determine architecture - AT="${UNAME_MACHINE}" - case "${AT}" in - x86pc ) AT="iX86" ;; - esac - AP="${AT}" - # determine system - v="${UNAME_RELEASE}" - ST="QNX[ Neutrino RTOS] ${v}" - v=`echo "${v}" | sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;'` - SP="QNX[ Neutrino RTOS] ${v}" - SC="QNX" - ;; - - # SGI IRIX - *:IRIX*:* ) - # determine architecture - AT="${UNAME_MACHINE}" - AP="${AT}" - case "${AP}:${UNAME_SYSTEM}" in - IP*:IRIX64 ) AP="MIPS64" ;; - IP*:* ) AP="MIPS" ;; - esac - AC="${AP}" - # determine system - v=`(/bin/uname -R || /bin/uname -r) 2>/dev/null | sed -e 's;[0-9.]* ;;'` - ST="[SGI ]IRIX ${v}" - v="${UNAME_RELEASE}" - SP="[SGI ]IRIX ${v}" - SC="4.2BSD/SVR3" - ;; - - # HP HP-UX - *:HP-UX:* ) - # determine architecture - AT="${UNAME_MACHINE}" - case "${AT}" in - ia64 ) AT="IA64" ;; - 9000/[34]?? ) AT=M68K ;; - 9000/[678][0-9][0-9]) - 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 ) AT="HPPA1.0" ;; - 528 ) AT="HPPA1.1" ;; - 532 ) AT="HPPA2.0" - case "${sc_kernel_bits}" in - 32 ) AT="${AT}n" ;; - 64 ) AT="${AT}w" ;; - esac - ;; - esac - ;; - esac - AP="${AT}" - case "${AP}" in - HPPA* ) AP="HPPA" ;; - esac - AC="${AP}" - # determine system - v=`echo "${UNAME_RELEASE}" | sed -e 's;^[^0-9]*;;'` - ST="[HP ]-" - SP="${ST}" - case "${v}" in - 10.* ) SC="SVR4.2" ;; - [7-9]* ) SC="SVR4" ;; - esac - ;; - - # HP Tru64 (OSF1) - *:OSF1:* ) - # determine architecture - AP="${UNAME_MACHINE}" - case "${AP}" in - alpha ) AP="Alpha" ;; - esac - alpha_type=`(/usr/sbin/psrinfo -v) 2>/dev/null |\ - sed -n -e 's/^.*The alpha \([^ ][^ ]*\).*processor.*$/\1/p' | sed -e 'q'` - AT="${AP}${alpha_type}" - AC="${AP}" - # determine system - v=`echo "${UNAME_RELEASE}" | sed -e 's;^[VTX];;'` - ST="[HP ]Tru64 ${v}" - SP="${ST}" - SC="OSF1" - ;; - - # IBM AIX - *:AIX:* ) - # determine architecture - cpu_arch=RS6000 - if [ -x /usr/sbin/lsdev -a -x /usr/sbin/lsattr ]; then - cpu_id=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if [ ".`/usr/sbin/lsattr -El ${cpu_id} | grep -i powerpc`" != . ]; then - cpu_arch=PPC - fi - elif [ -d /QOpenSys ]; then - # IBM i5/OS (aka OS/400) with PASE (Portable Application Solutions Environment) - cpu_arch=PPC - fi - if [ -x /usr/bin/oslevel ]; then - os_level=`/usr/bin/oslevel` - else - os_level="`uname -v`.`uname -r`" - fi - os_level=`echo "${os_level}" |\ - sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(\.[0-9][0-9]*\)\(.*\)$;<\1>\2[\3];' \ - -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(.*\)$;<\1>\2;'` - AT="${cpu_arch}" - AP="${AT}" - AC="${AP}" - # determine system - ST="[IBM ]${os_level}" - SP="${ST}" - case "${os_level}" in - [12]* ) SC="SVR2" ;; - * ) SC="SVR4" ;; - esac - ;; - - # Apple Mac OS X (Darwin) - *:Darwin:* ) - # determine architecture - AT="`uname -p`" - case "${AT}" in - powerpc ) AT="PPC" ;; - esac - AP="${AT}" - case "${AP}" in - i?86 ) AP="iX86" ;; - esac - AC="${AP}" - # determine system - unset v1; unset v2; unset v3 - eval `echo "${UNAME_RELEASE}" |\ - sed -e 's/^/#/' \ - -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \ - -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \ - -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \ - -e 's/^#.*$/v1="0"/'` - ST="[Apple ]<${UNAME_SYSTEM} ${v1}>${v2+.$v2}${v3+[.$v3]}" - SP="$ST" - v="`(sw_vers) 2>/dev/null | grep 'ProductVersion:' | sed -e 's/^ProductVersion:[^0-9]*\([0-9][0-9.]*\).*$/\1/'`" - if [ ".$v" = . ]; then - for name in System Server; do - if [ -f /System/Library/CoreServices/${name}Version.plist ]; then - v=`(defaults read "/System/Library/CoreServices/${name}Version" "ProductVersion") 2>/dev/null` - [ ".$v" != . ] && break - fi - done - fi - if [ ".$v" != . ]; then - unset v1; unset v2; unset v3 - eval `echo "${v}" |\ - sed -e 's/^/#/' \ - -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \ - -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \ - -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \ - -e 's/^#.*$/v1="0"/'` - SP="[Apple ]Mac OS X ${v1}${v2+.$v2}${v3+[.$v3]}" - fi - SC="4.4BSD/Mach3.0" - ;; - - # TODO ...ADD YOUR NEW PLATFORM CHECK HERE... TODO - # *:XXX:* ) - # ... - # ;; - - # ...A STILL UNKNOWN PLATFORM... - * ) - AT=`echo "${UNAME_MACHINE}" | sed -e "s; ;${opt_C};g"` - AP="${AT}" - AC="${AP}" - v=`echo "${UNAME_RELEASE}" |\ - sed -e 's/^/#/' \ - -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ - -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ - -e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ - -e 's/^#.*$/?/'` - ST="${UNAME_SYSTEM} ${v}" - SP="${ST}" - SC="${SP}" - ;; - - esac - - # provide fallback values - [ ".$AT" = . ] && AT="${AP:-${AC}}" - [ ".$AP" = . ] && AP="${AT:-${AC}}" - [ ".$AC" = . ] && AC="${AP:-${AT}}" - [ ".$ST" = . ] && ST="${SP:-${SC}}" - [ ".$SP" = . ] && SP="${ST:-${SC}}" - [ ".$SC" = . ] && SC="${SP:-${ST}}" - - # support explicit enforced verbose/concise output - if [ ".$opt_v" = .yes ]; then - opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%[\1]/g'` - elif [ ".$opt_c" = .yes ]; then - opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%<\1>/g'` - fi - - # provide verbose and concise variants - AC_V=""; AC_N=""; AC_C="" - AP_V=""; AP_N=""; AP_C="" - AT_V=""; AT_N=""; AT_C="" - SC_V=""; SC_N=""; SC_C="" - SP_V=""; SP_N=""; SP_C="" - ST_V=""; ST_N=""; ST_C="" - for var_lc in at ap ac st sp sc; do - case "$opt_F" in - *"%[${val_lc}]"* | *"%{${val_lc}}"* | *"%${val_lc}"* | *"%<${val_lc}>"* ) - var_uc=`util_upper "$var_lc"` - eval "val=\"\$${var_uc}\"" - val_V=""; val_N=""; val_C="" - case "$opt_F" in - *"%[${var_lc}]"* ) - val_V=`echo ":$val" | \ - sed -e 's/^://' \ - -e 's;\[\([^]]*\)\];\1;g' \ - -e 's;<\([^>]*\)>;\1;g' \ - -e "s; ;§§;g" \ - -e "s;/;%%;g" \ - -e "s;§§;${opt_S};g" \ - -e "s;%%;${opt_C};g"` - eval "${var_uc}_V=\"\${val_V}\"" - ;; - esac - case "$opt_F" in - *"%{${var_lc}}"* | *"%${var_lc}"* ) - val_N=`echo ":$val" | \ - sed -e 's/^://' \ - -e 's;\[\([^]]*\)\];;g' \ - -e 's;<\([^>]*\)>;\1;g' \ - -e "s; ;§§;g" \ - -e "s;/;%%;g" \ - -e "s;§§;${opt_S};g" \ - -e "s;%%;${opt_C};g"` - eval "${var_uc}_N=\"\${val_N}\"" - ;; - esac - case "$opt_F" in - *"%<${var_lc}>"* ) - val_C=`echo ":$val" | \ - sed -e 's/^://' \ - -e 's;\[\([^]]*\)\];;g' \ - -e 's;[^<]*<\([^>]*\)>[^<]*;\1;g' \ - -e "s; ;§§;g" \ - -e "s;/;%%;g" \ - -e "s;§§;${opt_S};g" \ - -e "s;%%;${opt_C};g"` - eval "${var_uc}_C=\"\${val_C}\"" - ;; - esac - ;; - esac - done - - # create output string - output=`echo ":$opt_F" |\ - sed -e "s/^://" \ - -e "s;%\\[ac\\];${AC_V};g" \ - -e "s;%{ac};${AC_N};g" \ - -e "s;%ac;${AC_N};g" \ - -e "s;%;${AC_C};g" \ - -e "s;%\\[ap\\];${AP_V};g" \ - -e "s;%{ap};${AP_N};g" \ - -e "s;%ap;${AP_N};g" \ - -e "s;%;${AP_C};g" \ - -e "s;%\\[at\\];${AT_V};g" \ - -e "s;%{at};${AT_N};g" \ - -e "s;%at;${AT_N};g" \ - -e "s;%;${AT_C};g" \ - -e "s;%\\[sc\\];${SC_V};g" \ - -e "s;%{sc};${SC_N};g" \ - -e "s;%sc;${SC_N};g" \ - -e "s;%;${SC_C};g" \ - -e "s;%\\[sp\\];${SP_V};g" \ - -e "s;%{sp};${SP_N};g" \ - -e "s;%sp;${SP_N};g" \ - -e "s;%;${SP_C};g" \ - -e "s;%\\[st\\];${ST_V};g" \ - -e "s;%{st};${ST_N};g" \ - -e "s;%st;${ST_N};g" \ - -e "s;%;${ST_C};g" \ - -e 's/\\\\n/^/g' |\ - tr '^' '\012'` - - # support lower/upper-case mapping - if [ ".$opt_L" = .yes ]; then - output=`util_lower "$output"` - elif [ ".$opt_U" = .yes ]; then - output=`util_upper "$output"` - fi - - # display output string - if [ ".$opt_n" = .yes ]; then - echo . | awk '{ printf("%s", output); }' output="$output" - else - echo "$output" - fi - - shtool_exit 0 - ;; - -arx ) - ## - ## arx -- Extended archive command - ## Copyright (c) 1999-2008 Ralf S. Engelschall - ## - - ar_prg="$opt_C" - ar_cmd="$1"; shift - archive="$1"; shift - files="$*" - - # walk through the file list and expand archives members - ar_tmpdir=`echo $archive | sed -e 's;[^/]*$;.arx;'` - nfiles='' - if [ ".$files" != . ]; then - for file in $files; do - if [ ! -f $file ]; then - echo "$msgprefix:Error: input file not found: $file" 1>&2 - shtool_exit 1 - fi - case $file in - *.a ) - if [ ! -d $ar_tmpdir ]; then - if [ ".$opt_t" = .yes ]; then - echo "mkdir $ar_tmpdir" 1>&2 - fi - mkdir $ar_tmpdir - fi - case $ar_tmpdir in - .arx ) - from="../$file" - ;; - * ) - dir=`echo $file | sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;'` - base=`echo $file | sed -e 's;.*/\([^/]*\)$;\1;'` - from="`cd $dir; pwd`/$base" - ;; - esac - if [ ".$opt_t" = .yes ]; then - echo "(cd $ar_tmpdir && $ar_prg x $from)" 1>&2 - fi - (cd $ar_tmpdir && eval $ar_prg x $from) - if [ $? -ne 0 ]; then - echo "$msgprefix:Error: member extraction failed for archive: $file" 1>&2 - shtool_exit 1 - fi - for member in - `eval $ar_prg t $file | sed -e '/_\.SYMDEF/d'`; do - [ ".$member" = .- ] && continue - nfiles="$nfiles $ar_tmpdir/$member" - done - ;; - * ) - nfiles="$nfiles $file" - ;; - esac - done - fi - - # run the final archive command - if [ ".$opt_t" = .yes ]; then - echo "$ar_prg $ar_cmd $archive $nfiles" 1>&2 - fi - eval $ar_prg $ar_cmd $archive $nfiles - if [ $? -ne 0 ]; then - echo "$msgprefix:Error: archive command failed" 1>&2 - shtool_exit $? - fi - - # cleanup and die gracefully - if [ -d $ar_tmpdir ]; then - if [ ".$opt_t" = .yes ]; then - echo "rm -rf $ar_tmpdir" 1>&2 - fi - rm -rf $ar_tmpdir - fi - - shtool_exit 0 - ;; - -slo ) - ## - ## slo -- Separate linker options by library class - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - DIFS="$IFS" - - # parse out -L and -l options from command line - DIRS='' - LIBS='' - ARGV='' - optprev='' - for opt - do - # concatenate with previous option if exists - if [ ".$optprev" != . ]; then - opt="${optprev}${opt}"; - optprev='' - fi - # remember options for arg if used stand-alone - if [ ".$opt" = ".-L" ] || [ ".$opt" = ".-l" ]; then - optprev="$opt" - continue; - fi - # split argument into option plus option argument - arg="`echo $opt | cut -c3-`" - opt="`echo $opt | cut -c1-2`" - # store into containers - case $opt in - -L) DIRS="$DIRS:$arg" ;; - -l) LIBS="$LIBS:$arg" ;; - *) ARGV="$ARGV $opt" ;; - esac - done - - # set linker default directories - DIRS_DEFAULT='/lib:/usr/lib' - if [ ".$LD_LIBRARY_PATH" != . ]; then - DIRS_DEFAULT="$DIRS_DEFAULT:$LD_LIBRARY_PATH" - fi - - # sort options by class - DIRS_OBJ='' - LIBS_OBJ='' - DIRS_PIC='' - LIBS_PIC='' - DIRS_DSO='' - LIBS_DSO='' - - # for each library... - OIFS="$IFS"; IFS=':' - for lib in $LIBS; do - [ ".$lib" = . ] && continue - - found='no' - found_indefdir='no' - found_type='' - found_dir='' - - # for each directory... - OIFS2="$IFS"; IFS=":$DIFS" - for dir in ${DIRS} switch-to-defdirs ${DIRS_DEFAULT}; do - [ ".$dir" = . ] && continue - [ ".$dir" = .switch-to-defdirs ] && found_indefdir=yes - [ ! -d $dir ] && continue - - # search the file - OIFS3="$IFS"; IFS="$DIFS" - for file in '' `cd $dir && env -i /bin/ls lib${lib}.* 2>/dev/null`; do - [ ".$file" = . ] && continue - case $file in - *.so|*.so.[0-9]*|*.sl|*.sl.[0-9]* ) - found=yes; - found_type=DSO; - break - ;; - *.lo|*.la ) - found=yes; - found_type=PIC - ;; - *.a ) - if [ ".$found_type" = . ]; then - found=yes - found_type=OBJ - fi - ;; - esac - done - IFS="$OIFS3" - if [ ".$found" = .yes ]; then - found_dir="$dir" - break - fi - done - IFS="$OIFS2" - - if [ ".$found" = .yes ]; then - if [ ".$found_indefdir" != .yes ]; then - eval "dirlist=\"\${DIRS_${found_type}}:\"" - case "$dirlist" in - *:$found_dir:* ) ;; - * ) eval "DIRS_${found_type}=\"\$DIRS_${found_type}:${found_dir}\"" ;; - esac - eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\"" - else - eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\"" - fi - else - LIBS_OBJ="$LIBS_OBJ:$lib" - #dirlist="`echo $DIRS $DIRS_DEFAULT | sed -e 's/:/ /g'`" - #echo "slo:Warning: library \"$lib\" not found in any of the following dirs:" 2>&1 - #echo "slo:Warning: $dirlist" 1>&1 - fi - done - IFS="$OIFS" - - # also pass-through unused dirs even if it's useless - OIFS="$IFS"; IFS=':' - for dir in $DIRS; do - dirlist="${DIRS_OBJ}:${DIRS_PIC}:${DIRS_DSO}:" - case "$dirlist" in - *:$dir:* ) ;; - * ) DIRS_OBJ="$DIRS_OBJ:$dir" ;; - esac - done - IFS="$OIFS" - - # reassemble the options but separated by type - for type in OBJ PIC DSO; do - OIFS="$IFS"; IFS=':' - eval "libs=\"\$LIBS_${type}\"" - opts='' - for lib in $libs; do - [ ".$lib" = . ] && continue - opts="$opts -l$lib" - done - eval "LIBS_${type}=\"$opts\"" - - eval "dirs=\"\$DIRS_${type}\"" - opts='' - for dir in $dirs; do - [ ".$dir" = . ] && continue - opts="$opts -L$dir" - done - eval "DIRS_${type}=\"$opts\"" - IFS="$OIFS" - done - - # give back results - for var in ARGV DIRS_OBJ LIBS_OBJ DIRS_PIC LIBS_PIC DIRS_DSO LIBS_DSO; do - eval "val=\"\$${var}\"" - val="`echo $val | sed -e 's/^ *//'`" - echo "${opt_p}${var}=\"${val}\"" - done - - shtool_exit 0 - ;; - -scpp ) - ## - ## scpp -- Sharing C Pre-Processor - ## Copyright (c) 1999-2008 Ralf S. Engelschall - ## - - srcs="$*" - output="${opt_o}.n" - - # find a reasonable Awk - awk='' - paths=`echo $PATH |\ - sed -e 's%/*:%:%g' -e 's%/$%%' \ - -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ - -e 's/:/ /g'` - for name in gawk nawk awk; do - for path in $paths; do - if [ -r "$path/$name" ]; then - awk="$path/$name" - break - fi - done - if [ ".$awk" != . ]; then - break - fi - done - if [ ".$awk" = . ]; then - echo "$msgprefix:Error: cannot find a reasonable Awk" 1>&2 - shtool_exit 1 - fi - - # parse source file(s) - if [ ".$opt_v" = .yes ]; then - echo "Parsing:" | $awk '{ printf("%s", $0); }' 1>&2 - fi - for src in $srcs; do - if [ ".$opt_v" = .yes ]; then - echo $src | $awk '{ printf(" %s", $0); }' 1>&2 - fi - if [ ".$opt_f" != . ]; then - inputcmd="sed" - OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_f; IFS="$OIFS" - for e - do - inputcmd="$inputcmd -e '$e'" - done - inputcmd="$inputcmd '$src'" - else - inputcmd="cat '$src'" - fi - eval $inputcmd |\ - $awk ' - BEGIN { - ln = 0; - fln = 0; - level = 0; - mode = ""; - store = ""; - } - { - ln++; - } - /^#if.*/ { - level++; - } - /^#if [a-zA-Z_][a-zA-Z0-9_]* *$/ { - if ($2 == define) { - mode = "D"; - printf("D:#line %d \"%s\"\n", ln, src); - next; - } - } - /^#endif.*/ { - level--; - if (mode == "D" && level == 0) { - mode = ""; - next; - } - } - /^[a-zA-Z_][a-zA-Z0-9_].*;.*/ { - if ($1 == class) { - printf("V:#line %d \"%s\"\n", ln, src); - printf("V:%s\n", $0); - printf("J:%s\n", $0); - next; - } - } - /^[a-zA-Z_][a-zA-Z0-9_].*=.*/ { - if ($1 == class) { - printf("V:#line %d \"%s\"\n", ln, src); - printf("V:%s\n", $0); - printf("J:%s\n", $0); - next; - } - } - /^[a-zA-Z_][a-zA-Z0-9_]*/ { - if ($1 == class) { - fln = ln; - store = $0; - mode = "F"; - next; - } - } - /^\{ *$/ { - if (mode == "F") { - printf("F:#line %d \"%s\"\n", fln, src); - printf("F:%s;\n", store); - printf("I:%s;\n", store); - store = ""; - mode = ""; - next; - } - } - { - if (mode == "D") - printf("D:%s\n", $0); - else if (mode == "F") - store = store " " $0; - } - ' "src=$src" "define=$opt_D" "class=$opt_C" >>$tmpfile - done - if [ ".$opt_v" = .yes ]; then - echo "" 1>&2 - fi - - # start generating output header - echo "/* $opt_o -- autogenerated from $opt_t, DO NOT EDIT! */" >$output - echo "#line 1 \"$opt_t\"" >>$output - sed <$opt_t -e "1,/^${opt_M} *\$/p" -e 'd' |\ - sed -e "/^${opt_M} *\$/d" >>$output - - # merge in the define blocks - grep '^D:' $tmpfile | sed -e 's/^D://' >>$output - - # generate standard prolog - echo "#line 1 \"_ON_THE_FLY_\"" >>$output - echo "" >>$output - echo "/* make sure the scpp source extensions are skipped */" >>$output - echo "#define $opt_D 0" >>$output - echo "#define $opt_C /**/" >>$output - - # generate namespace hiding for variables - echo "" >>$output - echo "/* move intern variables to hidden namespace */" >>$output - grep '^J:' $tmpfile | sed >>$output \ - -e 's/^J://' \ - -e 's/ */ /g' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\)\[\];.*$/#define \1 __\1/' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\)\[\] =.*$/#define \1 __\1/' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\);.*$/#define \1 __\1/' \ - -e 's/^[^=;]*[ *]\([a-zA-Z0-9_]*\) =.*$/#define \1 __\1/' - - # generate namespace hiding for functions - echo "" >>$output - echo "/* move intern functions to hidden namespace */" >>$output - grep '^I:' $tmpfile | sed >>$output \ - -e 's/^I://' \ - -e 's/\([ (]\) */\1/g' \ - -e 's/ *\([),]\)/\1/g' \ - -e 's/^[^(]*[ *]\([a-zA-Z0-9_]*\)(.*$/#define \1 __\1/' - - # generate prototypes for variables - echo "" >>$output - echo "/* prototypes for intern variables */" >>$output - grep '^V:' $tmpfile | sed >>$output \ - -e 's/^V://' \ - -e 's/ */ /g' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\[\]\);.*$/\1;/' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\[\]\) =.*$/\1;/' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\);.*$/\1;/' \ - -e 's/^\([^=;]*[ *][a-zA-Z0-9_]*\) =.*$/\1;/' \ - -e 's/ ;/;/g' \ - -e "s/^$opt_C /extern /" - - # generate prototypes for functions - echo "" >>$output - echo "/* prototypes for intern functions */" >>$output - grep '^F:' $tmpfile | sed >>$output \ - -e 's/^F://' \ - -e 's/\([ (]\) */\1/g' \ - -e 's/ *\([),]\)/\1/g' \ - -e 's/\([* ]\)[a-zA-Z0-9_]*,/\1,/g' \ - -e 's/\([* ]\)[a-zA-Z0-9_]*);/\1);/g' \ - -e 's/(\*[a-zA-Z0-9_]*)(/(*)(/g' \ - -e 's/\([ (]\) */\1/g' \ - -e 's/ *\([),]\)/\1/g' \ - -e "s/^$opt_C /extern /" - - # finish generating output header - n=`(echo ''; sed <$opt_t -e "1,/^${opt_M} *\$/p" -e 'd') |\ - wc -l | sed -e 's;^ *\([0-9]*\) *$;\1;'` - echo "#line $n \"$opt_t\"" >>$output - sed <$opt_t -e "/^${opt_M} *\$/,\$p" -e 'd' |\ - sed -e "/^${opt_M} *\$/d" >>$output - - # create final output file - if [ -f $opt_o ]; then - if [ ".$opt_p" = .yes ]; then - grep -v '^#line' $opt_o >$tmpfile.o - grep -v '^#line' $output >$tmpfile.n - out_old="$tmpfile.o" - out_new="$tmpfile.n" - else - out_old="$opt_o" - out_new="$output" - fi - if cmp -s $out_old $out_new; then - : - else - cp $output $opt_o - fi - else - cp $output $opt_o - fi - rm -f $output - rm -f $tmpfile $tmpfile.* >/dev/null 2>&1 - - shtool_exit 0 - ;; - -version ) - ## - ## version -- Maintain a version information file - ## Copyright (c) 1994-2008 Ralf S. Engelschall - ## - - file="$1" - - # determine prefix and name - name="$opt_n" - prefix="$opt_p" - - # determine current version - triple="$opt_s" - if [ ".$triple" != . ]; then - # use given triple - if [ ".`echo $triple | grep '[0-9]*.[0-9]*[sabp.][0-9]*'`" = . ]; then - echo "$msgprefix:Error: invalid argument to option \`-s': \`$opt_s'" 1>&2 - shtool_exit 1 - fi - eval `echo $triple |\ - sed -e 's%\([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\).*%\ - ver="\1";rev="\2";typ="\3";lev="\4"%'` - tim=calc - elif [ -r $file ]; then - # determine triple from given file - eval `grep 'Version [0-9]*.[0-9]*[sabp.][0-9]* ([0-9]*-[a-zA-Z]*-[0-9]*)' $file |\ - sed -e 's%.*Version \([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\) (\([0-9]*-[a-zA-Z]*-[0-9]*\)).*%\ - ver="\1";rev="\2";typ="\3";lev="\4";tim="\5"%' -e 'q'` - else - # intialise to first version - ver=0 - rev=1 - typ=. - lev=0 - tim=calc - fi - - # determine new version in batch - if [ ".$opt_i" != . ]; then - case $opt_i in - v ) ver=`expr $ver + 1` - rev=0 - lev=0 - ;; - r ) rev=`expr $rev + 1` - lev=0 - ;; - l ) lev=`expr $lev + 1` - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-i': \`$opt_i'" 1>&2 - shtool_exit 1 - ;; - esac - tim=calc - fi - - # determine new version interactively - if [ ".$opt_e" = .yes ]; then - echo "old version: ${ver}.${rev}${typ}${lev}" - while [ 1 ]; do - echo dummy | awk '{ printf("new version: "); }' - read triple - case $triple in - [0-9]*.[0-9]*[sabp.][0-9]* ) - ;; - * ) echo "$msgprefix:Error: invalid version string entered: \`$triple'" 1>&2 - continue - ;; - esac - break - done - eval `echo $triple |\ - sed -e 's%^\([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\)$%\ - ver="\1";rev="\2";typ="\3";lev="\4"%'` - tim=calc - fi - - # determine hexadecimal and libtool value of version - case $typ in - a ) typnum=0; levnum=$lev ;; - b ) typnum=1; levnum=$lev ;; - p | . ) typnum=2; levnum=$lev ;; - s ) typnum=15; levnum=255 ;; # snapshots are special - esac - hex=`echo "$ver:$rev:$typnum:$levnum" |\ - awk -F: '{ printf("0x%x%02x%1x%02x", $1, $2, $3, $4); }' |\ - tr 'abcdef' 'ABCDEF'` - ltv=`echo "$ver:$rev:$typnum:$levnum" |\ - awk -F: '{ printf("%d:%d", $1*10 + $2, $3*10 + $4); }'` - - # determine date - if [ ".$tim" = .calc ]; then - day=`date '+%d'` - month=`date '+%m'` - year=`date '+%Y' 2>/dev/null` - if [ ".$time_year" = . ]; then - year=`date '+%y'` - case $year in - [5-9][0-9]) year="19$year" ;; - [0-4][0-9]) year="20$year" ;; - esac - fi - case $month in - 1|01) month='Jan' ;; - 2|02) month='Feb' ;; - 3|03) month='Mar' ;; - 4|04) month='Apr' ;; - 5|05) month='May' ;; - 6|06) month='Jun' ;; - 7|07) month='Jul' ;; - 8|08) month='Aug' ;; - 9|09) month='Sep' ;; - 10) month='Oct' ;; - 11) month='Nov' ;; - 12) month='Dec' ;; - esac - tim="${day}-${month}-${year}" - fi - - # perform result actions - mode=show - if [ ".$opt_i" != . ]; then - mode=edit - elif [ ".$opt_e" = .yes ]; then - mode=edit - elif [ ".$opt_s" != . ]; then - mode=edit - fi - if [ ".$mode" = .show ]; then - # just display the current version - case $opt_d in - short ) - echo "${ver}.${rev}${typ}${lev}" - ;; - long ) - echo "${ver}.${rev}${typ}${lev} ($tim)" - ;; - libtool ) - echo "${ltv}" - ;; - hex ) - echo "${hex}" - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-d': \`$opt_d'" 1>&2 - shtool_exit 1 - ;; - esac - else - # update the version file - - # pre-generate various strings - triple="${ver}.${rev}${typ}${lev}" - vHex="$hex" - vShort="${triple}" - vLong="${triple} (${tim})" - vTeX="This is ${name}, Version ${triple} (${tim})" - vGNU="${name} ${triple} (${tim})" - vWeb="${name}/${triple}" - vSCCS="@(#)${name} ${triple} (${tim})" - vRCS="\$Id: ${name} ${triple} (${tim}) \$" - - # determine string out of filename - # (do NOT try to optimize this in any way because of portability) - filestr=`util_upper "$file" | tr './%+' '____' | sed -e 's/-/_/g'` - - # generate uppercase prefix - prefixupper=`util_upper "$prefix"` - - # create the version file according the the selected language - echo "new version: ${vLong}" - - cp /dev/null $file - case $opt_l in - txt ) - echo >>$file "" - echo >>$file " ${file} -- Version Information for ${name} (syntax: Text)" - echo >>$file " [automatically generated and maintained by GNU shtool]" - echo >>$file "" - echo >>$file " $vTeX" - echo >>$file "" - ;; - c ) - echo >>$file "/*" - echo >>$file "** ${file} -- Version Information for ${name} (syntax: C/C++)" - echo >>$file "** [automatically generated and maintained by GNU shtool]" - echo >>$file "*/" - echo >>$file "" - echo >>$file "#ifdef _${filestr}_AS_HEADER_" - echo >>$file "" - echo >>$file "#ifndef _${filestr}_" - echo >>$file "#define _${filestr}_" - echo >>$file "" - echo >>$file "#define ${prefixupper}VERSION ${vHex}" - echo >>$file "" - echo >>$file "typedef struct {" - echo >>$file " const int v_hex;" - echo >>$file " const char *v_short;" - echo >>$file " const char *v_long;" - echo >>$file " const char *v_tex;" - echo >>$file " const char *v_gnu;" - echo >>$file " const char *v_web;" - echo >>$file " const char *v_sccs;" - echo >>$file " const char *v_rcs;" - echo >>$file "} ${prefix}version_t;" - echo >>$file "" - echo >>$file "extern ${prefix}version_t ${prefix}version;" - echo >>$file "" - echo >>$file "#endif /* _${filestr}_ */" - echo >>$file "" - echo >>$file "#else /* _${filestr}_AS_HEADER_ */" - echo >>$file "" - echo >>$file "#define _${filestr}_AS_HEADER_" - echo >>$file "#include \"${file}\"" - echo >>$file "#undef _${filestr}_AS_HEADER_" - echo >>$file "" - echo >>$file "${prefix}version_t ${prefix}version = {" - echo >>$file " ${vHex}," - echo >>$file " \"${vShort}\"," - echo >>$file " \"${vLong}\"," - echo >>$file " \"${vTeX}\"," - echo >>$file " \"${vGNU}\"," - echo >>$file " \"${vWeb}\"," - echo >>$file " \"${vSCCS}\"," - echo >>$file " \"${vRCS}\"" - echo >>$file "};" - echo >>$file "" - echo >>$file "#endif /* _${filestr}_AS_HEADER_ */" - echo >>$file "" - ;; - m4 ) - echo >>$file "##" - echo >>$file "## ${file} -- Version Information for ${name} (syntax: M4)" - echo >>$file "## [automatically generated and maintained by GNU shtool]" - echo >>$file "##" - echo >>$file "" - echo >>$file "m4_define([v_hex], [${vHex}])" - echo >>$file "m4_define([v_short], [${vShort}])" - echo >>$file "m4_define([v_long], [${vLong}])" - echo >>$file "m4_define([v_tex], [${vTeX}])" - echo >>$file "m4_define([v_gnu], [${vGNU}])" - echo >>$file "m4_define([v_web], [${vWeb}])" - echo >>$file "m4_define([v_sccs], [${vSCCS}])" - echo >>$file "m4_define([v_rcs], [${vRCS}])" - echo >>$file "" - ;; - perl ) - echo >>$file "##" - echo >>$file "## ${file} -- Version Information for ${name} (syntax: Perl)" - echo >>$file "## [automatically generated and maintained by GNU shtool]" - echo >>$file "##" - echo >>$file "" - echo >>$file "our \$${prefix}version = {" - echo >>$file " 'v_hex' => ${vHex}," - echo >>$file " 'v_short' => \"${vShort}\"," - echo >>$file " 'v_long' => \"${vLong}\"," - echo >>$file " 'v_tex' => \"${vTeX}\"," - echo >>$file " 'v_gnu' => \"${vGNU}\"," - echo >>$file " 'v_web' => \"${vWeb}\"," - echo >>$file " 'v_sccs' => \"${vSCCS}\"," - echo >>$file " 'v_rcs' => \"\\${vRCS}/\"" - echo >>$file "};" - echo >>$file "" - echo >>$file "1;" - echo >>$file "" - ;; - python ) - echo >>$file "##" - echo >>$file "## ${file} -- Version Information for ${name} (syntax: Python)" - echo >>$file "## [automatically generated and maintained by GNU shtool]" - echo >>$file "##" - echo >>$file "" - echo >>$file "class ${prefix}version:" - echo >>$file " v_hex = ${vHex}" - echo >>$file " v_short = \"${vShort}\"" - echo >>$file " v_long = \"${vLong}\"" - echo >>$file " v_tex = \"${vTeX}\"" - echo >>$file " v_gnu = \"${vGNU}\"" - echo >>$file " v_web = \"${vWeb}\"" - echo >>$file " v_sccs = \"${vSCCS}\"" - echo >>$file " v_rcs = \"${vRCS}\"" - echo >>$file "" - ;; - * ) echo "$msgprefix:Error: invalid argument to option \`-l': \`$opt_l'" 1>&2 - shtool_exit 1 - ;; - esac - fi - - shtool_exit 0 - ;; - -path ) - ## - ## path -- Deal with program paths - ## Copyright (c) 1998-2008 Ralf S. Engelschall - ## - - namelist="$*" - - # check whether the test command supports the -x option - if [ -x /bin/sh ] 2>/dev/null; then - minusx="-x" - else - minusx="-r" - fi - - # split path string - paths="`echo $opt_p |\ - sed -e 's/^:/.:/' \ - -e 's/::/:.:/g' \ - -e 's/:$/:./' \ - -e 's/:/ /g'`" - - # SPECIAL REQUEST - # translate forward to reverse path - if [ ".$opt_r" = .yes ]; then - if [ "x$namelist" = "x." ]; then - rp='.' - else - rp='' - for pe in `IFS="$IFS/"; echo $namelist`; do - rp="../$rp" - done - fi - echo $rp | sed -e 's:/$::' - shtool_exit 0 - fi - - # SPECIAL REQUEST - # strip out directory or base name - if [ ".$opt_d" = .yes ]; then - echo "$namelist" |\ - sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' - shtool_exit 0 - fi - if [ ".$opt_b" = .yes ]; then - echo "$namelist" |\ - sed -e 's;.*/\([^/]*\)$;\1;' - shtool_exit 0 - fi - - # MAGIC SITUATION - # Perl Interpreter (perl) - if [ ".$opt_m" = .yes ] && [ ".$namelist" = .perl ]; then - rm -f $tmpfile >/dev/null 2>&1 - touch $tmpfile - found=0 - pc=99 - for dir in $paths; do - dir=`echo $dir | sed -e 's;/*$;;'` - nc=99 - for name in perl perl5 miniperl; do - if [ $minusx "$dir/$name" ] && [ ! -d "$dir/$name" ]; then - perl="$dir/$name" - pv=`$perl -e 'printf("%.3f", $]);'` - echo "$pv:$pc:$nc:$perl" >>$tmpfile - found=1 - fi - nc=`expr $nc - 1` - done - pc=`expr $pc - 1` - done - if [ $found = 1 ]; then - perl="`cat $tmpfile | sort -r -u | sed -e 'q' | cut -d: -f4`" - rm -f $tmpfile >/dev/null 2>&1 - echo "$perl" - shtool_exit 0 - fi - rm -f $tmpfile >/dev/null 2>&1 - shtool_exit 1 - fi - - # MAGIC SITUATION - # C pre-processor (cpp) - if [ ".$opt_m" = .yes ] && [ ".$namelist" = .cpp ]; then - echo >$tmpfile.c "#include " - echo >>$tmpfile.c "Syntax Error" - # 1. try the standard cc -E approach - cpp="${CC-cc} -E" - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # 2. try the cc -E approach and GCC's -traditional-ccp option - cpp="${CC-cc} -E -traditional-cpp" - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # 3. try a standalone cpp command in path and lib dirs - for path in $paths /lib /usr/lib /usr/local/lib; do - path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/cpp" ] && [ ! -d "$path/cpp" ]; then - cpp="$path/cpp" - break - fi - done - if [ ".$cpp" != . ]; then - (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out - my_error=`grep -v '^ *+' $tmpfile.out` - if [ ".$my_error" != . ]; then - # ok, we gave up... - cpp='' - fi - fi - fi - fi - rm -f $tmpfile >/dev/null 2>&1 - rm -f $tmpfile.c $tmpfile.out >/dev/null 2>&1 - if [ ".$cpp" != . ]; then - echo "$cpp" - shtool_exit 0 - fi - shtool_exit 1 - fi - - # STANDARD SITUATION - # iterate over names - for name in $namelist; do - # iterate over paths - for path in $paths; do - path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/$name" ] && [ ! -d "$path/$name" ]; then - if [ ".$opt_s" != .yes ]; then - echo "$path/$name" - fi - shtool_exit 0 - fi - done - done - - shtool_exit 1 - ;; - -esac - -shtool_exit 0 - diff --git a/ssld/Makefile.am b/ssld/Makefile.am deleted file mode 100644 index c5dad1d7e..000000000 --- a/ssld/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -pkglibexec_PROGRAMS = ssld -AM_CFLAGS=$(WARNFLAGS) -AM_CPPFLAGS = -I../include -I../librb/include - - -ssld_SOURCES = ssld.c -ssld_LDADD = ../librb/src/librb.la diff --git a/tests/Makefile.am b/tests/Makefile.am deleted file mode 100644 index 3bac3099f..000000000 --- a/tests/Makefile.am +++ /dev/null @@ -1,53 +0,0 @@ -check_PROGRAMS = runtests \ - chmode1 \ - match1 \ - misc \ - msgbuf_parse1 \ - msgbuf_unparse1 \ - hostmask1 \ - privilege1 \ - rb_dictionary1 \ - rb_snprintf_append1 \ - rb_snprintf_try_append1 \ - sasl_abort1 \ - send1 \ - send_multiline1 \ - serv_connect1 \ - substitution1 -AM_CFLAGS=$(WARNFLAGS) -AM_CPPFLAGS = $(DEFAULT_INCLUDES) -I../librb/include -I.. -AM_LDFLAGS = -no-install -LDADD = libutil.a tap/libtap.a ../librb/src/librb.la ../ircd/libircd.la -ldl - -CLEANFILES = TESTS - -# Override -rpath or programs will be linked to installed libraries -libdir=$(abs_top_builddir) - -runtests_CPPFLAGS = -DC_TAP_SOURCE='"$(abs_top_srcdir)/tests"' \ - -DC_TAP_BUILD='"$(abs_top_builddir)/tests"' -check_LIBRARIES = tap/libtap.a libutil.a -tap_libtap_a_SOURCES = tap/basic.c tap/basic.h \ - tap/float.c tap/float.h tap/macros.h -libutil_a_SOURCES = ircd_util.c client_util.c - -TESTS: Makefile - printf '%s\n' $(check_PROGRAMS) | sed '/^runtests$$/d' > TESTS - -check-local: $(check_PROGRAMS) \ - TESTS \ - ../authd/authd \ - ../bandb/bandb \ - ../ssld/ssld \ - $(patsubst ../modules/%.c,../modules/.libs/%.so,$(wildcard ../modules/*.c)) \ - $(patsubst ../modules/core/%.c,../modules/core/.libs/%.so,$(wildcard ../modules/core/*.c)) - - rm -rf runtime/modules && mkdir -p runtime/modules/autoload - for f in ../modules/core/.libs/*.so; do ln -s "../../../modules/core/.libs/$${f##*/}" "runtime/modules/$${f##*/}"; done - for f in ../modules/.libs/*.so; do ln -s "../../../../modules/.libs/$${f##*/}" "runtime/modules/autoload/$${f##*/}"; done - - ASAN_OPTIONS="${ASAN_OPTIONS}:detect_leaks=false" ./runtests -l $(abs_top_srcdir)/tests/TESTS - -clean-local: - rm -rf runtime/modules - rm -rf *.db *.log diff --git a/tools/Makefile.am b/tools/Makefile.am deleted file mode 100644 index c44dee626..000000000 --- a/tools/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -bin_PROGRAMS = solanum-mkpasswd solanum-mkfingerprint -AM_CFLAGS=$(WARNFLAGS) -AM_CPPFLAGS = $(DEFAULT_INCLUDES) -I../librb/include -I. - -solanum_mkpasswd_SOURCES = mkpasswd.c -solanum_mkpasswd_LDADD = ../librb/src/librb.la - -solanum_mkfingerprint_SOURCES = mkfingerprint.c -solanum_mkfingerprint_LDADD = ../librb/src/librb.la