* GSWAdaptors/Apache/mod_gsweb.c: Rename GSWeb_Module to

gsweb_module for apxs integration.
        * INSTALL: Refer to GSWAdaptors/Apache/INSTALL for Apache
        specific installation instructions.  Move Apache specific
        installation instructions to GSWAdaptors/Apache/INSTALL.
        * GSWAdaptors/Apache/INSTALL: Update to new ./configure
        usage and new install and httpdconfig make targets.
        * GSWAdaptors/Apache/GNUmakefile.in: New file to build
        the adaptor module with apxs and apr-config.
        * GSWAdaptors/Apache/configure[.ac]: New files
        * GSWAdaptors/Apache/config.guess: Ditto.
        * GSWAdaptors/Apache/config.sub: Ditto.
        * GSWAdaptors/Apache/install-sh: Ditto.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@21206 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
ayers 2005-05-09 12:20:18 +00:00
parent b8d239ee06
commit 00f397580c
10 changed files with 8220 additions and 91 deletions

View file

@ -1,15 +1,31 @@
2005-05-04 David Ayers <d.ayers@inode.at>
2005-05-09 David Ayers <d.ayers@inode.at>
* GSWAdaptors/Apache/mod_gsweb.c: Rename GSWeb_Module to
gsweb_module for apxs integration.
* INSTALL: Refer to GSWAdaptors/Apache/INSTALL for Apache
specific installation instructions. Move Apache specific
installation instructions to GSWAdaptors/Apache/INSTALL.
* GSWAdaptors/Apache/INSTALL: Update to new ./configure
usage and new install and httpdconfig make targets.
* GSWAdaptors/Apache/GNUmakefile.in: New file to build
the adaptor module with apxs and apr-config.
* GSWAdaptors/Apache/configure[.ac]: New files
* GSWAdaptors/Apache/config.guess: Ditto.
* GSWAdaptors/Apache/config.sub: Ditto.
* GSWAdaptors/Apache/install-sh: Ditto.
2005-05-04 David Ayers <d.ayers@inode.at>
* GSWeb.framework/GSWUtils.h/m (GetTmpName): Remove unused
function which generates warnings about tempnam usage.
2005-05-03 David Ayers <d.ayers@inode.at>
2005-05-03 David Ayers <d.ayers@inode.at>
* GSWAdaptors/common/GSWStats.c (GSWStats_formatStats):
Use standard strtod instead of the GNU extension strtof
which is stored in a double anyway.
2005-05-02 David Ayers <d.ayers@inode.at>
2005-05-02 David Ayers <d.ayers@inode.at>
* GNUmakefile, Examples/hello/GNUmakefile,
GSWExtensions.framework/GNUmakefile,

View file

