diff -Nru libapache2-mod-rivet-2.2.0/aclocal.m4 libapache2-mod-rivet-2.2.1/aclocal.m4 --- libapache2-mod-rivet-2.2.0/aclocal.m4 2014-06-10 15:07:28.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/aclocal.m4 2015-01-13 00:06:15.000000000 +0000 @@ -1199,8 +1199,7 @@ END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi -fi -]) +fi]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -1775,4 +1774,5 @@ ]) # _AM_PROG_TAR m4_include([m4/ax_compare_version.m4]) +m4_include([m4/ax_split_version.m4]) m4_include([acinclude.m4]) diff -Nru libapache2-mod-rivet-2.2.0/BUGS libapache2-mod-rivet-2.2.1/BUGS --- libapache2-mod-rivet-2.2.0/BUGS 2010-10-27 13:37:24.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/BUGS 2015-01-08 23:17:55.000000000 +0000 @@ -1,11 +1,4 @@ KNOWN BUGS -$Id: BUGS 1027956 2010-10-27 13:37:24Z mxmanghi $ - -1) "DIO store" will malfunction if the case of the variable names in the array -does not match the case of the field names in the table. What happens is that -any fields with case inconsistencies will neither be inserted or updated. - -2010-04-29: Rivet apparently conflicts with mod_cgi in some apache installations. When -mod_rivet is loaded cgi script stop sending content to any client. +$Id: BUGS 1650416 2015-01-08 23:17:55Z mxmanghi $ diff -Nru libapache2-mod-rivet-2.2.0/ChangeLog libapache2-mod-rivet-2.2.1/ChangeLog --- libapache2-mod-rivet-2.2.0/ChangeLog 2014-06-10 15:06:36.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/ChangeLog 2015-01-13 00:01:56.000000000 +0000 @@ -1,3 +1,78 @@ +2015-01-12 Massimo Manghi + * tests/redirect.test,channel.test: adding tests for new features of Rivet 2.2.1 + +2015-01-08 Massimo Manghi + * doc/xml/commands.xml: documenting the ::rivet::redirect command + * doc/xml/directives.xml: add SeparateChannels directive documentation + * src/rivetcmds/rivetInspect.c: add handling of SeparateChannels/separate_channels configuratio + flag + +2015-01-06 Massimo Manghi + * src/apache-2/mod_rivet.c: handling separate_channel flag to create virtual host specific + Rivet channels + * src/config/apache_config.c: handling SeparateChannels configuration directive + +2015-01-05 Massimo Manghi + * configure.ac: adding macro APU_HANDLING for OS where apr-utils have a different installation + directory + * src/Makefile.am: new macro symbols APU_INCLUDES and APU_CFLAGS + +2014-12-22 Massimo Manghi + * tests/headers.test: add test for command 'headers get' + * src/Tclweb.h: new definition for functions TclWeb_OutputHeaders[Set|Get] + * src/config/Tclwebapache.h: New functions TclWeb_OutputHeaders[Set|Get] + * src/rivetcmds/rivetCore.c: new subcommand '::rivet::headers get' + * tclconfig/libtool.m4: new script for libtool + +2014-12-18 Massimo Manghi + * rivet/rivet-tcl/redirect.tcl: adding Damon's redirect command based on direct manipulation + of the headers + * src/rivetcmds/rivetCore.c: adding command [::rivet::headers sent] providing basic introspection + for the I/O buffer internal status + * src/apache-2/mod_rivet.c: moving Tcl_Flush from Rivet_ExecuteAndCheck to the very end of + Rivet_SendContent, avoiding multiple calls in case ::rivet::parse is called. + * src/experimental: removing it from this branch. Threaded code will be developed in trunk for + rivet 2.3 + +2014-08-04 Massimo Manghi + * configure.ac: adding support for --with-rivet-channel switch for alternate implementations + of a Rivet Tcl channel + * src/: further modularized to make refactoring a bit easier. But it's still the code + we released as 2.2.0 + +2014-07-14 Massimo Manghi + * src/experimental/mod_rivet.c: working toy module capable of running Tcl scripts with a worker MPM + * src/experimental/rivetChannel.c: now depending on the thread private data + +2014-07-17 Massimo Manghi + * src/channel/rivetChannel.[c|h]: add preprocessor symbol to prevent multiple includes + +2014-07-16 Massimo Manghi + * src/experimental: add experimental code for threaded module + +2014-07-10 Massimo Manghi + * src/apache-2/apache_config.[h|c]: moved to src/config + * src/apache-2/TclWebapache.c: this file moved temporarily into src/config to separate it from + the specific module implementation + * src/experimental: making room to a new implementation of mod_rivet + * src/channel/rivetChannel.c: the request_rec pointer is passed through another pointer + as this channel is now the only channel handled by mod_rivet and it's shared across virutal hosts + * src/apache-2/mod_rivet.c: now creating only one Rivet channel instance and storing a pointer + to the current request_rec in the structure mod_rivet_globals, as the running the prefork MPM + we can only handle a request at a time. + * src/apache-2/*.tcl: removing obsolete tcl files + +2014-07-09 Massimo Manghi + * m4/ax_split_version.m4: adding macro for version number manipulation + +2014-06-22 Massimo Manghi + * configure.ac: new macros MOD_RIVET_CORE and RIVET_CHANNEL. Macro APACHE_VERSION preserved but not + called anymore + * rivet/init.tcl.in: Add template for rivet/init.tcl + * src/Makefile.am: building mod_rivet with code entirely selected by autoconf defined symbols + * src/apache-2/mod_rivet.c: comments added. Rivet package version depends now on preprocessor + symbol RIVET_TCL_PACKAGE_VERSION + 2014-06-10 Massimo Manghi * tests/rivet.test: removed lang.test as it was testing just a tautology diff -Nru libapache2-mod-rivet-2.2.0/config.h.in libapache2-mod-rivet-2.2.1/config.h.in --- libapache2-mod-rivet-2.2.0/config.h.in 2014-06-10 15:07:29.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/config.h.in 2015-01-13 00:06:16.000000000 +0000 @@ -3,9 +3,6 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD -/* APACHE2 definition in config.h */ -#undef APACHE2 - /* Display Rivet version in Apache signature */ #undef DISPLAY_VERSION @@ -151,6 +148,9 @@ /* Is memory debugging enabled? */ #undef TCL_MEM_DEBUG +/* Rivet Tcl package version */ +#undef TCL_PACKAGE_VERSION + /* Are we building with threads enabled? */ #undef TCL_THREADS diff -Nru libapache2-mod-rivet-2.2.0/configure libapache2-mod-rivet-2.2.1/configure --- libapache2-mod-rivet-2.2.0/configure 2014-06-10 15:07:29.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/configure 2015-01-13 00:06:15.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Rivet 2.2.0. +# Generated by GNU Autoconf 2.69 for Rivet 2.2.1. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='Rivet' PACKAGE_TARNAME='rivet' -PACKAGE_VERSION='2.2.0' -PACKAGE_STRING='Rivet 2.2.0' +PACKAGE_VERSION='2.2.1' +PACKAGE_STRING='Rivet 2.2.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -635,11 +635,15 @@ TCL_PACKAGE_PATH MOD_RIVET_INCLUDES apache_version_dir +rivet_channel rivet_core_cmds apache_request MAX_POST RIVET_UPLOAD_DIR RIVET_TCL_TARGET +APU_LDFLAGS +APU_INCLUDES +with_apu_config APR_LDFLAGS APR_INCLUDES APR_CPPFLAGS @@ -656,6 +660,7 @@ APXS_CPPFLAGS with_apxs RIVET_BASE_INCLUDE +rivet_core TCLSH_PROG VC_MANIFEST_EMBED_EXE VC_MANIFEST_EMBED_DLL @@ -841,11 +846,12 @@ with_celib enable_symbols with_tclsh -with_apache_version +with_rivet_core with_apache with_apxs with_apache_include with_apr_config +with_apu_config with_rivet_target_dir enable_version_display with_upload_dir @@ -856,6 +862,7 @@ enable_import_rivet_commands with_apache_request with_rivet_core_cmds +with_rivet_channel enable_rivet_commands_export ' ac_precious_vars='build_alias @@ -1407,7 +1414,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Rivet 2.2.0 to adapt to many kinds of systems. +\`configure' configures Rivet 2.2.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1477,7 +1484,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Rivet 2.2.0:";; + short | recursive ) echo "Configuration of Rivet 2.2.1:";; esac cat <<\_ACEOF @@ -1507,7 +1514,7 @@ --enable-head-requests Returns real headers in response to a HEAD request --enable-virtual-interps-separation to turn on virtual host separation --disable-upload-var to enable automatic upload to variables - --disable-import-rivet-commands requires explicit namespace import + --disable-import-rivet-commands requires explicit namespace import --disable-rivet-commands-export to prevent export from ::rivet namespace Optional Packages: @@ -1523,16 +1530,18 @@ --with-tclinclude directory containing the public Tcl header files --with-celib=DIR use Windows/CE support library from DIR --with-tclsh=FILE location of a working tclsh executable - --with-apache-version=VER build for apache 1.x or 2.x + --with-rivet-core=path mod_rivet core directory --with-apache=DIR Apache server base directory --with-apxs=FILE location of Apache apxs tool --with-apache-include=DIR Apache server directory --with-apr-config=FILE apr portable apr-1-config path - --with-rivet-target-dir=DIR Rivet tcl library target dir - --with-upload-dir=DIR Default directory for uploads + --with-apu-config=FILE apu portable apu-1-config path + --with-rivet-target-dir=DIR Rivet tcl library target dir + --with-upload-dir=DIR Default directory for uploads --with-post-max=BYTES Maximum size of data to be sent with a POST --with-apache-request=dir choose subdirectory for Apache request handling code --with-rivet-core-cmds=dir select directory for Rivet core commands core + --with-rivet-channel=DIR Rivet channel code path Some influential environment variables: CC C compiler command @@ -1610,7 +1619,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Rivet configure 2.2.0 +Rivet configure 2.2.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1975,7 +1984,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Rivet $as_me 2.2.0, which was +It was created by Rivet $as_me 2.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2942,7 +2951,7 @@ # Define the identity of the package. PACKAGE='rivet' - VERSION='2.2.0' + VERSION='2.2.1' cat >>confdefs.h <<_ACEOF @@ -3034,7 +3043,6 @@ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi - ac_config_headers="$ac_config_headers config.h" @@ -3115,7 +3123,7 @@ # Define the identity of the package. PACKAGE='rivet' - VERSION='2.2.0' + VERSION='2.2.1' cat >>confdefs.h <<_ACEOF @@ -3208,7 +3216,6 @@ fi fi - #-------------------------------------------------------------------- # Load the tclConfig.sh file #-------------------------------------------------------------------- @@ -6711,6 +6718,11 @@ lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -6737,7 +6749,8 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -6750,7 +6763,7 @@ # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do @@ -7138,10 +7151,6 @@ fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -7179,8 +7188,8 @@ lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -7819,13 +7828,13 @@ if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in @@ -7972,6 +7981,7 @@ # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -8260,7 +8270,7 @@ rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -8276,9 +8286,19 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -8297,7 +8317,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -8360,7 +8383,7 @@ CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 @@ -8371,7 +8394,20 @@ case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" @@ -9011,7 +9047,13 @@ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -9022,6 +9064,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : @@ -9054,6 +9097,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : @@ -9075,7 +9119,9 @@ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -9276,6 +9322,10 @@ + + + + test -z "$LN_S" && LN_S="ln -s" @@ -9735,7 +9785,9 @@ case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi ;; esac else @@ -9779,7 +9831,7 @@ lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -9826,18 +9878,33 @@ ;; *) case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; esac ;; esac @@ -10199,7 +10266,6 @@ hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported @@ -10452,8 +10518,7 @@ xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ @@ -10833,6 +10898,7 @@ # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' @@ -10878,6 +10944,7 @@ hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else whole_archive_flag_spec='' fi @@ -10906,10 +10973,6 @@ hardcode_shlibpath_var=no ;; - freebsd1*) - ld_shlibs=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -10922,7 +10985,7 @@ ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes @@ -10961,7 +11024,6 @@ fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes @@ -11585,11 +11647,6 @@ - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -11679,7 +11736,7 @@ case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -11688,7 +11745,7 @@ ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -11753,7 +11810,7 @@ ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -11892,7 +11949,7 @@ ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -11900,10 +11957,6 @@ shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -11911,7 +11964,7 @@ objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -11929,7 +11982,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -11948,19 +12001,8 @@ esac ;; -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - haiku*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" @@ -12021,7 +12063,7 @@ ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -12037,7 +12079,7 @@ nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -12074,9 +12116,9 @@ dynamic_linker=no ;; -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -12170,7 +12212,7 @@ ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -12239,7 +12281,7 @@ ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -12264,7 +12306,7 @@ ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -12288,7 +12330,7 @@ sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -12319,7 +12361,7 @@ tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -12329,7 +12371,7 @@ ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -13111,6 +13153,8 @@ + + ac_config_commands="$ac_config_commands libtool" @@ -15947,6 +15991,8 @@ + + #-------------------------------------------------------------------- # 6-Dec-2011: Introducing new ::rivet namespace. Some components # (namely RivetTcl, providing Tcl level initialization) are required @@ -16098,6 +16144,13 @@ +# MOD_RIVET_CORE +# + + + +# + @@ -16116,6 +16169,12 @@ +# RIVET_CHANNEL +# +# selecting the Rivet channel code directory + + + @@ -16186,32 +16245,24 @@ +#APACHE_VERSION -# Check whether --with-apache_version was given. -if test "${with_apache_version+set}" = set; then : - withval=$with_apache_version; +# Check whether --with-rivet_core was given. +if test "${with_rivet_core+set}" = set; then : + withval=$with_rivet_core; else - with_apache_version="2" + with_rivet_core="apache-2" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for apache version" >&5 -$as_echo_n "checking for apache version... " >&6; } - if test "$with_apache_version" = "1"; then - as_fn_error $? "Rivet 2.1 is no more supporting Apache 1.x" "$LINENO" 5 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: building for apache 2.x" >&5 -$as_echo "building for apache 2.x" >&6; } - ac_config_files="$ac_config_files src/apache-2/Makefile" - - apache_version_dir="apache-2" + rivet_core=${with_rivet_core} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking mod_rivet core" >&5 +$as_echo_n "checking mod_rivet core... " >&6; } -$as_echo "#define APACHE2 1" >>confdefs.h - - fi - MOD_RIVET_INCLUDES="-I${apache_version_dir}" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_rivet_core" >&5 +$as_echo "$with_rivet_core" >&6; } RIVET_BASE_INCLUDE=`pwd`/src @@ -16362,9 +16413,9 @@ # Check whether --with-apr_config was given. if test "${with_apr_config+set}" = set; then : - withval=$with_apr_config; if test -x "${with_apr_config}"; then - apr_found="${with_apr_config}" - fi + withval=$with_apr_config; if "${with_apr_config}" --version; then + apr_found="${with_apr_config}" + fi else if test -x "${apache_base}/bin/apr-1-config" ; then @@ -16421,7 +16472,7 @@ apr_found="${with_apr_config}" fi else - as_fn_error 1 "Specify the apr-1-config path using --with-apr-config" "$LINENO" 5 + as_fn_error 1 "Specify the apr-1-config path or program name using --with-apr-config" "$LINENO" 5 fi fi @@ -16441,6 +16492,90 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Apache apu" >&5 +$as_echo_n "checking for Apache apu... " >&6; } + +# Check whether --with-apu_config was given. +if test "${with_apu_config+set}" = set; then : + withval=$with_apu_config; if "${with_apu_config}" --version; then + apu_found="${with_apu_config}" + fi + +else + if apu-1-config --version; then + apu_found=apu-1-config + elif test -x "${apache_base}/bin/apu-1-config" ; then + apu_found="${apache_base}/bin/apu-1-config" + elif test -x "${apache_base}/sbin/apu-1-config" ; then + apu_found="${apache_base}/sbin/apu-1-config" + elif test "${apache_base+set}" = set; then + for ac_prog in apu-1-config +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_with_apu_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $with_apu_config in + [\\/]* | ?:[\\/]*) + ac_cv_path_with_apu_config="$with_apu_config" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_with_apu_config="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +with_apu_config=$ac_cv_path_with_apu_config +if test -n "$with_apu_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_apu_config" >&5 +$as_echo "$with_apu_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$with_apu_config" && break +done + + if test "${with_apu_config+set}" = set ; then + apu_found="${with_apu_config}" + fi + else + as_fn_error 1 "Specify the apu-1-config path or program name using --with-apu-config" "$LINENO" 5 + fi + +fi + + if test "${apu_found+set}" = set ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $apu_found" >&5 +$as_echo "$apu_found" >&6; } + export PATH=$PATH:`dirname ${apu_found}` + APU_INCLUDES=`${apu_found} --includes` + + APU_LDLFAGS=`${apu_found} --link-libtool --libs` + + else + as_fn_error $? "Could not find apu-1-config. apu-1-config must be in your PATH or you must specify the location of the apu script using --with-apu-config" "$LINENO" 5 + fi + + # Check whether --with-rivet_target_dir was given. if test "${with_rivet_target_dir+set}" = set; then : @@ -16666,6 +16801,55 @@ + +# Check whether --with-rivet_channel was given. +if test "${with_rivet_channel+set}" = set; then : + withval=$with_rivet_channel; +else + with_rivet_channel="channel" + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Rivet channel code path" >&5 +$as_echo_n "checking for Rivet channel code path... " >&6; } + rivet_channel=${with_rivet_channel} + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_rivet_channel" >&5 +$as_echo "$with_rivet_channel" >&6; } + + +# Let's separate the point version from the major and minor version +# to build a Rivet version to be substituted as basic version for +# package Rivet, central initialization of the Tcl environment + +VERSION=${PACKAGE_VERSION} + + + AX_MAJOR_VERSION=`echo "$VERSION" | $SED 's/\([^.][^.]*\).*/\1/'` + AX_MINOR_VERSION=`echo "$VERSION" | $SED 's/[^.][^.]*.\([^.][^.]*\).*/\1/'` + AX_POINT_VERSION=`echo "$VERSION" | $SED 's/[^.][^.]*.[^.][^.]*.\(.*\)/\1/'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Major version" >&5 +$as_echo_n "checking Major version... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AX_MAJOR_VERSION" >&5 +$as_echo "$AX_MAJOR_VERSION" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Minor version" >&5 +$as_echo_n "checking Minor version... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AX_MINOR_VERSION" >&5 +$as_echo "$AX_MINOR_VERSION" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking Point version" >&5 +$as_echo_n "checking Point version... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AX_POINT_VERSION" >&5 +$as_echo "$AX_POINT_VERSION" >&6; } + + +cat >>confdefs.h <<_ACEOF +#define TCL_PACKAGE_VERSION "${AX_MAJOR_VERSION}.${AX_MINOR_VERSION}" +_ACEOF + +{ $as_echo "$as_me:${as_lineno-$LINENO}: Rivet package version is ${AX_MAJOR_VERSION}.${AX_MINOR_VERSION}" >&5 +$as_echo "$as_me: Rivet package version is ${AX_MAJOR_VERSION}.${AX_MINOR_VERSION}" >&6;} + if test $import_rivet_commands = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: forcing Rivet to export commands from ::rivet namespace" >&5 $as_echo "$as_me: forcing Rivet to export commands from ::rivet namespace" >&6;} @@ -16797,7 +16981,7 @@ # You may alternatively have a special pkgIndex.tcl.in or other files # which require substituting the AC variables in. Include these here. #-------------------------------------------------------------------- -ac_config_files="$ac_config_files Makefile src/Makefile src/librivet/Makefile src/parser/Makefile doc/Makefile doc/convert_examples.tcl" +ac_config_files="$ac_config_files Makefile src/Makefile rivet/init.tcl src/parser/Makefile doc/Makefile doc/convert_examples.tcl" #case $apache_version_dir in @@ -17348,7 +17532,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Rivet $as_me 2.2.0, which was +This file was extended by Rivet $as_me 2.2.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17414,7 +17598,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Rivet config.status 2.2.0 +Rivet config.status 2.2.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -17552,6 +17736,7 @@ enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' @@ -17634,7 +17819,6 @@ allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' @@ -17690,6 +17874,7 @@ # Quote evaled strings. for var in SHELL \ ECHO \ +PATH_SEPARATOR \ SED \ GREP \ EGREP \ @@ -17740,7 +17925,6 @@ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ @@ -17825,10 +18009,9 @@ "rivet_config.h") CONFIG_COMMANDS="$CONFIG_COMMANDS rivet_config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "src/apache-2/Makefile") CONFIG_FILES="$CONFIG_FILES src/apache-2/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/librivet/Makefile") CONFIG_FILES="$CONFIG_FILES src/librivet/Makefile" ;; + "rivet/init.tcl") CONFIG_FILES="$CONFIG_FILES rivet/init.tcl" ;; "src/parser/Makefile") CONFIG_FILES="$CONFIG_FILES src/parser/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/convert_examples.tcl") CONFIG_FILES="$CONFIG_FILES doc/convert_examples.tcl" ;; @@ -18631,8 +18814,8 @@ # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -18686,6 +18869,9 @@ # An echo program that protects backslashes. ECHO=$lt_ECHO +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + # The host system. host_alias=$host_alias host=$host @@ -18987,10 +19173,6 @@ # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator @@ -19281,8 +19463,8 @@ if test "$print_fileevent_msg" = "1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: =======================================================================" >&5 -$as_echo "$as_me: =======================================================================" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: ========================================================================" >&5 +$as_echo "$as_me: ========================================================================" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING!" >&5 $as_echo "$as_me: WARNING!" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: ========================================================================" >&5 diff -Nru libapache2-mod-rivet-2.2.0/configure.ac libapache2-mod-rivet-2.2.1/configure.ac --- libapache2-mod-rivet-2.2.0/configure.ac 2014-06-04 22:30:35.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/configure.ac 2015-01-07 18:32:10.000000000 +0000 @@ -6,7 +6,7 @@ dnl You need at least autoconf 2.59 dnl # -# RCS: @(#) $Id: configure.ac 1600530 2014-06-04 22:30:35Z mxmanghi $ +# RCS: @(#) $Id: configure.ac 1650136 2015-01-07 18:32:10Z mxmanghi $ #----------------------------------------------------------------------- # Sample configure.in for Tcl Extensions. The only places you should @@ -22,7 +22,7 @@ # so you can encode the package version directly into the source files. #----------------------------------------------------------------------- -AC_INIT([Rivet],[2.2.0]) +AC_INIT([Rivet],[2.2.1]) TEA_INIT([3.9]) AC_CONFIG_AUX_DIR(tclconfig) @@ -333,9 +333,9 @@ AC_ARG_WITH( apr_config, [ --with-apr-config=FILE apr portable apr-1-config path], - [if test -x "${with_apr_config}"; then - apr_found="${with_apr_config}" - fi] + [if "${with_apr_config}" --version; then + apr_found="${with_apr_config}" + fi] , [if test -x "${apache_base}/bin/apr-1-config" ; then apr_found="${apache_base}/bin/apr-1-config" @@ -347,7 +347,7 @@ apr_found="${with_apr_config}" fi else - AC_MSG_ERROR( Specify the apr-1-config path using --with-apr-config, 1) + AC_MSG_ERROR( Specify the apr-1-config path or program name using --with-apr-config, 1) fi] ) if test "${apr_found+set}" = set ; then @@ -366,6 +366,44 @@ fi ]) +AC_DEFUN([APU_HANDLING],[ + AC_MSG_CHECKING(for Apache apu) + AC_ARG_WITH( + apu_config, + [ --with-apu-config=FILE apu portable apu-1-config path], + [if "${with_apu_config}" --version; then + apu_found="${with_apu_config}" + fi] + , + [if apu-1-config --version; then + apu_found=apu-1-config + elif test -x "${apache_base}/bin/apu-1-config" ; then + apu_found="${apache_base}/bin/apu-1-config" + elif test -x "${apache_base}/sbin/apu-1-config" ; then + apu_found="${apache_base}/sbin/apu-1-config" + elif test "${apache_base+set}" = set; then + AC_PATH_PROGS(with_apu_config, apu-1-config) + if test "${with_apu_config+set}" = set ; then + apu_found="${with_apu_config}" + fi + else + AC_MSG_ERROR( Specify the apu-1-config path or program name using --with-apu-config, 1) + fi] +) + if test "${apu_found+set}" = set ; then + AC_MSG_RESULT([$apu_found]) + dnl At this point we already have apu sorted out + dnl It actually calls another script, so the PATH needs to be set. + export PATH=$PATH:`dirname ${apu_found}` + APU_INCLUDES=`${apu_found} --includes` + AC_SUBST(APU_INCLUDES) + APU_LDLFAGS=`${apu_found} --link-libtool --libs` + AC_SUBST(APU_LDFLAGS) + else + AC_MSG_ERROR([Could not find apu-1-config. apu-1-config must be in your PATH or you must specify the location of the apu script using --with-apu-config]) + fi +]) + #-------------------------------------------------------------------- # 6-Dec-2011: Introducing new ::rivet namespace. Some components @@ -422,6 +460,24 @@ MOD_RIVET_INCLUDES="-I${apache_version_dir}" ]) +# MOD_RIVET_CORE +# + +AC_DEFUN([MOD_RIVET_CORE],[ + AC_ARG_WITH( + rivet_core, + [ --with-rivet-core[=path] mod_rivet core directory],, + [with_rivet_core="apache-2"] + ) + + rivet_core=${with_rivet_core} + AC_MSG_CHECKING(mod_rivet core) + AC_SUBST(rivet_core) + AC_MSG_RESULT([$with_rivet_core]) +]) + +# + AC_DEFUN([HANDLE_TCL_PACKAGE_PATH],[ # shamelessly stolen from TEA_LOAD_TCLCONFIG AC_MSG_CHECKING([Debian TCL_PACKAGE_PATH workaround]) @@ -483,11 +539,28 @@ ]) +# RIVET_CHANNEL +# +# selecting the Rivet channel code directory + +AC_DEFUN([RIVET_CHANNEL],[ + AC_ARG_WITH( + rivet_channel, + [ --with-rivet-channel=DIR Rivet channel code path ],, + [with_rivet_channel="channel"] + ) + + AC_MSG_CHECKING(for Rivet channel code path) + rivet_channel=${with_rivet_channel} + AC_SUBST(rivet_channel) + AC_MSG_RESULT([$with_rivet_channel]) +]) + AC_DEFUN([RIVET_TCL_LIB],[ AC_ARG_WITH( rivet_target_dir, - [ --with-rivet-target-dir=DIR Rivet tcl library target dir ],, + [ --with-rivet-target-dir=DIR Rivet tcl library target dir ],, with_rivet_target_dir="${apache_base}/lib/rivet${PACKAGE_VERSION}" ) AC_MSG_CHECKING(for Rivet tcl library target) @@ -534,7 +607,7 @@ AC_DEFUN([UPLOAD_DIRECTORY],[ AC_ARG_WITH( upload_dir, - [ --with-upload-dir=DIR Default directory for uploads],, + [ --with-upload-dir=DIR Default directory for uploads],, with_upload_dir="/tmp" ) AC_MSG_CHECKING(where Rivet will save uploads) @@ -601,7 +674,7 @@ AC_DEFUN([IMPORT_RIVET_COMMANDS],[ AC_ARG_ENABLE( import-rivet-commands, - [ --disable-import-rivet-commands requires explicit namespace import], + [ --disable-import-rivet-commands requires explicit namespace import], [ import_rivet_commands=$enable_import_rivet_commands], [ import_rivet_commands="yes"] ) @@ -685,12 +758,14 @@ ]) -APACHE_VERSION +#APACHE_VERSION +MOD_RIVET_CORE GET_RIVET_BASE APACHE CHECK_APXS APACHE_INCLUDES APR_HANDLING +APU_HANDLING RIVET_TCL_LIB DISPLAY_RIVET_VERSION UPLOAD_DIRECTORY @@ -701,6 +776,16 @@ IMPORT_RIVET_COMMANDS APACHE_REQUEST RIVET_CORE_CMDS +RIVET_CHANNEL + +# Let's separate the point version from the major and minor version +# to build a Rivet version to be substituted as basic version for +# package Rivet, central initialization of the Tcl environment + +VERSION=${PACKAGE_VERSION} +AX_SPLIT_VERSION +AC_DEFINE_UNQUOTED(TCL_PACKAGE_VERSION,"${AX_MAJOR_VERSION}.${AX_MINOR_VERSION}",[Rivet Tcl package version]) +AC_MSG_NOTICE([Rivet package version is ${AX_MAJOR_VERSION}.${AX_MINOR_VERSION}]) if test $import_rivet_commands = "yes"; then AC_MSG_NOTICE([forcing Rivet to export commands from ::rivet namespace]) @@ -728,7 +813,7 @@ # You may alternatively have a special pkgIndex.tcl.in or other files # which require substituting the AC variables in. Include these here. #-------------------------------------------------------------------- -AC_CONFIG_FILES([Makefile src/Makefile src/librivet/Makefile src/parser/Makefile doc/Makefile doc/convert_examples.tcl]) +AC_CONFIG_FILES([Makefile src/Makefile rivet/init.tcl src/parser/Makefile doc/Makefile doc/convert_examples.tcl]) #case $apache_version_dir in # apache-1) AC_CONFIG_FILES([Makefile src/Makefile src/apache-1/Makefile doc/Makefile]) ;; @@ -737,7 +822,7 @@ AC_OUTPUT if test "$print_fileevent_msg" = "1"; then - AC_MSG_NOTICE([=======================================================================]) + AC_MSG_NOTICE([========================================================================]) AC_MSG_NOTICE([ WARNING!]) AC_MSG_NOTICE([========================================================================]) AC_MSG_NOTICE([The Tcl notifier (and consequently the event loop) does not work with]) diff -Nru libapache2-mod-rivet-2.2.0/debian/changelog libapache2-mod-rivet-2.2.1/debian/changelog --- libapache2-mod-rivet-2.2.0/debian/changelog 2014-11-19 23:23:30.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/debian/changelog 2015-01-22 15:14:56.000000000 +0000 @@ -1,3 +1,9 @@ +libapache2-mod-rivet (2.2.1-1) unstable; urgency=medium + + * Packaging new upstream release + + -- Massimo Manghi Thu, 22 Jan 2015 16:13:06 +0100 + libapache2-mod-rivet (2.2.0-2) unstable; urgency=medium * Fixing lintian warnings because of improper usage of * in copyright diff -Nru libapache2-mod-rivet-2.2.0/doc/html/abort_code.html libapache2-mod-rivet-2.2.1/doc/html/abort_code.html --- libapache2-mod-rivet-2.2.0/doc/html/abort_code.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/abort_code.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,7 +1,7 @@ abort_code

