From dffd975f86ad2c80265dd09b47abe5b41f187d59 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Thu, 25 Jun 2026 21:46:30 +0200 Subject: [PATCH] prepare dav-rs xml type --- dav-rs/src/dav/ffi.rs | 36 ++++++++++++++++++++++++++++++++++++ dav-rs/src/dav/mod.rs | 3 ++- dav-rs/src/dav/xml.rs | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 dav-rs/src/dav/xml.rs diff --git a/dav-rs/src/dav/ffi.rs b/dav-rs/src/dav/ffi.rs index 40fff76..aea58aa 100644 --- a/dav-rs/src/dav/ffi.rs +++ b/dav-rs/src/dav/ffi.rs @@ -94,3 +94,39 @@ pub enum DavError { DavProxyAuthRequired, DavNetAuthRequired, } + + +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +pub enum DavXmlNodeType { + None = 0, + Element, + Text, +} + +#[repr(C)] +#[derive(Debug)] +pub struct DavXmlNode { + pub node_type: DavXmlNodeType, + + pub namespace: *mut c_char, + pub name: *mut c_char, + + pub prev: *mut DavXmlNode, + pub next: *mut DavXmlNode, + pub children: *mut DavXmlNode, + pub parent: *mut DavXmlNode, + + pub attributes: *mut DavXmlAttr, + + pub content: *mut c_char, + pub contentlength: usize, +} + +#[repr(C)] +#[derive(Debug)] +pub struct DavXmlAttr { + pub name: *mut c_char, + pub value: *mut c_char, + pub next: *mut DavXmlAttr, +} diff --git a/dav-rs/src/dav/mod.rs b/dav-rs/src/dav/mod.rs index 19d865a..6466028 100644 --- a/dav-rs/src/dav/mod.rs +++ b/dav-rs/src/dav/mod.rs @@ -29,4 +29,5 @@ mod context; mod ffi; mod session; -mod resource; \ No newline at end of file +mod resource; +mod xml; \ No newline at end of file diff --git a/dav-rs/src/dav/xml.rs b/dav-rs/src/dav/xml.rs new file mode 100644 index 0000000..31cf6c2 --- /dev/null +++ b/dav-rs/src/dav/xml.rs @@ -0,0 +1,32 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2026 Olaf Wintermann. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +use crate::dav::ffi; + +pub struct XmlNode { + pub ptr: *mut ffi::DavXmlNode, +} \ No newline at end of file -- 2.52.0