]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Remove mod_dav_lock, which was useful only to provide drop-in
authorJoe Orton <jorton@apache.org>
Fri, 15 May 2026 10:31:10 +0000 (10:31 +0000)
committerJoe Orton <jorton@apache.org>
Fri, 15 May 2026 10:31:10 +0000 (10:31 +0000)
locking for mod_dav_svn from Apache Subversion older than 1.2.0.
mod_dav_svn from 1.2.0 onwards provides a locking mechanism.

Remove mod_dav_lock from cmake and Windows build system:
* CMakeLists.txt: Remove mod_dav_lock from MODULE_LIST,
  mod_dav_lock_extra_sources and mod_dav_lock_extra_libs.
* Apache.dsw, Apache-apr2.dsw: Remove mod_dav_lock project
  and dependency entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Github: closes #646

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1934214 13f79535-47bb-0310-9956-ffa450edef68

14 files changed:
Apache-apr2.dsw
Apache.dsw
CMakeLists.txt
docs/manual/mod/mod_dav_lock.xml [deleted file]
docs/manual/mod/mod_dav_lock.xml.fr [deleted file]
docs/manual/mod/mod_dav_lock.xml.ja [deleted file]
docs/manual/mod/mod_dav_lock.xml.meta [deleted file]
modules/dav/lock/Makefile.in [deleted file]
modules/dav/lock/NWGNUmakefile [deleted file]
modules/dav/lock/config6.m4 [deleted file]
modules/dav/lock/locks.c [deleted file]
modules/dav/lock/locks.h [deleted file]
modules/dav/lock/mod_dav_lock.c [deleted file]
modules/dav/lock/mod_dav_lock.dsp [deleted file]

index 9a5419c3210ba186462ca35fe281c2256346ec7e..46e7a480400d73cef3e2486e8d465b713567a57e 100644 (file)
@@ -186,9 +186,6 @@ Package=<4>
     Project_Dep_Name mod_dav_fs
     End Project Dependency
     Begin Project Dependency
-    Project_Dep_Name mod_dav_lock
-    End Project Dependency
-    Begin Project Dependency
     Project_Dep_Name mod_dir
     End Project Dependency
     Begin Project Dependency
@@ -1507,27 +1504,6 @@ Package=<4>
 
 ###############################################################################
 
-Project: "mod_dav_lock"=.\modules\dav\lock\mod_dav_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libapr
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libhttpd
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name mod_dav
-    End Project Dependency
-}}}
-
-###############################################################################
-
 Project: "mod_dbd"=.\modules\database\mod_dbd.dsp - Package Owner=<4>
 
 Package=<5>
index f49ff5ef6021657790e7e4069898b1f750cded34..499f7e8a9088fb5da5d9fed899ba1950c731afa3 100644 (file)
@@ -201,9 +201,6 @@ Package=<4>
     Project_Dep_Name mod_dav_fs
     End Project Dependency
     Begin Project Dependency
-    Project_Dep_Name mod_dav_lock
-    End Project Dependency
-    Begin Project Dependency
     Project_Dep_Name mod_dir
     End Project Dependency
     Begin Project Dependency
@@ -1792,30 +1789,6 @@ Package=<4>
 
 ###############################################################################
 
-Project: "mod_dav_lock"=.\modules\dav\lock\mod_dav_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name libapr
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libaprutil
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name libhttpd
-    End Project Dependency
-    Begin Project Dependency
-    Project_Dep_Name mod_dav
-    End Project Dependency
-}}}
-
-###############################################################################
-
 Project: "mod_dbd"=.\modules\database\mod_dbd.dsp - Package Owner=<4>
 
 Package=<5>