@ -0,0 +1,159 @@
# Makefile for Apache GNUstepWeb module
# Copyright (C) 2005 Free Software Foundation, Inc.
#
# Written by: David Ayers <d.ayers@inode.at>
# Based on work by: Manuel Guesdon <mguesdon@sbuilders.com>
# Date: March 2005
#
# This file is part of the GNUstep Web Library.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
APXS:=@APXS@
SERVERAPI:=@SERVERAPI@
APRCONFIG:=@APRCONFIG@
C_CPPFLAGS=@CONFIG_CPPFLAGS@
C_LDFLAGS=@CONFIG_LDFLAGS@
# To avoid ABI (Application Binary Interface) issues
# we build all module components with APXS which should
# invoke the same compiler with the same options with
# which the Apache server was built.
# The following variables should be the basis of any
# Apache specific flags we need to build the module.
# Some are currently unused and should be removed once
# this file stabalizes.
AP_CC := $(shell ($(APXS) -q CC))
AP_CFLAGS := $(shell ($(APXS) -q CFLAGS))
AP_CFLAGS_SH := $(shell ($(APXS) -q CFLAGS_SHLIB))
AP_LDFLAGS_SH := $(shell ($(APXS) -q LDFLAGS_SHLIB))
AP_LIBS_SH := $(shell ($(APXS) -q LIBS_SHLIB))
AP_INCDIR := $(shell ($(APXS) -q INCLUDEDIR))
AP_LIBDIR := $(shell ($(APXS) -q LIBEXECDIR))
AP_SYSDIR := $(shell ($(APXS) -q SYSCONFDIR))
ifeq ($(SERVERAPI),Apache2)
APR_CFLAGS := $(shell ($(APRCONFIG) --cflags))
APR_CPPFLAGS := $(shell ($(APRCONFIG) --cppflags))
APR_INCDIR := $(shell ($(APRCONFIG) --includedir))
APR_LDFLAGS := $(shell ($(APRCONFIG) --ldflags))
APR_LIBS := $(shell ($(APRCONFIG) --libs))
ifneq ($(APR_INCDIR),)
APR_CPPFLAGS += -I$(APR_INCDIR)
endif
endif
# It is not clear, why some versions of of apxs do not
# specify -shared in AP_LDFLAGS_SH as it seems to be the
# key flag to create DSO (Dynamic Shared Objects) which
# is stated goal of apxs compilation. For now we
# simply add it if AP_LDFLAGS_SH is not set.
ifeq ($(AP_LDFLAGS_SH),)
AP_LDFLAGS_SH = -shared
endif
CC:=$(APXS) -c
# Not really sure how this variable is useful.
SRCROOT = ..
ifeq ($(MOD_CONF_DIR),)
MOD_CONF_DIR=$(AP_SYSDIR)
endif
ifeq ($(SERVERAPI),Apache2)
ADAPTOR := mod_gsweb.la
else
ADAPTOR := mod_gsweb.so
endif
MOD_CONF := mod_gsweb.conf
COMMON = $(SRCROOT)/common
GSW_CPPFLAGS = \
-D$(SERVERAPI) -DREENTRANT -DEAPI \
-I. -I$(COMMON) \
-I$(AP_INCDIR) $(APR_CPPFLAGS) \
$(C_CPPFLAGS) $(OTHER_CPPFLAGS)
GSW_CFLAGS = \
$(AP_CFLAGS) $(AP_CFLAGS_SH) \
$(APR_CFLAGS) \
$(OTHER_CFLAGS)
GSW_LDFLAGS = \
$(AP_LDFLAGS_SH) $(AP_LIBS_SH) \
$(APR_LDFLAGS) $(APR_LIBS) \
-lPropList \
$(C_LDFLAGS) $(OTHER_LDFLAGS)
# We currently include the CPPFLAGS in the CFLAGS so the
# common makefiles still work.
comma:=,
CFLAGS = $(GSW_CPPFLAGS)
CFLAGS += $(addprefix -Wc$(comma),$(GSW_CFLAGS))
LDFLAGS = $(addprefix -Wl$(comma),$(GSW_LDFLAGS))
# Declare default rule before including common.make
all:: $(ADAPTOR) $(MOD_CONF)
# Include common.make to set COMMONFILES
include $(COMMON)/common.make
# Link the final adaptor module with APXS
$(ADAPTOR): $(COMMONFILES) $(SRCROOT)/Apache/mod_gsweb.c
$(APXS) -c -o $@ $(APXS_FLAGS) $(CFLAGS) $(LDFLAGS) \
$(COMMONFILES) $(SRCROOT)/Apache/mod_gsweb.c
# Create mod_gsweb.conf file based on MOD_CONF_DIR (apxs)
$(MOD_CONF):
@echo "Creating $(MOD_CONF)" ; \
echo "# The this file is maintained by GSWeb " > $(MOD_CONF) ; \
echo "GSWeb_ConfigFilePath $(MOD_CONF_DIR)/gsweb.conf" \
>> $(MOD_CONF) ; \
echo "GSWeb_Alias /GSWeb" >> $(MOD_CONF) ; \
echo "<Location /GSWeb*>" >> $(MOD_CONF) ; \
echo " SetHandler GSWeb" >> $(MOD_CONF) ; \
echo "</Location>" >> $(MOD_CONF) ;
# Install module (via apxs) and mod_gsweb.conf file
install: $(ADAPTOR) $(MOD_CONF)
$(APXS) -i -n gsweb $(ADAPTOR)
cp $(MOD_CONF) $(MOD_CONF_DIR)
httpdconfig: $(ADAPTOR)
$(APXS) -e -a -n gsweb $(ADAPTOR)
@if ( ! grep '$(MOD_CONF)' $(AP_SYSDIR)/httpd.conf \
> /dev/null ) ; then \
echo Updating $(AP_SYSDIR)/httpd.conf ; \
echo "" >> $(AP_SYSDIR)/httpd.conf ; \
echo "# The following line was added by GSWeb " \
>> $(AP_SYSDIR)/httpd.conf ; \
echo "Include $(AP_SYSDIR)/$(MOD_CONF)" \
>> $(AP_SYSDIR)/httpd.conf ; \
fi
clean:
rm -f $(ADAPTOR) $(MOD_CONF) core *~
rm -rf .libs ../common/.libs
rm -f *.o *.la *.lo *.slo
rm -f ../common/*.o ../common/*.la ../common/*.lo ../common/*.slo
distclean: clean
rm -rf config.log config.status GNUmakefile autom4te.cache

View file

@ -1,3 +1,138 @@
Installation
************
Insure that the development packages of the prerequisites
- libPropList-dev
- apache(2)-dev)
are installed. This includes the apxs tool and for Apache 2.x
also the apr-config tool.
The canonical form to build the adaptor is:
./configure
make
make install
You may want to use on of the following configure options:
--with-apxs=[FILE|PATH]
... to find the apxs tool to build the module. The default is apxs
but you may want to specify apxs2 for systems that have multiple
verions of apache installed. Or you may want to explicitly specify
the path of the tool.
--with-server-api=[Apache|Apache2]
... to explicitly specify the API as Apache or Apache2. The
default is determined by the output of running apxs -q TARGET
with the -v option. This output is grepped for "Apache/1"
and will set the API to Apache if found otherwise it will
assume Apache2. This option will be replaced dedicated
feature tests in the future.
--with-apr-config=[FILE|PATH]
... to find the apr-config tool for the Apaceh2 API. This is only
evaluated for the Apache2 API. The apr-config tool is used to
determine further compile and linker flags.
Configuration
*************
To configure your Apache server to use the gsweb module you have the
following options:
- run 'make httpdconfig' which will:
1. use the apxs -a option to edit the httpd.conf file
to add the LoadModule and AddModule directives
2. append an Include directive to the httpd.conf file
which includes the mod_gsweb.conf file generated during the build
and installed during module installation into apxs -q SYSCONFDIR.
OR
- Manually configure you httpd.conf (or correponding configure) by
adding the following lines in the appropriate places.
LoadModule gsweb_module [Path to APXS -q LIBEXECDIR]/mod_gsweb.so
AddModule mod_gsweb.c
Then you should include the mod_gsweb.conf configuration file
generated during the build:
Include /etc/httpd/mod_gsweb.conf
This file should contain the following GSWeb specific declarations:
GSWeb_ConfigFilePath /etc/httpd/conf/gsweb.conf
# The path to the configuration file used by the module
GSWeb_Alias /GSWeb
<Location /GSWeb*>
SetHandler GSWeb
</Location>
# If you use virtual hosts (Apache in localhost does not requiered them),
# you can Include this file within the virtual host definitions.
Then, create the file configuration file /etc/httpd/conf/gsweb.conf
which contains parameters for GNUstepWeb Applications:
The format is (there is an example for values below):
{
canDumpStatus = YES;
//YES if server can display status (URL: /GSWeb/status)
GSWExtensionsFrameworkWebServerResources =
"/GSW/GSWExtensions/WebServerResources";
//URL of GSWExtensions Framework WebServerResources directory
applications = {
ApplicationName = {
//URL of GSWExtensions Framework WebServerResources directory.
//It overides Global parameter
GSWExtensionsFrameworkWebServerResources =
"/GSW/GSWExtensions/WebServerResources";
//YES to say that this application can be listed when the
//adaptor don't find an application
canDump = YES;
instances = {
InstanceNumber = {
host = IPAdressOfTheComputerOnWhichRunTheApplication;
port = ThePortListenByTheApplication;
parameters = { transport= socket; };
}
};
};
};
};
Example values for a localhost use:
{
canDumpStatus = YES;
GSWExtensionsFrameworkWebServerResources =
"/GSW/GSWExtensions/WebServerResources";
applications = {
MyApp = {
canDump = YES;
instances = {
1 = {
host = 127.0.0.1;
port = 9001;
parameters = { transport= socket; };
};
};
};
};
};
Now, develop an application and run it !
Deprecated Documentation
************************
You have to do:
For Apache 1.x:

1410
GSWAdaptors/Apache/config.guess vendored Executable file

File diff suppressed because it is too large Load diff

1510
GSWAdaptors/Apache/config.sub vendored Executable file

File diff suppressed because it is too large Load diff

4545
GSWAdaptors/Apache/configure vendored Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,140 @@
# configure.ac for GNUstepWeb library
# Process this file with autoconf to produce a configure script.
#
# Copyright (C) 2005 Free Software Foundation, Inc.
#
# Author: David Ayers <d.ayers@inode.at>
#
#
# This file is part of the GNUstepWeb library
#
# This library is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
#
# This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with program; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
#
AC_INIT
AC_CONFIG_SRCDIR([mod_gsweb.c])
AC_CANONICAL_TARGET([])
BIN_PATH=$PATH:/usr/local/sbin:/usr/apache/sbin:/usr/sbin:/usr/pkg/sbin
case "$target_os" in
freebsd* | openbsd* )
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib";;
netbsd*) CPPFLAGS="$CPPFLAGS -I/usr/pkg/include"
LDFLAGS="$LDFLAGS -Wl,-R/usr/pkg/lib -L/usr/pkg/lib";;
esac
# Some distributions associate libPropList with WindowMaker and therefor
# place its files in X specific subdirectories. Therefore we search these
# directories for headers and libraries when available.
AC_PATH_X
if test "${have_x}" == yes; then
CPPFLAGS="$CPPFLAGS -I${ac_x_includes}"
LDFLAGS="$LDFLAGS -L${ac_x_libraries}"
else
# We will now really try to just make this work here by testing
# certain common paths explicitly.
AC_CHECK_FILE( /usr/X11/include/proplist.h,
[ CPPFLAGS="$CPPFLAGS -I/usr/X11/include" ], [])
AC_CHECK_FILE( /usr/X11/lib/libPropList.so,
[ LDFLAGS="$LDFLAGS -L/usr/X11/lib" ], [])
fi
AC_CHECK_HEADERS(proplist.h, [],
[ AC_MSG_ERROR([ proplist.h not found. Set CPPFLAGS to add -I directives. ])])
AC_CHECK_LIB(PropList, PLGetProplistWithDescription, [],
[ AC_MSG_ERROR([ libPropList not found. Set LDFLAGS to add -L directives. ])])
AC_ARG_WITH(apxs,
[[ --with-apxs=[FILE|PATH] Path to apxs tool. Default is apxs.]],
APXS_OPT="$withval", APXS_OPT=default)
AC_ARG_WITH(apr-config,
[[ --with-apr-config=[FILE|PATH] Path to apr-config tool. Default is apr-config.]],
APRCONFIG_NAME="$withval", APRCONFIG_NAME=apr-config)
# Set APXS_NAME
# Default to apxs but remeber in APXS_OPT that no option was given.
if test "$APXS_OPT" = "default" ; then
APXS_NAME=apxs
else
APXS_NAME="$APXS_OPT"
fi
# If the user specified an executable, use it. Otherwise search
# for a usable apxs executable.
if test -x "$APXS_NAME"; then
APXS=APXS_NAME
else
AC_PATH_PROG(APXS, "$APXS_NAME", "no", $BIN_PATH)
if test "$APXS_OPT" = "default" ; then
if test "$APXS" = "no" -o "$APXS" = "" ; then
AC_PATH_PROG(APXS2, apxs2, "no", $BIN_PATH)
APXS="$APXS2"
fi
fi
fi
if test "$APXS" = "no" -o "$APXS" = ""; then
AC_MSG_ERROR([ apxs tool not found. Check path or use --with-apxs and specify a full path to the apxs tool. ])
fi
# This is currently testing for SERVERAPI which
# currently should be Apache for 1.3 and Apache2 for 2
# In the future it would be better to test for
# the actual features which we are using and
# generate a config.h with the correct defines.
AC_ARG_WITH(server-api,
[[ --with-server-api=[Apache|Apache2] Specify SERVERAPI explicitly.]],
server_api="$withval", server_api="no")
if test ${server_api} != "no"; then
SERVERAPI="${server_api}"
else
APXS_TARGET=`$APXS -q TARGET`
AC_PATH_PROG(APACHE, "$APXS_TARGET", "no", $BIN_PATH)
if ( $APACHE -v | grep "Apache@<:@^@<:@:space:@:>@@:>@*/1." > /dev/null 2>&1) ; then
SERVERAPI=Apache
elif ( $APACHE -v | grep "Apache@<:@^@<:@:space:@:>@@:>@*/2." > /dev/null 2>&1) ; then
SERVERAPI=Apache2
else
SERVERAPI=unknown
fi
fi
AC_MSG_CHECKING(server API)
AC_MSG_RESULT($SERVERAPI)
if test "$SERVERAPI" = "unknown"; then
AC_MSG_ERROR([ Could not determine Apache API version. Use --with-server-api and specify either Apache or Apache2. ])
fi
if test ${SERVERAPI} == "Apache2"; then
AC_PATH_PROG(APRCONFIG, "$APRCONFIG_NAME", "no", $BIN_PATH)
fi
CONFIG_CPPFLAGS="$CPPFLAGS"
CONFIG_LDFLAGS="$LDFLAGS"
AC_SUBST(APXS)
AC_SUBST(APRCONFIG)
AC_SUBST(SERVERAPI)
AC_SUBST(CONFIG_CPPFLAGS)
AC_SUBST(CONFIG_LDFLAGS)
AC_CONFIG_FILES([GNUmakefile])
AC_OUTPUT

