#ifndef UTILS_H
#define UTILS_H
#ifdef _WIN32
#include <winsock2.h>
#include <io.h>
#endif
#include <sys/types.h>
#include <libxml/tree.h>
#include <cx/string.h>
#include <cx/buffer.h>
#include <sys/stat.h>
#include <inttypes.h>
#include <curl/curl.h>
#include "webdav.h"
#ifdef _WIN32
#ifndef mode_t
#define mode_t int
#endif
#endif
#ifndef S_IRWXG
#define S_IRWXU 0700
#define S_IRWXG 070
#define S_IRGRP 040
#define S_IWGRP 020
#define S_IXGRP 010
#define S_IRWXO 07
#define S_IROTH 04
#define S_IWOTH 02
#define S_IXOTH 01
#endif
#ifdef __cplusplus
extern "C" {
#endif
time_t util_parse_creationdate(
char *str);
time_t util_parse_lastmodified(
char *str);
int util_mkdir(
char *path,
mode_t mode);
char* util_url_base(
const char *url);
cxstring util_url_base_s(cxstring url);
const char* util_url_path(
const char *url);
cxstring util_url_path_s(cxstring url);
char* util_url_decode(DavSession *sn,
const char *url);
const char* util_resource_name(
const char *url);
const char* util_resource_name_c(
const char *url,
char pathseparator);
const char* util_path_file_name(
const char *url);
char* util_concat_path(
const char *url_base,
const char *path);
cxmutstr util_concat_path_s(cxstring url_base, cxstring path);
cxmutstr util_concat_path_ext(cxstring url_base, cxstring path,
char separator);
cxmutstr util_concat_sys_path(cxstring base, cxstring path);
char* util_get_url(DavSession *sn,
const char *href);
void util_set_url(DavSession *sn,
const char *href);
int util_path_isrelated(
const char *path1,
const char *path2);
int util_path_isabsolut(
const char *path);
char* util_path_normalize(
const char *path);
char* util_create_relative_path(
const char *abspath,
const char *base);
void util_capture_header(
CURL *handle, CxMap* map);
char* util_path_to_url(DavSession *sn,
const char *path);
char* util_parent_path(
const char *path);
char* util_sys_parent_path(
const char *path);
char* util_size_str(DavBool iscollection,
uint64_t contentlength);
char* util_size_str2(DavBool iscollection,
uint64_t contentlength,
uint64_t dimension,
int precision);
char* util_date_str(
time_t tm);
int util_getboolean(
const char *v);
int util_strtouint(
const char *str,
uint64_t *value);
int util_strtoint(
const char *str,
int64_t *value);
int util_szstrtouint(
const char *str,
uint64_t *value);
int util_uint_mul(
uint64_t a,
uint64_t b,
uint64_t *result);
char* util_xml_get_text(
const xmlNode *elm);
char* util_base64decode(
const char *in);
char* util_base64decode_len(
const char *in,
int *outlen);
char* util_base64encode(
const char *in,
size_t len);
char* util_encrypt_str(DavSession *sn,
const char *str,
const char *key);
char* util_encrypt_str_k(DavSession *sn,
const char *str, DavKey *key);
char* util_decrypt_str(DavSession *sn,
const char *str,
const char *key);
char* util_decrypt_str_k(DavSession *sn,
const char *str, DavKey *key);
char* util_random_str();
cxmutstr util_readline(
FILE *stream);
char* util_password_input(
char *prompt);
int util_exec_command(
char *command, CxBuffer *outbuf);
char* util_hexstr(
const unsigned char *data,
size_t len);
void util_remove_trailing_pathseparator(
char *path);
char* util_file_hash(
const char *path);
#ifdef __cplusplus
}
#endif
#endif