aboutsummaryrefslogtreecommitdiff
path: root/src/util_rt.h
blob: 8953915965f20f9dcf17adce00b53164be2e1cfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#pragma once
#include "pack.h"

#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#include <time.h>

#include <sys/poll.h>

#include <mbedtls/ctr_drbg.h>


void prne_empty_func (void);
void prne_close (const int fd);
void prne_shutdown (const int fd, const int how);
/* prne_sck_fcntl(fd)
*
* Sets FD_CLOEXEC and O_NONBLOCK. Failure to set FD_CLOEXEC is ignored.
*/
bool prne_sck_fcntl (const int fd);
int prne_chfd (const int old, const int ny);

void prne_memzero(void *addr, const size_t len);

void *prne_malloc (const size_t se, const size_t cnt);
void *prne_realloc (void *ptr, const size_t se, const size_t cnt);
void *prne_calloc (const size_t se, const size_t cnt);
char *prne_alloc_str (const size_t len);
void prne_free (void *ptr);
size_t prne_getpagesize (void);

bool prne_own_realloc (
	void **p,
	bool *ownership,
	const size_t se,
	size_t *old,
	const size_t req);

bool prne_nstreq (const char *a, const char *b);
size_t prne_nstrlen (const char *s);
char *prne_strnchr (const char *p, const char c, const size_t n);
size_t prne_str_shift_spaces (char *str, const size_t len);
void prne_transstr (char *str,  int(*trans_f)(int));
void prne_transmem (void *m, size_t len, int(*trans_f)(int));
void *prne_memrchr (
	const void *haystack,
	const int c,
	const size_t hs_len);
void *prne_memrmem (
	const void *haystack,
	const size_t hs_len,
	const void *const needle,
	const size_t n_len);
void *prne_memmem (
	const void *haystack,
	const size_t hs_len,
	const void *const needle,
	const size_t n_len);
char *prne_build_str (const char **const arr, const size_t cnt);
char *prne_rebuild_str (void *prev, const char **const arr, const size_t cnt);

bool prne_hex_fromstr (const char *str, uint_fast8_t *out);
void prne_hex_tochar (const uint_fast8_t in, char *out, const bool upper);

bool prne_uuid_fromstr (const char *str, uint8_t *out);
void prne_uuid_tostr (const uint8_t *in, char *out);

struct timespec prne_add_timespec (
	const struct timespec a,
	const struct timespec b);
struct timespec prne_sub_timespec (
	const struct timespec a,
	const struct timespec b);
double prne_real_timespec (const struct timespec ts);
struct timespec prne_ms_timespec (const long ms);
int prne_cmp_timespec (const struct timespec a, const struct timespec b);
struct timespec prne_min_timespec (
	const struct timespec a,
	const struct timespec b);
struct timespec prne_max_timespec (
	const struct timespec a,
	const struct timespec b);
struct timespec prne_gettime (const clockid_t cid);

struct timeval prne_ts2tv (const struct timespec ts);
struct timeval prne_ms_timeval (const long ms);

char *prne_enc_base64_mem (const uint8_t *data, const size_t size);
bool prne_dec_base64_mem (
	const char *str,
	const size_t str_len,
	uint8_t **data,
	size_t *size);

// getrandom polyfill
ssize_t prne_geturandom (void *buf, const size_t len);

void prne_bitop_and (
	const uint8_t *a,
	const uint8_t *b,
	uint8_t *c,
	const size_t len);
void prne_bitop_or (
	const uint8_t *a,
	const uint8_t *b,
	uint8_t *c,
	const size_t len);
void prne_bitop_inv (
	const uint8_t *x,
	uint8_t *y,
	const size_t len);