Apache HTTPD
Classes | Macros | Typedefs | Functions | Variables
lock.c File Reference
#include "apr.h"
#include "apr_strings.h"
#include "apr_file_io.h"
#include "apr_uuid.h"
#include "apr_want.h"
#include "httpd.h"
#include "http_log.h"
#include "mod_dav.h"
#include "repos.h"

Go to the source code of this file.

Classes

struct  dav_locktoken
 
struct  dav_lock_discovery_fixed
 
struct  dav_lock_discovery
 
struct  dav_lock_indirect
 
struct  dav_lockdb_private
 
struct  dav_lockdb_combined
 
struct  dav_lock_private
 
struct  dav_lock_combined
 

Macros

#define APR_WANT_MEMFUNC
 
#define DAV_TRUE   1
 
#define DAV_FALSE   0
 
#define DAV_CREATE_LIST   23
 
#define DAV_APPEND_LIST   24
 
#define DAV_LOCK_DIRECT   1
 
#define DAV_LOCK_INDIRECT   2
 
#define DAV_TYPE_FNAME   11
 
#define dav_compare_locktoken(plt1, plt2)    memcmp(&(plt1)->uuid, &(plt2)->uuid, sizeof((plt1)->uuid))
 
#define dav_size_direct(a)
 
#define dav_size_indirect(a)
 

Typedefs

typedef struct dav_lock_discovery_fixed dav_lock_discovery_fixed
 
typedef struct dav_lock_discovery dav_lock_discovery
 
typedef struct dav_lock_indirect dav_lock_indirect
 

Functions

static dav_errordav_fs_remove_locknull_member (apr_pool_t *p, const char *filename, dav_buffer *pbuf)
 
static dav_lockdav_fs_alloc_lock (dav_lockdb *lockdb, apr_datum_t key, const dav_locktoken *locktoken)
 
static dav_errordav_fs_parse_locktoken (apr_pool_t *p, const char *char_token, dav_locktoken **locktoken_p)
 
static const chardav_fs_format_locktoken (apr_pool_t *p, const dav_locktoken *locktoken)
 
static int dav_fs_compare_locktoken (const dav_locktoken *lt1, const dav_locktoken *lt2)
 
static dav_errordav_fs_really_open_lockdb (dav_lockdb *lockdb)
 
static dav_errordav_fs_open_lockdb (request_rec *r, int ro, int force, dav_lockdb **lockdb)
 
static void dav_fs_close_lockdb (dav_lockdb *lockdb)
 
static apr_datum_t dav_fs_build_key (apr_pool_t *p, const dav_resource *resource)
 
static int dav_fs_lock_expired (time_t expires)
 
static dav_errordav_fs_save_lock_record (dav_lockdb *lockdb, apr_datum_t key, dav_lock_discovery *direct, dav_lock_indirect *indirect)
 
static dav_errordav_fs_load_lock_record (dav_lockdb *lockdb, apr_datum_t key, int add_method, dav_lock_discovery **direct, dav_lock_indirect **indirect)
 
static dav_errordav_fs_resolve (dav_lockdb *lockdb, dav_lock_indirect *indirect, dav_lock_discovery **direct, dav_lock_discovery **ref_dp, dav_lock_indirect **ref_ip)
 
static const chardav_fs_get_supportedlock (const dav_resource *resource)
 
static dav_errordav_fs_load_locknull_list (apr_pool_t *p, const char *dirpath, dav_buffer *pbuf)
 
static dav_errordav_fs_save_locknull_list (apr_pool_t *p, const char *dirpath, dav_buffer *pbuf)
 
dav_errordav_fs_get_locknull_members (const dav_resource *resource, dav_buffer *pbuf)
 
static dav_errordav_fs_add_locknull_state (dav_lockdb *lockdb, const dav_resource *resource)
 
static dav_errordav_fs_remove_locknull_state (dav_lockdb *lockdb, const dav_resource *resource)
 
static dav_errordav_fs_create_lock (dav_lockdb *lockdb, const dav_resource *resource, dav_lock **lock)
 
