Make "kernaux_memset" signature compatible with C stdlib "memset"

This commit is contained in:
Alex Kotov 2021-12-12 19:15:51 +05:00
parent cf6fc4d314
commit e1a357418b
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
3 changed files with 20 additions and 12 deletions

View File

@ -1,15 +1,13 @@
#ifndef KERNAUX_INCLUDED_STDLIB
#define KERNAUX_INCLUDED_STDLIB 1
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
void kernaux_memset(
void *buffer,
unsigned char value,
unsigned long size
)
void *kernaux_memset(void *buffer, int value, size_t size)
__attribute__((nonnull));
unsigned int kernaux_strlen(const char *s) __attribute__((nonnull));

View File

@ -4,16 +4,15 @@
#include <kernaux/stdlib.h>
void kernaux_memset(
void *const buffer,
const unsigned char value,
const unsigned long size
) {
void *kernaux_memset(void *const buffer, const int value, const size_t size)
{
unsigned char *const s = buffer;
for (unsigned long i = 0; i < size; ++i) {
s[i] = value;
}
return buffer;
}
unsigned int kernaux_strlen(const char *const s)

View File

@ -14,7 +14,7 @@ int main()
unsigned char buffer[10] =
{32, 13, 254, 165, 98, 36, 169, 152, 233, 222};
kernaux_memset(buffer, 0, sizeof(buffer));
assert(kernaux_memset(buffer, 0, sizeof(buffer)) == buffer);
for (unsigned int i = 0; i < sizeof(buffer); ++i) {
assert(buffer[i] == 0);
@ -25,13 +25,24 @@ int main()
unsigned char buffer[10] =
{32, 13, 254, 165, 98, 36, 169, 152, 233, 222};
kernaux_memset(buffer, 143, sizeof(buffer));
assert(kernaux_memset(buffer, 143, sizeof(buffer)) == buffer);
for (unsigned int i = 0; i < sizeof(buffer); ++i) {
assert(buffer[i] == 143);
}
}
{
unsigned char buffer[10] =
{32, 13, 254, 165, 98, 36, 169, 152, 233, 222};
assert(kernaux_memset(buffer, 0x89ABCDEF, sizeof(buffer)) == buffer);
for (unsigned int i = 0; i < sizeof(buffer); ++i) {
assert(buffer[i] == 0xEF);
}
}
// kernaux_strlen
assert(kernaux_strlen("") == 0);