Name

abort_code — Returns the code passed to abort_page earlier during the request processing -

Synopsis

::rivet::abort_code

Description

+

Synopsis

::rivet::abort_code

Description

Usage of this command is meaningful only in a script set as AbortScript or AfterEveryScript. abort_code returns the value of the optional diff -Nru libapache2-mod-rivet-2.2.0/doc/html/abort_page.html libapache2-mod-rivet-2.2.1/doc/html/abort_page.html --- libapache2-mod-rivet-2.2.0/doc/html/abort_page.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/abort_page.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,7 +1,7 @@ abort_page


Name

abort_page — Stops outputting data to web page, similar in purpose to PHP's die command. -

Synopsis

::rivet::abort_page (abort code | -aborting)

Description

+

Synopsis

::rivet::abort_page (abort code | -aborting)

Description

This command flushes the output buffer and stops the Tcl script from sending any more data to the client. A normal Tcl script might use the diff -Nru libapache2-mod-rivet-2.2.0/doc/html/apache_log_error.html libapache2-mod-rivet-2.2.1/doc/html/apache_log_error.html --- libapache2-mod-rivet-2.2.0/doc/html/apache_log_error.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/apache_log_error.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -apache_log_error


Name

apache_log_error — log messages to the Apache error log

Synopsis

::rivet::apache_log_error ?priority? ?message?

Description

+apache_log_error


Name

apache_log_error — log messages to the Apache error log

Synopsis

::rivet::apache_log_error ?priority? ?message?

Description

The apache_log_error command logs a message to the Apache error log, whose name and location have been set by the ErrorLog directive. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/apache_table.html libapache2-mod-rivet-2.2.1/doc/html/apache_table.html --- libapache2-mod-rivet-2.2.0/doc/html/apache_table.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/apache_table.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -apache_table


Name

apache_table — access and manipulate Apache tables in the request structure.

Synopsis

::rivet::apache_table (get | set | exists | unset | names | array_get | clear)

Description

+apache_table


Name

apache_table — access and manipulate Apache tables in the request structure.

Synopsis

::rivet::apache_table (get | set | exists | unset | names | array_get | clear)

Description

The apache_table command is for accessing and manipulating Apache tables in the request structure.

