41#ifdef CONF_FAMILY_UNIX
45#ifdef CONF_PLATFORM_LINUX
46#include <netinet/in.h>
47#include <sys/socket.h>
50#if __cplusplus >= 201703L
51#define MAYBE_UNUSED [[maybe_unused]]
52#elif defined(__GNUC__)
53#define MAYBE_UNUSED __attribute__((unused))
59#define GNUC_ATTRIBUTE(x) __attribute__(x)
61#define GNUC_ATTRIBUTE(x)
82#define dbg_assert(test, fmt, ...) \
87 dbg_assert_imp(__FILE__, __LINE__, fmt, ##__VA_ARGS__); \
96#if defined(__cplusplus)
100dbg_assert_imp(
const char *filename,
int line,
const char *fmt, ...)
103#ifdef __clang_analyzer__
106#define dbg_assert(test, fmt, ...) assert(test)
128#if defined(__cplusplus)
149void dbg_msg(
const char *sys,
const char *fmt, ...)
170void mem_copy(
void *dest, const
void *source,
size_t size);
185void mem_move(
void *dest, const
void *source,
size_t size);
198 static_assert((std::is_trivially_constructible<T>::value && std::is_trivially_destructible<T>::value) || std::is_fundamental<T>::value);
199 memset(block, 0, size);
215int mem_comp(
const void *a,
const void *b,
size_t size);
647void *
thread_init(
void (*threadfunc)(
void *),
void *user,
const char *name);
692#if defined(CONF_FAMILY_WINDOWS)
694#elif defined(CONF_PLATFORM_MACOS)
695#include <semaphore.h>
697#elif defined(CONF_FAMILY_UNIX)
698#include <semaphore.h>
701#error not implemented on this platform
820#ifdef CONF_FAMILY_UNIX
1102#if defined(CONF_FAMILY_UNIX)
1150#elif defined(CONF_FAMILY_WINDOWS)
1159std::string windows_format_system_message(
unsigned long error);
1181void str_append(
char *dst,
const char *src,
int dst_size);
1214int str_copy(
char *dst,
const char *src,
int dst_size);
1246void str_utf8_truncate(
char *dst,
int dst_size,
const char *src,
int truncation_len);
1262void str_truncate(
char *dst,
int dst_size,
const char *src,
int truncation_len);
1291int str_format_v(
char *buffer,
int buffer_size,
const char *format, va_list args)
1310int str_format(
char *buffer,
int buffer_size,
const char *format, ...)
1313#if !defined(CONF_DEBUG)
1316template<
typename... Args>
1319 static_assert(
sizeof...(args) > 0,
"Use str_copy instead of str_format without format arguments");
1320 return str_format(buffer, buffer_size, format, args...);
1326 if(strcmp(format,
"%d") == 0)
1332 return str_format(buffer, buffer_size, format, val);
1336#define str_format str_format_opt
1502int str_comp(
const char *a,
const char *b);
1519int str_comp_num(
const char *a,
const char *b,
int num);
1601const char *
str_endswith(
const char *str,
const char *suffix);
1689const char *
str_find(
const char *haystack,
const char *needle);
1721const char *
str_rchr(
const char *haystack,
char needle);
1749void str_hex(
char *dst,
int dst_size,
const void *data,
int data_size);
1765void str_hex_cstyle(
char *dst,
int dst_size,
const void *data,
int data_size,
int bytes_per_line = 12);
1800void str_base64(
char *dst,
int dst_size,
const void *data,
int data_size);
1835void str_timestamp_ex(time_t time,
char *buffer,
int buffer_size,
const char *format)
1853#define FORMAT_TIME "%H:%M:%S"
1854#define FORMAT_SPACE "%Y-%m-%d %H:%M:%S"
1855#define FORMAT_NOSPACE "%Y-%m-%d_%H-%M-%S"
1884int str_time(int64_t centisecs,
int format,
char *buffer,
int buffer_size);
1885int str_time_float(
float secs,
int format,
char *buffer,
int buffer_size);
1897void str_escape(
char **dst,
const char *src,
const char *end);
2062char *
fs_getcwd(
char *buffer,
int buffer_size);
2095void fs_split_file_extension(
const char *filename,
char *name,
size_t name_size,
char *extension =
nullptr,
size_t extension_size = 0);
2136int fs_rename(
const char *oldname,
const char *newname);
2152int fs_file_time(
const char *name, time_t *created, time_t *modified);
2204void swap_endian(
void *data,
unsigned elem_size,
unsigned num);
2217bool str_toint(
const char *str,
int *out);
2324const char *
str_utf8_find_nocase(
const char *haystack,
const char *needle,
const char **end =
nullptr);
2493void str_utf8_stats(
const char *str,
size_t max_size,
size_t max_count,
size_t *size,
size_t *count);
2537const char *
str_next_token(
const char *str,
const char *delim,
char *buffer,
int buffer_size);
2552int str_in_list(
const char *list,
const char *delim,
const char *needle);
2617#if defined(CONF_FAMILY_WINDOWS)
2644#if !defined(CONF_PLATFORM_ANDROID)
2666#if defined(CONF_FAMILY_WINDOWS)
2677std::wstring windows_args_to_wide(
const char **arguments,
const size_t num_arguments);
2857#if defined(CONF_EXCEPTION_HANDLING)
2868void init_exception_handler();
2877void set_exception_handler_log_file(
const char *log_file_path);
2915#if defined(CONF_FAMILY_WINDOWS)
2929std::wstring windows_utf8_to_wide(
const char *str);
2944std::optional<std::string> windows_wide_to_utf8(
const wchar_t *wide_str);
2956class CWindowsComLifecycle
2959 CWindowsComLifecycle(
bool HasWindow);
2960 ~CWindowsComLifecycle();
2976bool shell_register_protocol(
const char *protocol_name,
const char *executable,
bool *updated);
2993bool shell_register_extension(
const char *extension,
const char *description,
const char *executable_name,
const char *executable,
bool *updated);
3008bool shell_register_application(
const char *name,
const char *executable,
bool *updated);
3024bool shell_unregister_class(
const char *shell_class,
bool *updated);
3038bool shell_unregister_application(
const char *executable,
bool *updated);
3053 size_t operator()(
const NETADDR &Addr)
const noexcept;
Definition: system.h:2898
~CCmdlineFix()
Definition: system.h:2909
int m_Argc
Definition: system.h:2899
const char ** m_ppArgv
Definition: system.h:2900
CCmdlineFix(int *pArgc, const char ***pppArgv)
Definition: system.h:2903
void dbg_assert_imp(const char *filename, int line, const char *fmt,...)
Definition: system.cpp:130
void dbg_break()
Definition: system.cpp:152
bool dbg_assert_has_failed()
Definition: system.cpp:125
void dbg_msg(const char *sys, const char *fmt,...)
Definition: system.cpp:166
void aio_write_newline_unlocked(ASYNCIO *aio)
Definition: system.cpp:743
IOHANDLE io_current_exe()
Definition: system.cpp:454
void aio_wait(ASYNCIO *aio)
Definition: system.cpp:774
void aio_write_unlocked(ASYNCIO *aio, const void *buffer, unsigned size)
Definition: system.cpp:686
int io_flush(IOHANDLE io)
Definition: system.cpp:416
ESeekOrigin
Definition: system.h:264
int64_t io_tell(IOHANDLE io)
Definition: system.cpp:374
IOHANDLE io_stderr()
Definition: system.cpp:449
IOHANDLE io_open(const char *filename, int flags)
Definition: system.cpp:204
int io_close(IOHANDLE io)
Definition: system.cpp:411
char * io_read_all_str(IOHANDLE io)
Definition: system.cpp:328
void aio_write(ASYNCIO *aio, const void *buffer, unsigned size)
Definition: system.cpp:736
void aio_write_newline(ASYNCIO *aio)
Definition: system.cpp:752
int io_skip(IOHANDLE io, int64_t size)
Definition: system.cpp:344
int aio_error(ASYNCIO *aio)
Definition: system.cpp:759
void aio_free(ASYNCIO *aio)
Definition: system.cpp:790
unsigned io_write(IOHANDLE io, const void *buffer, unsigned size)
Definition: system.cpp:397
bool io_write_newline(IOHANDLE io)
Definition: system.cpp:402
bool io_read_all(IOHANDLE io, void **result, unsigned *result_len)
Definition: system.cpp:271
void aio_lock(ASYNCIO *aio)
Definition: system.cpp:675
void aio_close(ASYNCIO *aio)
Definition: system.cpp:765
int io_sync(IOHANDLE io)
Definition: system.cpp:421
int io_seek(IOHANDLE io, int64_t offset, ESeekOrigin origin)
Definition: system.cpp:349
IOHANDLE io_stdin()
Definition: system.cpp:439
int io_error(IOHANDLE io)
Definition: system.cpp:434
IOHANDLE io_stdout()
Definition: system.cpp:444
ASYNCIO * aio_new(IOHANDLE io)
Definition: system.cpp:618
void aio_unlock(ASYNCIO *aio)
Definition: system.cpp:680
int64_t io_length(IOHANDLE io)
Definition: system.cpp:383
unsigned io_read(IOHANDLE io, void *buffer, unsigned size)
Definition: system.cpp:266
@ IOSEEK_END
Definition: system.h:282
@ IOSEEK_CUR
Definition: system.h:276
@ IOSEEK_START
Definition: system.h:270
@ IOFLAG_APPEND
Definition: system.h:257
@ IOFLAG_WRITE
Definition: system.h:251
@ IOFLAG_READ
Definition: system.h:245
void fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, int type, void *user)
Definition: system.cpp:2156
const char * fs_filename(const char *path)
Definition: system.cpp:2473
void fs_split_file_extension(const char *filename, char *name, size_t name_size, char *extension=nullptr, size_t extension_size=0)
Definition: system.cpp:2483
int fs_is_relative_path(const char *path)
Definition: system.cpp:2428
int fs_is_file(const char *path)
Definition: system.cpp:2400
int fs_removedir(const char *path)
Definition: system.cpp:2386
int fs_parent_dir(char *path)
Definition: system.cpp:2506
void fs_listdir_fileinfo(const char *dir, FS_LISTDIR_CALLBACK_FILEINFO cb, int type, void *user)
Definition: system.cpp:2208
char * fs_getcwd(char *buffer, int buffer_size)
Definition: system.cpp:2448
int fs_is_dir(const char *path)
Definition: system.cpp:2414
int fs_file_time(const char *name, time_t *created, time_t *modified)
Definition: system.cpp:2547
int fs_makedir_rec_for(const char *path)
Definition: system.cpp:2342
int fs_storage_path(const char *appname, char *path, int max)
Definition: system.cpp:2275
int fs_chdir(const char *path)
Definition: system.cpp:2438
int fs_remove(const char *filename)
Definition: system.cpp:2523
int fs_rename(const char *oldname, const char *newname)
Definition: system.cpp:2533
int fs_makedir(const char *path)
Definition: system.cpp:2363
void mem_zero(T *block, size_t size)
Definition: system.h:196
void mem_copy(void *dest, const void *source, size_t size)
Definition: system.cpp:176
bool mem_has_null(const void *block, size_t size)
Definition: system.cpp:191
void mem_move(void *dest, const void *source, size_t size)
Definition: system.cpp:181
int mem_comp(const void *a, const void *b, size_t size)
Definition: system.cpp:186
int UNIXSOCKET
Definition: system.h:824
int net_addr_comp_noport(const NETADDR *a, const NETADDR *b)
Definition: system.cpp:1069
void net_init()
Definition: system.cpp:2108
int net_addr_comp(const NETADDR *a, const NETADDR *b)
Definition: system.cpp:1059
struct sockaddr_un UNIXSOCKETADDR
Definition: system.h:828
void net_addr_str(const NETADDR *addr, char *string, int max_length, bool add_port)
Definition: system.cpp:1144
int net_tcp_close(NETSOCKET sock)
Definition: system.cpp:2085
int net_tcp_listen(NETSOCKET sock, int backlog)
Definition: system.cpp:1970
int net_tcp_accept(NETSOCKET sock, NETSOCKET *new_sock, NETADDR *addr)
Definition: system.cpp:1980
int net_tcp_connect(NETSOCKET sock, const NETADDR *addr)
Definition: system.cpp:2027
NETSOCKET net_tcp_create(NETADDR bindaddr)
Definition: system.cpp:1893
int net_tcp_send(NETSOCKET sock, const void *data, int size)
Definition: system.cpp:2061
int net_tcp_recv(NETSOCKET sock, void *data, int maxsize)
Definition: system.cpp:2073
int net_udp_send(NETSOCKET sock, const NETADDR *addr, const void *data, int size)
Definition: system.cpp:1685
int net_udp_close(NETSOCKET sock)
Definition: system.cpp:1888
int net_unix_send(UNIXSOCKET sock, UNIXSOCKETADDR *addr, void *data, int size)
Definition: system.cpp:2122
void net_unix_set_addr(UNIXSOCKETADDR *addr, const char *path)
Definition: system.cpp:2127
UNIXSOCKET net_unix_create_unnamed()
Definition: system.cpp:2117
void net_unix_close(UNIXSOCKET sock)
Definition: system.cpp:2134
void secure_random_password(char *buffer, unsigned length, unsigned pw_length)
Definition: system.cpp:4502
void generate_password(char *buffer, unsigned length, const unsigned short *random, unsigned random_length)
Definition: system.cpp:4482
int secure_rand()
Definition: system.cpp:4542
int secure_random_init()
Definition: system.cpp:4423
int secure_random_uninit()
Definition: system.cpp:4453
void secure_random_fill(void *bytes, unsigned length)
Definition: system.cpp:4518
int secure_rand_below(int below)
Definition: system.cpp:4561
void sphore_signal(SEMAPHORE *sem)
Definition: system.cpp:952
void sphore_destroy(SEMAPHORE *sem)
Definition: system.cpp:956
void sphore_init(SEMAPHORE *sem)
Definition: system.cpp:939
void sphore_wait(SEMAPHORE *sem)
Definition: system.cpp:943
bool os_version_str(char *version, size_t length)
Definition: system.cpp:4577
int kill_process(PROCESS process)
Definition: system.cpp:4315
bool is_process_alive(PROCESS process)
Definition: system.cpp:4335
EShellExecuteWindowState
Definition: system.h:2654
int open_link(const char *link)
Definition: system.cpp:4348
PROCESS shell_execute(const char *file, EShellExecuteWindowState window_state, const char **arguments=nullptr, const size_t num_arguments=0)
Definition: system.cpp:4254
constexpr PROCESS INVALID_PROCESS
Definition: system.h:2642
void cmdline_free(int argc, const char **argv)
Definition: system.cpp:4196
void os_locale_str(char *locale, size_t length)
Definition: system.cpp:4656
void cmdline_fix(int *argc, const char ***argv)
Definition: system.cpp:4158
int open_file(const char *path)
Definition: system.cpp:4388
int pid()
Definition: system.cpp:4149
pid_t PROCESS
Definition: system.h:2636
const char * str_rchr(const char *haystack, char needle)
Definition: system.cpp:3248
char * str_skip_to_whitespace(char *str)
Definition: system.cpp:2937
int str_length(const char *str)
Definition: system.cpp:2805
void str_sanitize(char *str)
Definition: system.cpp:2883
const char * str_startswith(const char *str, const char *prefix)
Definition: system.cpp:3039
bool str_has_cc(const char *str)
Definition: system.cpp:2856
void str_sanitize_cc(char *str)
Definition: system.cpp:2871
const char * str_skip_whitespaces_const(const char *str)
Definition: system.cpp:2958
const char * str_skip_to_whitespace_const(const char *str)
Definition: system.cpp:2944
int str_format_v(char *buffer, int buffer_size, const char *format, va_list args)
Definition: system.cpp:2810
int str_comp_num(const char *a, const char *b, int num)
Definition: system.cpp:2989
void str_utf8_truncate(char *dst, int dst_size, const char *src, int truncation_len)
Definition: system.cpp:2778
int str_comp_filenames(const char *a, const char *b)
Definition: system.cpp:2994
int str_comp_nocase(const char *a, const char *b)
Definition: system.cpp:2966
void str_truncate(char *dst, int dst_size, const char *src, int truncation_len)
Definition: system.cpp:2795
bool str_delimiters_around_offset(const char *haystay, const char *delim, int offset, int *start, int *end)
Definition: system.cpp:3216
int str_countchr(const char *haystack, char needle)
Definition: system.cpp:3253
int str_comp(const char *a, const char *b)
Definition: system.cpp:2984
void str_append(char *dst, const char *src, int dst_size)
Definition: system.cpp:2754
void str_clean_whitespaces(char *str)
Definition: system.cpp:2906
int str_copy(char *dst, const char *src, int dst_size)
Definition: system.cpp:2771
char * str_skip_whitespaces(char *str)
Definition: system.cpp:2951
int str_comp_nocase_num(const char *a, const char *b, int num)
Definition: system.cpp:2975
int str_utf8_dist_buffer(const char *a, const char *b, int *buf, int buf_len)
Definition: system.cpp:3158
int str_isspace(char c)
Definition: system.cpp:3633
const char * str_trim_words(const char *str, int words)
Definition: system.cpp:2843
void thread_wait(void *thread)
Definition: system.cpp:852
void * thread_init(void(*threadfunc)(void *), void *user, const char *name)
Definition: system.cpp:826
void thread_yield()
Definition: system.cpp:864
void thread_init_and_detach(void(*threadfunc)(void *), void *user, const char *name)
Definition: system.cpp:886
void thread_detach(void *thread)
Definition: system.cpp:875
std::chrono::nanoseconds time_get_nanoseconds()
Definition: system.cpp:4772
ETimeSeason
Definition: system.h:788
void set_new_tick()
Definition: system.cpp:964
int64_t time_freq()
Definition: system.cpp:991
int time_houroftheday()
Definition: system.cpp:2669
int64_t time_timestamp()
Definition: system.cpp:2651
ETimeSeason time_season()
Definition: system.cpp:2707
int64_t time_get()
Definition: system.cpp:979
int64_t time_get_impl()
Definition: system.cpp:974
@ SEASON_AUTUMN
Definition: system.h:791
@ SEASON_WINTER
Definition: system.h:792
@ SEASON_SPRING
Definition: system.h:789
@ SEASON_HALLOWEEN
Definition: system.h:794
@ SEASON_XMAS
Definition: system.h:795
@ SEASON_EASTER
Definition: system.h:793
@ SEASON_SUMMER
Definition: system.h:790
@ SEASON_NEWYEAR
Definition: system.h:796
void * IOHANDLE
Definition: logger.h:12
Definition: system.cpp:495
void * thread
Definition: system.cpp:499
unsigned char * buffer
Definition: system.cpp:501
IOHANDLE io
Definition: system.cpp:497
Definition: system.cpp:110
Definition: system.h:2207
uint64_t recv_packets
Definition: system.h:2210
uint64_t recv_bytes
Definition: system.h:2211
uint64_t sent_packets
Definition: system.h:2208
uint64_t sent_bytes
Definition: system.h:2209
void str_utf8_trim_right(char *param)
Definition: system.cpp:3819
void str_hex_cstyle(char *dst, int dst_size, const void *data, int data_size, int bytes_per_line=12)
Definition: system.cpp:3280
int str_utf8_comp_nocase(const char *a, const char *b)
Definition: system.cpp:3721
void swap_endian(void *data, unsigned elem_size, unsigned num)
Definition: system.cpp:2573
size_t str_utf8_offset_chars_to_bytes(const char *str, size_t char_offset)
Definition: system.cpp:4067
void str_utf8_copy_num(char *dst, const char *src, int dst_size, int num)
Definition: system.cpp:4014
NETSOCKET net_udp_create(NETADDR bindaddr)
Definition: system.cpp:1587
void dbg_assert_set_handler(DBG_ASSERT_HANDLER handler)
Definition: system.cpp:161
int str_isallnum(const char *str)
Definition: system.cpp:3650
int str_utf8_forward(const char *str, int cursor)
Definition: system.cpp:3879
const char * str_next_token(const char *str, const char *delim, char *buffer, int buffer_size)
Definition: system.cpp:4116
int str_utf8_decode(const char **ptr)
Definition: system.cpp:3934
unsigned long str_toulong_base(const char *str, int base)
Definition: system.cpp:3694
const char * str_find_nocase(const char *haystack, const char *needle)
Definition: system.cpp:3178
int net_would_block()
Definition: system.cpp:2099
void str_base64(char *dst, int dst_size, const void *data, int data_size)
Definition: system.cpp:3372
int net_host_lookup(const char *hostname, NETADDR *addr, int types)
Definition: system.cpp:1248
int str_utf8_encode(char *ptr, int chr)
Definition: system.cpp:3889
int str_utf8_dist(const char *a, const char *b)
Definition: system.cpp:3102
int str_toint_base(const char *str, int base)
Definition: system.cpp:3689
int str_utf8_isstart(char c)
Definition: system.cpp:3844
bool timestamp_from_str(const char *string, const char *format, time_t *timestamp)
Definition: system.cpp:3541
void str_escape(char **dst, const char *src, const char *end)
Definition: system.cpp:3612
int net_addr_from_url(NETADDR *addr, const char *string, char *host_buf, size_t host_buf_size)
Definition: system.cpp:1322
int str_utf32_dist_buffer(const int *a, int a_len, const int *b, int b_len, int *buf, int buf_len)
Definition: system.cpp:3122
const char * str_utf8_skip_whitespaces(const char *str)
Definition: system.cpp:3799
void str_sanitize_filename(char *str)
Definition: system.cpp:2894
int net_tcp_connect_non_blocking(NETSOCKET sock, NETADDR bindaddr)
Definition: system.cpp:2050
std::function< void(const char *message)> DBG_ASSERT_HANDLER
Definition: system.h:134
int net_set_non_blocking(NETSOCKET sock)
Definition: system.cpp:1960
int str_in_list(const char *list, const char *delim, const char *needle)
Definition: system.cpp:4102
int str_utf8_comp_confusable(const char *str1, const char *str2)
Definition: confusables.cpp:83
int net_socket_type(NETSOCKET sock)
Definition: system.cpp:1582
void str_timestamp(char *buffer, int buffer_size)
Definition: system.cpp:3536
void uint_to_bytes_be(unsigned char *bytes, unsigned value)
Definition: system.cpp:4141
int str_format_int(char *buffer, size_t buffer_size, int value)
Definition: system.cpp:2822
int str_base64_decode(void *dst, int dst_size, const char *data)
Definition: system.cpp:3449
@ TIME_SECS_CENTISECS
Definition: system.h:1864
@ TIME_HOURS_CENTISECS
Definition: system.h:1862
@ TIME_DAYS
Definition: system.h:1859
@ TIME_MINS
Definition: system.h:1861
@ TIME_HOURS
Definition: system.h:1860
@ TIME_MINS_CENTISECS
Definition: system.h:1863
int str_time_float(float secs, int format, char *buffer, int buffer_size)
Definition: system.cpp:3607
const NETADDR NETADDR_ZEROED
Definition: system.cpp:999
#define GNUC_ATTRIBUTE(x)
Definition: system.h:61
int net_errno()
Definition: system.cpp:2090
int str_toint(const char *str)
Definition: system.cpp:3672
void str_utf8_stats(const char *str, size_t max_size, size_t max_count, size_t *size, size_t *count)
Definition: system.cpp:4032
int str_format_opt(char *buffer, int buffer_size, const char *format, Args... args)
Definition: system.h:1317
int str_hex_decode(void *dst, int dst_size, const char *src)
Definition: system.cpp:3355
bool str_isnum(char c)
Definition: system.cpp:3645
void str_timestamp_format(char *buffer, int buffer_size, const char *format)
Definition: system.cpp:3529
void str_timestamp_ex(time_t time, char *buffer, int buffer_size, const char *format)
Definition: system.cpp:3522
float str_tofloat(const char *str)
Definition: system.cpp:3704
void str_hex(char *dst, int dst_size, const void *data, int data_size)
Definition: system.cpp:3265
void net_stats(NETSTATS *stats)
Definition: system.cpp:3628
unsigned str_quickhash(const char *str)
Definition: system.cpp:4080
int net_socket_read_wait(NETSOCKET sock, int time)
Definition: system.cpp:2599
int net_set_blocking(NETSOCKET sock)
Definition: system.cpp:1965
sem_t SEMAPHORE
Definition: system.h:699
size_t str_utf8_offset_bytes_to_chars(const char *str, size_t byte_offset)
Definition: system.cpp:4052
int net_addr_from_str(NETADDR *addr, const char *string)
Definition: system.cpp:1385
int str_utf8_check(const char *str)
Definition: system.cpp:4001
const char * str_utf8_find_nocase(const char *haystack, const char *needle, const char **end=nullptr)
Definition: system.cpp:3761
#define str_format
Definition: system.h:1336
int str_isallnum_hex(const char *str)
Definition: system.cpp:3661
int str_utf8_isspace(int code)
Definition: system.cpp:3788
int str_time(int64_t centisecs, int format, char *buffer, int buffer_size)
Definition: system.cpp:3560
const char * str_startswith_nocase(const char *str, const char *prefix)
Definition: system.cpp:3026
int str_utf8_comp_nocase_num(const char *a, const char *b, int num)
Definition: system.cpp:3737
const char * str_endswith_nocase(const char *str, const char *suffix)
Definition: system.cpp:3052
unsigned bytes_be_to_uint(const unsigned char *bytes)
Definition: system.cpp:4136
int str_utf8_rewind(const char *str, int cursor)
Definition: system.cpp:3851
int str_utf8_fix_truncation(char *str)
Definition: system.cpp:3862
const char * str_endswith(const char *str, const char *suffix)
Definition: system.cpp:3072
const char * str_find(const char *haystack, const char *needle)
Definition: system.cpp:3197
bool net_addr_is_local(const NETADDR *addr)
Definition: system.cpp:1371
char str_uppercase(char c)
Definition: system.cpp:3638
int net_udp_recv(NETSOCKET sock, NETADDR *addr, unsigned char **data)
Definition: system.cpp:1810
int64_t str_toint64_base(const char *str, int base=10)
Definition: system.cpp:3699
int str_utf8_tolower(int code)
Definition: tolower.cpp:12
int str_utf8_to_skeleton(const char *str, int *buf, int buf_len)
Definition: confusables.cpp:66
int(* FS_LISTDIR_CALLBACK_FILEINFO)(const CFsFileInfo *info, int is_dir, int dir_type, void *user)
Definition: types.h:29
int(* FS_LISTDIR_CALLBACK)(const char *name, int is_dir, int dir_type, void *user)
Definition: types.h:20
float length(const vector2_base< float > &a)
Definition: vmath.h:104