static dav_errordav_fs_get_locks (dav_lockdb *lockdb, const dav_resource *resource, int calltype, dav_lock **locks)
 
static dav_errordav_fs_find_lock (dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken *locktoken, int partial_ok, dav_lock **lock)
 
static dav_errordav_fs_has_locks (dav_lockdb *lockdb, const dav_resource *resource, int *locks_present)
 
static dav_errordav_fs_append_locks (dav_lockdb *lockdb, const dav_resource *resource, int make_indirect, const dav_lock *lock)
 
static dav_errordav_fs_remove_lock (dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken *locktoken)
 
static int dav_fs_do_refresh (dav_lock_discovery *dp, const dav_locktoken_list *ltl, time_t new_time)
 
static dav_errordav_fs_refresh_locks (dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken_list *ltl, time_t new_time, dav_lock **locks)
 

Variables

const dav_hooks_locks dav_hooks_locks_fs
 

Macro Definition Documentation

◆ APR_WANT_MEMFUNC

#define APR_WANT_MEMFUNC

Definition at line 26 of file lock.c.

◆ DAV_APPEND_LIST

#define DAV_APPEND_LIST   24

Definition at line 78 of file lock.c.

◆ dav_compare_locktoken

#define dav_compare_locktoken (   plt1,
  plt2 
)     memcmp(&(plt1)->uuid, &(plt2)->uuid, sizeof((plt1)->uuid))

Definition at line 102 of file lock.c.

◆ DAV_CREATE_LIST

#define DAV_CREATE_LIST   23

Definition at line 77 of file lock.c.

◆ DAV_FALSE

#define DAV_FALSE   0

Definition at line 75 of file lock.c.

◆ DAV_LOCK_DIRECT

#define DAV_LOCK_DIRECT   1

Definition at line 81 of file lock.c.

◆ DAV_LOCK_INDIRECT

#define DAV_LOCK_INDIRECT   2

Definition at line 82 of file lock.c.

◆ dav_size_direct

#define dav_size_direct (   a)
Value:
( 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)
apr_bucket apr_bucket_brigade * a
struct dav_lock_discovery_fixed dav_lock_discovery_fixed

Definition at line 154 of file lock.c.

◆ dav_size_indirect

#define dav_size_indirect (   a)
Value:
(1 + sizeof(apr_uuid_t) \
+ sizeof(time_t) \
+ sizeof((a)->key.dsize) + (a)->key.dsize)
apr_size_t size
const char * key

Definition at line 161 of file lock.c.

◆ DAV_TRUE

#define DAV_TRUE   1

Definition at line 74 of file lock.c.

◆ DAV_TYPE_FNAME

#define DAV_TYPE_FNAME   11

Definition at line 88 of file lock.c.

Typedef Documentation

◆ dav_lock_discovery

◆ dav_lock_discovery_fixed

◆ dav_lock_indirect

Function Documentation

◆ dav_fs_add_locknull_state()

static dav_error * dav_fs_add_locknull_state ( dav_lockdb lockdb,
const dav_resource resource 
)
static

Definition at line 925 of file lock.c.

◆ dav_fs_alloc_lock()

static dav_lock * dav_fs_alloc_lock ( dav_lockdb lockdb,
apr_datum_t  key,
const dav_locktoken locktoken 
)
static

Definition at line 216 of file lock.c.

◆ dav_fs_append_locks()

static dav_error * dav_fs_append_locks ( dav_lockdb lockdb,
const dav_resource resource,
int  make_indirect,
const dav_lock lock 
)
static

Definition at line 1162 of file lock.c.

◆ dav_fs_build_key()

static apr_datum_t dav_fs_build_key ( apr_pool_t p,
const dav_resource resource 
)
static

Definition at line 380 of file lock.c.

◆ dav_fs_close_lockdb()

static void dav_fs_close_lockdb ( dav_lockdb lockdb)
static

Definition at line 370 of file lock.c.

◆ dav_fs_compare_locktoken()