diff -Nru libapache2-mod-rivet-2.2.0/doc/html/calendar.html libapache2-mod-rivet-2.2.1/doc/html/calendar.html --- libapache2-mod-rivet-2.2.0/doc/html/calendar.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/calendar.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,7 +1,7 @@ -Calendar

Name

Calendar — Utility class the builds and prints a calendar table

Synopsis

Calendar calendar_name

Calendar object subcommands

+Calendar

Name

Calendar — Utility class the builds and prints a calendar table

Synopsis

Calendar calendar_name

Calendar object subcommands

The main public command for a calendar object is emit that returns a calendar table -

+

The method emit when invoked with a single argument takes it as an year number and prints the whole calendar of that year. When invoked with 2 arguments takes the first as a month, either diff -Nru libapache2-mod-rivet-2.2.0/doc/html/calendar_package.html libapache2-mod-rivet-2.2.1/doc/html/calendar_package.html --- libapache2-mod-rivet-2.2.0/doc/html/calendar_package.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/calendar_package.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -Calendar Package


Calendar Package

Introduction

+Calendar Package


Calendar Package

Introduction

The package is based on the Calendar class, a class capable of printing an ascii calendar table that closely resembles the output of the typical Unix cal command. The internal diff -Nru libapache2-mod-rivet-2.2.0/doc/html/clock_to_rfc.html libapache2-mod-rivet-2.2.1/doc/html/clock_to_rfc.html --- libapache2-mod-rivet-2.2.0/doc/html/clock_to_rfc.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/clock_to_rfc.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -clock_to_rfc850_gmt


Name

clock_to_rfc850_gmt — create a rfc850 time from [clock seconds].

Synopsis

::rivet::clock_to_rfc850_gmt ?seconds?

Description

+clock_to_rfc850_gmt


Name

clock_to_rfc850_gmt — create a rfc850 time from [clock seconds].

Synopsis

::rivet::clock_to_rfc850_gmt ?seconds?

Description

Convert an integer-seconds-since-1970 click value to RFC850 format, with the additional requirement that it be GMT only. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/cookie.html libapache2-mod-rivet-2.2.1/doc/html/cookie.html --- libapache2-mod-rivet-2.2.0/doc/html/cookie.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/cookie.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -cookie


Name

cookie — get, set and delete cookies.

Synopsis

::rivet::cookie ?set? ?cookieName? ??cookiValue?? ?-days expireInDays? ?-hours expireInHours? ?-minutes expireInMinutes? ?-expires Wdy, DD-Mon-YYYY HH:MM:SS GMT? ?-path uriPathCookieAppliesTo? ?-secure 1/0? ?-HttpOnly 1/0?
::rivet::cookie ?get? ?cookieName?
::rivet::cookie ?delete? ?cookieName?
::rivet::cookie ?unset? ?cookieName?

Description

+cookie


Name

cookie — get, set and delete cookies.

Synopsis

::rivet::cookie ?set? ?cookieName? ??cookiValue?? ?-days expireInDays? ?-hours expireInHours? ?-minutes expireInMinutes? ?-expires Wdy, DD-Mon-YYYY HH:MM:SS GMT? ?-path uriPathCookieAppliesTo? ?-secure 1/0? ?-HttpOnly 1/0?
::rivet::cookie ?get? ?cookieName?
::rivet::cookie ?delete? ?cookieName?
::rivet::cookie ?unset? ?cookieName?

Description

cookie gets, sets, unsets or deletes a cookie. When you get a cookie, the command returns the value of the cookie, or an empty string if no cookie exists. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/debug.html libapache2-mod-rivet-2.2.1/doc/html/debug.html --- libapache2-mod-rivet-2.2.0/doc/html/debug.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/debug.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,7 +1,7 @@ debug


Name

debug — A command to print strings, arrays and the values of variables as specified by the arguments. -

Synopsis

::rivet::debug -subst ?<on|off>? -separator ?<string>? -option ?<value>? -option ?<value>? ...

Description

+

Synopsis

::rivet::debug -subst ?<on|off>? -separator ?<string>? -option ?<value>? -option ?<value>? ...

Description

A command to make debugging more convenient print strings, arrays and the values of variables as specified by the arguments.

diff -Nru libapache2-mod-rivet-2.2.0/doc/html/decode.html libapache2-mod-rivet-2.2.1/doc/html/decode.html --- libapache2-mod-rivet-2.2.0/doc/html/decode.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/decode.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,7 +1,7 @@ decode


Name

decode — decode an SGML encoded string replacing every entity with the corresponding character -

Synopsis

::rivet::decode string ?-encoding <encoding>?

Description

+

Synopsis

::rivet::decode string ?-encoding <encoding>?

Description

::rivet::decode implements the inverse function of ::rivet::encode. The input string is scanned searching and replacing every SGML entity with its corresponding character. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/diodisplay_package.html libapache2-mod-rivet-2.2.1/doc/html/diodisplay_package.html --- libapache2-mod-rivet-2.2.0/doc/html/diodisplay_package.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/diodisplay_package.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,8 +1,8 @@ -DIODisplay

Name

DIODisplay — Database Interface Objects Display Class

Synopsis

