libidav/utils.h

Sun, 17 Dec 2023 14:25:34 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 17 Dec 2023 14:25:34 +0100
changeset 797
edbb20b1438d
parent 795
05647e862a17
child 808
f21be698def9
permissions
-rw-r--r--

[Makefile] fix missing rules preventing dry-runs

We have to support dry-runs, because many IDEs are using
dry-runs to collect build information.

Some rules have dependencies that expect certain files or
directories to be just present. We added respective build
rules which invoke the test program. This way, the behavior
when running make normally is exactly the same, but dry-runs
are also not failing now.

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright 2019 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.
 */

#ifndef UTILS_H
#define	UTILS_H

#ifdef _WIN32
#include <winsock2.h>
#include <io.h>
#endif /* _WIN32 */

#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
/* if one is not defined, the others are probably also not defined */
#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 /* S_IRWXG */

#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);
char* util_concat_path(const char *url_base, const char *path);
cxmutstr util_concat_path_s(cxstring url_base, cxstring path);
char* util_get_url(DavSession *sn, const char *href);
void util_set_url(DavSession *sn, const char *href);

/*
 * returns true if path1 and path2 are equal or if path2 is a child of path1
 */
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_size_str(DavBool iscollection, uint64_t contentlength);
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();

//sstr_t util_getsubstr_until_token(sstr_t str, sstr_t token, sstr_t *sub);

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	/* UTILS_H */

mercurial