2016-08-27 05:13:54 +00:00
|
|
|
/* Copyright 2016 secXsQuared
|
|
|
|
* Distributed under GPL license
|
|
|
|
* See COPYING under root for details
|
|
|
|
*/
|
|
|
|
|
2018-01-26 08:43:22 +00:00
|
|
|
#include "type.h"
|
|
|
|
#include "lib/sxtdlib.h"
|
2016-08-27 05:13:54 +00:00
|
|
|
|
2017-02-01 03:26:08 +00:00
|
|
|
void KABI lb_mem_copy(void *src, void *dst, uint64_t size)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
if (src == NULL || dst == NULL)
|
2017-06-16 07:19:03 +00:00
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
|
|
|
char *cSrc = (char *) src;
|
|
|
|
char *cDst = (char *) dst;
|
2016-08-27 05:13:54 +00:00
|
|
|
while (size--)
|
2017-06-16 07:19:03 +00:00
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
*(cDst++) = *(cSrc++);
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2016-08-27 05:13:54 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2018-02-07 05:42:59 +00:00
|
|
|
void KABI lb_mem_set(void *src, uint8_t const val, uint64_t size)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
if (src == NULL)
|
2017-06-16 07:19:03 +00:00
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2016-08-27 05:13:54 +00:00
|
|
|
while (size--)
|
2017-06-16 07:19:03 +00:00
|
|
|
{
|
2018-02-07 05:42:59 +00:00
|
|
|
*(uint8_t *)src = val;
|
|
|
|
src = (void*)((uintptr_t)src + 1);
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2016-08-27 05:13:54 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2017-02-01 03:26:08 +00:00
|
|
|
void KABI lb_mem_move(void *src, void *dst, uint64_t size)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
if (src == NULL || dst == NULL)
|
2017-06-16 07:19:03 +00:00
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2016-08-27 05:13:54 +00:00
|
|
|
if (src >= dst)
|
|
|
|
{
|
2018-02-07 05:42:59 +00:00
|
|
|
lb_mem_copy(src, dst, size);
|
|
|
|
return;
|
2016-08-27 05:13:54 +00:00
|
|
|
}
|
2018-02-07 05:42:59 +00:00
|
|
|
src = (void*)((uintptr_t)src + size - 1);
|
|
|
|
dst = (void*)((uintptr_t)dst + size - 1);
|
2016-08-27 05:13:54 +00:00
|
|
|
while (size--)
|
2017-06-16 07:19:03 +00:00
|
|
|
{
|
2018-02-07 05:42:59 +00:00
|
|
|
*(char*)dst = *(char*)src;
|
|
|
|
dst = (void*)((uintptr_t)dst - 1);
|
|
|
|
src = (void*)((uintptr_t)src - 1);
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2016-08-27 05:13:54 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
// Random Generator
|
|
|
|
//
|
|
|
|
static uint32_t seed = 1;
|
|
|
|
static uint32_t max = 16777215;
|
|
|
|
|
2018-02-07 05:42:59 +00:00
|
|
|
uint32_t KABI lb_rand(void)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
seed = seed * 1103512986 + 29865;
|
2017-06-16 07:19:03 +00:00
|
|
|
return (unsigned int) (seed / 65536) % (max + 1);
|
2016-08-27 05:13:54 +00:00
|
|
|
}
|
|
|
|
|
2018-02-07 05:42:59 +00:00
|
|
|
void KABI lb_srand(uint32_t _seed)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
seed = _seed;
|
|
|
|
}
|
|
|
|
|
2018-02-07 05:42:59 +00:00
|
|
|
void KABI lb_mrand(uint32_t _max)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
max = _max;
|
|
|
|
}
|
|
|
|
|
|
|
|
//
|
|
|
|
// String Library
|
|
|
|
//
|
|
|
|
|
2017-02-01 03:26:08 +00:00
|
|
|
uint64_t KABI lb_str_len(char const *str)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
uint64_t length = 0;
|
2017-06-16 07:19:03 +00:00
|
|
|
if (str == NULL)
|
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return 0;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
|
|
|
while (*str != 0)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
|
|
|
str++;
|
|
|
|
length++;
|
|
|
|
}
|
|
|
|
return length;
|
|
|
|
}
|
|
|
|
|
2018-02-07 05:42:59 +00:00
|
|
|
uint64_t KABI lb_str_cmp(char const *str1, char const *str2)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
2017-06-16 07:19:03 +00:00
|
|
|
if (str1 == NULL || str2 == NULL)
|
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return 0;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2017-02-01 03:26:08 +00:00
|
|
|
uint64_t length = lb_str_len(str1);
|
2017-06-16 07:19:03 +00:00
|
|
|
if (length != lb_str_len(str2))
|
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return 0;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
|
|
|
while (length--)
|
2016-08-27 05:13:54 +00:00
|
|
|
{
|
2017-06-16 07:19:03 +00:00
|
|
|
if (*(str1 + length) != *(str2 + length))
|
|
|
|
{
|
2016-08-27 05:13:54 +00:00
|
|
|
return 0;
|
2017-06-16 07:19:03 +00:00
|
|
|
}
|
2016-08-27 05:13:54 +00:00
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|