DIODisplay (objectName | #auto) (-option | option | -option | option | ...)

Description

+DIODisplay

Name

DIODisplay — Database Interface Objects Display Class

Synopsis

DIODisplay (objectName | #auto) (-option | option | -option | option | ...)

Description

DIODisplay is an HTML display class that uses a DIO object to do the database work and a form object to do the displaying. -

Options

+

Options

-DIO dioObject
The DIO object to be used in conjunction with this @@ -82,7 +82,7 @@
The title of the display object. This will be output as the title of the HTML document. -

DIO Display Object Commands

+

DIO Display Object Commands

objectName cleanup ?value?
Return the current cleanup value. If @@ -288,7 +288,7 @@ Return the current value value. If value is specified, it sets a new value for value. -

DIO Display Functions

+

DIO Display Functions

These functions are called from the show method when a form response variable called mode is set. If no @@ -369,7 +369,7 @@ query. Once any number of records are found, Search displays the results in rows. -

DIO Display Fields

+

DIO Display Fields

Display fields are created with the field command of the DIODisplay object. Each field is created as a new DIODisplayField object or @@ -422,7 +422,7 @@ Or, if type were textarea, you could define -rows and -cols to specify its row and column count. -

DIO Display Field Types

+

DIO Display Field Types

The following is a list of recognized field types by DIODisplay. Some are standard HTML form fields, and others are DIODisplay fields which execute special actions diff -Nru libapache2-mod-rivet-2.2.0/doc/html/dio_package.html libapache2-mod-rivet-2.2.1/doc/html/dio_package.html --- libapache2-mod-rivet-2.2.0/doc/html/dio_package.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/dio_package.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -DIO

Name

DIO — Database Interface Objects

Synopsis

::DIO::handle interface ?objectName? (-option | option | -option | option | ...)

Description

+DIO

Name

DIO — Database Interface Objects

Synopsis

::DIO::handle interface ?objectName? (-option | option | -option | option | ...)

Description

DIO is designed to be a generic, object-oriented interface to SQL databases. Its main goal is to be as generic as possible, but since not all SQL @@ -15,7 +15,7 @@ specified, DIO creates an object of that name. If there is no objectName given, DIO will automatically generate a unique object ID -

Options

-host ?hostname?
+

Options

-host ?hostname?
The hostname of the computer to connect to. If none is given, DIO assumes the local host.
-port ?portNumber?
The port number to connect to on hostname.
-user ?username?
The username you wish to login to the server as.
-pass ?password?
The password to login to the server with.
-db ?database?
@@ -35,7 +35,7 @@ field specified as AUTO.
-sequence ?sequenceName?
If DIO is automatically generating keys, it will use this sequence as a means to gain a unique number for - the stored key.

DIO Object Commands

objectName ?array? ?request?
+ the stored key.

DIO Object Commands

objectName ?array? ?request?
Execute request as a SQL query and create an array from the first record found. The array is set with the fields of the table and the diff -Nru libapache2-mod-rivet-2.2.0/doc/html/directives.html libapache2-mod-rivet-2.2.1/doc/html/directives.html --- libapache2-mod-rivet-2.2.0/doc/html/directives.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/directives.html 2015-01-13 00:03:30.000000000 +0000 @@ -20,7 +20,7 @@ resource concurrency among processes (e.g. the creation and initialization of an IPC system)

-
RivetServerConf (CacheSize | ServerInitScript | GlobalInitScript | ChildInitScript | ChildExitScript | BeforeScript | AfterScript | ErrorScript | AbortScript | AfterEveryScript | UploadDirectory | UploadMaxSize | UploadFilesToVar | SeparateVirtualInterps | HonorHeaderOnlyRequests)
+
RivetServerConf (CacheSize | ServerInitScript | GlobalInitScript | ChildInitScript | ChildExitScript | BeforeScript | AfterScript | ErrorScript | AbortScript | AfterEveryScript | UploadDirectory | UploadMaxSize | UploadFilesToVar | SeparateVirtualInterps | SeparateChannels | HonorHeaderOnlyRequests)
RivetServerConf specifies a global option that is valid for the whole server. If you have a @@ -185,13 +185,36 @@ slave interpreters that are private to each configured virtual host.
-
HonorHeaderOnlyRequests (yes | no)
+
SeparateChannels (yes | no)
+
+ Internally mod_rivet creates a new Tcl channel (Rivet channel) which is configured + as stdout and registered to each existing interpreter. + There is no need of multiple channels in a single thread as each thread can + serve only one request at a time. But if you are deploying mod_rivet in a + complex environment running unrelated applications developed by + different teams, it could be the case to have SeparateVirtualInterps + set. If you want to enhance the environment separation you may also + set SeparateChannels to force mod_rivet to create + a channel per each Tcl interpreter thus enabling single application + code to change the Rivet channel parameters without affecting other + applications (even though changing the Tcl channel parameters is a rare + necessity). Setting this options increases the system overheads as each + Rivet channel needs to allocate its own control structures and internal + buffers. +
[Note]Note
+ This option is implemented in order to have fine grain control over mod_rivet. In + nearly all practical cases you won't need to change Rivet Channel (stdout) settings + for different applications by calling fconfigure stdout ..... + This option is, by nature, only available at the global level and has effect only if + also SeparateVirtualInterps is set +
+
HonorHeaderOnlyRequests (yes | no)
- If a HEAD requests is issued by the client Rivet detects - this case and sends back to the client a standard header - response. If the real header has to be examined (e.g. - for debugging) you can turn this options on. -
This option is, by nature, only available at the global level
+ If a HEAD requests is issued by the client Rivet detects + this case and sends back to the client a standard header + response. If the real header has to be examined (e.g. + for debugging) you can turn this options on. +
This option is, by nature, only available at the global level
RivetDirConf (BeforeScript | AfterScript | ErrorScript | UploadDirectory)
These options are the same as for diff -Nru libapache2-mod-rivet-2.2.0/doc/html/encode.html libapache2-mod-rivet-2.2.1/doc/html/encode.html --- libapache2-mod-rivet-2.2.0/doc/html/encode.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/encode.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,7 +1,7 @@ encode

Name

encode — encode a string replacing every occurrence of characters for which an SGML entity exists -

Synopsis

::rivet::encode string ?-encoding <encoding>?

Description

+

Synopsis

::rivet::encode string ?-encoding <encoding>?

Description

::rivet::encode returns a copy of the input string after replacing every occurence of characters for which an SGML entity exists. By default the command assumes the string is encoded in UTF-8, diff -Nru libapache2-mod-rivet-2.2.0/doc/html/entities.html libapache2-mod-rivet-2.2.1/doc/html/entities.html --- libapache2-mod-rivet-2.2.0/doc/html/entities.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/entities.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -RivetEntities


RivetEntities

Introduction

+RivetEntities


RivetEntities

Introduction

The RivetEntities package was kindly provided by Harald Oehlmann and is largely taken from a simple yet clever encoder/decoder of HTML entities starting from a utf-8 character string. The original code writted by Andy Goth is diff -Nru libapache2-mod-rivet-2.2.0/doc/html/env.html libapache2-mod-rivet-2.2.1/doc/html/env.html --- libapache2-mod-rivet-2.2.0/doc/html/env.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/env.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,6 +1,6 @@ env


Name

env — Loads a single "environmental variable" into a Tcl variable. -

Synopsis

::rivet::env ?varName?

Description

+

Synopsis

::rivet::env ?varName?

Description

If it is only necessary to load one environmental variable, this command may be used to avoid the overhead of loading and storing the entire array. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/escape_sgml_chars.html libapache2-mod-rivet-2.2.1/doc/html/escape_sgml_chars.html --- libapache2-mod-rivet-2.2.0/doc/html/escape_sgml_chars.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/escape_sgml_chars.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -escape_sgml_chars


Name

escape_sgml_chars — escape special SGML characters in a string.

Synopsis

::rivet::escape_sgml_chars ?string?

Description

+escape_sgml_chars


Name

escape_sgml_chars — escape special SGML characters in a string.

Synopsis

::rivet::escape_sgml_chars ?string?

Description

Scans through each character in the specified string looking for any special (with respect to SGML, and hence HTML) characters from the specified string, and returns the result. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/escape_shell_command.html libapache2-mod-rivet-2.2.1/doc/html/escape_shell_command.html --- libapache2-mod-rivet-2.2.0/doc/html/escape_shell_command.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/escape_shell_command.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -escape_shell_command


Name

escape_shell_command — escape shell metacharacters in a string.

Synopsis

::rivet::escape_shell_command ?string?

Description

+escape_shell_command


Name

escape_shell_command — escape shell metacharacters in a string.

Synopsis

::rivet::escape_shell_command ?string?

Description

Scans through each character in the specified string looking for any shell metacharacters, such as asterisk, less than and greater than, parens, square brackets, curly brackets, angle diff -Nru libapache2-mod-rivet-2.2.0/doc/html/escape_string.html libapache2-mod-rivet-2.2.1/doc/html/escape_string.html --- libapache2-mod-rivet-2.2.0/doc/html/escape_string.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/escape_string.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -escape_string


Name

escape_string — convert a string into escaped characters.

Synopsis

::rivet::escape_string ?string?

Description

+escape_string


Name

escape_string — convert a string into escaped characters.

Synopsis

::rivet::escape_string ?string?

Description

Scans through each character in the specified string looking for special characters, escaping them as needed, mapping special characters to a quoted hexadecimal equivalent, diff -Nru libapache2-mod-rivet-2.2.0/doc/html/examples.html libapache2-mod-rivet-2.2.1/doc/html/examples.html --- libapache2-mod-rivet-2.2.0/doc/html/examples.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/examples.html 2015-01-13 00:03:31.000000000 +0000 @@ -29,7 +29,7 @@

which is translated into

puts -nonewline "Hello World"

-


Example 2. Generate a Colorful Table

+


Example 2. Generate a Colorful Table

In another simple example, we dynamically generate a table selecting a different background color for each cell. The font color is determined through a simple CSS rule embedded in a HTML <style> element. Create diff -Nru libapache2-mod-rivet-2.2.0/doc/html/form.html libapache2-mod-rivet-2.2.1/doc/html/form.html --- libapache2-mod-rivet-2.2.0/doc/html/form.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/form.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -Form: An HTML Form Fields Generation Utility


Form: An HTML Form Fields Generation Utility

Introduction

+Form: An HTML Form Fields Generation Utility


Form: An HTML Form Fields Generation Utility

Introduction

The form package is a utility for generating html forms. A form object command saves the programmer from typing the cumbersome html code of input elements, working out a solution for better standardization and readability of the code. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/form_package.html libapache2-mod-rivet-2.2.1/doc/html/form_package.html --- libapache2-mod-rivet-2.2.0/doc/html/form_package.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/form_package.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,6 +1,6 @@ -form

Name

form — a Tcl command object for creating HTML forms

Synopsis

form form_name ?-option1 value_1? ?-option2 value_2? ?...?

+form

Name

form — a Tcl command object for creating HTML forms

Synopsis

form form_name ?-option1 value_1? ?-option2 value_2? ?...?

creates and returns a new Tcl command named form_name. -

Options

-method ?post|get?
+

Options

-method ?post|get?
The http method for sending the form data back to the server. Possible values are get or post
-name ?form_name?
@@ -17,7 +17,7 @@
-action ?URL?
The URL the data are being sent to. If no ?-action? switch is specified the data are sent to the form's URL. -

Form Object Commands

+

Form Object Commands

Form object commands follow the usual syntax of Tcl commands with a ?subcommand? argument playing the role of a switch among various functionalities of the command. Form objects also need the ?name? parameter which is to become the value of the 'name' attribute in an input field. This argument is the key that has to be @@ -32,7 +32,7 @@ field is an abstract input field creation method and requires an additional parameter specifiyng the type of field to create. Every concrete input field generation command uses this subcommand internally to print the final html. -

Subcommands

start ?name? ?-method get | post? ?-name form_name? ?-defaults default_values? ?-action URL? ?args?
+

Subcommands

start ?name? ?-method get | post? ?-name form_name? ?-defaults default_values? ?-action URL? ?args?
Print the <form> tag with all its attributes. This command must be called as first in the form generation process. The following is a sample of code creating a form named 'formname' whose data will @@ -48,7 +48,7 @@ The code prints a form that sends a text entry content and the option value associated with a radiobutton. The URL of the server script is the same that created the form. Use the ?-url? option to specify a different url. -
Options
-method ?post|get?
+
Options
-method ?post|get?
The method to be used to encode the form data. Possible values are get or post
-name ?form_name?
@@ -65,22 +65,22 @@
-action ?URL?
The URL the data will be sent to. If no ?-action? switch is specified the data are sent to the form's URL. -
end
+
end
Print the </form> closing tag. This command must be called last in the form generation process -
field ?name? ?type? ?args?
+
field ?name? ?type? ?args?
Print a field of the given ?type? and ?name?, including any default key-value pairs defined for this field type and optional key-value pairs included with the statement -
Options
-opt1 ?val1?
+
Options
-opt1 ?val1?
Option description -
radiobuttons ?name? ?-values values? ?-labels labels? ?args?
+
radiobuttons ?name? ?-values values? ?-labels labels? ?args?
the radiobutton creates a whole radiobutton group with the values and labels specified in the argument list. If no ?-labels? switch is passed to the subcommand the values are printed as labels of the radiobutton. -
Options
-values ?values_list?
+
Options
-values ?values_list?
List of values associated with the radiobuttons to be displayed
-labels ?labels_list?
List of labels to be printed with every radiobutton. There must @@ -106,7 +106,7 @@ radiobutton field is automatically checked. The options ?values? and ?labels? are used internally and don't get into the tag attributes. If a ?labels? option is not given, labels are assigned using the ?values? list. -
checkbox ?name? ?-label label? ?-value value? ?args?
+
checkbox ?name? ?-label label? ?-value value? ?args?
The checkbox subcommand emits a checkbox type input field with the name, label and value attributes set according to the parameters passed to the subcommand. @@ -129,13 +129,13 @@ <input type="checkbox" name="options" id="autogen_3" label="Option 3" value="sopt3" /><label for="autogen_3">Option 3</label> <input type="checkbox" name="options" id="autogen_4" label="Option 4" value="sopt4" /><label for="autogen_4">Option 4</label> <input type="submit" name="submit" value="Send" /> -</form>
checkboxes ?name? ?-labels labels_list? ?-values values_list? ?args?
+</form>
checkboxes ?name? ?-labels labels_list? ?-values values_list? ?args?
The checkboxes is an extended form of the checkbox subcommand. checkboxes prints as many checkboxes as the number of elements in the ?labels_list? argument -
Options
-values ?values_list?
+
Options
-values ?values_list?
List of values associated with the checkboxes to be displayed
-labels ?labels_list?
List of labels to be printed with every checkbox. There must @@ -155,12 +155,12 @@ <input type="checkbox" name="options" id="autogen_3" label="Option 3" value="opt3" /><label for="autogen_3">Option 3</label> <input type="checkbox" name="options" id="autogen_4" label="Option 4" value="opt4" /><label for="autogen_4">Option 4</label> <input type="submit" name="save_tps" value="Send Options" /> -</form>
password ?name? ?args?
+</form>
password ?name? ?args?
Same as text, but the input is obfuscated so as not to reveal the text being typed -
hidden ?name? ?args?
+
hidden ?name? ?args?
hidden input element: typicall embedded in a form in order to pass status variables. -
submit ?name? ?args?
+
submit ?name? ?args?
emits the code for a classical HTML submit button. Example: the following code
@@ -173,41 +173,41 @@
 	<form...>
 	<input type="submit" name="submit" value="Search" /> 
-	</form>
button ?name? ?args?
+ </form>
button ?name? ?args?
emits the code for a button field having ?name? as name -
reset ?name? ?args?
+
reset ?name? ?args?
Classical HTML reset button that resets the input fields back to their initial values -
image ?name? ?args?
+
image ?name? ?args?
Emits an image input field -
radio ?name? ?args?
+
radio ?name? ?args?
Emits a radiobutton input field -
color ?name? ?args?
+
color ?name? ?args?
Emits an HTML 5 "color" form field -
date ?name? ?args?
+
date ?name? ?args?
Emits an HTML 5 "date" form field -
datetime ?name? ?args?
+
datetime ?name? ?args?
Emits an HTML 5 "datetime" form field -
datetime_local ?name? ?args?
+
datetime_local ?name? ?args?
Emits an HTML 5 "datetime_local" form field -
email ?name? ?args?
+
email ?name? ?args?
Emits an HTML 5 "email" form field -
file ?name? ?args?
+
file ?name? ?args?
Emits an HTML 5 "file" form field -
month ?name? ?args?
+
month ?name? ?args?
Emits an HTML 5 "month" form field -
number ?name? ?args?
+
number ?name? ?args?
Emits an HTML 5 "number" form field -
range ?name? ?args?
+
range ?name? ?args?
Emits an HTML 5 "range" form field -
search ?name? ?args?
+
search ?name? ?args?
Emits an HTML 5 "search" form field -
tel ?name? ?args?
+
tel ?name? ?args?
Emits an HTML 5 "tel" form field -
time ?name? ?args?
+
time ?name? ?args?
Emits an HTML 5 "time" form field -
url ?name? ?args?
+
url ?name? ?args?
Emits an HTML 5 "url" form field -
week ?name? ?args?
+
week ?name? ?args?
Emits an HTML 5 "week" form field
diff -Nru libapache2-mod-rivet-2.2.0/doc/html/headers.html libapache2-mod-rivet-2.2.1/doc/html/headers.html --- libapache2-mod-rivet-2.2.0/doc/html/headers.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/headers.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,20 +1,29 @@ -headers

Name

headers — set and parse HTTP headers.

Synopsis

::rivet::headers (set | redirect | add | type | numeric)

Description

+headers


Name

headers — set and parse HTTP headers.

Synopsis

::rivet::headers (get | set | redirect | add | type | numeric)

Description

The headers command is for setting and parsing HTTP headers.

+
::rivet::headers get ?headername? ?value?
+
+ Read arbitrary header names and values from output HTTP headers +
::rivet::headers set ?headername? ?value?
-
- Set arbitrary header names and values. -
-
::rivet::headers redirect ?uri?
-
- Redirect from the current page to a new - URI. Must be done in the first block - of TCL code. +
+ Set arbitrary header names and values into output HTTP headers +
+
::rivet::headers sent
+
+ Test internal status of the module and returns 1 + if the HTTP headers have been already sent +
+
::rivet::headers redirect ?uri?
+
+ Redirect from the current page to a new + URI. Must be done in the first block + of TCL code.
::rivet::headers add ?headername? ?value?
Add text to header - headername. + headername.
::rivet::headers type ?content-type?
diff -Nru libapache2-mod-rivet-2.2.0/doc/html/help.html libapache2-mod-rivet-2.2.1/doc/html/help.html --- libapache2-mod-rivet-2.2.0/doc/html/help.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/help.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -Resources - How to Get Help

Resources - How to Get Help

Mailing Lists

+Resources - How to Get Help


Resources - How to Get Help

Mailing Lists

The Rivet mailing list is the first place you should turn for help. If you haven't found the solution to your problem in the documentation or you have a question, idea, or comment about the Rivet code itself send email to @@ -6,7 +6,7 @@ .

The mailing list archives are available at http://mail-archives.apache.org/mod_mbox/tcl-rivet-dev/ -

Newsgroup

+

Newsgroup

The news:comp.lang.tcl newsgroup is a good place to ask about Tcl questions in general. Rivet developers also follow the newsgroup, but it's best to ask Rivet-specific @@ -28,14 +28,14 @@

  • http://wiki.tcl.tk is the Tcl'ers Wiki, a free-form place to search for answers and ask for help. -
  • Bug Tracking System

    +

    Bug Tracking System

    Apache Rivet uses the Apache Bug Tracking system at http://issues.apache.org/bugzilla/. Here, you can report problems, or check and see if existing issues are already known and being dealt with. -

    IRC

    +

    IRC

    Occasionally, someone from the Rivet team is on IRC at irc.freenode.net, channel #tcl. -

    Editing Rivet Template Files

    +

    Editing Rivet Template Files

    Rivet makes available code for two popular editors, emacs and vim to facilitate the editing of diff -Nru libapache2-mod-rivet-2.2.0/doc/html/html_calendar.html libapache2-mod-rivet-2.2.1/doc/html/html_calendar.html --- libapache2-mod-rivet-2.2.0/doc/html/html_calendar.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/html_calendar.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -HtmlCalendar


    Name

    HtmlCalendar — Concrete class derived from XmlCalendar

    Synopsis

    HtmlCalendar calendar_name ?-option1 option_list? ?-option2 option_list? ?...?

    +HtmlCalendar


    Name

    HtmlCalendar — Concrete class derived from XmlCalendar

    Synopsis

    HtmlCalendar calendar_name ?-option1 option_list? ?-option2 option_list? ?...?

    Concrete XmlCalendar class for printing html calendar tables. The markup of the class is xhtml compliant and prints a code fragment for inclusion in a webpage. The following is the class definition. @@ -18,7 +18,7 @@ -days_row tr \ -days_cell td } -}

    +}

    A sample output from HtmlCalendar (with some styling)

    diff -Nru libapache2-mod-rivet-2.2.0/doc/html/html.html libapache2-mod-rivet-2.2.1/doc/html/html.html --- libapache2-mod-rivet-2.2.0/doc/html/html.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/html.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -html


    Name

    html — construct html tagged text.

    Synopsis

    ::rivet::html ?string? ?arg...?

    Description

    +html


    Name

    html — construct html tagged text.

    Synopsis

    ::rivet::html ?string? ?arg...?

    Description

    Print text with the added ability to pass HTML tags following the string. Example:

    ::rivet::html "Test" b i

    diff -Nru libapache2-mod-rivet-2.2.0/doc/html/http_accept.html libapache2-mod-rivet-2.2.1/doc/html/http_accept.html --- libapache2-mod-rivet-2.2.0/doc/html/http_accept.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/http_accept.html 2015-01-13 00:03:30.000000000 +0000 @@ -2,7 +2,7 @@ ?-zeroweight? ?-default? ?-list? - http_accept_line

    Description

    + http_accept_line

    Description

    Command for parsing HTTP Accept header lines that tell the server about preferences and/or capabilities of the browser (e.g. content language,media type, etc.). The following diff -Nru libapache2-mod-rivet-2.2.0/doc/html/import_keyvalue_pairs.html libapache2-mod-rivet-2.2.1/doc/html/import_keyvalue_pairs.html --- libapache2-mod-rivet-2.2.0/doc/html/import_keyvalue_pairs.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/import_keyvalue_pairs.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -import_keyvalue_pairs


    Name

    import_keyvalue_pairs — Import an argument list into the named array

    Synopsis

    ::rivet::import_keyvalue_pairs ?arrayName? ?argsList?

    Description

    +import_keyvalue_pairs


    Name

    import_keyvalue_pairs — Import an argument list into the named array

    Synopsis

    ::rivet::import_keyvalue_pairs ?arrayName? ?argsList?

    Description

    key-value pairs, like "-foo bar" are stored in the array ?arrayName?. In that case, the value "bar" would be stored in the element "foo"

    diff -Nru libapache2-mod-rivet-2.2.0/doc/html/include.html libapache2-mod-rivet-2.2.1/doc/html/include.html --- libapache2-mod-rivet-2.2.0/doc/html/include.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/include.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -include


    Name

    include — includes a file into the output stream without modification.

    Synopsis

    ::rivet::include ?filename_name?

    Description

    +include


    Name

    include — includes a file into the output stream without modification.

    Synopsis

    ::rivet::include ?filename_name?

    Description

    Include a file without parsing it for processing tags <? and ?>. This is the best way to include an HTML file or any other static content. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/incr0.html libapache2-mod-rivet-2.2.1/doc/html/incr0.html --- libapache2-mod-rivet-2.2.0/doc/html/incr0.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/incr0.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -incr0


    Name

    incr0 — increment a variable or set it to 1 if nonexistent.

    Synopsis

    incr0 ?varname? ?num?

    Description

    +incr0


    Name

    incr0 — increment a variable or set it to 1 if nonexistent.

    Synopsis

    incr0 ?varname? ?num?

    Description

    Increment a variable varname by num. If the diff -Nru libapache2-mod-rivet-2.2.0/doc/html/index.html libapache2-mod-rivet-2.2.1/doc/html/index.html --- libapache2-mod-rivet-2.2.0/doc/html/index.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/index.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,6 +1,6 @@ -Apache Rivet

    Apache Rivet

    The Rivet Team

    The Apache Software Foundation


    +Apache Rivet

    Apache Rivet

    The Rivet Team

    The Apache Software Foundation


                
    -         



    Table of Contents

    Introduction to Apache Rivet
    Apache Rivet Installation
    Apache Child Processes Lifecycle and Request Processing
    Rivet Apache Directives
    Rivet Tcl Commands and Variables
    <?= ... ?> — Shorthand construct for single strings output
    abort_code — Returns the code passed to abort_page @@ -18,7 +18,7 @@ This command emulates the TclX lempty command.
    lmatch — Look for elements in <list> that match <pattern> -
    load_cookies — get any cookie variables sent by the client.
    load_env — get the request's environment variables.
    load_headers — get client request's headers.
    load_response — load form variables into an array.
    lremove — remove from a list elements matching one or more patterns
    makeurl — construct url's based on hostname, port.
    no_body — Prevents Rivet from sending any content.
    parray — Tcl's parray with html formatting.
    parse — parses a Rivet template file.
    raw_post — get the unmodified body of a POST request sent by the client.
    read_file — +
    load_cookies — get any cookie variables sent by the client.
    load_env — get the request's environment variables.
    load_headers — get client request's headers.
    load_response — load form variables into an array.
    lremove — remove from a list elements matching one or more patterns
    makeurl — construct url's based on hostname, port.
    no_body — Prevents Rivet from sending any content.
    parray — Tcl's parray with html formatting.
    parse — parses a Rivet template file.
    raw_post — get the unmodified body of a POST request sent by the client.
    redirect — Interrupt processing and divert to a new URL
    read_file — Read the entire contents of a file and return it as a string.
    unescape_string — unescape escaped characters in a string.
    upload — handle a file uploaded by a client.
    var — get the value of a form variable.
    wrap — Split a string on newlines. @@ -26,14 +26,14 @@ Split the line into multiple lines by splitting on space characters
    xml — XML Fragments creation -
    Examples and Usage
    Rivet Tcl Packages
    DIO - Database Interface Objects
    DIO — Database Interface Objects
    DIODisplay - Database Interface Objects Display Class
    DIODisplay — Database Interface Objects Display Class
    Session Package
    Introduction
    Requirements
    Preparing To Use It
    Example Usage
    Using Sessions From Your Code
    Session Configuration Options
    Session Methods
    Getting Additional Randomness From The Entropy File
    Form: An HTML Form Fields Generation Utility
    Introduction
    form — a Tcl command object for creating HTML forms
    Calendar Package
    Introduction
    Calendar — Utility class the builds and prints a calendar table
    XmlCalendar — Prints XML formatted calendar tables
    HtmlCalendar — Concrete class derived from XmlCalendar
    RivetEntities
    Introduction
    encode — +
    Examples and Usage
    Rivet Tcl Packages
    DIO - Database Interface Objects
    DIO — Database Interface Objects
    DIODisplay - Database Interface Objects Display Class
    DIODisplay — Database Interface Objects Display Class
    Session Package
    Introduction
    Requirements
    Preparing To Use It
    Example Usage
    Using Sessions From Your Code
    Session Configuration Options
    Session Methods
    Getting Additional Randomness From The Entropy File
    Form: An HTML Form Fields Generation Utility
    Introduction
    form — a Tcl command object for creating HTML forms
    Calendar Package
    Introduction
    Calendar — Utility class the builds and prints a calendar table
    XmlCalendar — Prints XML formatted calendar tables
    HtmlCalendar — Concrete class derived from XmlCalendar
    RivetEntities
    Introduction
    encode — encode a string replacing every occurrence of characters for which an SGML entity exists
    decode — decode an SGML encoded string replacing every entity with the corresponding character -
    Resources - How to Get Help
    Mailing Lists
    Newsgroup
    Web Sites
    Bug Tracking System
    IRC
    Editing Rivet Template Files
    Rivet Internals
    Initialization
    RivetChan
    The global Command
    Page Parsing, Execution and Caching
    Extending Rivet by developing C procedures implementing new commands
    Debugging Rivet and Apache
    Upgrading from mod_dtcl or NeoWebScript
    mod_dtcl
    NeoWebScript

    - Document revision: $Revision: 1600075 $, last modified 2014-06-11 12:46:47+02:00$ by $Author: mxmanghi $. +

    Resources - How to Get Help
    Mailing Lists
    Newsgroup
    Web Sites
    Bug Tracking System
    IRC
    Editing Rivet Template Files
    Rivet Internals
    Initialization
    RivetChan
    The global Command
    Page Parsing, Execution and Caching
    Extending Rivet by developing C procedures implementing new commands
    Debugging Rivet and Apache
    Upgrading from mod_dtcl or NeoWebScript
    mod_dtcl
    NeoWebScript

    + Document revision: $Revision: 1650305 $, last modified 2015-01-13 01:03:30+01:00$ by $Author: mxmanghi $.


    Introduction to Apache Rivet

    Apache Rivet is a system for creating dynamic web content via a programming language integrated with Apache Web Server. It is @@ -56,11 +56,13 @@ something that needs improving, and have ideas or suggestions, don't hesitate to let us know. If you want to contribute directly, better yet! -

    Acknowledgements

    - Rivet's development took advantage from contributions from +

    Acknowledgements

    + Rivet 2.2 development took advantage from contributions from several users who provided whole new componenents, bug fixes and - enhancements. -

    • Harald Oehlmann (now member of the Apache Tcl Team) + enhancements. +

      • Damon Courtney (Apache Tcl Team member, + he originally wrote mod_rivet) contributed with the new + ::rivet::redirect command.
      • Harald Oehlmann (now member of the Apache Tcl Team) who wrote package RivetEntitites, command ::rivet::http_accept and filed several bug reports with relative patches
      • Cyril Shtumf filed several important bugfixes
      • Jeff Lawson who patched Rivet parser to add the diff -Nru libapache2-mod-rivet-2.2.0/doc/html/inspect.html libapache2-mod-rivet-2.2.1/doc/html/inspect.html --- libapache2-mod-rivet-2.2.0/doc/html/inspect.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/inspect.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -inspect

        Name

        inspect — Introspection command for Rivet configuration

        Synopsis

        ::rivet::inspect ?configuration_section? ?configuration_parameter?

        Description

        +inspect


        Name

        inspect — Introspection command for Rivet configuration

        Synopsis

        ::rivet::inspect ?configuration_section? ?configuration_parameter?

        Description

        ::rivet::inspect provides introspection into the running configuration of Rivet. Rivet's debug command uses it in order to gain insight into the configuration, but it can be used in any script. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/internals.html libapache2-mod-rivet-2.2.1/doc/html/internals.html --- libapache2-mod-rivet-2.2.0/doc/html/internals.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/internals.html 2015-01-13 00:03:31.000000000 +0000 @@ -5,7 +5,7 @@ themselves, the Subversion revision control system (svn) can provide you with information about what has been happening with the code. -

        Initialization

        +

        Initialization

        When Apache is started, (or when child Apache processes are started if a threaded Tcl is used), Rivet_InitTclStuff is called, which @@ -16,7 +16,7 @@ executes Rivet's init.tcl. The caching system is also set up, and if there is a GlobalInitScript, it is run. -

        RivetChan

        +

        RivetChan

        The RivetChan system was created in order to have an actual Tcl channel that we could redirect standard output to. This lets us use, for instance, the @@ -26,7 +26,7 @@ Tcl's regular standard output is replaced with an instance of this channel type, so that, by default, output will go to the web page. -

        The global Command

        +

        The global Command

        Rivet aims to run standard Tcl code with as few surprises as possible. At times this involves some compromises - in this case regarding the global command. The @@ -41,7 +41,7 @@ you really need a true global variable, use either ::global or add the :: namespace qualifier to variables you wish to make global. -

        Page Parsing, Execution and Caching

        +

        Page Parsing, Execution and Caching

        When a Rivet page is requested, it is transformed into an ordinary Tcl script by parsing the file for the <? ?> processing instruction tags. Everything outside these tags @@ -67,7 +67,7 @@ without having to reload it (and re-parse it) from the disk. The number of scripts stored in memory is configurable. This feature can significantly improve performance. -

        Extending Rivet by developing C procedures implementing new commands

        +

        Extending Rivet by developing C procedures implementing new commands

        Rivet endows the Tcl interpreter with new commands to provide an interface from the application layer to the Apache web server internal data. Many of these commands @@ -121,7 +121,7 @@ mycmd->1 The value associated to the test must be 0 in case the command doesn't need to test the globals->r pointer. -

    Debugging Rivet and Apache

    +

    Debugging Rivet and Apache

    If you are interested in hacking on Rivet, you're welcome to contribute! Invariably, when working with code, things go wrong, and it's necessary to do some debugging. In a server diff -Nru libapache2-mod-rivet-2.2.0/doc/html/lassign_array.html libapache2-mod-rivet-2.2.1/doc/html/lassign_array.html --- libapache2-mod-rivet-2.2.0/doc/html/lassign_array.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/lassign_array.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -lassign_array


    Name

    lassign_array — Assign a list of values to array variables

    Synopsis

    ::rivet::lassign_array ?value_list? ?array_name? ?array_variables?

    Description

    +lassign_array


    Name

    lassign_array — Assign a list of values to array variables

    Synopsis

    ::rivet::lassign_array ?value_list? ?array_name? ?array_variables?

    Description

    lassign_array is an utility command inspired by the same Tclx command and with a close resemblance with Tcl's lassign for assigning list elements to variables. lassign_array first argument is a list of values to be assigned to an array that must be diff -Nru libapache2-mod-rivet-2.2.0/doc/html/lempty.html libapache2-mod-rivet-2.2.1/doc/html/lempty.html --- libapache2-mod-rivet-2.2.0/doc/html/lempty.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/lempty.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,7 +1,7 @@ lempty


    Name

    lempty — Returns 1 if <list> is empty or 0 if it has any elements. This command emulates the TclX lempty command. -

    Synopsis

    ::rivet::lempty list

    Description

    +

    Synopsis

    ::rivet::lempty list

    Description

    Returns 1 if <list> is empty or 0 if it has any elements. This command emulates the TclX lempty command.

    diff -Nru libapache2-mod-rivet-2.2.0/doc/html/lmatch.html libapache2-mod-rivet-2.2.1/doc/html/lmatch.html --- libapache2-mod-rivet-2.2.0/doc/html/lmatch.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/lmatch.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,6 +1,6 @@ lmatch

    Name

    lmatch — Look for elements in <list> that match <pattern> -

    Synopsis

    ::rivet::lmatch (-exact | -glob | -regexp) list pattern

    Description

    +

    Synopsis

    ::rivet::lmatch (-exact | -glob | -regexp) list pattern

    Description

    Look for elements in <list> that match <pattern>. This command is a decent replacement for TclX lmatch command when TclX is not available diff -Nru libapache2-mod-rivet-2.2.0/doc/html/load_cookies.html libapache2-mod-rivet-2.2.1/doc/html/load_cookies.html --- libapache2-mod-rivet-2.2.0/doc/html/load_cookies.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/load_cookies.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -load_cookies


    Name

    load_cookies — get any cookie variables sent by the client.

    Synopsis

    ::rivet::load_cookies ?array_name?

    Description

    +load_cookies


    Name

    load_cookies — get any cookie variables sent by the client.

    Synopsis

    ::rivet::load_cookies ?array_name?

    Description

    Load the array of cookie variables into the specified array name. Uses array cookies by default. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/load_env.html libapache2-mod-rivet-2.2.1/doc/html/load_env.html --- libapache2-mod-rivet-2.2.0/doc/html/load_env.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/load_env.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -load_env


    Name

    load_env — get the request's environment variables.

    Synopsis

    ::rivet::load_env ?array_name?

    Description

    +load_env


    Name

    load_env — get the request's environment variables.

    Synopsis

    ::rivet::load_env ?array_name?

    Description

    Load the array of environment variables into the specified array name. Uses array ::request::env by default. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/load_headers.html libapache2-mod-rivet-2.2.1/doc/html/load_headers.html --- libapache2-mod-rivet-2.2.0/doc/html/load_headers.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/load_headers.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -load_headers


    Name

    load_headers — get client request's headers.

    Synopsis

    ::rivet::load_headers ?array_name?

    Description

    +load_headers


    Name

    load_headers — get client request's headers.

    Synopsis

    ::rivet::load_headers ?array_name?

    Description

    Load the headers that come from a client request into the provided array name, or use headers if no name is provided. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/load_response.html libapache2-mod-rivet-2.2.1/doc/html/load_response.html --- libapache2-mod-rivet-2.2.0/doc/html/load_response.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/load_response.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -load_response


    Name

    load_response — load form variables into an array.

    Synopsis

    ::rivet::load_response ?arrayName?

    Description

    +load_response


    Name

    load_response — load form variables into an array.

    Synopsis

    ::rivet::load_response ?arrayName?

    Description

    Load any form variables passed to this page into an array. If load_response is called without arguments the array response is created in diff -Nru libapache2-mod-rivet-2.2.0/doc/html/lremove.html libapache2-mod-rivet-2.2.1/doc/html/lremove.html --- libapache2-mod-rivet-2.2.0/doc/html/lremove.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/lremove.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -lremove


    Name

    lremove — remove from a list elements matching one or more patterns

    Synopsis

    ::rivet::lremove (-regexp | -glob | -exact) list pattern ?pattern? ?pattern?

    Description

    +lremove


    Name

    lremove — remove from a list elements matching one or more patterns

    Synopsis

    ::rivet::lremove (-regexp | -glob | -exact) list pattern ?pattern? ?pattern?

    Description

    lremove removes from list ?list? the first occurrence of an element matching one of the patterns listed in the command line. By specifying the -all option every occurrence of one the patterns is removed diff -Nru libapache2-mod-rivet-2.2.0/doc/html/makeurl.html libapache2-mod-rivet-2.2.1/doc/html/makeurl.html --- libapache2-mod-rivet-2.2.0/doc/html/makeurl.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/makeurl.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -makeurl


    Name

    makeurl — construct url's based on hostname, port.

    Synopsis

    ::rivet::makeurl ?filename?

    Description

    +makeurl


    Name

    makeurl — construct url's based on hostname, port.

    Synopsis

    ::rivet::makeurl ?filename?

    Description

    Create a self referencing URL from a filename. makeurl can be used in three ways

    • No argument is passed to the command (returns the current script URL)
    • diff -Nru libapache2-mod-rivet-2.2.0/doc/html/no_body.html libapache2-mod-rivet-2.2.1/doc/html/no_body.html --- libapache2-mod-rivet-2.2.0/doc/html/no_body.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/no_body.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -no_body

      Name

      no_body — Prevents Rivet from sending any content.

      Synopsis

      ::rivet::no_body

      Description

      +no_body


      Name

      no_body — Prevents Rivet from sending any content.

      Synopsis

      ::rivet::no_body

      Description

      This command is useful for situations where it is necessary to only return HTTP headers and no actual content. For instance, when returning a 304 redirect. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/parray.html libapache2-mod-rivet-2.2.1/doc/html/parray.html --- libapache2-mod-rivet-2.2.0/doc/html/parray.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/parray.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -parray


      Name

      parray — Tcl's parray with html formatting.

      Synopsis

      ::rivet::parray ?arrayName? ??pattern??

      Description

      +parray


      Name

      parray — Tcl's parray with html formatting.

      Synopsis

      ::rivet::parray ?arrayName? ??pattern??

      Description

      An html version of the standard Tcl parray command. Displays the entire contents of an array in a sorted, nicely-formatted way. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/parse.html libapache2-mod-rivet-2.2.1/doc/html/parse.html --- libapache2-mod-rivet-2.2.0/doc/html/parse.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/parse.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -parse


      Name

      parse — parses a Rivet template file.

      Synopsis

      ::rivet::parse ?filename?

      Description

      +parse


      Name

      parse — parses a Rivet template file.

      Synopsis

      ::rivet::parse ?filename?

      Description

      Like the Tcl source command, but also parses for Rivet <? and ?> processing tags. Using this command, you can use one .rvt file from another. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/raw_post.html libapache2-mod-rivet-2.2.1/doc/html/raw_post.html --- libapache2-mod-rivet-2.2.0/doc/html/raw_post.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/raw_post.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -raw_post


      Name

      raw_post — get the unmodified body of a POST request sent by the client.

      Synopsis

      ::rivet::raw_post

      Description

      +raw_post


      Name

      raw_post — get the unmodified body of a POST request sent by the client.

      Synopsis

      ::rivet::raw_post

      Description

      Returns the raw POST data from the request. If the request was not a POST or there is no data, then "" - an empty string - is returned. -

      +

      diff -Nru libapache2-mod-rivet-2.2.0/doc/html/read_file.html libapache2-mod-rivet-2.2.1/doc/html/read_file.html --- libapache2-mod-rivet-2.2.0/doc/html/read_file.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/read_file.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,6 +1,6 @@ -read_file

      Name

      read_file — +read_file


      Name

      read_file — Read the entire contents of a file and return it as a string. -

      Synopsis

      ::rivet::read_file ?file name?

      Description

      +

      Synopsis

      ::rivet::read_file ?file name?

      Description

      This is a utility command which loads the entire content of a file and returns it as a result. -

      +

      diff -Nru libapache2-mod-rivet-2.2.0/doc/html/redirect.html libapache2-mod-rivet-2.2.1/doc/html/redirect.html --- libapache2-mod-rivet-2.2.0/doc/html/redirect.html 1970-01-01 00:00:00.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/redirect.html 2015-01-13 00:03:30.000000000 +0000 @@ -0,0 +1,21 @@ +redirect

      Name

      redirect — Interrupt processing and divert to a new URL

      Synopsis

      ::rivet::redirect ?URL? ?permanent (default: 0)?

      Description

      + ::rivet::redirect diverts the browser to a new URL and marks + the redirection as either permanent in the browser local cache or + non permanent (default). + Calling ::rivet::redirect causes the script execution to interrupt + and control passes to AbortScript, if such script is + set, by calling ::rivet::abort_page and passing as abort + code a dictionary with 2 keys: +

      • error_code: string literal 'redirect'
      • location: the URL the browser will be redirected to

      +

      + ::rivet::redirect drives the redirection by setting the + 301 (permanent redirect) or 302 (non permanent redirect) HTTP status codes and + attempts to discard the output the script might have already placed in the + stdout channel buffer. Therefore the command can fail if +

      • A flush stdout was called before ::rivet::redirect + thus causing the HTTP headers to be sent and preventing any possibility to + manipulate them
      • The channel buffer was filled causing Tcl to + flush the channel

      + The stdout channel, like any Tcl channels, can be manipulated + and if needed its internal buffer streched. +

      diff -Nru libapache2-mod-rivet-2.2.0/doc/html/request.html libapache2-mod-rivet-2.2.1/doc/html/request.html --- libapache2-mod-rivet-2.2.0/doc/html/request.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/request.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -Apache Child Processes Lifecycle and Request Processing

      Apache Child Processes Lifecycle and Request Processing

      Apache Child Process Lifecycle

      +Apache Child Processes Lifecycle and Request Processing


      Apache Child Processes Lifecycle and Request Processing

      Apache Child Process Lifecycle

      Apache Rivet delegates to the Multi-Processing Module (MPM) the task of managing the agents responding to network requests. An MPM is responsible for creating such agents during the start-up, @@ -23,7 +23,7 @@

      There are 4 stages in the lifetime of an Apache webserver that are relevant to Rivet: -

      1. Single Process Initialization

        +

        1. Single Process Initialization

          Apaches starts up as a single process. During this stage Apache performs various preliminary tasks including reading and parsing the configuration. After the configuration has been read Rivet sets up some internal resources @@ -39,7 +39,7 @@ in this context are importing namespace commands and loading packages providing code of general interest for every application to be served. Also IPC methods can be initialized in this stage. -
        2. Child Process Initialization

          +
        3. Child Process Initialization

          Right after the webserver has forked its child processes there is a chance to perform specific initialization of their Tcl interpreters. This is the stage where most likely you want to open I/O channels, @@ -65,7 +65,7 @@
          [Note]Note
          GlobalInitScript has no effect to working interpreters when SeparateVirtualInterps is set.
          -
        4. Request Processing and Content Generation

          +
        5. Request Processing and Content Generation

          After a child has been initialized it's ready to serve requests. A child process' lifetime is almost entirely spent in this phase, waiting for connections and responding to requests. At every request the URL @@ -83,7 +83,7 @@ be running within the same "before" and "after" scripts to which the programmer can devolve tasks common to every page of an application. -
        6. Child Process Exit

          +
        7. Child Process Exit

          If no error condition forces the child process to a premature exit, his life is determined by the Apache configuration parameters. To reduce the effects of memory leaks in buggy applications the Apache webserver @@ -101,7 +101,7 @@ to exit and be replaced by a new one when the workload demands it. This operation implies the ChildExitScript be run before the interpreter is actually deleted. -

        Apache Rivet Error and Exception Scripts Directives

        +

      Apache Rivet Error and Exception Scripts Directives

      Rivet is highly configurable and each of the webserver lifecycle stages can be exploited to control a web application. Not only the orderly sequence of stages @@ -127,7 +127,7 @@ the abnormal condition. Starting with Rivet 2.1.0 abort_page accepts a free form parameter that can be retrieved later with the command abort_code -

      Tcl Namespaces in Rivet and the ::request Namespace

      +

      Tcl Namespaces in Rivet and the ::request Namespace

      With the sole exception of .rvt templates, Rivet runs pure Tcl scripts at the global namespace. That means that every variable or procedure created in Tcl scripts resides by default in the diff -Nru libapache2-mod-rivet-2.2.0/doc/html/session_package.html libapache2-mod-rivet-2.2.1/doc/html/session_package.html --- libapache2-mod-rivet-2.2.0/doc/html/session_package.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/session_package.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -Session Package


      Session Package

      Introduction

      +Session Package


      Session Package

      Introduction

      This is session management code. It provides an interface to allow you to generate and track a browser's visit as a "session", giving you a unique session ID and an interface @@ -25,13 +25,13 @@ All DB interfacing is done through DIO, though, so it should be relatively easy to add support for other databases. -

      Preparing To Use It

      Create the tables in your SQL server. With Postgres, +

      Preparing To Use It

      Create the tables in your SQL server. With Postgres, do a psql www or whatever DB you connect as, then a backslash-i on session-create.sql

      (If you need to delete the tables, use session-drop.sql)

      The session code by default requires a DIO handle called DIO (the name of which can be overridden). We get it by doing a

      RivetServerConf ChildInitScript "package require DIO"
      -RivetServerConf ChildInitScript "::DIO::handle Postgresql DIO -user www"

      Example Usage

      In your httpd.conf, add:

      RivetServerConf ChildInitScript "package require Session; Session SESSION"

      +RivetServerConf ChildInitScript "::DIO::handle Postgresql DIO -user www"

      Example Usage

      In your httpd.conf, add:

      RivetServerConf ChildInitScript "package require Session; Session SESSION"

      This tells Rivet you want to create a session object named SESSION in every child process Apache creates.

      You can configure the session at this point using numerous @@ -52,7 +52,7 @@ additional requests are received during the session, all under the control of the key-value pairs controlling the session object. -

      Using Sessions From Your Code

      The main methods your code will use are:

      SESSION id
      +

      Using Sessions From Your Code

      The main methods your code will use are:

      SESSION id
      After doing a SESSION activate, this will return a 32-byte ASCII-encoded random hexadecimal string. Every time this browser comes @@ -79,7 +79,7 @@ none was set. (Status is set to the DIO error that occurred, it can be fetched using the status method.) -

      Session Configuration Options

      The following key-value pairs can be specified when a +

      Session Configuration Options

      The following key-value pairs can be specified when a session object (like SESSION above) is created:

      sessionLifetime
      how many seconds the session will live for. 7200 == 2 hours
      sessionRefreshInterval
      @@ -132,7 +132,7 @@ file handle that debugging messages will be written to (default stdout) -

      Session Methods

      +

    Session Methods

    The following methods can be invoked to find out information about the current session, store and fetch server data identified with this session, etc: @@ -171,7 +171,7 @@ If they don't have one or it isn't valid (timed out, etc), create a session and drop a cookie on them. -

    Getting Additional Randomness From The Entropy File

    RivetServerConf ChildInitScript "Session SESSION -entropyFile /dev/urandom \
    +	      

    Getting Additional Randomness From The Entropy File

    RivetServerConf ChildInitScript "Session SESSION -entropyFile /dev/urandom \
       -entropyLength 10 -debugMode 1"

    This options say we want to get randomness from an entropy file (random data pseudo-device) of /dev/urandom, to get ten diff -Nru libapache2-mod-rivet-2.2.0/doc/html/shorthand.html libapache2-mod-rivet-2.2.1/doc/html/shorthand.html --- libapache2-mod-rivet-2.2.0/doc/html/shorthand.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/shorthand.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,6 +1,6 @@ <?= ... ?>

    Name

    <?= ... ?> — Shorthand construct for single strings output -

    Synopsis

    <?= $string ?>

    Description

    +

    Synopsis

    <?= $string ?>

    Description

    This construct is a simplified form to print a single string wherever needed in a ?.rvt? template. The contruct is equivalent to writing the following line of Tcl code diff -Nru libapache2-mod-rivet-2.2.0/doc/html/unescape_string.html libapache2-mod-rivet-2.2.1/doc/html/unescape_string.html --- libapache2-mod-rivet-2.2.0/doc/html/unescape_string.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/unescape_string.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -unescape_string


    Name

    unescape_string — unescape escaped characters in a string.

    Synopsis

    ::rivet::unescape_string ?string?

    Description

    +unescape_string


    Name

    unescape_string — unescape escaped characters in a string.

    Synopsis

    ::rivet::unescape_string ?string?

    Description

    Scans through each character in the specified string looking for escaped character sequences (characters containing a percent sign and two hexadecimal characters, unescaping them diff -Nru libapache2-mod-rivet-2.2.0/doc/html/upgrading.html libapache2-mod-rivet-2.2.1/doc/html/upgrading.html --- libapache2-mod-rivet-2.2.0/doc/html/upgrading.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/upgrading.html 2015-01-13 00:03:31.000000000 +0000 @@ -5,11 +5,11 @@ compatibility was not a primary goal when creating Rivet, but we do provide this information which may be of use to those wishing to upgrade from mod_dtcl or NWS installations. -

    mod_dtcl

    +

    mod_dtcl

    Rivet was originally based on the dtcl code, but it has changed (improved!) quite a bit. The concepts remain the same, but many of the commands have changed. -

    NeoWebScript

    +

    NeoWebScript

    NWS was a server-side scripting environment based on the Apache HTTP server and Safe-Tcl and it's not maintained anymore.

    diff -Nru libapache2-mod-rivet-2.2.0/doc/html/upload.html libapache2-mod-rivet-2.2.1/doc/html/upload.html --- libapache2-mod-rivet-2.2.0/doc/html/upload.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/upload.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -upload


    Name

    upload — handle a file uploaded by a client.

    Synopsis

    ::rivet::upload (channel | save | data | exists | size | type | filename)

    Description

    +upload


    Name

    upload — handle a file uploaded by a client.

    Synopsis

    ::rivet::upload (channel | save | data | exists | size | type | filename)

    Description

    The upload command is for file upload manipulation. See the relevant Apache Directives to further configure the behavior of this Rivet feature. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/var.html libapache2-mod-rivet-2.2.1/doc/html/var.html --- libapache2-mod-rivet-2.2.0/doc/html/var.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/var.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,4 +1,4 @@ -var


    Name

    var, var_qs, var_post — get the value of a form variable.

    Synopsis

    ::rivet::var (get | list | exists | number | all)
    ::rivet::var_qs (get | list | exists | number | all)
    ::rivet::var_post (get | list | exists | number | all)

    Description

    +var


    Name

    var, var_qs, var_post — get the value of a form variable.

    Synopsis

    ::rivet::var (get | list | exists | number | all)
    ::rivet::var_qs (get | list | exists | number | all)
    ::rivet::var_post (get | list | exists | number | all)

    Description

    The var command retrieves information about GET or POST variables sent to the script via client request. It treats both GET and POST variables the same, diff -Nru libapache2-mod-rivet-2.2.0/doc/html/wrap.html libapache2-mod-rivet-2.2.1/doc/html/wrap.html --- libapache2-mod-rivet-2.2.0/doc/html/wrap.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/wrap.html 2015-01-13 00:03:30.000000000 +0000 @@ -1,6 +1,6 @@ wrap


    Name

    wrap — Split a string on newlines. -

    Synopsis

    ::rivet::wrap ?string? ?maxlen? html

    Description

    +

    Synopsis

    ::rivet::wrap ?string? ?maxlen? html

    Description

    For each line, wrap the line at a space character to be equal to or shorter than the maximum length value passed.

    diff -Nru libapache2-mod-rivet-2.2.0/doc/html/wrapline.html libapache2-mod-rivet-2.2.1/doc/html/wrapline.html --- libapache2-mod-rivet-2.2.0/doc/html/wrapline.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/wrapline.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,6 +1,6 @@ wrapline


    Name

    wrapline — Split the line into multiple lines by splitting on space characters -

    Synopsis

    ::rivet::wrapline ?string? ?maxlen? html

    Description

    +

    Synopsis

    ::rivet::wrapline ?string? ?maxlen? html

    Description

    Given a line and a maximum length and option "-html" argument, split the line into multiple lines by splitting on space characters and making sure each line is less than maximum length. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/xml_calendar.html libapache2-mod-rivet-2.2.1/doc/html/xml_calendar.html --- libapache2-mod-rivet-2.2.0/doc/html/xml_calendar.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/xml_calendar.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,4 +1,4 @@ -XmlCalendar


    Name

    XmlCalendar — Prints XML formatted calendar tables

    Synopsis

    XmlCalendar calendar_name ?-option1 option_list? ?-option2 option_list? ?...?

    +XmlCalendar


    Name

    XmlCalendar — Prints XML formatted calendar tables

    Synopsis

    XmlCalendar calendar_name ?-option1 option_list? ?-option2 option_list? ?...?

    An XmlCalendar object is created and returned. XmlCalendar objects print XML formatted calendar tables. The markup can be customized using the configuration options. @@ -11,7 +11,7 @@ The first element of an option list is a tag name, the remaining terms are therefore an even-length sublist which is interpreted as a sequence of attribute-value pairs that will in turn become attributes of the tag. -

    Methods

    +

    Methods

    cal_obj emit -opt1 val1 -opt2 val2
    cal_obj emit ?month? ?year? -opt1 val1 -opt2 val2
    cal_obj emit ? @@ -19,7 +19,7 @@ -opt2 val2
    The method 'emit' if invoked without arguments returns an XML calendar table of the current month -

    Options

    -container (tag_name +

    Options

    -container (tag_name attr11 val1 attr2 val2 ...)
    Assigns an options list to the XML element that will hold the whole table. diff -Nru libapache2-mod-rivet-2.2.0/doc/html/xml.html libapache2-mod-rivet-2.2.1/doc/html/xml.html --- libapache2-mod-rivet-2.2.0/doc/html/xml.html 2014-06-11 10:46:47.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/html/xml.html 2015-01-13 00:03:31.000000000 +0000 @@ -1,6 +1,6 @@ xml

    Name

    xml — XML Fragments creation -

    Synopsis

    ::rivet::xml ?string? ?tag descriptor? ?tag descriptor? ?...?

    Description

    +

    Synopsis

    ::rivet::xml ?string? ?tag descriptor? ?tag descriptor? ?...?

    Description

    Given a string and a variable number of tag descriptors return XML framgment made by nesting the tags with the same hierarchical order they are listed on the command line. The tag descriptors can be a one element list (the tag) or an odd-length list whose diff -Nru libapache2-mod-rivet-2.2.0/doc/Makefile.in libapache2-mod-rivet-2.2.1/doc/Makefile.in --- libapache2-mod-rivet-2.2.0/doc/Makefile.in 2014-06-10 15:07:30.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/Makefile.in 2015-01-13 00:06:16.000000000 +0000 @@ -100,6 +100,7 @@ $(srcdir)/convert_examples.tcl.in README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ + $(top_srcdir)/m4/ax_split_version.m4 \ $(top_srcdir)/acinclude.m4 $(top_srcdir)/tclconfig/tcl.m4 \ $(top_srcdir)/tclconfig/libtool.m4 \ $(top_srcdir)/m4/ax_prefix_config_h.m4 \ @@ -137,6 +138,8 @@ APR_CPPFLAGS = @APR_CPPFLAGS@ APR_INCLUDES = @APR_INCLUDES@ APR_LDFLAGS = @APR_LDFLAGS@ +APU_INCLUDES = @APU_INCLUDES@ +APU_LDFLAGS = @APU_LDFLAGS@ APXS_CPPFLAGS = @APXS_CPPFLAGS@ APXS_CPPFLAGS_SHLIB = @APXS_CPPFLAGS_SHLIB@ APXS_INCLUDES = @APXS_INCLUDES@ @@ -309,6 +312,8 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +rivet_channel = @rivet_channel@ +rivet_core = @rivet_core@ rivet_core_cmds = @rivet_core_cmds@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ @@ -319,6 +324,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ with_apr_config = @with_apr_config@ +with_apu_config = @with_apu_config@ with_apxs = @with_apxs@ MANDIRS = html/ html/images PICTURES := $(wildcard images/*.png) diff -Nru libapache2-mod-rivet-2.2.0/doc/rivet.xml libapache2-mod-rivet-2.2.1/doc/rivet.xml --- libapache2-mod-rivet-2.2.0/doc/rivet.xml 2014-06-04 22:30:35.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/rivet.xml 2015-01-08 15:02:42.000000000 +0000 @@ -4,29 +4,29 @@ "http://www.oasis-open.org/committees/docbook/xml/4.1.2/docbookx.dtd" [ - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + ]> - +

    @@ -64,6 +64,7 @@ 2012 2013 2014 + 2015 Apache Software Foundation @@ -84,7 +85,7 @@ - Document revision: $Revision: 1600530 $, last modified $ by $Author: mxmanghi $. + Document revision: $Revision: 1650305 $, last modified $ by $Author: mxmanghi $. diff -Nru libapache2-mod-rivet-2.2.0/doc/xml/commands.xml libapache2-mod-rivet-2.2.1/doc/xml/commands.xml --- libapache2-mod-rivet-2.2.0/doc/xml/commands.xml 2014-04-16 20:33:41.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/xml/commands.xml 2015-01-08 23:03:12.000000000 +0000 @@ -580,6 +580,7 @@ ::rivet::headers + get set redirect add @@ -597,40 +598,72 @@ - - - - ::rivet::headers - set - headername - value - - - - - Set arbitrary header names and values. - - - + + + + + ::rivet::headers + get + headername + value + + + + + Read arbitrary header names and values from output HTTP headers + + + - - + + - ::rivet::headers - redirect - uri + ::rivet::headers + set + headername + value - + - - Redirect from the current page to a new - URI. Must be done in the first block - of TCL code. - + + Set arbitrary header names and values into output HTTP headers + - + + + + + + ::rivet::headers + sent + + + + + Test internal status of the module and returns 1 + if the HTTP headers have been already sent + + + + + + + + ::rivet::headers + redirect + uri + + + + + Redirect from the current page to a new + URI. Must be done in the first block + of TCL code. + + + - + ::rivet::headers @@ -641,12 +674,12 @@ Add text to header - headername. + headername. - + - + ::rivet::headers @@ -1355,7 +1388,51 @@ not a POST or there is no data, then "" - an empty string - is returned. - + + + redirect + Interrupt processing and divert to a new URL + + + + ::rivet::redirect + URL + permanent (default: 0) + + + + Description + + ::rivet::redirect diverts the browser to a new URL and marks + the redirection as either permanent in the browser local cache or + non permanent (default). + Calling ::rivet::redirect causes the script execution to interrupt + and control passes to AbortScript, if such script is + set, by calling ::rivet::abort_page and passing as abort + code a dictionary with 2 keys: + + error_code: string literal 'redirect' + location: the URL the browser will be redirected to + + + + ::rivet::redirect drives the redirection by setting the + 301 (permanent redirect) or 302 (non permanent redirect) HTTP status codes and + attempts to discard the output the script might have already placed in the + stdout channel buffer. Therefore the command can fail if + + A flush stdout was called before ::rivet::redirect + thus causing the HTTP headers to be sent and preventing any possibility to + manipulate them + The channel buffer was filled causing Tcl to + flush the channel + + The stdout channel, like any Tcl channels, can be manipulated + and if needed its internal buffer streched. + + + + read_file diff -Nru libapache2-mod-rivet-2.2.0/doc/xml/directives.xml libapache2-mod-rivet-2.2.1/doc/xml/directives.xml --- libapache2-mod-rivet-2.2.0/doc/xml/directives.xml 2012-10-16 22:11:31.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/xml/directives.xml 2015-01-08 15:02:42.000000000 +0000 @@ -46,6 +46,7 @@ UploadMaxSize UploadFilesToVar SeparateVirtualInterps + SeparateChannels HonorHeaderOnlyRequests @@ -370,24 +371,61 @@ + + + + SeparateChannels + + yes + no + + + + + + Internally mod_rivet creates a new Tcl channel (Rivet channel) which is configured + as stdout and registered to each existing interpreter. + There is no need of multiple channels in a single thread as each thread can + serve only one request at a time. But if you are deploying mod_rivet in a + complex environment running unrelated applications developed by + different teams, it could be the case to have SeparateVirtualInterps + set. If you want to enhance the environment separation you may also + set SeparateChannels to force mod_rivet to create + a channel per each Tcl interpreter thus enabling single application + code to change the Rivet channel parameters without affecting other + applications (even though changing the Tcl channel parameters is a rare + necessity). Setting this options increases the system overheads as each + Rivet channel needs to allocate its own control structures and internal + buffers. + + + This option is implemented in order to have fine grain control over mod_rivet. In + nearly all practical cases you won't need to change Rivet Channel (stdout) settings + for different applications by calling fconfigure stdout ..... + This option is, by nature, only available at the global level and has effect only if + also SeparateVirtualInterps is set + + + + - - HonorHeaderOnlyRequests - - yes - no - - + + HonorHeaderOnlyRequests + + yes + no + + - - If a HEAD requests is issued by the client Rivet detects - this case and sends back to the client a standard header - response. If the real header has to be examined (e.g. - for debugging) you can turn this options on. - - This option is, by nature, only available at the global level + + If a HEAD requests is issued by the client Rivet detects + this case and sends back to the client a standard header + response. If the real header has to be examined (e.g. + for debugging) you can turn this options on. + + This option is, by nature, only available at the global level diff -Nru libapache2-mod-rivet-2.2.0/doc/xml/intro.xml libapache2-mod-rivet-2.2.1/doc/xml/intro.xml --- libapache2-mod-rivet-2.2.0/doc/xml/intro.xml 2014-06-03 22:22:44.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/doc/xml/intro.xml 2015-01-08 15:02:42.000000000 +0000 @@ -17,7 +17,6 @@ giving you ideas on how to best take advantage of Rivet's architecture to create different styles of web site. - This documentation is focused on the current version of Rivet, but still a work in progress, and, like everything @@ -30,11 +29,14 @@ Acknowledgements - Rivet's development took advantage from contributions from + Rivet 2.2 development took advantage from contributions from several users who provided whole new componenents, bug fixes and - enhancements. + enhancements. + Damon Courtney (Apache Tcl Team member, + he originally wrote mod_rivet) contributed with the new + ::rivet::redirect command. Harald Oehlmann (now member of the Apache Tcl Team) who wrote package RivetEntitites, command ::rivet::http_accept and filed @@ -43,6 +45,6 @@ Cyril Shtumf filed several important bugfixes Jeff Lawson who patched Rivet parser to add the shorthand syntax for string output and filed several bug reports - - + + diff -Nru libapache2-mod-rivet-2.2.0/m4/ax_split_version.m4 libapache2-mod-rivet-2.2.1/m4/ax_split_version.m4 --- libapache2-mod-rivet-2.2.0/m4/ax_split_version.m4 1970-01-01 00:00:00.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/m4/ax_split_version.m4 2014-08-04 17:39:46.000000000 +0000 @@ -0,0 +1,38 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_split_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_SPLIT_VERSION +# +# DESCRIPTION +# +# Splits a version number in the format MAJOR.MINOR.POINT into its +# separate components. +# +# Sets the variables. +# +# LICENSE +# +# Copyright (c) 2008 Tom Howard +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 9 + +AC_DEFUN([AX_SPLIT_VERSION],[ + AC_REQUIRE([AC_PROG_SED]) + AX_MAJOR_VERSION=`echo "$VERSION" | $SED 's/\([[^.]][[^.]]*\).*/\1/'` + AX_MINOR_VERSION=`echo "$VERSION" | $SED 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'` + AX_POINT_VERSION=`echo "$VERSION" | $SED 's/[[^.]][[^.]]*.[[^.]][[^.]]*.\(.*\)/\1/'` + AC_MSG_CHECKING([Major version]) + AC_MSG_RESULT([$AX_MAJOR_VERSION]) + AC_MSG_CHECKING([Minor version]) + AC_MSG_RESULT([$AX_MINOR_VERSION]) + AC_MSG_CHECKING([Point version]) + AC_MSG_RESULT([$AX_POINT_VERSION]) +]) diff -Nru libapache2-mod-rivet-2.2.0/Makefile.in libapache2-mod-rivet-2.2.1/Makefile.in --- libapache2-mod-rivet-2.2.0/Makefile.in 2014-06-10 15:07:30.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/Makefile.in 2015-01-13 00:06:16.000000000 +0000 @@ -90,11 +90,11 @@ subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ - $(srcdir)/config.h.in ChangeLog tclconfig/ChangeLog INSTALL \ - README TODO tclconfig/compile tclconfig/config.guess \ - tclconfig/config.sub tclconfig/depcomp tclconfig/install-sh \ - tclconfig/missing tclconfig/ltmain.sh \ - $(top_srcdir)/tclconfig/compile \ + $(srcdir)/config.h.in $(top_srcdir)/rivet/init.tcl.in \ + ChangeLog tclconfig/ChangeLog INSTALL README TODO \ + tclconfig/compile tclconfig/config.guess tclconfig/config.sub \ + tclconfig/depcomp tclconfig/install-sh tclconfig/missing \ + tclconfig/ltmain.sh $(top_srcdir)/tclconfig/compile \ $(top_srcdir)/tclconfig/config.guess \ $(top_srcdir)/tclconfig/config.sub \ $(top_srcdir)/tclconfig/install-sh \ @@ -102,6 +102,7 @@ $(top_srcdir)/tclconfig/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \ + $(top_srcdir)/m4/ax_split_version.m4 \ $(top_srcdir)/acinclude.m4 $(top_srcdir)/tclconfig/tcl.m4 \ $(top_srcdir)/tclconfig/libtool.m4 \ $(top_srcdir)/m4/ax_prefix_config_h.m4 \ @@ -112,7 +113,7 @@ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = rivet/init.tcl CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -219,6 +220,8 @@ APR_CPPFLAGS = @APR_CPPFLAGS@ APR_INCLUDES = @APR_INCLUDES@ APR_LDFLAGS = @APR_LDFLAGS@ +APU_INCLUDES = @APU_INCLUDES@ +APU_LDFLAGS = @APU_LDFLAGS@ APXS_CPPFLAGS = @APXS_CPPFLAGS@ APXS_CPPFLAGS_SHLIB = @APXS_CPPFLAGS_SHLIB@ APXS_INCLUDES = @APXS_INCLUDES@ @@ -391,6 +394,8 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +rivet_channel = @rivet_channel@ +rivet_core = @rivet_core@ rivet_core_cmds = @rivet_core_cmds@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ @@ -401,6 +406,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ with_apr_config = @with_apr_config@ +with_apu_config = @with_apu_config@ with_apxs = @with_apxs@ ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = LICENSE contrib debian doc rivet win/nmakehlp.c src/testing.c src/TclWebcgi.c @@ -464,6 +470,8 @@ distclean-hdr: -rm -f config.h stamp-h1 +rivet/init.tcl: $(top_builddir)/config.status $(top_srcdir)/rivet/init.tcl.in + cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo diff -Nru libapache2-mod-rivet-2.2.0/README libapache2-mod-rivet-2.2.1/README --- libapache2-mod-rivet-2.2.0/README 2011-12-08 21:57:35.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/README 2015-01-08 23:17:55.000000000 +0000 @@ -8,28 +8,14 @@ See LICENSE for licensing terms. -$Id: README 1212149 2011-12-08 21:57:35Z mxmanghi $ +$Id: README 1650416 2015-01-08 23:17:55Z mxmanghi $ KNOWN PROBLEMS ============== - - - Rivet is reported to conflict with cgi scripts on some Linux machines. -Symptom of the problem is when cgi scripts hang forever and don't send contents -to the client + - Rivet used to conflict with cgi scripts on some Linux machines. This +problem seems to have disappeared at least on Debian and Ubuntu now - RIVET NAMESPACE - =============== - - - With the intruduction of the Rivet namespace the command set has been -moved into '::rivet' and should now be fully qualified. Commands are exported -though and can be imported in the global namespace, but whenever possible this -is deprecated. Putting the following code in the Server Conf should guarantee -compatibility with existing scripts - -RivetServerConf ServerInitScript "package require rivet" -RivetServerConf ServerInitScript "package require rivetlib" -RivetServerConf ServerInitScript "namespace import --force ::rivet::*" - + diff -Nru libapache2-mod-rivet-2.2.0/README.MacOSX libapache2-mod-rivet-2.2.1/README.MacOSX --- libapache2-mod-rivet-2.2.0/README.MacOSX 2005-09-22 12:57:33.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/README.MacOSX 2015-01-08 23:17:55.000000000 +0000 @@ -1,5 +1,10 @@ -$Id: README.MacOSX 290934 2005-09-22 12:57:33Z karl $ +This document is probably obsolete. Anyone who will undertake the task of +porting Rivet on Macintosh is welcome to join us in the effort of supporting +Rivet for new plattforms. (mxmanghi: 2015-01-09) + + +$Id: README.MacOSX 1650416 2015-01-08 23:17:55Z mxmanghi $ Building Rivet isn't 100% turnkey under Mac OS X, but it's getting better and hopefully it won't be too long until it builds without tweaking. diff -Nru libapache2-mod-rivet-2.2.0/rivet/init.tcl libapache2-mod-rivet-2.2.1/rivet/init.tcl --- libapache2-mod-rivet-2.2.0/rivet/init.tcl 2013-09-18 10:25:16.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/rivet/init.tcl 2014-08-04 17:39:46.000000000 +0000 @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -package provide Rivet 2.1 +package provide Rivet 2.2 namespace eval ::Rivet { diff -Nru libapache2-mod-rivet-2.2.0/rivet/init.tcl.in libapache2-mod-rivet-2.2.1/rivet/init.tcl.in --- libapache2-mod-rivet-2.2.0/rivet/init.tcl.in 1970-01-01 00:00:00.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/rivet/init.tcl.in 2014-08-04 17:39:46.000000000 +0000 @@ -0,0 +1,194 @@ +# Copyright 2002-2004 The Apache Software Foundation + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +package provide Rivet 2.2 + +namespace eval ::Rivet { + + ### + ## export_tcl_commands -- + ## this is temporary hack to export names of Tcl commands in rivet-tcl/. + ## This function will be removed in future versions of Rivet and it's + ## meant to provide a basic way to guarantee compatibility with older + ## versions of Rivet (see code in ::Rivet::init) + ## + + proc tcl_commands_export_list {tclpath} { + + # we collect the commands in rivet-tcl by reading the tclIndex + # file and then we extract the command list from auto_index + + namespace eval ::rivet_temp { } + set ::rivet_temp::tclpath $tclpath + + namespace eval ::rivet_temp { + variable auto_index + array set auto_index {} + + # the auto_index in ${tclpath}/tclIndex is loaded + + set dir $tclpath + source [file join $tclpath tclIndex] + } + + set command_list [namespace eval ::rivet_temp {array names auto_index}] + + # commands in 'command_list' are prefixed with ::rivet, so we have to + # remove it to build an export list + + set export_list {} + foreach c $command_list { + if {[regexp {::rivet::(.*)} $c m cmd]} { + lappend export_list $cmd +# namespace eval ::rivet [list namespace export $cmd] + } + } + + # we won't left anything behind + namespace delete ::rivet_temp + + return $export_list + } + + ### + ## This routine gets called each time a new request comes in. + ## It sets up the request namespace and creates a global command + ## to replace the default global. This ensures that when a user + ## uses global variables, they're actually contained within the + ## namespace. So, everything gets deleted when the request is finished. + ### + proc initialize_request {} { + catch { namespace delete ::request } + + namespace eval ::request { } + + proc ::request::global {args} { + foreach arg $args { + uplevel "::global ::request::$arg" + } + } + } + + ### + ## The default error handler for Rivet. Any time a page runs into an + ## error, this routine will be called to handle the error information. + ## If an ErrorScript has been specified, this routine will not be called. + ### + proc handle_error {} { + global errorInfo + global errorOutbuf + + puts
    +        puts "
    $errorInfo
    " + puts "

    OUTPUT BUFFER:

    " + puts $errorOutbuf + puts
    + } + + ### + ## This routine gets called each time a request is finished. Any kind + ## of special cleanup can be placed here. + ### + proc cleanup_request {} { + } + + ### + ## The main initialization procedure for Rivet. + ### + proc init {} { + global auto_path + global server + + ## Add the rivet-tcl directory to Tcl's auto search path. + ## We insert it at the head of the list because we want any of + ## our procs named the same as Tcl's procs to be overridden. + ## Example: parray + set tclpath [file join [file dirname [info script]] rivet-tcl] + set auto_path [linsert $auto_path 0 $tclpath] + + ## As we moved the commands set to ::rivet namespace we + ## we want to guarantee the commands are still accessible + ## at global level by putting them on the export list. + ## Importing the ::rivet namespace is deprecated and we should + ## make it clear in the manual + + ## we keep in ::rivet::export_list a list of importable commands + + namespace eval ::rivet [list set export_list [tcl_commands_export_list $tclpath]] + namespace eval ::rivet { + + ## init.tcl is run by mod_rivet (which creates the ::rivet namespace) but it gets run + ## standalone by mkPkgindex during the installation phase. We have to make sure the + ## procedure won't fail in this case, so we check for the existence of the variable. + + if {[info exists module_conf(export_namespace_commands)] && \ + $module_conf(export_namespace_commands)} { + + eval namespace export $export_list + + } + } + ## Add the packages directory to the auto_path. + ## If we have a packages$tcl_version directory + ## (IE: packages8.3, packages8.4) append that as well. + + ## The packages directory come right after the rivet-tcl directory. + set pkgpath [file join [file dirname [info script]] packages] + set auto_path [linsert $auto_path 1 $pkgpath] + set auto_path [linsert $auto_path 2 ${pkgpath}-local] + + if { [file exists ${pkgpath}$::tcl_version] } { + lappend auto_path ${pkgpath}$::tcl_version + } + + ## Likewise we have also to add to auto_path the directory containing + ## this script since it holds the pkgIndex.tcl file for package Rivet. + + set auto_path [linsert $auto_path 0 [file dirname [info script]]] + + ## This will allow users to create proc libraries and tclIndex files + ## in the local directory that can be autoloaded. + ## Perhaps this must go to the front of the list to allow the user + ## to override even Rivet's procs. + lappend auto_path . + } + +} ;## namespace eval ::Rivet + + +## Rivet 2.1.x supports Tcl >= 8.5, therefore there's no more need for +## the command incr0, as the functionality of creating a not yet +## existing variable is now provided by 'incr'. Being incr0 a command +## in Rivet < 2.1.0, before the move into the ::Rivet namespace, +## we alias this command only in the global namespace + +interp alias {} ::incr0 {} incr + +## Initialize Rivet. +::Rivet::init + +## And now we get to the import of the whole ::rivet namespace. +## Some commands (namely lassign) replace the native lassign command +## so we have to use the -force switch + +# Do we actually want to import everything? If Rivet was configured +# to import the ::rivet namespace for compatibility we do it right away. +# This option is not guaranteed to be supported in future versions. + +if {[info exists module_conf(import_rivet_commands)] && $module_conf(import_rivet_commands)} { + namespace eval :: { namespace import -force ::rivet::* } +} + +array unset module_conf + diff -Nru libapache2-mod-rivet-2.2.0/rivet/rivet-tcl/redirect.tcl libapache2-mod-rivet-2.2.1/rivet/rivet-tcl/redirect.tcl --- libapache2-mod-rivet-2.2.0/rivet/rivet-tcl/redirect.tcl 1970-01-01 00:00:00.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/rivet/rivet-tcl/redirect.tcl 2014-12-22 17:35:20.000000000 +0000 @@ -0,0 +1,33 @@ +# +# -- ::rivet::redirect +# +# Redirecting to a new URL by issuing a 301 or 302 (permanent) +# diversion to a new resource. +# +# Arguments: +# +# - url - URL to which we are redirecting the client +# - permanent:[0 | 1] - whether redirection will be permanent (default) +# +# + +namespace eval ::rivet { + + proc redirect {url {permanent 0}} { + + if {[::rivet::headers sent]} { + + return -code error \ + -errorcode headers_already_sent \ + -errorinfo "Impossible to redirect: headers already sent" + } + + ::rivet::no_body ; ## don’t output anything on a redirect + ::rivet::headers set Location $url + ::rivet::headers numeric [expr {$permanent ? "301" : "302"}] + ::rivet::abort_page [dict create error_code redirect location $url] ; ## stop any further processing + + return -error ok + } + +} diff -Nru libapache2-mod-rivet-2.2.0/rivet/rivet-tcl/tclIndex libapache2-mod-rivet-2.2.1/rivet/rivet-tcl/tclIndex --- libapache2-mod-rivet-2.2.0/rivet/rivet-tcl/tclIndex 2014-02-11 23:46:12.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/rivet/rivet-tcl/tclIndex 2014-12-18 10:24:40.000000000 +0000 @@ -27,3 +27,4 @@ set auto_index(::rivet::load_cookies) [list source [file join $dir load_cookies.tcl]] set auto_index(::rivet::http_accept) [list source [file join $dir http_accept.tcl]] set auto_index(::rivet::xml) [list source [file join $dir xml.tcl]] +set auto_index(::rivet::redirect) [list source [file join $dir redirect.tcl]] diff -Nru libapache2-mod-rivet-2.2.0/src/apache-2/apache_config.c libapache2-mod-rivet-2.2.1/src/apache-2/apache_config.c --- libapache2-mod-rivet-2.2.0/src/apache-2/apache_config.c 2014-04-17 14:10:17.000000000 +0000 +++ libapache2-mod-rivet-2.2.1/src/apache-2/apache_config.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,650 +0,0 @@ -/* apache_config.c -- configuration functions for apache 2.x */ - -/* Copyright 2000-2005 The Apache Software Foundation - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* $Id: apache_config.c 1588263 2014-04-17 14:10:17Z mxmanghi $ */ - -/* Rivet config */ -#ifdef HAVE_CONFIG_H -#include -#endif - -/* httpd includes */ - -#include -#include - -/* APR includes */ - -#include -#include -#include - -#include "mod_rivet.h" -#include "apache_config.h" -#include "rivet.h" - -/* - * -- Rivet_AssignStringtoConf -- - * - * Assign a string to a Tcl_Obj valued configuration parameter - * - * Arguments: - * - * - objPnt: Pointer to a pointer to a Tcl_Obj. If the pointer *objPnt - * is NULL (configuration script obj pointers are initialized to NULL) - * a new Tcl_Obj is created - * - string_value: a string to be assigned to the Tcl_Obj - * - * Results: - * - * - Pointer to a Tcl_Obj containing the parameter value. - * - */ - -static Tcl_Obj* -Rivet_AssignStringToConf (Tcl_Obj** objPnt, const char* string_value) -{ - Tcl_Obj *objarg = NULL; - - if (*objPnt == NULL) - { - objarg = Tcl_NewStringObj(string_value,-1); - Tcl_IncrRefCount(objarg); - *objPnt = objarg; - } else { - objarg = *objPnt; - Tcl_AppendToObj(objarg, string_value, -1); - } - Tcl_AppendToObj( objarg, "\n", 1 ); - return objarg; -} - -/* - * -- Rivet_SetScript -- - * - * Add the text from an apache directive, such as UserConf, to - * the corresponding variable in the rivet_server_conf structure. - * In most cases, we append the new value to any previously - * existing value, but Before, After and Error scripts override - * the old directive completely. - * - * Results: - * - * Returns a Tcl_Obj* pointing to the string representation of - * the current value for the directive. - * - */ - - -static const char * -Rivet_SetScript (apr_pool_t *pool, rivet_server_conf *rsc, const char *script, const char *string) -{ - Tcl_Obj *objarg = NULL; - - if( STREQU( script, "GlobalInitScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_global_init_script),string); - } else if( STREQU( script, "ChildInitScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_child_init_script),string); - } else if( STREQU( script, "ChildExitScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_child_exit_script),string); - } else if( STREQU( script, "BeforeScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_before_script),string); - } else if( STREQU( script, "AfterScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_after_script),string); - } else if( STREQU( script, "ErrorScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_error_script),string); - } else if( STREQU( script, "ServerInitScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_server_init_script),string); - } else if( STREQU( script, "AbortScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->rivet_abort_script),string); - } else if( STREQU( script, "AfterEveryScript" ) ) { - objarg = Rivet_AssignStringToConf(&(rsc->after_every_script),string); - } - - if( !objarg ) return string; - - return Tcl_GetStringFromObj( objarg, NULL ); -} - -/* - * -- Rivet_GetConf - * - * Rivet_GetConf fetches the confguration from the server record - * and carries out a merge with server variables stored in directory - * specific configuration - * - * Arguments: - * - * - request_rec* r: pointer to the request data - * - * Results: - * - * - rivet_server_conf* rsc: the server merged configuration - * - * Side Effects: - * - * None. - * - */ - -rivet_server_conf * -Rivet_GetConf( request_rec *r ) -{ - rivet_server_conf *rsc = RIVET_SERVER_CONF( r->server->module_config ); - void *dconf = r->per_dir_config; - rivet_server_conf *newconfig = NULL; - rivet_server_conf *rdc; - - FILEDEBUGINFO; - - /* If there is no per dir config, just return the server config */ - if (dconf == NULL) { - return rsc; - } - rdc = RIVET_SERVER_CONF( dconf ); - - newconfig = RIVET_NEW_CONF( r->pool ); - - Rivet_CopyConfig( rsc, newconfig ); - Rivet_MergeDirConfigVars( r->pool, newconfig, rsc, rdc ); - - return newconfig; -} - -/* - * -- Rivet_CopyConfig -- - * - * Copy the rivet_server_conf struct. - * - * Results: - * None. - * - * Side Effects: - * None. - * - */ -void -Rivet_CopyConfig( rivet_server_conf *oldrsc, rivet_server_conf *newrsc ) -{ - FILEDEBUGINFO; - - newrsc->server_interp = oldrsc->server_interp; - newrsc->rivet_global_init_script = oldrsc->rivet_global_init_script; - newrsc->rivet_before_script = oldrsc->rivet_before_script; - newrsc->rivet_after_script = oldrsc->rivet_after_script; - newrsc->rivet_error_script = oldrsc->rivet_error_script; - newrsc->rivet_abort_script = oldrsc->rivet_abort_script; - newrsc->after_every_script = oldrsc->after_every_script; - - newrsc->user_scripts_updated = oldrsc->user_scripts_updated; - - newrsc->rivet_default_error_script = oldrsc->rivet_default_error_script; - - /* These are pointers so that they can be passed around... */ - newrsc->cache_size = oldrsc->cache_size; - newrsc->cache_free = oldrsc->cache_free; - newrsc->upload_max = oldrsc->upload_max; - newrsc->upload_files_to_var = oldrsc->upload_files_to_var; - newrsc->separate_virtual_interps = oldrsc->separate_virtual_interps; - newrsc->honor_header_only_reqs = oldrsc->honor_header_only_reqs; - newrsc->server_name = oldrsc->server_name; - newrsc->upload_dir = oldrsc->upload_dir; - newrsc->rivet_server_vars = oldrsc->rivet_server_vars; - newrsc->rivet_dir_vars = oldrsc->rivet_dir_vars; - newrsc->rivet_user_vars = oldrsc->rivet_user_vars; - newrsc->objCacheList = oldrsc->objCacheList; - newrsc->objCache = oldrsc->objCache; - - newrsc->outchannel = oldrsc->outchannel; -} - -/* - * -- Rivet_MergeDirConfigVars - * - * Merging of base configuration with per directory configuration - * is done checking each field in the configuration record. If - * a more specific (per directory) conf variable is defined then - * it supersedes the base record variable - * - * Arguments: - * - * - apr_pool_t* t: pointer to an APR memory pool - * - rivet_server_conf* new: pointer to a record to store the - * merged configuration - * - rivet_server_conf* base: - * - rivet_server_conf* add: - * - * Results: - * - * configuration record are merge in place - * - * Side Effects: - * - * None. - */ - -void -Rivet_MergeDirConfigVars(apr_pool_t *p, rivet_server_conf *new, - rivet_server_conf *base, rivet_server_conf *add ) -{ - FILEDEBUGINFO; - new->rivet_child_init_script = add->rivet_child_init_script ? - add->rivet_child_init_script : base->rivet_child_init_script; - new->rivet_child_exit_script = add->rivet_child_exit_script ? - add->rivet_child_exit_script : base->rivet_child_exit_script; - - new->rivet_before_script = add->rivet_before_script ? - add->rivet_before_script : base->rivet_before_script; - new->rivet_after_script = add->rivet_after_script ? - add->rivet_after_script : base->rivet_after_script; - new->rivet_error_script = add->rivet_error_script ? - add->rivet_error_script : base->rivet_error_script; - new->rivet_abort_script = add->rivet_abort_script ? - add->rivet_abort_script : base->rivet_abort_script; - new->after_every_script = add->after_every_script ? - add->after_every_script : base->after_every_script; - - new->user_scripts_updated = add->user_scripts_updated ? - add->user_scripts_updated : base->user_scripts_updated; - - new->upload_dir = add->upload_dir ? - add->upload_dir : base->upload_dir; - - /* Merge the tables of dir and user variables. */ - if (base->rivet_dir_vars && add->rivet_dir_vars) { - new->rivet_dir_vars = - apr_table_overlay ( p, base->rivet_dir_vars, add->rivet_dir_vars ); - } else { - new->rivet_dir_vars = base->rivet_dir_vars; - } - if (base->rivet_user_vars && add->rivet_user_vars) { - new->rivet_user_vars = - apr_table_overlay ( p, base->rivet_user_vars, add->rivet_user_vars ); - } else { - new->rivet_user_vars = base->rivet_user_vars; - } -} - -/* - * -- Rivet_CreateDirConfig - * - * Apache HTTP server framework calls this function to - * have a pointer to newly initialized directory specific - * configuration record. - * - * Arguments: - * - * - apr_pool_t*: pointer to an APR memory pool - * - char*: string pointer to the directory name - * - * Returned value: - * - * - void* pointer to a brand new rivet configuration record - * - */ - - -void * -Rivet_CreateDirConfig(apr_pool_t *p, char *dir) -{ - rivet_server_conf *rdc = RIVET_NEW_CONF(p); - - FILEDEBUGINFO; - - rdc->rivet_server_vars = (apr_table_t *) apr_table_make ( p, 4 ); - rdc->rivet_dir_vars = (apr_table_t *) apr_table_make ( p, 4 ); - rdc->rivet_user_vars = (apr_table_t *) apr_table_make ( p, 4 ); - - return rdc; -} - -/* - * -- Rivet_MergeDirConfig - * - * Apache framework callback merging 2 per directory config records - * - * Arguments: - * - * - apr_pool_t* p: pointer to an APR memory pool - * - void* basev, addv: pointers to configuration records to be - * merged - * - * Results: - * - * - void*: pointer to the resulting configuration - */ - -void * -Rivet_MergeDirConfig( apr_pool_t *p, void *basev, void *addv ) -{ - rivet_server_conf *base = (rivet_server_conf *)basev; - rivet_server_conf *add = (rivet_server_conf *)addv; - rivet_server_conf *new = RIVET_NEW_CONF(p); - - FILEDEBUGINFO; - - Rivet_MergeDirConfigVars( p, new, base, add ); - - return new; -} - -/* - * -- Rivet_MergeConfig -- - * - * This function is called when there is a config option set both - * at the 'global' level, and for a virtual host. It "resolves - * the conflicts" so to speak, by creating a new configuration, - * and this function is where we get to have our say about how to - * go about doing that. For most of the options, we override the - * global option with the local one. - * - * Results: - * Returns a new server configuration. - * - * Side Effects: - * None. - * - */ - -void * -Rivet_MergeConfig(apr_pool_t *p, void *basev, void *overridesv) -{ - rivet_server_conf *rsc = RIVET_NEW_CONF(p); - rivet_server_conf *base = (rivet_server_conf *) basev; - rivet_server_conf *overrides = (rivet_server_conf *) overridesv; - - FILEDEBUGINFO; - - /* For completeness' sake, we list the fate of all the members of - * the rivet_server_conf struct. */ - - /* server_interp isn't set at this point. */ - /* rivet_global_init_script is global, not per server. */ - - rsc->rivet_child_init_script = overrides->rivet_child_init_script ? - overrides->rivet_child_init_script : base->rivet_child_init_script; - - rsc->rivet_child_exit_script = overrides->rivet_child_exit_script ? - overrides->rivet_child_exit_script : base->rivet_child_exit_script; - - rsc->rivet_before_script = overrides->rivet_before_script ? - overrides->rivet_before_script : base->rivet_before_script; - - rsc->rivet_after_script = overrides->rivet_after_script ? - overrides->rivet_after_script : base->rivet_after_script; - - rsc->rivet_error_script = overrides->rivet_error_script ? - overrides->rivet_error_script : base->rivet_error_script; - - rsc->rivet_default_error_script = overrides->rivet_default_error_script ? - overrides->rivet_default_error_script : base->rivet_default_error_script; - - rsc->rivet_abort_script = overrides->rivet_abort_script ? - overrides->rivet_abort_script : base->rivet_abort_script; - - rsc->after_every_script = overrides->after_every_script ? - overrides->after_every_script : base->after_every_script; - - /* cache_size is global, and set up later. */ - /* cache_free is not set up at this point. */ - - rsc->upload_max = overrides->upload_max ? - overrides->upload_max : base->upload_max; - - rsc->separate_virtual_interps = base->separate_virtual_interps; - rsc->honor_header_only_reqs = base->honor_header_only_reqs; - - /* server_name is set up later. */ - - rsc->upload_dir = overrides->upload_dir ? - overrides->upload_dir : base->upload_dir; - - rsc->rivet_server_vars = overrides->rivet_server_vars ? - overrides->rivet_server_vars : base->rivet_server_vars; - - rsc->rivet_dir_vars = overrides->rivet_dir_vars ? - overrides->rivet_dir_vars : base->rivet_dir_vars; - - rsc->rivet_user_vars = overrides->rivet_user_vars ? - overrides->rivet_user_vars : base->rivet_user_vars; - - /* objCacheList is set up later. */ - /* objCache is set up later. */ - /* outchannel is set up later. */ - - return rsc; -} - -/* - * -- Rivet_CreateConfig - * - * - * - */ - -void * -Rivet_CreateConfig(apr_pool_t *p, server_rec *s ) -{ - rivet_server_conf *rsc = RIVET_NEW_CONF(p); - - FILEDEBUGINFO; - - rsc->server_interp = NULL; - -/* scripts obj pointers *must* be initialized to NULL */ - - rsc->rivet_server_init_script = NULL; - rsc->rivet_global_init_script = NULL; - rsc->rivet_child_init_script = NULL; - rsc->rivet_child_exit_script = NULL; - rsc->rivet_before_script = NULL; - rsc->rivet_after_script = NULL; - rsc->rivet_error_script = NULL; - rsc->rivet_abort_script = NULL; - rsc->after_every_script = NULL; - - rsc->user_scripts_updated = 0; - - rsc->rivet_default_error_script = Tcl_NewStringObj("::Rivet::handle_error", -1); - Tcl_IncrRefCount(rsc->rivet_default_error_script); - - /* these are pointers so that they can be passed around... */ - rsc->cache_size = apr_pcalloc(p, sizeof(int)); - rsc->cache_free = apr_pcalloc(p, sizeof(int)); - *(rsc->cache_size) = -1; - *(rsc->cache_free) = 0; - rsc->upload_max = RIVET_MAX_POST; - rsc->upload_files_to_var = RIVET_UPLOAD_FILES_TO_VAR; - rsc->separate_virtual_interps = RIVET_SEPARATE_VIRTUAL_INTERPS; - rsc->honor_header_only_reqs = RIVET_HEAD_REQUESTS; - rsc->upload_dir = RIVET_UPLOAD_DIR; - rsc->server_name = NULL; - rsc->objCacheList = NULL; - rsc->objCache = NULL; - - rsc->outchannel = NULL; - - rsc->rivet_server_vars = (apr_table_t *) apr_table_make ( p, 4 ); - rsc->rivet_dir_vars = (apr_table_t *) apr_table_make ( p, 4 ); - rsc->rivet_user_vars = (apr_table_t *) apr_table_make ( p, 4 ); - - return rsc; -} - -/* - * -- Rivet_UserConf - * - * Implements the RivetUserConf Apache Directive - * - * Command Arguments: - * RivetUserConf BeforeScript