diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/include/arena.h | 28 | ||||
| -rw-r--r-- | lib/include/log.h | 59 | ||||
| -rw-r--r-- | lib/include/net.h | 93 | ||||
| -rw-r--r-- | lib/include/sha1.h | 42 | ||||
| -rw-r--r-- | lib/include/util.h | 8 | ||||
| -rw-r--r-- | lib/include/vector.h | 27 | ||||
| -rw-r--r-- | lib/meson.build | 3 |
7 files changed, 1 insertions, 259 deletions
diff --git a/lib/include/arena.h b/lib/include/arena.h deleted file mode 100644 index fa1674b..0000000 --- a/lib/include/arena.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef VL_ARENA_H_INCLUDED -#define VL_ARENA_H_INCLUDED - -/* implements a basic arena allocator */ - -#include <stddef.h> -#include <stdarg.h> - -typedef struct vl__arena_tag vl_arena; - -/* returns NULL if an arena could not be allocated */ -vl_arena *vl_arena_new(size_t cap); - -/* aborts if the arena is overflowing */ -void *vl_arena_push(vl_arena *parena, size_t len); - -/* resets the arena (but does not free it) */ -void vl_arena_reset(vl_arena *parena); - -/* frees the arena */ -void vl_arena_free(vl_arena *parena); - -char *vl_arena_strdup(vl_arena *parena, const char *str); - -char *vl_arena_sprintf(vl_arena *parena, const char *fmt, ...); -char *vl_arena_vsprintf(vl_arena *parena, const char *fmt, va_list ap); - -#endif /* include guard */ diff --git a/lib/include/log.h b/lib/include/log.h deleted file mode 100644 index 1483559..0000000 --- a/lib/include/log.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef VL_LOG_H_INCLUDED -#define VL_LOG_H_INCLUDED - -#include <stdio.h> -#include <stdarg.h> - -#define LOG_TRACE 0u -#define LOG_DEBUG 1u -#define LOG_INFO 2u -#define LOG_WARN 3u -#define LOG_ERROR 4u - -/* Log functions MUST leave errno untouched */ - -void vl_log_setlevel(unsigned level); - -void vl_logv(unsigned level, const char *fmt, va_list args); -void vl_log(unsigned level, const char *fmt, ...) __attribute__((format(printf, 2, 3))); - -#ifndef LOG_MIN_LEVEL -#define LOG_MIN_LEVEL LOG_TRACE -#endif - -#if LOG_TRACE >= LOG_MIN_LEVEL -#define LOG_TRACE_ENABLED -#define vl_trace(...) vl_log(LOG_TRACE, __VA_ARGS__) -#define vl_tracev(...) vl_logv(LOG_TRACE, __VA_ARGS__) -#else -#define vl_trace(...) -#define vl_tracev(...) -#endif - -#if LOG_DEBUG >= LOG_MIN_LEVEL -#define LOG_DEBUG_ENABLED -#define vl_debug(...) vl_log(LOG_DEBUG, __VA_ARGS__) -#define vl_debugv(...) vl_logv(LOG_DEBUG, __VA_ARGS__) -#else -#define vl_debug(...) -#define vl_debugv(...) -#endif - -#if LOG_INFO >= LOG_MIN_LEVEL -#define LOG_INFO_ENABLED -#define vl_info(...) vl_log(LOG_INFO, __VA_ARGS__) -#define vl_infov(...) vl_logv(LOG_INFO, __VA_ARGS__) -#else -#define vl_info(...) -#define vl_infov(...) -#endif - -#define LOG_WARN_ENABLED -#define vl_warn(...) vl_log(LOG_WARN, __VA_ARGS__) -#define vl_warnv(...) vl_logv(LOG_WARN, __VA_ARGS__) - -#define LOG_ERROR_ENABLED -#define vl_error(...) vl_log(LOG_ERROR, __VA_ARGS__) -#define vl_errorv(...) vl_logv(LOG_ERROR, __VA_ARGS__) - -#endif diff --git a/lib/include/net.h b/lib/include/net.h deleted file mode 100644 index 610ed77..0000000 --- a/lib/include/net.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef VL_NET_H_INCLUDED -#define VL_NET_H_INCLUDED - -#include "arena.h" -#include "sha1.h" - -enum { - /* The operation completed successfully */ - NET_OK = 0, - - /* There was some kind of error relating to I/O on the local system */ - NET_EIO = -1, - - /* There was some kind of network error downloading the file. */ - NET_ENETWORK = -2, - - /* The server gave us a bad status code while downloading the file. */ - NET_ESTATUS = -3, - - /* An unrecoverable integrity error occurred. */ - NET_EINTEGRITY = -4, - - /* An unspecified error occurred. */ - NET_EUNSPEC = -5, - - /* An unspecified (remote) error occurred. */ - NET_EREMOTEUNSPEC = -6 -}; - -enum { - VERIFY_SIZE = 1u, - VERIFY_SHA1 = 2u -}; - -/* Ensures the latest version of the file available at 'url' is downloaded to 'target_path'. - * Will avoid downloading the file if it hasn't changed. - * - * Never returns NET_EINTEGRITY. */ -int vl_net_ensure_cached(vl_arena *scratch, const char *url, const char *target_path); - -/* Will verify that the file at 'target_path' hasn't been tampered with since being updated - * by vl_net_ensure_cached. - * - * Returns NET_EIO if the file doesn't exist or couldn't be read. - * Returns NET_EINTEGRITY if the file on disk doesn't match. */ -int vl_net_verify_cached(vl_arena *scratch, const char *target_path); - -/* Downloads a file for which you know the integrity information (SHA1 and/or size) from 'url' to - * 'target_path'. Will not download the file if the file already exists with correct SHA1 and size - * (as specified). - * - * Pass variadic arguments in the following order: - * - size_t size (if VERIFY_SIZE is set) - * - const uint8_t *hash (if VERIFY_SHA1 is set) - * - * Returns NET_EINTEGRITY if the file at 'url' doesn't match the provided integrity information. */ -int vl_net_ensure_verified(const char *url, const char *target_path, unsigned flags, ...); - -/* See vl_net_ensure_verified for information on the variadic argument list. - * - * Returns NET_EINTEGRITY if the file at 'target_path' doesn't match the provided integrity information. - * Returns NET_EIO if the downloaded file is not readable or could not be verified due to an I/O issue. */ -int vl_net_verify(const char *target_path, unsigned flags, ...); - -enum { - /* The job hasn't been started yet. */ - STATUS_WAITING = 0u, - - /* The job is in flight. */ - STATUS_RUNNING = 1u, - - /* The job is finished without errors. */ - STATUS_COMPLETE = 2u, - - /* The job is finished with errors. */ - STATUS_ERROR = 3u, - - /* The job finished successfully, but the downloaded file failed integrity checks. */ - STATUS_INTEGRITY = 4u -}; - -struct vl_download_job { - const char *url; - const char *opath; - size_t expect_len; - vl_sha1 expect_hash; - unsigned verify_flags; - unsigned status; -}; - -int vl_net_download_all(struct vl_download_job *jobs, size_t njobs, size_t simult); - -#endif diff --git a/lib/include/sha1.h b/lib/include/sha1.h deleted file mode 100644 index 05cedd4..0000000 --- a/lib/include/sha1.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef VL_SHA1_H_INCLUDED -#define VL_SHA1_H_INCLUDED - -#include <stdint.h> -#include <stddef.h> - -#define VL_SHA1_STATELEN_32 ( 5u) /* 160 bits / 32 (bits per int) = 5 ints */ -#define VL_SHA1_CHUNKLEN_BYTES (64u) /* 512 bits / 8 (bits per byte) = 64 bytes */ - -#define VL_SHA1_DIGEST_BYTES (20u) -#define VL_SHA1_DIGEST_HEX_STRLEN (VL_SHA1_DIGEST_BYTES << 1) - -typedef struct { - /* struct fields are internal (struct size is ABI doe) */ - size_t vl_nchunk; - uint64_t vl_total; - uint32_t vl_state[VL_SHA1_STATELEN_32]; - uint8_t vl_chunk[VL_SHA1_CHUNKLEN_BYTES]; -} vl_sha1_st; - -typedef uint8_t vl_sha1[VL_SHA1_DIGEST_BYTES]; - -/* initializes a SHA1 state struct */ -void vl_sha1_init(vl_sha1_st *st); - -/* updates a SHA1 state struct with new data (must have been initialized with vl_sha1_init first) */ -void vl_sha1_update(vl_sha1_st *st, const void *data, size_t sz); - -/* finalizes a SHA1 state struct, writing the final digest to the second argument. the state struct - * is now invalid, and vl_sha1_init must be used on it again before it can be reused. */ -void vl_sha1_finalize(vl_sha1_st *st, vl_sha1 out); - -/* shortcut for hashing a buffer */ -void vl_sha1_buffer(vl_sha1 odigest, const void *data, size_t sz); - -/* converts digest bytes to a hex string (does NOT place a NUL byte) */ -void vl_sha1_encode(const vl_sha1 dig, char hex[VL_SHA1_DIGEST_HEX_STRLEN]); - -/* converts a hex string to digest bytes */ -int vl_sha1_decode(vl_sha1 odigest, const char hex[VL_SHA1_DIGEST_HEX_STRLEN]); - -#endif /* include guard */ diff --git a/lib/include/util.h b/lib/include/util.h deleted file mode 100644 index 5ef3c8b..0000000 --- a/lib/include/util.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef VL_UTIL_H_INCLUDED -#define VL_UTIL_H_INCLUDED - -#include <sys/stat.h> - -int vl_mkdir_parents(int fd, char *path, mode_t mode); - -#endif diff --git a/lib/include/vector.h b/lib/include/vector.h deleted file mode 100644 index 02ed84e..0000000 --- a/lib/include/vector.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef VL_VECTOR_H_INCLUDED -#define VL_VECTOR_H_INCLUDED - -#include <stddef.h> - -/* implements a vector type (array of same-sized values) */ - -typedef struct vl__vector_tag vl_vector; - -vl_vector *vl_vector_new(size_t sz); -vl_vector *vl_vector_new_ex(size_t sz, size_t init_cap); -void vl_vector_free(vl_vector *vec); - -/* will abort if realloc fails to shrink the allocation (should never happen) */ -void vl_vector_shrink_to_size(vl_vector *vec); - -#define vl_newvec(_t) vl_vector_new(sizeof(_t)) -#define vl_newvec_ex(_t, _ic) vl_vector_new_ex(sizeof(_t), _ic) - -int vl_vector_push(vl_vector *vec, void *data); -int vl_vector_push_vec(vl_vector *vec, void *data, size_t n); -int vl_vector_push_2d(vl_vector *vec, void **data, size_t n); - -size_t vl_vector_size(const vl_vector *vec); -void *vl_vector_values(const vl_vector *vec, size_t *psz); - -#endif diff --git a/lib/meson.build b/lib/meson.build index 04c2cd9..450b613 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -1,5 +1,4 @@ -vaclaunch_lib_inc = include_directories('include') vaclaunch_libs = both_libraries('vaclaunch', files('manifest.c', 'log.c', 'net.c', 'sha1.c', 'arena.c', 'util.c', 'vector.c'), - include_directories : vaclaunch_lib_inc, + include_directories : proj_inc, dependencies : [ curl_dep, jansson_dep ]) |