static int dav_fs_compare_locktoken ( const dav_locktoken lt1,
const dav_locktoken lt2 
)
static

Definition at line 288 of file lock.c.

◆ dav_fs_create_lock()

static dav_error * dav_fs_create_lock ( dav_lockdb lockdb,
const dav_resource resource,
dav_lock **  lock 
)
static

Definition at line 976 of file lock.c.

◆ dav_fs_do_refresh()

static int dav_fs_do_refresh ( dav_lock_discovery dp,
const dav_locktoken_list ltl,
time_t  new_time 
)
static

Definition at line 1319 of file lock.c.

◆ dav_fs_find_lock()

static dav_error * dav_fs_find_lock ( dav_lockdb lockdb,
const dav_resource resource,
const dav_locktoken locktoken,
int  partial_ok,
dav_lock **  lock 
)
static

Definition at line 1070 of file lock.c.

◆ dav_fs_format_locktoken()

static const char * dav_fs_format_locktoken ( apr_pool_t p,
const dav_locktoken locktoken 
)
static

Definition at line 273 of file lock.c.

◆ dav_fs_get_locks()

static dav_error * dav_fs_get_locks ( dav_lockdb lockdb,
const dav_resource resource,
int  calltype,
dav_lock **  locks 
)
static

Definition at line 993 of file lock.c.

◆ dav_fs_get_supportedlock()

static const char * dav_fs_get_supportedlock ( const dav_resource resource)
static

Definition at line 714 of file lock.c.

◆ dav_fs_has_locks()

static dav_error * dav_fs_has_locks ( dav_lockdb lockdb,
const dav_resource resource,
int locks_present 
)
static

Definition at line 1134 of file lock.c.

◆ dav_fs_load_lock_record()

static dav_error * dav_fs_load_lock_record ( dav_lockdb lockdb,
apr_datum_t  key,
int  add_method,
dav_lock_discovery **  direct,
dav_lock_indirect **  indirect 
)
static

< type, mtime, ctime, atime, size

< Stat the link not the file itself if it is a link

Definition at line 521 of file lock.c.

◆ dav_fs_load_locknull_list()

static dav_error * dav_fs_load_locknull_list ( apr_pool_t p,
const char dirpath,
dav_buffer pbuf 
)
static

< Open the file for reading

<

Deprecated:
See also
APR_FOPEN_READ

< Open the file in binary mode (This flag is ignored on UNIX because it has no meaning)

<

Deprecated:
See also
APR_FOPEN_BINARY

< use OS's default permissions

<

Deprecated:
See also
APR_FPROT_OS_DEFAULT

< Size of the file

Definition at line 745 of file lock.c.

◆ dav_fs_lock_expired()

static int dav_fs_lock_expired ( time_t  expires)
static

Definition at line 404 of file lock.c.

◆ dav_fs_open_lockdb()

static dav_error * dav_fs_open_lockdb ( request_rec r,
int  ro,
int  force,
dav_lockdb **  lockdb 
)
static

Definition at line 333 of file lock.c.

◆ dav_fs_parse_locktoken()

static dav_error * dav_fs_parse_locktoken ( apr_pool_t p,
const char char_token,
dav_locktoken **  locktoken_p 
)
static

Definition at line 242 of file lock.c.

◆ dav_fs_really_open_lockdb()

static dav_error * dav_fs_really_open_lockdb ( dav_lockdb lockdb)
static

Definition at line 300 of file lock.c.

◆ dav_fs_refresh_locks()

static dav_error * dav_fs_refresh_locks ( dav_lockdb lockdb,
const dav_resource resource,
const dav_locktoken_list ltl,
time_t  new_time,
dav_lock **  locks 
)
static

Definition at line 1337 of file lock.c.

◆ dav_fs_remove_lock()

static dav_error * dav_fs_remove_lock ( dav_lockdb lockdb,
const dav_resource resource,
const dav_locktoken locktoken 
)
static

Definition at line 1246 of file lock.c.

◆ dav_fs_remove_locknull_member()