index 306a2ae55f4aa62deb7a5d521b24c9449d912df9..46811e0d87d76a6da9a03fb08e1ac27cf1921f00 100644 (file)
@@ -337,7 +337,6 @@ SET(MODULE_LIST
   "modules/core/mod_watchdog+I+Watchdog module"
   "modules/database/mod_dbd+I+Apache DBD Framework"
   "modules/dav/fs/mod_dav_fs+I+DAV provider for the filesystem."
-  "modules/dav/lock/mod_dav_lock+I+DAV provider for generic locking"
   "modules/dav/main/mod_dav+I+WebDAV protocol handling."
   "modules/debugging/mod_bucketeer+O+buckets manipulation filter.  Useful only for developers and testing purposes."
   "modules/debugging/mod_dumpio+I+I/O dump filter"
@@ -460,8 +459,6 @@ SET(mod_dav_fs_extra_sources
   modules/dav/fs/quota.c             modules/dav/fs/repos.c
 )
 SET(mod_dav_fs_extra_libs            mod_dav)
-SET(mod_dav_lock_extra_sources       modules/dav/lock/locks.c)
-SET(mod_dav_lock_extra_libs          mod_dav)
 SET(mod_dbd_extra_defines            DBD_DECLARE_EXPORT)
 SET(mod_deflate_requires             ZLIB_FOUND)
 IF(ZLIB_FOUND)
diff --git a/docs/manual/mod/mod_dav_lock.xml b/docs/manual/mod/mod_dav_lock.xml
deleted file mode 100644 (file)
index 43c6c99..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
-<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
-<!-- $LastChangedRevision$ -->
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-
-<modulesynopsis metafile="mod_dav_lock.xml.meta">
-
-<name>mod_dav_lock</name>
-<description>Generic locking module for <module>mod_dav</module></description>
-<status>Extension</status>
-<sourcefile>mod_dav_lock.c</sourcefile>
-<identifier>dav_lock_module</identifier>
-
-<summary>
-    <p>This module implements a generic locking API which can be used by any
-    backend provider of <module>mod_dav</module>. It <em>requires</em> at least
-    the service of <module>mod_dav</module>. But without a backend provider
-    which makes use of it, it's useless and should not be loaded into the
-    server. A sample backend module which actually utilizes
-    <module>mod_dav_lock</module> is <a href="http://subversion.apache.org/"
-    >mod_dav_svn</a>, the subversion provider module.</p>
-
-    <p>Note that <module>mod_dav_fs</module> does <em>not</em> need this
-    generic locking module, because it uses its own more specialized
-    version.</p>
-
-    <p>In order to make <module>mod_dav_lock</module> functional, you just have
-    to specify the location of the lock database using the <directive
-    module="mod_dav_lock">DavGenericLockDB</directive> directive described
-    below.</p>
-
-    <note><title>Developer's Note</title>
-      <p>In order to retrieve the pointer to the locking provider function, you
-      have to use the <code>ap_lookup_provider</code> API with the arguments
-      <code>dav-lock</code>, <code>generic</code>, and <code>0</code>.</p>
-    </note>
-</summary>
-<seealso><module>mod_dav</module></seealso>
-
-<directivesynopsis>
-<name>DavGenericLockDB</name>
-<description>Location of the DAV lock database</description>
-<syntax>DavGenericLockDB <var>file-path</var></syntax>
-<contextlist><context>server config</context><context>virtual host</context>
-<context>directory</context>
-</contextlist>
-
-<usage>
-    <p>Use the <directive>DavGenericLockDB</directive> directive to specify
-    the full path to the lock database, excluding an extension. If
-    the path is not absolute, it will be interpreted relative to <directive
-    module="core">ServerRoot</directive>. The implementation of
-    <module>mod_dav_lock</module> uses a SDBM database to track user
-    locks.</p>
-
-    <example><title>Example</title>
-    <highlight language="config">
-      DavGenericLockDB var/DavLock
-      </highlight>
-    </example>
-
-    <p>The directory containing the lock database file must be
-    writable by the <directive module="mod_unixd">User</directive>
-    and <directive module="mod_unixd" >Group</directive> under which
-    Apache is running.  For security reasons, you should create a
-    directory for this purpose rather than changing the permissions on
-    an existing directory.  In the above example, Apache will create
-    files in the <code>var/</code> directory under the <directive
-    module="core">ServerRoot</directive> with the base filename
-    <code>DavLock</code> and an extension added by the server.</p>
-
-</usage>
-</directivesynopsis>
-
-</modulesynopsis>
-
diff --git a/docs/manual/mod/mod_dav_lock.xml.fr b/docs/manual/mod/mod_dav_lock.xml.fr
deleted file mode 100644 (file)
index 8871df4..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
-<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1437836 -->
-<!-- French translation : Lucien GENTIS -->
-<!-- Reviewed by : Vincent Deffontaines -->
-
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-
-<modulesynopsis metafile="mod_dav_lock.xml.meta">
-
-<name>mod_dav_lock</name>
-<description>Module de verrouillage générique pour
-<module>mod_dav</module></description>
-<status>Extension</status>
-<sourcefile>mod_dav_lock.c</sourcefile>
-<identifier>dav_lock_module</identifier>
-
-<summary>
-    <p>ce module implémente une API de verrouillage générique que tout
-    fournisseur support de <module>mod_dav</module> peut utiliser. Son
-    activation nécessite l'utilisation de <module>mod_dav</module>. Mais
-    sans fournisseur support pour l'utiliser, il n'est d'aucun service
-    et ne doit pas être chargé dans le serveur. <a
-    href="http://subversion.apache.org/">mod_dav_svn</a>, le module qui
-    implémente le fournisseur subversion, est un exemple
-    de module de support qui utilise effectivement
-    <module>mod_dav_lock</module>.</p>
-
-    <p>Notez que <module>mod_dav_fs</module> n'a <em>pas</em> besoin de
-    ce module de verrouillage générique, car il utilise sa propre
-    version plus spécifique.</p>
-
-    <p>Pour que <module>mod_dav_lock</module> puisse fonctionner, il
-    vous suffit de spécifier le chemin de la base de données des verrous
-    à l'aide de la directive <directive
-    module="mod_dav_lock">DavGenericLockDB</directive> décrite
-    ci-dessous.</p>
-
-    <note><title>Note du développeur</title>
-      <p>Pour déterminer le pointeur de la fonction du fournisseur de
-      verrouillage, vous devez utiliser l'API
-      <code>ap_lookup_provider</code> avec les arguments
-      <code>dav-lock</code>, <code>generic</code> et <code>0</code>.</p>
-    </note>
-</summary>
-<seealso><module>mod_dav</module></seealso>
-
-<directivesynopsis>
-<name>DavGenericLockDB</name>
-<description>Chemin de la base de données des verrous DAV</description>
-<syntax>DavGenericLockDB <var>chemin fichier</var></syntax>
-<contextlist><context>server config</context><context>virtual host</context>
-<context>directory</context>
-</contextlist>
-
-<usage>
-    <p>La directive <directive>DavLockDB</directive> spécifie
-    le chemin complet de la base de données des verrous, sans extension.
-    Si le chemin n'est pas absolu, il sera considéré comme relatif au
-    répertoire défini par la directive <directive
-    module="core">ServerRoot</directive>. L'implémentation de
-    <module>mod_dav_lock</module> utilise une base de données SDBM pour
-    surveiller les verrous utilisateurs.</p>
-
-    <example><title>Exemple</title>
-    <highlight language="config">
-      DavGenericLockDB var/DavLock
-      </highlight>
-    </example>
-
-    <p>Les utilisateur et groupe sous lesquels Apache s'exécute et qui
-    sont respectivement définis par les directives <directive
-    module="mod_unixd">User</directive> et <directive
-    module="mod_unixd">Group</directive> doivent pouvoir écrire dans le
-    répertoire qui contient le fichier de la base de données des
-    verrous. Pour des raisons de sécurité, il est recommandé de créer un
-    répertoire dédié à la base de données des verrous, plutôt que de
-    modifier les permissions d'un répertoire existant. Dans l'exemple
-    ci-dessus, Apache va créer des fichiers dans le répertoire
-    <code>var/</code>, lui-même sous-répertoire du répertoire défini par
-    la directive <directive
-    module="core">ServerRoot</directive>, avec le nom de base
-    <code>DavLock</code> suivi d'une extension choisie par le
-    serveur.</p>
-
-</usage>
-</directivesynopsis>
-
-</modulesynopsis>
-
diff --git a/docs/manual/mod/mod_dav_lock.xml.ja b/docs/manual/mod/mod_dav_lock.xml.ja
deleted file mode 100644 (file)
index f7a2168..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
-<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 1437836 -->
-
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You 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.
--->
-
-<modulesynopsis metafile="mod_dav_lock.xml.meta">
-
-<name>mod_dav_lock</name> 
-<description><module>mod_dav</module> 用の汎用ロックモジュール</description>
-<status>Extension</status>
-<sourcefile>mod_dav_lock.c</sourcefile>
-<identifier>dav_lock_module</identifier>
-
-<summary>
-    <p>このモジュールは <module>mod_dav</module> のどのバックエンド
-    からでも使える汎用ロック API を提供します。
-    使用には最低限 <module>mod_dav</module>
-    を必要としますが、これを利用するバックエンドが存在しないと役に立たないので、
-    そのような場合はサーバに読み込むべきではありません。
-    <module>mod_dav_lock</module>
-    を実際に利用するバックエンドモジュールの例としては subversion
-    プロバイダモジュールの <a href="http://subversion.apache.org/"
-    >mod_dav_svn</a> があります。</p>
-
-    <p><module>mod_dav_fs</module> は特化された専用のバージョンを
-    使うため、この汎用モジュールは<em>必要ない</em>ことに注意して
-    ください。</p>
-
-    <p><module>mod_dav_lock</module> を機能させるには、
-    以下で説明されている <directive
-    module="mod_dav_lock">DavGenericLockDB</directive> を使って
-    ロックデータベースの場所を指定するだけです。</p>
-
-    <note><title>開発者向けのメモ</title>
-      <p>ロックを提供している関数へのポインタを取得するためには、
-      <code>ap_lookup_provider</code> API を、引数 <code>dav-lock</code>,
-      <code>generic</code>, <code>0</code> を指定して使う必要が
-      あります。</p>
-    </note>
-</summary>
-<seealso><module>mod_dav</module></seealso>
-
-<directivesynopsis>
-<name>DavGenericLockDB</name>
-<description>DAV ロックデータベースの場所</description>
-<syntax>DavGenericLockDB <var>file-path</var></syntax>
-<contextlist><context>server config</context><context>virtual host</context>
-<context>directory</context>
-</contextlist>
-
-<usage>
-    <p><directive>DavGenericLockDB</directive> ディレクティブを
-    使って、拡張子を除いたロックデータベースへのフルパスを
-    指定します。絶対パスでないときは <directive
-    module="core">ServerRoot</directive> からの相対パスとして
-    扱われます。<module>mod_dav_lock</module> の実装ではユーザの
-    ロックを追跡するのに SDBM データベースを使います。</p>
-
-    <example><title>例</title>
-    <highlight language="config">
-      DavGenericLockDB var/DavLock
-      </highlight>
-    </example>
-
-    <p>ロックデータベースファイルのあるディレクトリは
-    Apache が実行されている <directive module="mod_unixd">User</directive>
-    と <directive module="mod_unixd" >Group</directive> によって
-    書き込み可能でなければなりません。セキュリティ上の理由から、
-    既存のディレクトリのパーミッションを変更するのではなく、
-    専用のディレクトリを作るのが良いでしょう。上の例では、
-    Apache は <directive
-    module="core">ServerRoot</directive> の下の <code>var/</code>
-    ディレクトリに、ファイル名の本体が <code>DavLock</code> で
-    サーバが追加する拡張子を持つファイルを作成します。</p>
-
-</usage>
-</directivesynopsis>
-
-</modulesynopsis>
-
diff --git a/docs/manual/mod/mod_dav_lock.xml.meta b/docs/manual/mod/mod_dav_lock.xml.meta
deleted file mode 100644 (file)
index 00ea5a1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!-- GENERATED FROM XML: DO NOT EDIT -->
-
-<metafile reference="mod_dav_lock.xml">
-  <basename>mod_dav_lock</basename>
-  <path>/mod/</path>
-  <relpath>..</relpath>
-
-  <variants>
-    <variant>en</variant>
-    <variant>fr</variant>
-    <variant>ja</variant>
-  </variants>
-</metafile>
diff --git a/modules/dav/lock/Makefile.in b/modules/dav/lock/Makefile.in
deleted file mode 100644 (file)
index 7c5c149..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# a modules Makefile has no explicit targets -- they will be defined by
-# whatever modules are enabled. just grab special.mk to deal with this.
-include $(top_srcdir)/build/special.mk
diff --git a/modules/dav/lock/NWGNUmakefile b/modules/dav/lock/NWGNUmakefile
deleted file mode 100644 (file)
index a121f10..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-#
-# Declare the sub-directories to be built here
-#
-
-SUBDIRS = \
-       $(EOLIST)
-
-#
-# Get the 'head' of the build environment.  This includes default targets and
-# paths to tools
-#
-
-include $(AP_WORK)/build/NWGNUhead.inc
-
-#
-# build this level's files
-
-#
-# Make sure all needed macro's are defined
-#
-
-#
-# These directories will be at the beginning of the include list, followed by
-# INCDIRS
-#
-XINCDIRS       += \
-                       $(APR)/include \
-                       $(APRUTIL)/include \
-                       $(SRC)/include \
-                       $(SERVER)/mpm/netware \
-                       $(STDMOD)/dav/main \
-                       $(NWOS) \
-                       $(EOLIST)
-
-#
-# These flags will come after CFLAGS
-#
-XCFLAGS                += \
-                       $(EOLIST)
-
-#
-# These defines will come after DEFINES
-#
-XDEFINES       += \
-                       $(EOLIST)
-
-#
-# These flags will be added to the link.opt file
-#
-XLFLAGS                += \
-                       $(EOLIST)
-
-#
-# These values will be appended to the correct variables based on the value of
-# RELEASE
-#
-ifeq "$(RELEASE)" "debug"
-XINCDIRS       += \
-                       $(EOLIST)
-
-XCFLAGS                += \
-                       $(EOLIST)
-
-XDEFINES       += \
-                       $(EOLIST)
-
-XLFLAGS                += \
-                       $(EOLIST)
-endif
-
-ifeq "$(RELEASE)" "noopt"
-XINCDIRS       += \
-                       $(EOLIST)
-
-XCFLAGS                += \
-                       $(EOLIST)
-
-XDEFINES       += \
-                       $(EOLIST)
-
-XLFLAGS                += \
-                       $(EOLIST)
-endif
-
-ifeq "$(RELEASE)" "release"
-XINCDIRS       += \
-                       $(EOLIST)
-
-XCFLAGS                += \
-                       $(EOLIST)
-
-XDEFINES       += \
-                       $(EOLIST)
-
-XLFLAGS                += \
-                       $(EOLIST)
-endif
-
-#
-# These are used by the link target if an NLM is being generated
-# This is used by the link 'name' directive to name the nlm.  If left blank
-# TARGET_nlm (see below) will be used.
-#
-NLM_NAME       = moddavlk
-
-#
-# This is used by the link '-desc ' directive.
-# If left blank, NLM_NAME will be used.
-#
-NLM_DESCRIPTION        = Apache $(VERSION_STR) DAV Database Lock Sub-Module
-
-#
-# This is used by the '-threadname' directive.  If left blank,
-# NLM_NAME Thread will be used.
-#
-NLM_THREAD_NAME        = $(NLM_NAME) Thread
-
-#
-# If this is specified, it will override VERSION value in
-# $(AP_WORK)/build/NWGNUenvironment.inc
-#
-NLM_VERSION    =
-
-#
-# If this is specified, it will override the default of 64K
-#
-NLM_STACK_SIZE = 65536
-
-
-#
-# If this is specified it will be used by the link '-entry' directive
-#
-NLM_ENTRY_SYM  =
-
-#
-# If this is specified it will be used by the link '-exit' directive
-#
-NLM_EXIT_SYM   =
-
-#
-# If this is specified it will be used by the link '-check' directive
-#
-NLM_CHECK_SYM  =
-
-#
-# If this is specified it will be used by the link '-flags' directive
-#
-NLM_FLAGS      =
-
-#
-# Declare all target files (you must add your files here)
-#
-
-#
-# If there is an NLM target, put it here
-#
-TARGET_nlm = \
-       $(OBJDIR)/$(NLM_NAME).nlm \
-       $(EOLIST)
-
-#
-# If there is an LIB target, put it here
-#
-TARGET_lib = \
-       $(EOLIST)
-
-#
-# These are the OBJ files needed to create the NLM target above.
-# Paths must all use the '/' character
-#
-FILES_nlm_objs = \
-       $(OBJDIR)/mod_dav_lock.o \
-       $(OBJDIR)/locks.o \
-       $(EOLIST)
-
-#
-# These are the LIB files needed to create the NLM target above.
-# These will be added as a library command in the link.opt file.
-#
-FILES_nlm_libs = \
-       $(PRELUDE) \
-       $(EOLIST)
-
-#
-# These are the modules that the above NLM target depends on to load.
-# These will be added as a module command in the link.opt file.
-#
-FILES_nlm_modules = \
-       Apache2 \
-       Libc \
-       mod_dav \
-       $(EOLIST)
-
-#
-# If the nlm has a msg file, put it's path here
-#
-FILE_nlm_msg =
-
-#
-# If the nlm has a hlp file put it's path here
-#
-FILE_nlm_hlp =
-
-#
-# If this is specified, it will override $(NWOS)\copyright.txt.
-#
-FILE_nlm_copyright =
-
-#
-# Any additional imports go here
-#
-FILES_nlm_Ximports = \
-       @libc.imp \
-       @aprlib.imp \
-       @httpd.imp \
-       @../main/dav.imp \
-       $(EOLIST)
-
-#
-# Any symbols exported to here
-#
-FILES_nlm_exports = \
-       dav_lock_module \
-       $(EOLIST)
-
-#
-# These are the OBJ files needed to create the LIB target above.
-# Paths must all use the '/' character
-#
-FILES_lib_objs = \
-       $(EOLIST)
-
-#
-# implement targets and dependencies (leave this section alone)
-#
-
-libs :: $(OBJDIR) $(TARGET_lib)
-
-nlms :: libs $(TARGET_nlm)
-
-#
-# Updated this target to create necessary directories and copy files to the
-# correct place.  (See $(AP_WORK)/build/NWGNUhead.inc for examples)
-#
-install :: nlms FORCE
-       $(call COPY,$(OBJDIR)/*.nlm, $(INSTALLBASE)/modules/)
-
-#
-# Any specialized rules here
-#
-
-#
-# Include the 'tail' makefile that has targets that depend on variables defined
-# in this makefile
-#
-
-include $(APBUILD)/NWGNUtail.inc
-
-
diff --git a/modules/dav/lock/config6.m4 b/modules/dav/lock/config6.m4
deleted file mode 100644 (file)
index 02a05e5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-dnl modules enabled in this directory by default
-
-APACHE_MODPATH_INIT(dav/lock)
-
-dav_lock_objects="mod_dav_lock.lo locks.lo"
-
-case "$host" in
-  *os2*)
-    # OS/2 DLLs must resolve all symbols at build time
-    # and we need some from main DAV module
-    dav_lock_objects="$dav_lock_objects ../main/mod_dav.la"
-    ;;
-esac
-
-APACHE_MODULE(dav_lock, DAV provider for generic locking, $dav_lock_objects, ,,,dav)
-
-APACHE_MODPATH_FINISH
diff --git a/modules/dav/lock/locks.c b/modules/dav/lock/locks.c
deleted file mode 100644 (file)
index b36f846..0000000
+++ /dev/null
@@ -1,1237 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-
-/*
- * Generic DAV lock implementation that a DAV provider can use.
- */
-
-#include "apr.h"
-#include "apr_strings.h"
-#include "apr_file_io.h"
-#include "apr_uuid.h"
-
-#define APR_WANT_MEMFUNC
-#include "apr_want.h"
-
-#include "apr_version.h"
-#if !APR_VERSION_AT_LEAST(2,0,0)
-#include "apu_version.h"
-#endif
-
-#include "httpd.h"
-#include "http_log.h"
-#include "http_main.h"      /* for ap_server_conf */
-
-#include "mod_dav.h"
-
-#include "locks.h"
-
-
-/* ---------------------------------------------------------------
- *
- * Lock database primitives
- *
- */
-
-/*
- * LOCK DATABASES
- *
- * Lockdiscovery information is stored in the single lock database specified
- * by the DAVGenericLockDB directive.  Information about this db is stored in
- * the per-dir configuration.
- *
- * KEY
- *
- * The database is keyed by a key_type unsigned char (DAV_TYPE_FNAME)
- * followed by full path.
- *
- * VALUE
- *
- * The value consists of a list of elements.
- *    DIRECT LOCK:     [char      (DAV_LOCK_DIRECT),
- *                      char      (dav_lock_scope),
- *                      char      (dav_lock_type),
- *                      int        depth,
- *                      time_t     expires,
- *                      apr_uuid_t locktoken,
- *                      char[]     owner,
- *                      char[]     auth_user]
- *
- *    INDIRECT LOCK:   [char      (DAV_LOCK_INDIRECT),
- *                      apr_uuid_t locktoken,
- *                      time_t     expires,
- *                      int        key_size,
- *                      char[]     key]
- *       The key is to the collection lock that resulted in this indirect lock
- */
-
-#define DAV_TRUE                    1
-#define DAV_FALSE                   0
-
-#define DAV_CREATE_LIST            23
-#define DAV_APPEND_LIST            24
-
-/* Stored lock_discovery prefix */
-#define DAV_LOCK_DIRECT             1
-#define DAV_LOCK_INDIRECT           2
-
-#define DAV_TYPE_FNAME             11
-
-/* Use the opaquelock scheme for locktokens */
-struct dav_locktoken {
-    apr_uuid_t uuid;
-};
-#define dav_compare_locktoken(plt1, plt2) \
-                memcmp(&(plt1)->uuid, &(plt2)->uuid, sizeof((plt1)->uuid))
-
-
-/* #################################################################
- * ### keep these structures (internal) or move fully to dav_lock?
- */
-
-/*
- * We need to reliably size the fixed-length portion of
- * dav_lock_discovery; best to separate it into another
- * struct for a convenient sizeof, unless we pack lock_discovery.
- */
-typedef struct dav_lock_discovery_fixed
-{
-    char scope;
-    char type;
-    int depth;
-    time_t timeout;
-} dav_lock_discovery_fixed;
-
-typedef struct dav_lock_discovery
-{
-    struct dav_lock_discovery_fixed f;
-
-    dav_locktoken *locktoken;
-    const char *owner;     /* owner field from activelock */
-    const char *auth_user; /* authenticated user who created the lock */
-    struct dav_lock_discovery *next;
-} dav_lock_discovery;
-
-/* Indirect locks represent locks inherited from containing collections.
- * They reference the lock token for the collection the lock is
- * inherited from. A lock provider may also define a key to the
- * inherited lock, for fast datbase lookup. The key is opaque outside
- * the lock provider.
- */
-typedef struct dav_lock_indirect
-{
-    dav_locktoken *locktoken;
-    apr_datum_t key;
-    struct dav_lock_indirect *next;
-    time_t timeout;
-} dav_lock_indirect;
-
-/* ################################################################# */
-
-/*
- * Stored direct lock info - full lock_discovery length:
- * prefix + Fixed length + lock token + 2 strings + 2 nulls (one for each
- * string)
- */
-#define dav_size_direct(a)  (1 + sizeof(dav_lock_discovery_fixed) \
-                               + sizeof(apr_uuid_t) \
-                               + ((a)->owner ? strlen((a)->owner) : 0) \
-                               + ((a)->auth_user ? strlen((a)->auth_user) : 0) \
-                               + 2)
-
-/* Stored indirect lock info - lock token and apr_datum_t */
-#define dav_size_indirect(a) (1 + sizeof(apr_uuid_t) \
-                                + sizeof(time_t) \
-                                + sizeof(int) + (a)->key.dsize)
-
-/*
- * The lockdb structure.
- *
- * The <db> field may be NULL, meaning one of two things:
- * 1) That we have not actually opened the underlying database (yet). The
- *    <opened> field should be false.
- * 2) We opened it readonly and it wasn't present.
- *
- * The delayed opening (determined by <opened>) makes creating a lockdb
- * quick, while deferring the underlying I/O until it is actually required.
- *
- * We export the notion of a lockdb, but hide the details of it. Most
- * implementations will use a database of some kind, but it is certainly
- * possible that alternatives could be used.
- */
-struct dav_lockdb_private
-{
-    request_rec *r; /* for accessing the uuid state */
-    apr_pool_t *pool; /* a pool to use */
-    const char *lockdb_path; /* where is the lock database? */
-
-    int opened; /* we opened the database */
-    apr_dbm_t *db; /* if non-NULL, the lock database */
-};
-
-typedef struct
-{
-    dav_lockdb pub;
-    dav_lockdb_private priv;
-} dav_lockdb_combined;
-
-/*
- * The private part of the lock structure.
- */
-struct dav_lock_private
-{
-    apr_datum_t key;        /* key into the lock database */
-};
-typedef struct
-{
-    dav_lock pub;
-    dav_lock_private priv;
-    dav_locktoken token;
-} dav_lock_combined;
-
-/*
- * This must be forward-declared so the open_lockdb function can use it.
- */
-extern const dav_hooks_locks dav_hooks_locks_generic;
-
-static dav_error * dav_generic_dbm_new_error(apr_dbm_t *db, apr_pool_t *p,
-                                             apr_status_t status)
-{
-    int errcode;
-    const char *errstr;
-    dav_error *err;
-    char errbuf[200];
-
-    if (status == APR_SUCCESS) {
-        return NULL;
-    }
-
-    /* There might not be a <db> if we had problems creating it. */
-    if (db == NULL) {
-        errcode = 1;
-        errstr = "Could not open property database.";
-    }
-    else {
-        (void) apr_dbm_geterror(db, &errcode, errbuf, sizeof(errbuf));
-        errstr = apr_pstrdup(p, errbuf);
-    }
-
-    err = dav_new_error(p, HTTP_INTERNAL_SERVER_ERROR, errcode, status, errstr);
-    return err;
-}
-
-/* internal function for creating locks */
-static dav_lock *dav_generic_alloc_lock(dav_lockdb *lockdb, apr_datum_t key,
-                                        const dav_locktoken *locktoken)
-{
-    dav_lock_combined *comb;
-
-    comb = apr_pcalloc(lockdb->info->pool, sizeof(*comb));
-    comb->pub.rectype = DAV_LOCKREC_DIRECT;
-    comb->pub.info = &comb->priv;
-    comb->priv.key = key;
-
-    if (locktoken == NULL) {
-        comb->pub.locktoken = &comb->token;
-        apr_uuid_get(&comb->token.uuid);
-    }
-    else {
-        comb->pub.locktoken = locktoken;
-    }
-
-    return &comb->pub;
-}
-
-/*
- * dav_generic_parse_locktoken
- *
- * Parse an opaquelocktoken URI into a locktoken.
- */
-static dav_error * dav_generic_parse_locktoken(apr_pool_t *p,
-                                               const char *char_token,
-                                               dav_locktoken **locktoken_p)
-{
-    dav_locktoken *locktoken;
-
-    if (ap_strstr_c(char_token, "opaquelocktoken:") != char_token) {
-        return dav_new_error(p,
-                             HTTP_BAD_REQUEST, DAV_ERR_LOCK_UNK_STATE_TOKEN, 0,
-                             "The lock token uses an unknown State-token "
-                             "format and could not be parsed.");
-    }
-    char_token += 16;
-
-    locktoken = apr_pcalloc(p, sizeof(*locktoken));
-    if (apr_uuid_parse(&locktoken->uuid, char_token)) {
-        return dav_new_error(p, HTTP_BAD_REQUEST, DAV_ERR_LOCK_PARSE_TOKEN, 0,
-                             "The opaquelocktoken has an incorrect format "
-                             "and could not be parsed.");
-    }
-
-    *locktoken_p = locktoken;
-    return NULL;
-}
-
-/*
- * dav_generic_format_locktoken
- *
- * Generate the URI for a locktoken
- */
-static const char *dav_generic_format_locktoken(apr_pool_t *p,
-                                                const dav_locktoken *locktoken)
-{
-    char buf[APR_UUID_FORMATTED_LENGTH + 1];
-
-    apr_uuid_format(buf, &locktoken->uuid);
-    return apr_pstrcat(p, "opaquelocktoken:", buf, NULL);
-}
-
-/*
- * dav_generic_compare_locktoken
- *
- * Determine whether two locktokens are the same
- */
-static int dav_generic_compare_locktoken(const dav_locktoken *lt1,
-                                         const dav_locktoken *lt2)
-{
-    return dav_compare_locktoken(lt1, lt2);
-}
-
-/*
- * dav_generic_really_open_lockdb:
- *
- * If the database hasn't been opened yet, then open the thing.
- */
-static dav_error * dav_generic_really_open_lockdb(dav_lockdb *lockdb)
-{
-#if APU_MAJOR_VERSION > 1 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 7)
-    const apr_dbm_driver_t *driver;
-    const apu_err_t *er;
-#endif
-    dav_error *err;
-    apr_status_t status;
-
-    if (lockdb->info->opened) {
-        return NULL;
-    }
-
-#if APU_MAJOR_VERSION > 1 || (APU_MAJOR_VERSION == 1 && APU_MINOR_VERSION >= 7)
-    status = apr_dbm_get_driver(&driver, NULL, &er, lockdb->info->pool);
-
-    if (status) {
-        ap_log_error(APLOG_MARK, APLOG_ERR, status, ap_server_conf, APLOGNO(10288)
-                     "mod_dav_lock: The DBM library '%s' could not be loaded: %s",
-                             er->reason, er->msg);
-        return dav_new_error(lockdb->info->pool, HTTP_INTERNAL_SERVER_ERROR, 1,
-                status, "Could not load library for property database.");
-    }
-
-    status = apr_dbm_open2(&lockdb->info->db, driver, lockdb->info->lockdb_path,
-                          lockdb->ro ? APR_DBM_READONLY : APR_DBM_RWCREATE,
-                          APR_OS_DEFAULT, lockdb->info->pool);
-#else
-    status = apr_dbm_open(&lockdb->info->db, lockdb->info->lockdb_path,
-                          lockdb->ro ? APR_DBM_READONLY : APR_DBM_RWCREATE,
-                          APR_OS_DEFAULT, lockdb->info->pool);
-#endif
-
-    if (status) {
-        err = dav_generic_dbm_new_error(lockdb->info->db, lockdb->info->pool,
-                                        status);
-        return dav_push_error(lockdb->info->pool,
-                              HTTP_INTERNAL_SERVER_ERROR,
-                              DAV_ERR_LOCK_OPENDB,
-                              "Could not open the lock database.",
-                              err);
-    }
-
-    /* all right. it is opened now. */
-    lockdb->info->opened = 1;
-
-    return NULL;
-}
-
-/*
- * dav_generic_open_lockdb:
- *
- * "open" the lock database, as specified in the global server configuration.
- * If force is TRUE, then the database is opened now, rather than lazily.
- *
- * Note that only one can be open read/write.
- */
-static dav_error * dav_generic_open_lockdb(request_rec *r, int ro, int force,
-                                           dav_lockdb **lockdb)
-{
-    dav_lockdb_combined *comb;
-
-    comb = apr_pcalloc(r->pool, sizeof(*comb));
-    comb->pub.hooks = &dav_hooks_locks_generic;
-    comb->pub.ro = ro;
-    comb->pub.info = &comb->priv;
-    comb->priv.r = r;
-    comb->priv.pool = r->pool;
-
-    comb->priv.lockdb_path = dav_generic_get_lockdb_path(r);
-    if (comb->priv.lockdb_path == NULL) {
-        return dav_new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR,
-                             DAV_ERR_LOCK_NO_DB, 0,
-                             "A lock database was not specified with the "
-                             "DAVGenericLockDB directive. One must be "
-                             "specified to use the locking functionality.");
-    }
-
-    /* done initializing. return it. */
-    *lockdb = &comb->pub;
-
-    if (force) {
-        /* ### add a higher-level comment? */
-        return dav_generic_really_open_lockdb(*lockdb);
-    }
-
-    return NULL;
-}
-
-/*
- * dav_generic_close_lockdb:
- *
- * Close it. Duh.
- */
-static void dav_generic_close_lockdb(dav_lockdb *lockdb)
-{
-    if (lockdb->info->db != NULL) {
-        apr_dbm_close(lockdb->info->db);
-    }
-    lockdb->info->opened = 0;
-}
-
-/*
- * dav_generic_build_key
- *
- * Given a pathname, build a DAV_TYPE_FNAME lock database key.
- */
-static apr_datum_t dav_generic_build_key(apr_pool_t *p,
-                                         const dav_resource *resource)
-{
-    apr_datum_t key;
-    const char *pathname = resource->uri;
-
-    /* ### does this allocation have a proper lifetime? need to check */
-    /* ### can we use a buffer for this? */
-
-    /* size is TYPE + pathname + null */
-    key.dsize = strlen(pathname) + 2;
-    key.dptr = apr_palloc(p, key.dsize);
-    *key.dptr = DAV_TYPE_FNAME;
-    memcpy(key.dptr + 1, pathname, key.dsize - 1);
-    if (key.dptr[key.dsize - 2] == '/')
-        key.dptr[--key.dsize - 1] = '\0';
-    return key;
-}
-
-/*
- * dav_generic_lock_expired:  return 1 (true) if the given timeout is in the
- *    past or present (the lock has expired), or 0 (false) if in the future
- *    (the lock has not yet expired).
- */
-static int dav_generic_lock_expired(time_t expires)
-{
-    return expires != DAV_TIMEOUT_INFINITE && time(NULL) >= expires;
-}
-
-/*
- * dav_generic_save_lock_record:  Saves the lock information specified in the
- *    direct and indirect lock lists about path into the lock database.
- *    If direct and indirect == NULL, the key is removed.
- */
-static dav_error * dav_generic_save_lock_record(dav_lockdb *lockdb,
-                                                apr_datum_t key,
-                                                dav_lock_discovery *direct,
-                                                dav_lock_indirect *indirect)
-{
-    dav_error *err;
-    apr_status_t status;
-    apr_datum_t val = { 0 };
-    char *ptr;
-    dav_lock_discovery *dp = direct;
-    dav_lock_indirect *ip = indirect;
-
-#if DAV_DEBUG
-    if (lockdb->ro) {
-        return dav_new_error(lockdb->info->pool,
-                             HTTP_INTERNAL_SERVER_ERROR, 0, 0,
-                             "INTERNAL DESIGN ERROR: the lockdb was opened "
-                             "readonly, but an attempt to save locks was "
-                             "performed.");
-    }
-#endif
-
-    if ((err = dav_generic_really_open_lockdb(lockdb)) != NULL) {
-        /* ### add a higher-level error? */
-        return err;
-    }
-
-    /* If nothing to save, delete key */
-    if (dp == NULL && ip == NULL) {
-        /* don't fail if the key is not present */
-        /* ### but what about other errors? */
-        apr_dbm_delete(lockdb->info->db, key);
-        return NULL;
-    }
-
-    while (dp) {
-        val.dsize += dav_size_direct(dp);
-        dp = dp->next;
-    }
-    while (ip) {
-        val.dsize += dav_size_indirect(ip);
-        ip = ip->next;
-    }
-
-    /* ### can this be apr_palloc() ? */
-    /* ### hmmm.... investigate the use of a buffer here */
-    ptr = val.dptr = apr_pcalloc(lockdb->info->pool, val.dsize);
-    dp  = direct;
-    ip  = indirect;
-
-    while (dp) {
-        /* Direct lock - lock_discovery struct follows */
-        *ptr++ = DAV_LOCK_DIRECT;
-        memcpy(ptr, dp, sizeof(dp->f));        /* Fixed portion of struct */
-        ptr += sizeof(dp->f);
-        memcpy(ptr, dp->locktoken, sizeof(*dp->locktoken));
-        ptr += sizeof(*dp->locktoken);
-        if (dp->owner == NULL) {
-            *ptr++ = '\0';
-        }
-        else {
-            memcpy(ptr, dp->owner, strlen(dp->owner) + 1);
-            ptr += strlen(dp->owner) + 1;
-        }
-        if (dp->auth_user == NULL) {
-            *ptr++ = '\0';
-        }
-        else {
-            memcpy(ptr, dp->auth_user, strlen(dp->auth_user) + 1);
-            ptr += strlen(dp->auth_user) + 1;
-        }
-
-        dp = dp->next;
-    }
-
-    while (ip) {
-        /* Indirect lock prefix */
-        *ptr++ = DAV_LOCK_INDIRECT;
-
-        memcpy(ptr, ip->locktoken, sizeof(*ip->locktoken));
-        ptr += sizeof(*ip->locktoken);
-
-        memcpy(ptr, &ip->timeout, sizeof(ip->timeout));
-        ptr += sizeof(ip->timeout);
-
-        memcpy(ptr, &ip->key.dsize, sizeof(ip->key.dsize));
-        ptr += sizeof(ip->key.dsize);
-
-        memcpy(ptr, ip->key.dptr, ip->key.dsize);
-        ptr += ip->key.dsize;
-
-        ip = ip->next;
-    }
-
-    if ((status = apr_dbm_store(lockdb->info->db, key, val)) != APR_SUCCESS) {
-        /* ### more details? add an error_id? */
-        err = dav_generic_dbm_new_error(lockdb->info->db, lockdb->info->pool,
-                                        status);
-        return dav_push_error(lockdb->info->pool,
-                              HTTP_INTERNAL_SERVER_ERROR,
-                              DAV_ERR_LOCK_SAVE_LOCK,
-                              "Could not save lock information.",
-                              err);
-    }
-
-    return NULL;
-}
-
-/*
- * dav_load_lock_record:  Reads lock information about key from lock db;
- *    creates linked lists of the direct and indirect locks.
- *
- *    If add_method = DAV_APPEND_LIST, the result will be appended to the
- *    head of the direct and indirect lists supplied.
- *
- *    Passive lock removal:  If lock has timed out, it will not be returned.
- *    ### How much "logging" does RFC 2518 require?
- */
-static dav_error * dav_generic_load_lock_record(dav_lockdb *lockdb,
-                                                apr_datum_t key,
-                                                int add_method,
-                                                dav_lock_discovery **direct,
-                                                dav_lock_indirect **indirect)
-{
-    apr_pool_t *p = lockdb->info->pool;
-    dav_error *err;
-    apr_status_t status;
-    apr_size_t offset = 0;
-    int need_save = DAV_FALSE;
-    apr_datum_t val = { 0 };
-    dav_lock_discovery *dp;
-    dav_lock_indirect *ip;
-
-    if (add_method != DAV_APPEND_LIST) {
-        *direct = NULL;
-        *indirect = NULL;
-    }
-
-    if ((err = dav_generic_really_open_lockdb(lockdb)) != NULL) {
-        /* ### add a higher-level error? */
-        return err;
-    }
-
-    /*
-     * If we opened readonly and the db wasn't there, then there are no
-     * locks for this resource. Just exit.
-     */
-    if (lockdb->info->db == NULL) {
-        return NULL;
-    }
-
-    if ((status = apr_dbm_fetch(lockdb->info->db, key, &val)) != APR_SUCCESS) {
-        return dav_generic_dbm_new_error(lockdb->info->db, p, status);
-    }
-
-    if (!val.dsize) {
-        return NULL;
-    }
-
-    while (offset < val.dsize) {
-        switch (*(val.dptr + offset++)) {
-        case DAV_LOCK_DIRECT:
-            /* Create and fill a dav_lock_discovery structure */
-
-            dp = apr_pcalloc(p, sizeof(*dp));
-
-            /* Copy the dav_lock_discovery_fixed portion */
-            memcpy(dp, val.dptr + offset, sizeof(dp->f));
-            offset += sizeof(dp->f);
-
-            /* Copy the lock token. */
-            dp->locktoken = apr_pmemdup(p, val.dptr + offset, sizeof(*dp->locktoken));
-            offset += sizeof(*dp->locktoken);
-
-            /* Do we have an owner field? */
-            if (*(val.dptr + offset) == '\0') {
-                ++offset;
-            }
-            else {
-                apr_size_t len = strlen(val.dptr + offset);
-                dp->owner = apr_pstrmemdup(p, val.dptr + offset, len);
-                offset += len + 1;
-            }
-
-            if (*(val.dptr + offset) == '\0') {
-                ++offset;
-            }
-            else {
-                apr_size_t len = strlen(val.dptr + offset);
-                dp->auth_user = apr_pstrmemdup(p, val.dptr + offset, len);
-                offset += len + 1;
-            }
-
-            if (!dav_generic_lock_expired(dp->f.timeout)) {
-                dp->next = *direct;
-                *direct = dp;
-            }
-            else {
-                need_save = DAV_TRUE;
-            }
-            break;
-
-        case DAV_LOCK_INDIRECT:
-            /* Create and fill a dav_lock_indirect structure */
-
-            ip = apr_pcalloc(p, sizeof(*ip));
-            ip->locktoken = apr_pmemdup(p, val.dptr + offset, sizeof(*ip->locktoken));
-            offset += sizeof(*ip->locktoken);
-            memcpy(&ip->timeout, val.dptr + offset, sizeof(ip->timeout));
-            offset += sizeof(ip->timeout);
-            /* length of datum */
-            ip->key.dsize = *((int *) (val.dptr + offset));
-            offset += sizeof(ip->key.dsize);
-            ip->key.dptr = apr_pmemdup(p, val.dptr + offset, ip->key.dsize);
-            offset += ip->key.dsize;
-
-            if (!dav_generic_lock_expired(ip->timeout)) {
-                ip->next = *indirect;
-                *indirect = ip;
-            }
-            else {
-                need_save = DAV_TRUE;
-            }
-
-            break;
-
-        default:
-            apr_dbm_freedatum(lockdb->info->db, val);
-
-            /* ### should use a computed_desc and insert corrupt token data */
-            --offset;
-            return dav_new_error(p,
-                                 HTTP_INTERNAL_SERVER_ERROR,
-                                 DAV_ERR_LOCK_CORRUPT_DB, 0,
-                                 apr_psprintf(p,
-                                             "The lock database was found to "
-                                             "be corrupt. offset %"
-                                             APR_SIZE_T_FMT ", c=%02x",
-                                             offset, val.dptr[offset]));
-        }
-    }
-
-    apr_dbm_freedatum(lockdb->info->db, val);
-
-    /* Clean up this record if we found expired locks */
-    /*
-     * ### shouldn't do this if we've been opened READONLY. elide the
-     * ### timed-out locks from the response, but don't save that info back
-     */
-    if (need_save == DAV_TRUE) {
-        return dav_generic_save_lock_record(lockdb, key, *direct, *indirect);
-    }
-
-    return NULL;
-}
-
-/* resolve <indirect>, returning <*direct> */
-static dav_error * dav_generic_resolve(dav_lockdb *lockdb,
-                                       dav_lock_indirect *indirect,
-                                       dav_lock_discovery **direct,
-                                       dav_lock_discovery **ref_dp,
-                                       dav_lock_indirect **ref_ip)
-{
-    dav_error *err;
-    dav_lock_discovery *dir;
-    dav_lock_indirect *ind;
-
-    if ((err = dav_generic_load_lock_record(lockdb, indirect->key,
-                                       DAV_CREATE_LIST,
-                                       &dir, &ind)) != NULL) {
-        /* ### insert a higher-level description? */
-        return err;
-    }
-    if (ref_dp != NULL) {
-        *ref_dp = dir;
-        *ref_ip = ind;
-    }
-
-    for (; dir != NULL; dir = dir->next) {
-        if (!dav_compare_locktoken(indirect->locktoken, dir->locktoken)) {
-            *direct = dir;
-            return NULL;
-        }
-    }
-
-    /* No match found (but we should have found one!) */
-
-    /* ### use a different description and/or error ID? */
-    return dav_new_error(lockdb->info->pool,
-                         HTTP_INTERNAL_SERVER_ERROR,
-                         DAV_ERR_LOCK_CORRUPT_DB, 0,
-                         "The lock database was found to be corrupt. "
-                         "An indirect lock's direct lock could not "
-                         "be found.");
-}
-
-/* ---------------------------------------------------------------
- *
- * Property-related lock functions
- *
- */
-
-/*
- * dav_generic_get_supportedlock:  Returns a static string for all
- *    supportedlock properties. I think we save more returning a static string
- *    than constructing it every time, though it might look cleaner.
- */
-static const char *dav_generic_get_supportedlock(const dav_resource *resource)
-{
-    static const char supported[] = DEBUG_CR
-        "<D:lockentry>" DEBUG_CR
-        "<D:lockscope><D:exclusive/></D:lockscope>" DEBUG_CR
-        "<D:locktype><D:write/></D:locktype>" DEBUG_CR
-        "</D:lockentry>" DEBUG_CR
-        "<D:lockentry>" DEBUG_CR
-        "<D:lockscope><D:shared/></D:lockscope>" DEBUG_CR
-        "<D:locktype><D:write/></D:locktype>" DEBUG_CR
-        "</D:lockentry>" DEBUG_CR;
-
-    return supported;
-}
-
-/* ---------------------------------------------------------------
- *
- * General lock functions
- *
- */
-
-static dav_error * dav_generic_remove_locknull_state(dav_lockdb *lockdb,
-                                                 const dav_resource *resource)
-{
-    /* We don't need to do anything. */
-    return NULL;
-}
-
-static dav_error * dav_generic_create_lock(dav_lockdb *lockdb,
-                                      const dav_resource *resource,
-                                      dav_lock **lock)
-{
-    apr_datum_t key;
-
-    key = dav_generic_build_key(lockdb->info->pool, resource);
-
-    *lock = dav_generic_alloc_lock(lockdb, key, NULL);
-
-    (*lock)->is_locknull = !resource->exists;
-
-    return NULL;
-}
-
-static dav_error * dav_generic_get_locks(dav_lockdb *lockdb,
-                                         const dav_resource *resource,
-                                         int calltype,
-                                         dav_lock **locks)
-{
-    apr_pool_t *p = lockdb->info->pool;
-    apr_datum_t key;
-    dav_error *err;
-    dav_lock *lock = NULL;
-    dav_lock *newlock;
-    dav_lock_discovery *dp;
-    dav_lock_indirect *ip;
-
-#if DAV_DEBUG
-    if (calltype == DAV_GETLOCKS_COMPLETE) {
-        return dav_new_error(lockdb->info->pool,
-                             HTTP_INTERNAL_SERVER_ERROR, 0, 0,
-                             "INTERNAL DESIGN ERROR: DAV_GETLOCKS_COMPLETE "
-                             "is not yet supported");
-    }
-#endif
-
-    key = dav_generic_build_key(p, resource);
-    if ((err = dav_generic_load_lock_record(lockdb, key, DAV_CREATE_LIST,
-                                            &dp, &ip)) != NULL) {
-        /* ### push a higher-level desc? */
-        return err;
-    }
-
-    /* copy all direct locks to the result list */
-    for (; dp != NULL; dp = dp->next) {
-        newlock = dav_generic_alloc_lock(lockdb, key, dp->locktoken);
-        newlock->is_locknull = !resource->exists;
-        newlock->scope = dp->f.scope;
-        newlock->type = dp->f.type;
-        newlock->depth = dp->f.depth;
-        newlock->timeout = dp->f.timeout;
-        newlock->owner = dp->owner;
-        newlock->auth_user = dp->auth_user;
-
-        /* hook into the result list */
-        newlock->next = lock;
-        lock = newlock;
-    }
-
-    /* copy all the indirect locks to the result list. resolve as needed. */
-    for (; ip != NULL; ip = ip->next) {
-        newlock = dav_generic_alloc_lock(lockdb, ip->key, ip->locktoken);
-        newlock->is_locknull = !resource->exists;
-
-        if (calltype == DAV_GETLOCKS_RESOLVED) {
-            err = dav_generic_resolve(lockdb, ip, &dp, NULL, NULL);
-            if (err != NULL) {
-                /* ### push a higher-level desc? */
-                return err;
-            }
-
-            newlock->scope = dp->f.scope;
-            newlock->type = dp->f.type;
-            newlock->depth = dp->f.depth;
-            newlock->timeout = dp->f.timeout;
-            newlock->owner = dp->owner;
-            newlock->auth_user = dp->auth_user;
-        }
-        else {
-            /* DAV_GETLOCKS_PARTIAL */
-            newlock->rectype = DAV_LOCKREC_INDIRECT_PARTIAL;
-        }
-
-        /* hook into the result list */
-        newlock->next = lock;
-        lock = newlock;
-    }
-
-    *locks = lock;
-    return NULL;
-}
-
-static dav_error * dav_generic_find_lock(dav_lockdb *lockdb,
-                                         const dav_resource *resource,
-                                         const dav_locktoken *locktoken,
-                                         int partial_ok,
-                                         dav_lock **lock)
-{
-    dav_error *err;
-    apr_datum_t key;
-    dav_lock_discovery *dp;
-    dav_lock_indirect *ip;
-
-    *lock = NULL;
-
-    key = dav_generic_build_key(lockdb->info->pool, resource);
-    if ((err = dav_generic_load_lock_record(lockdb, key, DAV_CREATE_LIST,
-                                       &dp, &ip)) != NULL) {
-        /* ### push a higher-level desc? */
-        return err;
-    }
-
-    for (; dp != NULL; dp = dp->next) {
-        if (!dav_compare_locktoken(locktoken, dp->locktoken)) {
-            *lock = dav_generic_alloc_lock(lockdb, key, locktoken);
-            (*lock)->is_locknull = !resource->exists;
-            (*lock)->scope = dp->f.scope;
-            (*lock)->type = dp->f.type;
-            (*lock)->depth = dp->f.depth;
-            (*lock)->timeout = dp->f.timeout;
-            (*lock)->owner = dp->owner;
-            (*lock)->auth_user = dp->auth_user;
-            return NULL;
-        }
-    }
-
-    for (; ip != NULL; ip = ip->next) {
-        if (!dav_compare_locktoken(locktoken, ip->locktoken)) {
-            *lock = dav_generic_alloc_lock(lockdb, ip->key, locktoken);
-            (*lock)->is_locknull = !resource->exists;
-
-            /* ### nobody uses the resolving right now! */
-            if (partial_ok) {
-                (*lock)->rectype = DAV_LOCKREC_INDIRECT_PARTIAL;
-            }
-            else {
-                (*lock)->rectype = DAV_LOCKREC_INDIRECT;
-                if ((err = dav_generic_resolve(lockdb, ip, &dp,
-                                          NULL, NULL)) != NULL) {
-                    /* ### push a higher-level desc? */
-                    return err;
-                }
-                (*lock)->scope = dp->f.scope;
-                (*lock)->type = dp->f.type;
-                (*lock)->depth = dp->f.depth;
-                (*lock)->timeout = dp->f.timeout;
-                (*lock)->owner = dp->owner;
-                (*lock)->auth_user = dp->auth_user;
-            }
-            return NULL;
-        }
-    }
-
-    return NULL;
-}
-
-static dav_error * dav_generic_has_locks(dav_lockdb *lockdb,
-                                         const dav_resource *resource,
-                                         int *locks_present)
-{
-    dav_error *err;
-    apr_datum_t key;
-
-    *locks_present = 0;
-
-    if ((err = dav_generic_really_open_lockdb(lockdb)) != NULL) {
-        /* ### insert a higher-level error description */
-        return err;
-    }
-
-    /*
-     * If we opened readonly and the db wasn't there, then there are no
-     * locks for this resource. Just exit.
-     */
-    if (lockdb->info->db == NULL)
-        return NULL;
-
-    key = dav_generic_build_key(lockdb->info->pool, resource);
-
-    *locks_present = apr_dbm_exists(lockdb->info->db, key);
-
-    return NULL;
-}
-
-static dav_error * dav_generic_append_locks(dav_lockdb *lockdb,
-                                            const dav_resource *resource,
-                                            int make_indirect,
-                                            const dav_lock *lock)
-{
-    apr_pool_t *p = lockdb->info->pool;
-    dav_error *err;
-    dav_lock_indirect *ip;
-    dav_lock_discovery *dp;
-    apr_datum_t key;
-
-    key = dav_generic_build_key(lockdb->info->pool, resource);
-
-    err = dav_generic_load_lock_record(lockdb, key, 0, &dp, &ip);
-    if (err != NULL) {
-        /* ### maybe add in a higher-level description */
-        return err;
-    }
-
-    /*
-     * ### when we store the lock more directly, we need to update
-     * ### lock->rectype and lock->is_locknull
-     */
-
-    if (make_indirect) {
-        for (; lock != NULL; lock = lock->next) {
-
-            /* ### this works for any <lock> rectype */
-            dav_lock_indirect *newi = apr_pcalloc(p, sizeof(*newi));
-
-            /* ### shut off the const warning for now */
-            newi->locktoken = (dav_locktoken *)lock->locktoken;
-            newi->timeout   = lock->timeout;
-            newi->key       = lock->info->key;
-            newi->next      = ip;
-            ip              = newi;
-        }
-    }
-    else {
-        for (; lock != NULL; lock = lock->next) {
-            /* create and link in the right kind of lock */
-
-            if (lock->rectype == DAV_LOCKREC_DIRECT) {
-                dav_lock_discovery *newd = apr_pcalloc(p, sizeof(*newd));
-
-                newd->f.scope = lock->scope;
-                newd->f.type = lock->type;
-                newd->f.depth = lock->depth;
-                newd->f.timeout = lock->timeout;
-                /* ### shut off the const warning for now */
-                newd->locktoken = (dav_locktoken *)lock->locktoken;
-                newd->owner = lock->owner;
-                newd->auth_user = lock->auth_user;
-                newd->next = dp;
-                dp = newd;
-            }
-            else {
-                /* DAV_LOCKREC_INDIRECT(_PARTIAL) */
-
-                dav_lock_indirect *newi = apr_pcalloc(p, sizeof(*newi));
-
-                /* ### shut off the const warning for now */
-                newi->locktoken = (dav_locktoken *)lock->locktoken;
-                newi->key       = lock->info->key;
-                newi->next      = ip;
-                ip              = newi;
-            }
-        }
-    }
-
-    if ((err = dav_generic_save_lock_record(lockdb, key, dp, ip)) != NULL) {
-        /* ### maybe add a higher-level description */
-        return err;
-    }
-
-    return NULL;
-}
-
-static dav_error * dav_generic_remove_lock(dav_lockdb *lockdb,
-                                           const dav_resource *resource,
-                                           const dav_locktoken *locktoken)
-{
-    dav_error *err;
-    dav_lock_discovery *dh = NULL;
-    dav_lock_indirect *ih = NULL;
-    apr_datum_t key;
-
-    key = dav_generic_build_key(lockdb->info->pool, resource);
-
-    if (locktoken != NULL) {
-        dav_lock_discovery *dp;
-        dav_lock_discovery *dprev = NULL;
-        dav_lock_indirect *ip;
-        dav_lock_indirect *iprev = NULL;
-
-        if ((err = dav_generic_load_lock_record(lockdb, key, DAV_CREATE_LIST,
-                                           &dh, &ih)) != NULL) {
-            /* ### maybe add a higher-level description */
-            return err;
-        }
-
-        for (dp = dh; dp != NULL; dp = dp->next) {
-            if (dav_compare_locktoken(locktoken, dp->locktoken) == 0) {
-                if (dprev)
-                    dprev->next = dp->next;
-                else
-                    dh = dh->next;
-            }
-            dprev = dp;
-        }
-
-        for (ip = ih; ip != NULL; ip = ip->next) {
-            if (dav_compare_locktoken(locktoken, ip->locktoken) == 0) {
-                if (iprev)
-                    iprev->next = ip->next;
-                else
-                    ih = ih->next;
-            }
-            iprev = ip;
-        }
-
-    }
-
-    /* save the modified locks, or remove all locks (dh=ih=NULL). */
-    if ((err = dav_generic_save_lock_record(lockdb, key, dh, ih)) != NULL) {
-        /* ### maybe add a higher-level description */
-        return err;
-    }
-
-    return NULL;
-}
-
-static int dav_generic_do_refresh(dav_lock_discovery *dp,
-                                  const dav_locktoken_list *ltl,
-                                  time_t new_time)
-{
-    int dirty = 0;
-
-    for (; ltl != NULL; ltl = ltl->next) {
-        if (dav_compare_locktoken(dp->locktoken, ltl->locktoken) == 0)
-        {
-            dp->f.timeout = new_time;
-            dirty = 1;
-            break;
-        }
-    }
-
-    return dirty;
-}
-
-static dav_error * dav_generic_refresh_locks(dav_lockdb *lockdb,
-                                             const dav_resource *resource,
-                                             const dav_locktoken_list *ltl,
-                                             time_t new_time,
-                                             dav_lock **locks)
-{
-    dav_error *err;
-    apr_datum_t key;
-    dav_lock_discovery *dp;
-    dav_lock_discovery *dp_scan;
-    dav_lock_indirect *ip;
-    int dirty = 0;
-    dav_lock *newlock;
-
-    *locks = NULL;
-
-    key = dav_generic_build_key(lockdb->info->pool, resource);
-    if ((err = dav_generic_load_lock_record(lockdb, key, DAV_CREATE_LIST,
-                                            &dp, &ip)) != NULL) {
-        /* ### maybe add in a higher-level description */
-        return err;
-    }
-
-    /* ### we should be refreshing direct AND (resolved) indirect locks! */
-
-    /* refresh all of the direct locks on this resource */
-    for (dp_scan = dp; dp_scan != NULL; dp_scan = dp_scan->next) {
-        if (dav_generic_do_refresh(dp_scan, ltl, new_time)) {
-            /* the lock was refreshed. return the lock. */
-            newlock = dav_generic_alloc_lock(lockdb, key, dp_scan->locktoken);
-            newlock->is_locknull = !resource->exists;
-            newlock->scope = dp_scan->f.scope;
-            newlock->type = dp_scan->f.type;
-            newlock->depth = dp_scan->f.depth;
-            newlock->timeout = dp_scan->f.timeout;
-            newlock->owner = dp_scan->owner;
-            newlock->auth_user = dp_scan->auth_user;
-
-            newlock->next = *locks;
-            *locks = newlock;
-
-            dirty = 1;
-        }
-    }
-
-    /* if we refreshed any locks, then save them back. */
-    if (dirty
-        && (err = dav_generic_save_lock_record(lockdb, key, dp, ip)) != NULL) {
-        /* ### maybe add in a higher-level description */
-        return err;
-    }
-
-    /* for each indirect lock, find its direct lock and refresh it. */
-    for (; ip != NULL; ip = ip->next) {
-        dav_lock_discovery *ref_dp;
-        dav_lock_indirect *ref_ip;
-
-        if ((err = dav_generic_resolve(lockdb, ip, &dp_scan,
-                                       &ref_dp, &ref_ip)) != NULL) {
-            /* ### push a higher-level desc? */
-            return err;
-        }
-        if (dav_generic_do_refresh(dp_scan, ltl, new_time)) {
-            /* the lock was refreshed. return the lock. */
-            newlock = dav_generic_alloc_lock(lockdb, ip->key, dp_scan->locktoken);
-            newlock->is_locknull = !resource->exists;
-            newlock->scope = dp_scan->f.scope;
-            newlock->type = dp_scan->f.type;
-            newlock->depth = dp_scan->f.depth;
-            newlock->timeout = dp_scan->f.timeout;
-            newlock->owner = dp_scan->owner;
-            newlock->auth_user = dp_scan->auth_user;
-
-            newlock->next = *locks;
-            *locks = newlock;
-
-            /* save the (resolved) direct lock back */
-            if ((err = dav_generic_save_lock_record(lockdb, ip->key, ref_dp,
-                                                    ref_ip)) != NULL) {
-                /* ### push a higher-level desc? */
-                return err;
-            }
-        }
-    }
-
-    return NULL;
-}
-
-
-const dav_hooks_locks dav_hooks_locks_generic =
-{
-    dav_generic_get_supportedlock,
-    dav_generic_parse_locktoken,
-    dav_generic_format_locktoken,
-    dav_generic_compare_locktoken,
-    dav_generic_open_lockdb,
-    dav_generic_close_lockdb,
-    dav_generic_remove_locknull_state,
-    dav_generic_create_lock,
-    dav_generic_get_locks,
-    dav_generic_find_lock,
-    dav_generic_has_locks,
-    dav_generic_append_locks,
-    dav_generic_remove_lock,
-    dav_generic_refresh_locks,
-    NULL, /* lookup_resource */
-
-    NULL /* ctx */
-};
diff --git a/modules/dav/lock/locks.h b/modules/dav/lock/locks.h
deleted file mode 100644 (file)
index 8a78a53..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-
-/**
- * @file  locks.h
- * @brief Declarations for the generic lock implementation
- *
- * @addtogroup MOD_DAV
- * @{
- */
-
-#ifndef _DAV_LOCK_LOCKS_H_
-#define _DAV_LOCK_LOCKS_H_
-
-/* where is the lock database located? */
-const char *dav_generic_get_lockdb_path(const request_rec *r);
-
-#endif /* _DAV_LOCK_LOCKS_H_ */
-/** @} */
-
diff --git a/modules/dav/lock/mod_dav_lock.c b/modules/dav/lock/mod_dav_lock.c
deleted file mode 100644 (file)
index 56a3202..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-
-#include "httpd.h"
-#include "http_config.h"
-#include "apr_strings.h"
-#include "ap_provider.h"
-
-#include "mod_dav.h"
-#include "locks.h"
-
-/* per-dir configuration */
-typedef struct {
-    const char *lockdb_path;
-} dav_lock_dir_conf;
-
-extern const dav_hooks_locks dav_hooks_locks_generic;
-
-extern module AP_MODULE_DECLARE_DATA dav_lock_module;
-
-const char *dav_generic_get_lockdb_path(const request_rec *r)
-{
-    dav_lock_dir_conf *conf;
-
-    conf = ap_get_module_config(r->per_dir_config, &dav_lock_module);
-    return conf->lockdb_path;
-}
-
-static void *dav_lock_create_dir_config(apr_pool_t *p, char *dir)
-{
-    return apr_pcalloc(p, sizeof(dav_lock_dir_conf));
-}
-
-static void *dav_lock_merge_dir_config(apr_pool_t *p,
-                                       void *base, void *overrides)
-{
-    dav_lock_dir_conf *parent = base;
-    dav_lock_dir_conf *child = overrides;
-    dav_lock_dir_conf *newconf;
-
-    newconf = apr_pcalloc(p, sizeof(*newconf));
-
-    newconf->lockdb_path =
-        child->lockdb_path ? child->lockdb_path : parent->lockdb_path;
-
-    return newconf;
-}
-
-/*
- * Command handler for the DAVGenericLockDB directive, which is TAKE1
- */
-static const char *dav_lock_cmd_davlockdb(cmd_parms *cmd, void *config,
-                                        const char *arg1)
-{
-    dav_lock_dir_conf *conf = config;
-
-    conf->lockdb_path = ap_server_root_relative(cmd->pool, arg1);
-
-    if (!conf->lockdb_path) {
-        return apr_pstrcat(cmd->pool, "Invalid DAVGenericLockDB path ",
-                           arg1, NULL);
-    }
-
-    return NULL;
-}
-
-static const command_rec dav_lock_cmds[] =
-{
-    /* per server */
-    AP_INIT_TAKE1("DAVGenericLockDB", dav_lock_cmd_davlockdb, NULL, ACCESS_CONF,
-                  "specify a lock database"),
-
-    { NULL }
-};
-
-static void register_hooks(apr_pool_t *p)
-{
-    ap_register_provider(p, "dav-lock", "generic", "0",
-                         &dav_hooks_locks_generic);
-}
-
-AP_DECLARE_MODULE(dav_lock) =
-{
-    STANDARD20_MODULE_STUFF,
-    dav_lock_create_dir_config,     /* dir config creater */
-    dav_lock_merge_dir_config,      /* dir merger --- default is to override */
-    NULL,                           /* server config */
-    NULL,                           /* merge server config */
-    dav_lock_cmds,                  /* command table */
-    register_hooks,                 /* register hooks */
-};
diff --git a/modules/dav/lock/mod_dav_lock.dsp b/modules/dav/lock/mod_dav_lock.dsp
deleted file mode 100644 (file)
index e1c1a24..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-# Microsoft Developer Studio Project File - Name="mod_dav_lock" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=mod_dav_lock - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "mod_dav_lock.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "mod_dav_lock.mak" CFG="mod_dav_lock - Win32 Release"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "mod_dav_lock - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "mod_dav_lock - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "mod_dav_lock - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../../include" /I "../../../srclib/apr/include" /I "../../../srclib/apr-util/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_dav_lock_src" /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /fo"Release/mod_dav_lock.res" /i "../../../include" /i "../../../srclib/apr/include" /d "NDEBUG" /d BIN_NAME="mod_dav_lock.so" /d LONG_NAME="dav_lock_module for Apache"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /out:".\Release\mod_dav_lock.so" /base:@..\..\..\os\win32\BaseAddr.ref,mod_dav_lock.so
-# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Release\mod_dav_lock.so" /base:@..\..\..\os\win32\BaseAddr.ref,mod_dav_lock.so /opt:ref
-# Begin Special Build Tool
-TargetPath=.\Release\mod_dav_lock.so
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ELSEIF  "$(CFG)" == "mod_dav_lock - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../../include" /I "../../../srclib/apr/include" /I "../../../srclib/apr-util/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Debug\mod_dav_lock_src" /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /fo"Debug/mod_dav_lock.res" /i "../../../include" /i "../../../srclib/apr/include" /d "_DEBUG" /d BIN_NAME="mod_dav_lock.so" /d LONG_NAME="dav_lock_module for Apache"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_dav_lock.so" /base:@..\..\..\os\win32\BaseAddr.ref,mod_dav_lock.so
-# ADD LINK32 kernel32.lib ws2_32.lib mswsock.lib /nologo /subsystem:windows /dll /incremental:no /debug /out:".\Debug\mod_dav_lock.so" /base:@..\..\..\os\win32\BaseAddr.ref,mod_dav_lock.so
-# Begin Special Build Tool
-TargetPath=.\Debug\mod_dav_lock.so
-SOURCE="$(InputPath)"
-PostBuild_Desc=Embed .manifest
-PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2
-# End Special Build Tool
-
-!ENDIF 
-
-# Begin Target
-
-# Name "mod_dav_lock - Win32 Release"
-# Name "mod_dav_lock - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\locks.c
-# End Source File
-# Begin Source File
-
-SOURCE=.\mod_dav_lock.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\locks.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\build\win32\httpd.rc
-# End Source File
-# End Target
-# End Project