295
GSWAdaptors/Apache/install-sh Executable file
View file

@ -0,0 +1,295 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2003-09-24.23
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=
transform_arg=
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
or: $0 -d DIR1 DIR2...
In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
In the second, create the directory path DIR.
Options:
-b=TRANSFORMBASENAME
-c copy source (using $cpprog) instead of moving (using $mvprog).
-d create directories instead of installing files.
-g GROUP $chgrp installed files to GROUP.
-m MODE $chmod installed files to MODE.
-o USER $chown installed files to USER.
-s strip installed files (using $stripprog).
-t=TRANSFORM
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test -n "$1"; do
case $1 in
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
-c) instcmd=$cpprog
shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit 0;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
--version) echo "$0 $scriptversion"; exit 0;;
*) if test -z "$src"; then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if test -z "$src"; then
echo "$0: no input file specified." >&2
exit 1
fi
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
src=
if test -d "$dst"; then
instcmd=:
chmodcmd=
else
instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst"; then
echo "$0: no destination specified." >&2
exit 1
fi
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
dst=$dst/`basename "$src"`
fi
fi
# This sed command emulates the dirname command.
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# Skip lots of stat calls in the usual case.
if test ! -d "$dstdir"; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
pathcomp=
while test $# -ne 0 ; do
pathcomp=$pathcomp$1
shift
test -d "$pathcomp" || $mkdirprog "$pathcomp"
pathcomp=$pathcomp/
done
fi
if test -n "$dir_arg"; then
$doit $instcmd "$dst" \
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
else
# If we're going to rename the final executable, determine the name now.
if test -z "$transformarg"; then
dstfile=`basename "$dst"`
else
dstfile=`basename "$dst" $transformbasename \
| sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename.
test -z "$dstfile" && dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
# Move or copy the file name to the temp name
$doit $instcmd "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
# Now remove or move aside any old file at destination location. We
# try this two ways since rm can't unlink itself on some systems and
# the destination file might be busy for other reasons. In this case,
# the final cleanup might fail but the new file should still install
# successfully.
{
if test -f "$dstdir/$dstfile"; then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit
}
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View file

@ -55,7 +55,7 @@
// Module Definition:
// Declare the module
module GSWeb_Module;
module gsweb_module;
typedef struct _GSWeb_Config
@ -71,7 +71,7 @@ typedef struct _GSWeb_Config
* Declare ourselves so the configuration routines can find and know us.
* We'll fill it in at the end of the module.
*/
module AP_MODULE_DECLARE_DATA GSWeb_Module;
module AP_MODULE_DECLARE_DATA gsweb_module;
#include <ap_compat.h>
#include <apr_pools.h>
@ -130,7 +130,7 @@ static GSWeb_Config *
GSWeb_GetServerConfig(server_rec *p_pServerRec)
{
return (GSWeb_Config *)ap_get_module_config(p_pServerRec->module_config,
&GSWeb_Module);
&gsweb_module);
}
@ -219,7 +219,7 @@ GSWeb_SetDocRoot(cmd_parms *p_pCmdParams,
GSWDebugLog(pServerRec,"Start GSWeb_SetDocRoot");
pConfig=(GSWeb_Config *)ap_get_module_config(pServerRec->module_config,
&GSWeb_Module);
&gsweb_module);
pConfig->pszRoot = p_pszArg;
GSWDebugLog(pServerRec,"Start GSWeb_SetDocRoot");
return NULL;
@ -902,7 +902,7 @@ static const command_rec GSWeb_Commands[] =
{NULL}
};
module AP_MODULE_DECLARE_DATA GSWeb_Module =
module AP_MODULE_DECLARE_DATA gsweb_module =
{
STANDARD20_MODULE_STUFF,
NULL,//x_create_dir_config, /* per-directory config creator */
@ -960,7 +960,7 @@ handler_rec GSWeb_Handlers[] =
* Module definition for configuration. If a particular callback is not
* needed, replace its routine name below with the word NULL.
*/
module GSWeb_Module =
module gsweb_module =
{
STANDARD_MODULE_STUFF,
GSWeb_Init, // Init

83
INSTALL
View file

@ -46,12 +46,7 @@ Installing `gsweb'
Go in the gsweb folder. make and make install.
4) Apaches modules for GNUstepWeb
Still in the gsweb folder there is a GSWAdaptors/Apache folder.
Change to that directory. 'su' to root and make. There's no make
install. Instead you must copy the mod_gsweb.so module in you
Apache libexec directory (something like /usr/apache/libexec).
At this point everything is done, still remains the Apache configuration:
Please read GSWAdaptors/Apache/INSTALL
If you do not want the extensions you can compile with
ADDITIONAL_OBJCFLAGS += -DNOEXTENSIONS
@ -61,82 +56,6 @@ If you want to use TCSimpleDB you have to add
ADDITIONAL_OBJCFLAGS += -DTCSDB
in config.mak
Configurating Apache:
=====================
In Apache httpd.conf file, add thoses lines:
LoadModule GSWeb_Module libexec/mod_gsweb.so
AddModule mod_gsweb.c
And this one to specify the configuration file
(for exemple /etc/httpd/conf/gsweb.conf)
GSWeb_ConfigFilePath /etc/httpd/conf/gsweb.conf
If you use virtual hosts (Apache in localhost does not requiered them),
add the following lines:
<Location /GSWeb*>
SetHandler GSWeb
</Location>
Then, create the file configuration file
(for exemple /etc/httpd/conf/gsweb.conf)
which contains parameters for GNUstepWeb Applications:
The format is(there is an example for values below):
{
canDumpStatus = YES;
//YES if server can display status (URL: /GSWeb/status)
GSWExtensionsFrameworkWebServerResources =
"/GSW/GSWExtensions/WebServerResources";
//URL of GSWExtensions Framework WebServerResources directory
applications = {
ApplicationName = {
//URL of GSWExtensions Framework WebServerResources directory.
//It overides Global parameter
GSWExtensionsFrameworkWebServerResources =
"/GSW/GSWExtensions/WebServerResources";
//YES to say that this application can be listed when the
//adaptor don't find an application
canDump = YES;
instances = {
InstanceNumber = {
host = IPAdressOfTheComputerOnWhichRunTheApplication;
port = ThePortListenByTheApplication;
parameters = { transport= socket; };
}
};
};
};
}
Example values for a localhost use:
{
canDumpStatus = YES;
GSWExtensionsFrameworkWebServerResources =
"/GSW/GSWExtensions/WebServerResources";
applications = {
MyApp = {
canDump = YES;
instances = {
1 = {
host = 127.0.0.1;
port = 9001;
parameters = { transport= socket; };
};
};
};
};
}
Now, develop an application and run it !