repos.h revision dd56b1dd453bd9032d97028bc3987f999c31280c
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* ====================================================================
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * The Apache Software License, Version 1.1
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * reserved.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * Redistribution and use in source and binary forms, with or without
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * modification, are permitted provided that the following conditions
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * are met:
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * 1. Redistributions of source code must retain the above copyright
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * notice, this list of conditions and the following disclaimer.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * 2. Redistributions in binary form must reproduce the above copyright
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * notice, this list of conditions and the following disclaimer in
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * the documentation and/or other materials provided with the
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * distribution.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * 3. The end-user documentation included with the redistribution,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * if any, must include the following acknowledgment:
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * "This product includes software developed by the
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * Apache Software Foundation (http://www.apache.org/)."
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * Alternately, this acknowledgment may appear in the software itself,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * if and wherever such third-party acknowledgments normally appear.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * 4. The names "Apache" and "Apache Software Foundation" must
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * not be used to endorse or promote products derived from this
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * software without prior written permission. For written
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * permission, please contact apache@apache.org.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * 5. Products derived from this software may not be called "Apache",
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * nor may "Apache" appear in their name, without prior written
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * permission of the Apache Software Foundation.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * SUCH DAMAGE.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * ====================================================================
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes *
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * This software consists of voluntary contributions made by many
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * individuals on behalf of the Apache Software Foundation. For more
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * information on the Apache Software Foundation, please see
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes * <http://www.apache.org/>.
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/*
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes** Declarations for the filesystem repository implementation
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes*/
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes#ifndef _DAV_FS_REPOS_H_
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes#define _DAV_FS_REPOS_H_
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* the subdirectory to hold all DAV-related information for a directory */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes#define DAV_FS_STATE_DIR ".DAV"
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes#define DAV_FS_STATE_FILE_FOR_DIR ".state_for_dir"
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes#define DAV_FS_LOCK_NULL_FILE ".locknull"
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* ensure that our state subdirectory is present */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_fs_ensure_state_dir(apr_pool_t *p, const char *dirname);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* return the storage pool associated with a resource */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesapr_pool_t *dav_fs_pool(const dav_resource *resource);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* return the full pathname for a resource */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesconst char *dav_fs_pathname(const dav_resource *resource);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* return the directory and filename for a resource */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesdav_error * dav_fs_dir_file_name(const dav_resource *resource,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes const char **dirpath,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes const char **fname);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* return the list of locknull members in this resource's directory */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesdav_error * dav_fs_get_locknull_members(const dav_resource *resource,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes dav_buffer *pbuf);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* DBM functions used by the repository and locking providers */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesextern const dav_hooks_db dav_hooks_db_dbm;
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesdav_error * dav_dbm_open_direct(apr_pool_t *p, const char *pathname, int ro,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes dav_db **pdb);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_dbm_get_statefiles(apr_pool_t *p, const char *fname,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes const char **state1, const char **state2);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesdav_error * dav_dbm_delete(dav_db *db, apr_datum_t key);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesdav_error * dav_dbm_store(dav_db *db, apr_datum_t key, apr_datum_t value);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesdav_error * dav_dbm_fetch(dav_db *db, apr_datum_t key, apr_datum_t *pvalue);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_dbm_freedatum(dav_db *db, apr_datum_t data);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesint dav_dbm_exists(dav_db *db, apr_datum_t key);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_dbm_close(dav_db *db);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes/* where is the lock database located? */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesconst char *dav_get_lockdb_path(const request_rec *r);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesconst dav_hooks_locks *dav_fs_get_lock_hooks(request_rec *r);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesconst dav_hooks_propdb *dav_fs_get_propdb_hooks(request_rec *r);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_fs_gather_propsets(apr_array_header_t *uris);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesint dav_fs_find_liveprop(const dav_resource *resource,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes const char *ns_uri, const char *name,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes const dav_hooks_liveprop **hooks);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_fs_insert_all_liveprops(request_rec *r, const dav_resource *resource,
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes dav_prop_insert what, apr_text_header *phdr);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholesvoid dav_fs_register(apr_pool_t *p);
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes#endif /* _DAV_FS_REPOS_H_ */
d3fc1a9aec53a772142e2909441b213f3ae8102abnicholes