[0001] [0002] [0003] [0004] [0005] [0006] [0007] [0008] [0009] [0010] [0011] [0012] [0013] [0014] [0015] [0016] [0017] [0018] [0019] [0020] [0021] [0022] [0023] [0024] [0025] [0026] [0027] [0028] [0029] [0030] [0031] [0032] [0033] [0034] [0035] [0036] [0037] [0038] [0039] [0040] [0041] [0042] [0043] [0044] [0045] [0046] [0047] [0048] [0049] [0050] [0051] [0052] [0053] [0054] [0055] [0056] [0057] [0058] [0059] [0060] [0061] [0062] [0063] [0064] [0065] [0066] [0067] [0068] [0069] [0070] [0071] [0072] [0073] [0074] [0075] [0076] [0077] [0078] [0079] [0080] [0081] [0082] [0083] [0084] [0085] [0086] [0087] [0088] [0089] [0090] [0091] [0092] [0093] [0094] [0095] [0096] [0097] [0098] [0099] [0100] [0101] [0102] [0103] [0104] [0105] [0106] [0107] [0108] [0109] [0110] [0111] [0112] [0113] [0114] [0115] [0116] [0117] [0118] [0119] [0120] [0121] [0122] [0123] [0124] [0125] [0126] [0127] [0128] [0129] [0130] [0131] [0132] [0133] [0134] [0135] [0136] [0137] [0138] [0139] [0140] [0141] [0142] [0143] [0144] [0145] [0146] [0147] [0148] [0149] [0150] [0151] [0152] [0153] [0154] [0155] [0156] [0157] [0158] [0159] [0160] [0161] [0162] [0163] [0164] [0165] [0166] [0167] [0168] [0169] [0170] [0171] [0172] [0173] [0174] [0175] [0176] [0177] [0178] [0179] [0180] [0181] [0182] [0183] [0184] [0185] [0186] [0187] [0188] [0189] [0190] [0191] [0192] [0193] [0194] [0195] [0196] [0197] [0198] [0199] [0200] [0201] [0202] [0203] [0204] [0205] [0206] [0207] [0208] [0209] [0210] [0211] [0212] [0213] [0214] [0215] [0216] [0217] [0218] [0219] [0220] [0221] [0222] [0223] [0224] [0225] [0226] [0227] [0228] [0229] [0230] [0231] [0232] [0233] [0234] [0235] [0236] [0237] [0238] [0239] [0240] [0241] [0242] [0243] [0244] [0245] [0246] [0247] [0248] [0249] [0250] [0251] [0252] [0253] [0254] [0255] [0256] [0257] [0258] [0259] [0260] [0261] [0262] [0263] [0264] [0265] [0266] [0267] [0268] [0269] [0270] [0271] [0272] [0273] [0274] [0275] [0276] [0277] [0278] [0279] [0280] [0281] [0282] [0283] [0284] [0285] [0286] [0287] [0288] [0289] [0290] [0291] [0292] [0293] [0294] [0295] [0296] [0297] [0298] [0299] [0300] [0301] [0302] [0303] [0304] [0305] [0306] [0307] [0308] [0309] [0310] [0311] [0312] [0313] [0314] [0315] [0316] [0317] [0318] [0319] [0320] [0321] [0322] [0323] [0324] [0325] [0326] [0327] [0328] [0329] [0330] [0331] [0332] [0333] [0334] [0335] [0336] [0337] [0338] [0339] [0340] [0341] [0342] [0343] [0344] [0345] [0346] [0347] [0348] [0349] [0350] [0351] [0352] [0353] [0354] [0355] [0356] [0357] [0358] [0359] [0360] [0361] [0362] [0363] [0364] [0365] [0366] [0367] [0368] [0369] [0370] [0371] [0372] [0373] [0374] [0375] [0376] [0377] [0378] [0379] [0380] [0381] [0382] [0383] [0384] [0385] [0386] [0387] [0388] [0389] [0390] [0391] [0392] [0393] [0394] [0395] [0396] [0397] [0398] [0399] [0400] [0401] [0402] [0403] [0404] [0405] [0406] [0407] [0408] [0409] [0410] [0411] [0412] [0413] [0414] [0415] [0416] [0417] [0418] [0419] [0420] [0421] [0422] [0423] [0424] [0425] [0426] [0427] [0428] [0429] [0430] [0431] [0432] [0433] [0434] [0435] [0436] [0437] [0438] [0439] [0440] [0441] [0442] [0443] [0444] [0445] [0446] [0447] [0448] [0449] [0450] [0451] [0452] [0453] [0454] [0455] [0456] [0457] [0458] [0459] [0460] [0461] [0462] [0463] [0464] [0465] [0466] [0467] [0468] [0469] [0470] [0471] [0472] [0473] [0474] [0475] [0476] [0477] [0478] [0479] [0480] [0481] [0482] [0483] [0484] [0485] [0486] [0487] [0488] [0489] [0490] [0491] [0492] [0493] [0494] [0495] [0496] [0497] [0498] [0499] [0500] [0501] [0502] [0503] [0504] [0505] [0506] [0507] [0508] [0509] [0510] [0511] [0512] [0513] [0514] [0515] [0516] [0517] [0518] [0519] [0520] [0521] [0522] [0523] [0524] [0525] [0526] [0527] [0528] [0529] [0530] [0531] [0532] [0533] [0534] [0535] [0536] [0537] [0538] [0539] [0540] [0541] [0542] [0543] [0544] [0545] [0546] [0547] [0548] [0549] [0550] [0551] [0552] [0553] [0554] [0555] [0556] [0557] [0558] [0559] [0560] [0561] [0562] [0563] [0564] [0565] [0566] [0567] [0568] [0569] [0570] [0571] [0572] [0573] [0574] [0575] [0576] [0577] [0578] [0579] [0580] [0581] [0582] [0583] [0584] [0585] [0586] [0587] [0588] [0589] [0590] [0591] [0592] [0593] [0594] [0595] [0596] [0597] [0598] [0599] [0600] [0601] [0602] [0603] [0604] [0605] [0606] [0607] [0608] [0609] [0610] [0611] [0612] [0613] [0614] [0615] [0616] [0617] [0618] [0619] [0620] [0621] [0622] [0623] [0624]
/*****************************************************************************/ /* DAVweb.h */ /*****************************************************************************/ #ifndef DAVWEB_H_LOADED #define DAVWEB_H_LOADED 1 #include "../expat/expat.h" #include <lkidef.h> /**********/ /* macros */ /**********/ /* WASD'S own XML namespace */ #define WEBDAV_NS_WASDAV "WASD.VMS.WebDAV:" /* compare this element string to the WASDAV namespace element name */ #define WEBDAV_IS_WASDAVEL(elstr,elname) \ (*(ULONGPTR)elstr == 'WASD' && \ *(ULONGPTR)(elstr+sizeof(WEBDAV_NS_WASDAV)) == *(ULONGPTR)elname && \ !strcmp(elstr,WEBDAV_NS_WASDAV " " elname)) /* compare this element string to the DAV namespace element name */ #define WEBDAV_IS_DAVEL(elstr,elname) \ (*(ULONGPTR)elstr == 'DAV:' && \ *(ULONGPTR)(elstr+sizeof("DAV:")) == *(ULONGPTR)elname && \ !strcmp(elstr,"DAV: " elname)) /* number of parents tested for lock meta-data */ #define WEBDAV_LOCK_PARENT_DEFAULT 1 /* number of volumes ODS can be cached */ #define WEBDAV_META_VOLODS 32 /* seconds representing an infinite timeout (~31 years) */ #define WEBDAV_TIMEOUT_INFINITE 999999999 #define WEBDAV_LOCK_TIMEOUT_DEFAULT 3600 /* seconds - one hour */ #define WEBDAV_LOCK_TIMEOUT_MAX 604800 /* seconds - one week */ #define WEBDAV_FLUSH_SECONDS_MAX 30 /* for PROPFIND */ #define WEBDAV_DEPTH_ZERO 0 #define WEBDAV_DEPTH_ONE 1 /* must be positive and greater than 1 */ #define WEBDAV_DEPTH_INFINITY 999 #define WEBDAV_LOCK_TYPE_WRITE 1 #define WEBDAV_LOCK_SCOPE_SHARED 1 #define WEBDAV_LOCK_SCOPE_EXCLUSIVE 2 /* phases of processing when deleting */ #define WEBDAV_DELETE_SINGLE_FILE 1 #define WEBDAV_DELETE_TREE_FILES 2 #define WEBDAV_DELETE_TREE_DIRS 3 #define WEBDAV_DELETE_TREE_PARENT 4 /* "Microsoft-WebDAV-MiniRedir/.." */ #define WEBDAV_MICROSOFT_MINIREDIR 1 /* "Microsoft Data Access Internet Publishing Provider .." */ #define WEBDAV_MICROSOFT_MDAIPP 2 /* South River Technologies WebDrive (assuming some level of IIS conformance) */ #define WEBDAV_MICROSOFT_WEBDRIVE 10 /* BARAD-DUR (assuming some level of IIS conformance) */ #define WEBDAV_MICROSOFT_BITKINEX 11 /* had "Microsoft" in the user agent field */ #define WEBDAV_MICROSOFT_UNKNOWN 99 #define WEBDAV_LOCK_TOKEN_SIZE 64 /* states when parsing XML */ #define WEBDAV_STATE_NOT_PARSING 0 #define WEBDAV_STATE_PARSING 1 #define WEBDAV_STATE_PARSED 2 /* macros for setting/testing states */ #define WEBDAV_PARSING(this) (this = WEBDAV_STATE_PARSING) #define WEBDAV_PARSED(this) (this = WEBDAV_STATE_PARSED) #define WEBDAV_NOT_PARSING(this) (this = WEBDAV_STATE_NOT_PARSING) #define WEBDAV_IS_PARSING(this) (this == WEBDAV_STATE_PARSING) #define WEBDAV_IS_PARSED(this) (this == WEBDAV_STATE_PARSED) /*******************/ /* data structures */ /*******************/ #pragma member_alignment __save #pragma member_alignment /* forward reference */ typedef struct WebDavTaskStruct WEBDAV_TASK; /******************/ /* copy structure */ /******************/ typedef struct WebDavCopyStruct WEBDAV_COPY; typedef struct WebDavCopyStruct { BOOL CopyingDir, CopyingMeta, MoveOverwrite; int BucketSize, DataSize, DirCount, DirFailCount, FileCount, FileFailCount, MetaCount, MetaFailCount, SuccessCount, VmsStatus; char *DataPtr; REQUEST_STRUCT *RequestPtr; STR_DSC ReadNameDsc, WriteNameDsc; ODS_STRUCT *ReadOdsPtr, *WriteOdsPtr; }; /********************/ /* delete structure */ /********************/ typedef struct WebDavDeleteStruct WEBDAV_DELETE; typedef struct WebDavDeleteStruct { int /* phase of deletion */ DelPhase, /* count of directory files deleted */ DirCount, /* count of directory file deletion errors */ DirFailCount, /* count of files deleted */ FileCount, /* count of file deletion errors */ FileFailCount, /* count of meta files deleted */ MetaCount, /* count of meta file deletion errors */ MetaFailCount, /* count of tree directories deleted this pass */ TreeDirCount, /* count of tree directories not empty this pass */ TreeDirNotEmptyCount; }; /******************/ /* lock structure */ /******************/ typedef struct WebDavLockStruct WEBDAV_LOCK; typedef struct WebDavLockStruct { LIST_ENTRY ListEntry; int Depth, Type, Scope, Timeout; int64 ExpiresTime64; char ExpiresString [48], TokenString [WEBDAV_LOCK_TOKEN_SIZE+1], TimeoutString [24]; STR_DSC LockDsc, OwnerDsc; }; /*****************/ /* DLM structure */ /*****************/ typedef struct WebDavDlmStruct WEBDAV_DLM; typedef struct WebDavDlmStruct { unsigned long ResourceHash [4]; BOOL ExMode; char ResourceName [ODS_MAX_FILE_NAME_LENGTH+1]; struct lksb LockSb; REQUEST_STRUCT *RequestPtr; WEBDAV_TASK *TaskPtr; }; /******************/ /* meta structure */ /******************/ typedef struct WebDavMetaStruct WEBDAV_META; typedef struct WebDavMetaStruct { BOOL CopyCaseChange, CopyDeleteAfter, CopyLocked, LockCreated, MetaCreated, MetaDirCreate, MetaForDir, ParseData, ParseLock, ParseLockExpires, ParseLockOwner, ParseProp, ParseCharData, ResourceNamesMatch, UpdateLocked; int ElementDepth, MetaDirNameLength, MoveDirCount, MoveDirFailCount, MoveFileCount, MoveFileFailCount, ReadMetaNameLength, ReadResourceNameLength, RabBucket, VmsStatus, WriteMetaNameLength, WriteResourceNameLength; unsigned long CopyAstParam, DeleteAstParam, ReadAstParam, UpdateAstParam; unsigned long ReadHash [4], WriteHash [4]; char *MetaDirNamePtr; char ReadMetaName [ODS_MAX_FILE_NAME_LENGTH+1], ReadResourceName [ODS_MAX_FILE_NAME_LENGTH+1], WriteMetaName [ODS_MAX_FILE_NAME_LENGTH+1], WriteResourceName [ODS_MAX_FILE_NAME_LENGTH+1]; WEBDAV_DLM DlmData, DlmDest; WEBDAV_LOCK *LockBuildPtr; WEBDAV_TASK *TaskPtr; LIST_HEAD LockList; STR_DSC CopyDsc, FromDsc, LockDsc, ParseErrorDsc, PropDsc, ReadDsc, ToDsc, WriteDsc; ODS_STRUCT ReadOds; REQUEST_STRUCT *RequestPtr; REQUEST_AST CopyAstFunction, DeleteAstFunction, ReadAstFunction, UpdateAstFunction; }; /**********************/ /* property structure */ /**********************/ typedef struct WebDavPropStruct WEBDAV_PROP; typedef struct WebDavPropStruct { BOOL AllProp, CreationDate, DisplayName, FindProp, GetContentLanguage, GetContentLength, GetContentType, GetEtag, GetLastModified, LockDiscovery, PropName, ResourceType, PropertyBehaviorKeepalive, PropertyBehaviorOmit, SupportedLock, VersionName, QuotaAvailableBytes, QuotaUsedBytes; STR_DSC SetDsc; }; /***********************/ /* XML parse structure */ /***********************/ typedef struct WebDavXmlStruct WEBDAV_XML; struct WebDavXmlStruct { int ElementDepth, ParseCharData, ParseFind, ParseLockInfo, ParseLockOwner, ParseLockScope, ParseLockType, ParseProp, ParsePropertyBehavior, ParsePropertyUpdate, ParsePropFind, ParseRemove, ParseSet; STR_DSC CharDataDsc, ElementDsc, ParseErrorDsc, PropFindDsc, PropRemoveDsc, PropSetDsc; WEBDAV_PROP *PropListPtr, *PropRemovePtr, *PropSetPtr; XML_Parser *ParserPtr; }; /******************/ /* task structure */ /******************/ struct WebDavTaskStruct { BOOL /* request is NOT begin processed by WebDAV module functions */ NotWebDavFun, /* the specification is a directory */ IsDirectory, /* global config locking enabled and path not 'webdav=NOlocking' */ LockingEnabled, /* keeps track of parent search */ PropParent, /* RFC 4331 quota properties enabled for request */ QuotaEnabled, /* the searched file is a directory file (".DIR;") */ SearchIsDirectory, /* the directory has been changed from ']dir' to '.dir]' */ SlashlessDir, /* move required a copy (different device or meta-data involved) */ MoveUsingCopy, /* overwrite was permitted and actually happened */ OverwriteOccurred; int /* subdirectory or full directory specification for meta files */ MetaFileDirLength, /* "Microsoft" in the user agent field */ MicrosoftAgent, /* seconds before network buffer is explicitly flushed */ PropFindFlushAfter, /* U*x seconds timestamp when network buffer last flushed */ PropFindFlushSecond, /* track the length of the network buffer data */ PropFindFlushLength, /* HTTP status code generated during processing */ ResponseStatusCode, /* length of search specification */ SearchSpecLength, /* parameter to meta-data test (for lock) AST */ TestLockAstParam, /* level at which (any) lock occured */ TestLockedAt, /* for checking parent meta locks */ TestLockDepth, /* for checking meta locks */ TestLockState, /* VMS status indicating locking test result */ TestLockStatus, /* depth of collection operation */ ToDepth; unsigned long /* MD5 hash of request name */ RequestHash [4], /* MD5 hash of destination name */ DestinationHash [4]; char /* subdirectory or full directory specification for meta files */ *MetaFileDirPtr; char /* buffer to contain multistatus href= scheme://host:port */ HrefHost [32+128], /* buffer to contain multistatus href= path */ HrefPath [ODS_MAX_FILE_NAME_LENGTH+1], /* */ LockTestName [ODS_MAX_FILE_NAME_LENGTH+1], /* search specification */ SearchSpec [ODS_MAX_FILE_NAME_LENGTH+1]; /* storage for content-type, etc. */ CONTENT_TYPE ContentInfo; /* VMS DLM locks on source and destination */ WEBDAV_DLM DlmSource, DlmDestin; /* used for retrieving file size, dates, etc. */ FILE_QIO FileAcpData; /* "on-disk structure" supporting both ODS-2 and ODS-5 */ ODS_STRUCT DestOds, SearchOds; /* WebDAV functional data stuctures */ WEBDAV_COPY CopyData; WEBDAV_DELETE DeleteData; WEBDAV_LOCK LockData; WEBDAV_META MetaData; WEBDAV_PROP PropData; WEBDAV_XML XmlData; /* pointer to request owning this WebDAV task structure */ REQUEST_STRUCT *RequestPtr; REQUEST_AST /* storage of next function after AST delivery */ AstFunction, /* storage of function after meta-data test (for lock) */ TestLockAstFunction; }; #pragma member_alignment __restore /***********************/ /* function prototypes */ /***********************/ /* DAVWEB.C module */ void DavWebAgentDetect (REQUEST_STRUCT*); int DavWebCreateDir (REQUEST_STRUCT*, char*, int); int DavWebDateTimeTo3339 (char*, int64*); int DavWebDateTimeFrom3339 (char*, int64*); BOOL DavWebDequeue (WEBDAV_DLM*); int DavWebDestination (REQUEST_STRUCT*); int DavWebDirFromName (char*, char*, int); BOOL DavWebDlmEnqueue (REQUEST_STRUCT*, WEBDAV_DLM*, char*, unsigned long*, BOOL, BOOL, REQUEST_AST, unsigned long); int DavWebDlmTest (char*); BOOL DavWebEnqueue (WEBDAV_DLM*, BOOL, BOOL, REQUEST_AST, unsigned long); void DavWebEnd (REQUEST_STRUCT*); void DavWebGetHead (REQUEST_STRUCT*); void DavWebGetHeadEnd (REQUEST_STRUCT*); void DavWebGetHead404 (REQUEST_STRUCT*); DavWebHref (REQUEST_STRUCT*, char*, int); int DavWebInit (); BOOL DavWebMicrosoftDetect (REQUEST_STRUCT*); DavWebMkCol (REQUEST_STRUCT*); DavWebMkCol2 (REQUEST_STRUCT*); DavWebMultiStatus (REQUEST_STRUCT*, int, char*); DavWebMicrosoftMunge1 (REQUEST_STRUCT*); DavWebMicrosoftMunge2 (REQUEST_STRUCT*); int DavWebSlashlessMunge (REQUEST_STRUCT*, BOOL); char* DavWebPathAccess (REQUEST_STRUCT*); void DavWebPutBegin (REQUEST_STRUCT*); BOOL DavWebRequest (REQUEST_STRUCT*); DavWebRequest2 (REQUEST_STRUCT*); DavWebReport (REQUEST_STRUCT*); DavWebReportOnParse (REQUEST_STRUCT*); DavWebResponse (REQUEST_STRUCT*, int, int, char*, char*, int); DavWebResponse201 (REQUEST_STRUCT*); DavWebResponse207 (REQUEST_STRUCT*); /* DAVCOPY.C module */ DavCopyBegin (REQUEST_STRUCT*); DavCopyDirectory (REQUEST_STRUCT*); DavCopyDirectory2 (REQUEST_STRUCT*); DavCopyEnd (WEBDAV_COPY*); DavCopyFile (REQUEST_STRUCT*); DavCopyFile2 (WEBDAV_COPY*); DavCopyMeta (REQUEST_STRUCT*, char*, char*); DavCopyNext (WEBDAV_COPY*); DavCopyNextAst (WEBDAV_COPY*); DavCopyOpen (WEBDAV_COPY*); DavCopyReadOpenAst (WEBDAV_COPY*); DavCopyReadAst (struct RAB*); DavCopyWriteAst (struct RAB*); DavCopyWriteOpenAst (WEBDAV_COPY*); /* DAVDELETE.C module */ DavDeleteBegin (REQUEST_STRUCT*); DavDeleteBegin2 (REQUEST_STRUCT*); DavDeleteEnd (REQUEST_STRUCT*); void DavDeleteErase (REQUEST_STRUCT*); int DavDeleteMetaErase (WEBDAV_META*); int DavDeleteParse (REQUEST_STRUCT*, BOOL, char*); DavDeleteSearch (REQUEST_STRUCT*); DavDeleteSearchAst (REQUEST_STRUCT*); /* DAVLOCK.C module */ DavLockBegin (REQUEST_STRUCT*); int DavLockSetTimeout (REQUEST_STRUCT*, WEBDAV_LOCK*); DavLockDlm (REQUEST_STRUCT*); DavLockEnd (WEBDAV_META*); WEBDAV_LOCK* DavLockFindToken (REQUEST_STRUCT*); WEBDAV_LOCK* DavLockFindIf (REQUEST_STRUCT*, int); DavLockTest (REQUEST_STRUCT*, char*, BOOL, REQUEST_AST, unsigned long); BOOL DavLockIfToken (REQUEST_STRUCT*, WEBDAV_LOCK*); DavLockPreProcess (REQUEST_STRUCT*); DavLockSetOpaqueToken (REQUEST_STRUCT*, WEBDAV_LOCK*); DavLockSetUrnUuidToken (REQUEST_STRUCT*, WEBDAV_LOCK*); DavLockUpdate (WEBDAV_META*); DavLockXml (REQUEST_STRUCT*, WEBDAV_LOCK*, STR_DSC*); DavUnLockBegin (REQUEST_STRUCT*); DavUnLockEnd (WEBDAV_META*); DavUnLockUpdate (WEBDAV_META*); /* DavMeta.C module */ int DavMetaBuild (WEBDAV_META*); int DavMetaCreateDir (WEBDAV_META*); int DavMetaDeleteDir (WEBDAV_META*); BOOL DavMetaDir (REQUEST_STRUCT*, ODS_STRUCT*); BOOL DavMetaFile (ODS_STRUCT*); int DavMetaFileName (char*, char*, int); int DavMetaOds (char*); DavMetaLock (REQUEST_STRUCT*, WEBDAV_META*, char*, REQUEST_AST, unsigned long); DavMetaLockAst (WEBDAV_META*); DavMetaName (WEBDAV_META*, char*, int); DavMetaRead (REQUEST_STRUCT*, WEBDAV_META*, char*, REQUEST_AST, unsigned long); DavMetaReadOpen (WEBDAV_META*); DavMetaReadAst (struct RAB*); DavMetaOpenAst (WEBDAV_META*); BOOL DavMetaRemove (REQUEST_STRUCT*, STR_DSC*, STR_DSC*); STR_DSC* DavMetaSet (REQUEST_STRUCT*, STR_DSC*, STR_DSC*); STR_DSC* DavMetaSearch (REQUEST_STRUCT*, STR_DSC*, STR_DSC*); DavMetaUpdate (WEBDAV_META*, REQUEST_AST, unsigned long); DavMetaUpdateWrite (struct RAB*); int DavMetaParseXml (WEBDAV_META*); void XMLCALL DavMetaCharData (WEBDAV_META*, XML_Char*, int); void XMLCALL DavMetaEndElement (WEBDAV_META*, char*); void XMLCALL DavMetaStartElement (WEBDAV_META*, char*, char**); /* DAVMOVE.C module */ int DavMoveBegin (REQUEST_STRUCT*); int DavMoveEnd (REQUEST_STRUCT*); int DavMoveFile (REQUEST_STRUCT*); int DavMoveDirectory (REQUEST_STRUCT*); int DavMoveMeta (REQUEST_STRUCT*, char*, char*); int DavMoveRename (REQUEST_STRUCT*, struct dsc$descriptor*, struct dsc$descriptor*); /* DAVPROP.C module */ int DavPropFind (); DavPropBegin (REQUEST_STRUCT*); DavPropBegin2 (REQUEST_STRUCT*); DavPropDead (REQUEST_STRUCT*); DavPropEnd (REQUEST_STRUCT*); DavPropLive (REQUEST_STRUCT*); DavPropLiveAcp (REQUEST_STRUCT*); DavPropName (REQUEST_STRUCT*); DavPropParent (REQUEST_STRUCT*); int DavPropParse (REQUEST_STRUCT*); DavPropPatchBegin (REQUEST_STRUCT*); DavPropPatchBegin2 (REQUEST_STRUCT*); DavPropPatchEnd (REQUEST_STRUCT*); DavPropPatchUpdate (WEBDAV_META*); DavPropQuota (REQUEST_STRUCT*); DavPropReadAst (REQUEST_STRUCT*); DavPropSearch (REQUEST_STRUCT*); DavPropSearchAst (REQUEST_STRUCT*); DavPropPatchBegin (REQUEST_STRUCT*); void XMLCALL DavPropPatchStartElement (REQUEST_STRUCT*, char*, const char**); void XMLCALL DavPropPatchEndElement (REQUEST_STRUCT*, char*); /* DAVXML.C module */ void XMLCALL DavXmlCharData (REQUEST_STRUCT*, XML_Char*, int); void DavXmlInit (); int DavXmlParseText (REQUEST_STRUCT*, STR_DSC*); BOOL DavXmlMemoryError (REQUEST_STRUCT*, XML_Parser*); DavXmlParseError (REQUEST_STRUCT*, XML_Parser*, STR_DSC*, STR_DSC*); DavXmlTrimElement (STR_DSC*); void XMLCALL DavXmlEndElement (REQUEST_STRUCT*, char*); void XMLCALL DavXmlStartElement (REQUEST_STRUCT*, char*, char**); DavXmlReport (REQUEST_STRUCT*); DavXmlWatchProp (REQUEST_STRUCT*); #if DAVXML_MEMORY void DavXmlMemoryFree (void*); void DavXmlMemoryInit (); void* DavXmlMemoryMalloc (size_t); void* DavXmlMemoryRealloc (void*, size_t); #endif /* DAVXML_MEMORY */ char* DavXmlMemoryReport (); #endif /* DAVWEB_H_LOADED */ /*****************************************************************************/