Compare commits
3 Commits
c17e1a5802
...
759fb4fe0e
Author | SHA1 | Date | |
---|---|---|---|
759fb4fe0e | |||
098109f16b | |||
9ef09cfc88 |
@ -1,4 +1,4 @@
|
|||||||
/* string.h: String manipulation. */
|
/* string.h: String and memory manipulation. */
|
||||||
|
|
||||||
#ifndef _STRING_H
|
#ifndef _STRING_H
|
||||||
#define _STRING_H
|
#define _STRING_H
|
||||||
@ -89,6 +89,12 @@ extern "C"
|
|||||||
/* Locate a string (needle) in another one (haystack). */
|
/* Locate a string (needle) in another one (haystack). */
|
||||||
char* strstr(const char* haystack, const char* needle);
|
char* strstr(const char* haystack, const char* needle);
|
||||||
|
|
||||||
|
/* Compare two null-terminated strings, ignoring case. */
|
||||||
|
int strcasecmp(const char* a, const char* b);
|
||||||
|
|
||||||
|
/* Compare two fixed-size null-terminated strings, ignoring case. */
|
||||||
|
int strncasecmp(const char* a, const char* b, size_t max);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
23
libc/include/strings.h
Normal file
23
libc/include/strings.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* strings.h: String operations. */
|
||||||
|
|
||||||
|
#ifndef _STRINGS_H
|
||||||
|
#define _STRINGS_H
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Compare two null-terminated strings, ignoring case. */
|
||||||
|
int strcasecmp(const char* a, const char* b);
|
||||||
|
|
||||||
|
/* Compare two fixed-size null-terminated strings, ignoring case. */
|
||||||
|
int strncasecmp(const char* a, const char* b, size_t max);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -7,7 +7,7 @@ extern "C"
|
|||||||
void* memset(void* buf, int c, usize n);
|
void* memset(void* buf, int c, usize n);
|
||||||
int memcmp(const void* a, const void* b, usize n);
|
int memcmp(const void* a, const void* b, usize n);
|
||||||
void* memmove(void* dest, const void* src, usize n);
|
void* memmove(void* dest, const void* src, usize n);
|
||||||
void* memchr(const void* buf, int c, size_t n);
|
void* memchr(const void* buf, int c, usize n);
|
||||||
|
|
||||||
usize strlen(const char* str);
|
usize strlen(const char* str);
|
||||||
usize strnlen(const char* str, usize max);
|
usize strnlen(const char* str, usize max);
|
||||||
@ -41,4 +41,7 @@ extern "C"
|
|||||||
char* strpbrk(const char* s, const char* accept);
|
char* strpbrk(const char* s, const char* accept);
|
||||||
|
|
||||||
char* strstr(const char* haystack, const char* needle);
|
char* strstr(const char* haystack, const char* needle);
|
||||||
|
|
||||||
|
int strcasecmp(const char* a, const char* b);
|
||||||
|
int strncasecmp(const char* a, const char* b, usize max);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include <luna/Alloc.h>
|
#include <luna/Alloc.h>
|
||||||
#include <luna/CString.h>
|
#include <luna/CString.h>
|
||||||
|
#include <luna/CType.h>
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
@ -297,4 +298,25 @@ extern "C"
|
|||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int strcasecmp(const char* a, const char* b)
|
||||||
|
{
|
||||||
|
while (*a && (_tolower(*a) == _tolower(*b)))
|
||||||
|
{
|
||||||
|
a++;
|
||||||
|
b++;
|
||||||
|
}
|
||||||
|
return _tolower(*(const u8*)a) - _tolower(*(const u8*)b);
|
||||||
|
}
|
||||||
|
|
||||||
|
int strncasecmp(const char* a, const char* b, usize max)
|
||||||
|
{
|
||||||
|
const char* s = a;
|
||||||
|
while (*a && (_tolower(*a) == _tolower(*b)) && (usize)(a - s) < (max - 1))
|
||||||
|
{
|
||||||
|
a++;
|
||||||
|
b++;
|
||||||
|
}
|
||||||
|
return _tolower(*(const u8*)a) - _tolower(*(const u8*)b);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,16 +11,16 @@ SOURCES=($(printf -- '%s\n' "${SOURCES[@]}" | grep -v libc | grep -v "Types.h" |
|
|||||||
|
|
||||||
for f in ${SOURCES[@]}
|
for f in ${SOURCES[@]}
|
||||||
do
|
do
|
||||||
sed -i 's/uint8_t/u8/g' $f
|
sed -i 's/uint8_t /u8 /g' $f
|
||||||
sed -i 's/uint16_t/u16/g' $f
|
sed -i 's/uint16_t /u16 /g' $f
|
||||||
sed -i 's/uint32_t/u32/g' $f
|
sed -i 's/uint32_t /u32 /g' $f
|
||||||
sed -i 's/uint64_t/u64/g' $f
|
sed -i 's/uint64_t /u64 /g' $f
|
||||||
|
|
||||||
sed -i 's/int8_t/i8/g' $f
|
sed -i 's/int8_t /i8 /g' $f
|
||||||
sed -i 's/int16_t/i16/g' $f
|
sed -i 's/int16_t /i16 /g' $f
|
||||||
sed -i 's/int32_t/i32/g' $f
|
sed -i 's/int32_t /i32 /g' $f
|
||||||
sed -i 's/int64_t/i64/g' $f
|
sed -i 's/int64_t /i64 /g' $f
|
||||||
|
|
||||||
sed -i 's/size_t/usize/g' $f
|
sed -i 's/size_t /usize /g' $f
|
||||||
sed -i 's/ssize_t/isize/g' $f
|
sed -i 's/ssize_t /isize /g' $f
|
||||||
done
|
done
|
||||||
|
@ -4,7 +4,7 @@ source $(dirname $0)/env.sh
|
|||||||
|
|
||||||
cd $LUNA_ROOT
|
cd $LUNA_ROOT
|
||||||
|
|
||||||
FOLDERS=(kernel libc libos libluna apps)
|
FOLDERS=(kernel libc libos libluna apps shell tests)
|
||||||
|
|
||||||
SOURCES=($(find ${FOLDERS[@]} -type f -name "*.cpp"))
|
SOURCES=($(find ${FOLDERS[@]} -type f -name "*.cpp"))
|
||||||
SOURCES+=($(find ${FOLDERS[@]} -type f -name "*.h"))
|
SOURCES+=($(find ${FOLDERS[@]} -type f -name "*.h"))
|
||||||
|
Loading…
Reference in New Issue
Block a user