static dav_error * dav_fs_remove_locknull_member ( apr_pool_t p,
const char filename,
dav_buffer pbuf 
)
static

Definition at line 865 of file lock.c.

◆ dav_fs_remove_locknull_state()

static dav_error * dav_fs_remove_locknull_state ( dav_lockdb lockdb,
const dav_resource resource 
)
static

Definition at line 959 of file lock.c.

◆ dav_fs_resolve()

static dav_error * dav_fs_resolve ( dav_lockdb lockdb,
dav_lock_indirect indirect,
dav_lock_discovery **  direct,
dav_lock_discovery **  ref_dp,
dav_lock_indirect **  ref_ip 
)
static

Definition at line 664 of file lock.c.

◆ dav_fs_save_lock_record()

static dav_error * dav_fs_save_lock_record ( dav_lockdb lockdb,
apr_datum_t  key,
dav_lock_discovery direct,
dav_lock_indirect indirect 
)
static

Definition at line 414 of file lock.c.

◆ dav_fs_save_locknull_list()

static dav_error * dav_fs_save_locknull_list ( apr_pool_t p,
const char dirpath,
dav_buffer pbuf 
)
static

< Open the file for writing

<

Deprecated:
See also
APR_FOPEN_WRITE

< Create the file if not there

<

Deprecated:
See also
APR_FOPEN_CREATE

< Open the file and truncate to 0 length

<

Deprecated:
See also
APR_FOPEN_TRUNCATE

< Open the file in binary mode (This flag is ignored on UNIX because it has no meaning)

<

Deprecated:
See also
APR_FOPEN_BINARY

< use OS's default permissions

<

Deprecated:
See also
APR_FPROT_OS_DEFAULT

Definition at line 809 of file lock.c.

Variable Documentation

◆ dav_hooks_locks_fs

const dav_hooks_locks dav_hooks_locks_fs
Initial value:
=
{
NULL,
}
static dav_error * dav_fs_create_lock(dav_lockdb *lockdb, const dav_resource *resource, dav_lock **lock)
Definition lock.c:976
static const char * dav_fs_format_locktoken(apr_pool_t *p, const dav_locktoken *locktoken)
Definition lock.c:273
static dav_error * dav_fs_find_lock(dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken *locktoken, int partial_ok, dav_lock **lock)
Definition lock.c:1070
static dav_error * dav_fs_remove_lock(dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken *locktoken)
Definition lock.c:1246
static const char * dav_fs_get_supportedlock(const dav_resource *resource)
Definition lock.c:714
static int dav_fs_compare_locktoken(const dav_locktoken *lt1, const dav_locktoken *lt2)
Definition lock.c:288
static dav_error * dav_fs_refresh_locks(dav_lockdb *lockdb, const dav_resource *resource, const dav_locktoken_list *ltl, time_t new_time, dav_lock **locks)
Definition lock.c:1337
static dav_error * dav_fs_open_lockdb(request_rec *r, int ro, int force, dav_lockdb **lockdb)
Definition lock.c:333
static dav_error * dav_fs_parse_locktoken(apr_pool_t *p, const char *char_token, dav_locktoken **locktoken_p)
Definition lock.c:242
static dav_error * dav_fs_get_locks(dav_lockdb *lockdb, const dav_resource *resource, int calltype, dav_lock **locks)
Definition lock.c:993
static dav_error * dav_fs_append_locks(dav_lockdb *lockdb, const dav_resource *resource, int make_indirect, const dav_lock *lock)
Definition lock.c:1162
static dav_error * dav_fs_remove_locknull_state(dav_lockdb *lockdb, const dav_resource *resource)
Definition lock.c:959
static dav_error * dav_fs_has_locks(dav_lockdb *lockdb, const dav_resource *resource, int *locks_present)
Definition lock.c:1134
static void dav_fs_close_lockdb(dav_lockdb *lockdb)
Definition lock.c:370
return NULL
Definition mod_so.c:359

Definition at line 1426 of file lock.c.