#ifndef FINFO_H
#define FINFO_H
#include <libidav/webdav.h>
#include <inttypes.h>
#include <sys/stat.h>
#include <cx/string.h>
#include "system.h"
#ifdef __cplusplus
extern "C" {
#endif
#define FINFO_MTIME 1
#define FINFO_OWNER 2
#define FINFO_MODE 4
#define FINFO_XATTR 8
typedef struct XAttributes {
size_t nattr;
char **names;
cxmutstr *values;
char *hash;
} XAttributes;
typedef struct FileInfo {
time_t last_modified;
mode_t mode;
uid_t uid;
gid_t gid;
DavBool date_set;
DavBool mode_set;
DavBool uid_set;
DavBool gid_set;
} FileInfo;
typedef int(*xattr_filter_func)(
const char*,
void*);
uint32_t parse_finfo_settings(
const char *str,
char **unknown);
int resource_set_finfo(
const char *path, DavResource *res,
uint32_t finfo);
int resource_set_finfo_s(
struct stat *s, DavResource *res,
uint32_t finfo);
XAttributes* xml_get_attributes(DavXmlNode *xml);
XAttributes* file_get_attributes(
const char *path,
xattr_filter_func filter,
void *filterdata);
int resource_set_xattr(DavResource *res, XAttributes *xattr);
void xattributes_free(XAttributes *xattr);
char* get_xattr_hash(DavXmlNode *finfo);
void finfo_get_values(DavXmlNode *xml, FileInfo *outval);
#ifdef __cplusplus
}
#endif
#endif