mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:47:34 +00:00
LibC: Deprecate strcpy(), strncpy(), strcat() and strncat() :^)
And also mark strlcpy() and strlcat() with __attribute__((warn_unused_result)). Since our code is warning-free, this ensures we never misuse those functions. (Or are very sure about doing it when turning off the warning for a particular piece of code.)
This commit is contained in:
parent
0106647ab8
commit
f808810d00
3 changed files with 25 additions and 3 deletions
|
@ -33,27 +33,40 @@ __BEGIN_DECLS
|
||||||
|
|
||||||
size_t strlen(const char*);
|
size_t strlen(const char*);
|
||||||
size_t strnlen(const char*, size_t maxlen);
|
size_t strnlen(const char*, size_t maxlen);
|
||||||
|
|
||||||
int strcmp(const char*, const char*);
|
int strcmp(const char*, const char*);
|
||||||
int strncmp(const char*, const char*, size_t);
|
int strncmp(const char*, const char*, size_t);
|
||||||
|
int strcasecmp(const char*, const char*);
|
||||||
|
int strncasecmp(const char*, const char*, size_t);
|
||||||
|
|
||||||
int memcmp(const void*, const void*, size_t);
|
int memcmp(const void*, const void*, size_t);
|
||||||
void* memcpy(void*, const void*, size_t);
|
void* memcpy(void*, const void*, size_t);
|
||||||
void* memmove(void*, const void*, size_t);
|
void* memmove(void*, const void*, size_t);
|
||||||
void* memchr(const void*, int c, size_t);
|
void* memchr(const void*, int c, size_t);
|
||||||
const void* memmem(const void* haystack, size_t, const void* needle, size_t);
|
const void* memmem(const void* haystack, size_t, const void* needle, size_t);
|
||||||
|
|
||||||
void bzero(void*, size_t);
|
void bzero(void*, size_t);
|
||||||
void bcopy(const void*, void*, size_t);
|
void bcopy(const void*, void*, size_t);
|
||||||
void* memset(void*, int, size_t);
|
void* memset(void*, int, size_t);
|
||||||
|
|
||||||
__attribute__((malloc)) char* strdup(const char*);
|
__attribute__((malloc)) char* strdup(const char*);
|
||||||
__attribute__((malloc)) char* strndup(const char*, size_t);
|
__attribute__((malloc)) char* strndup(const char*, size_t);
|
||||||
|
|
||||||
|
__attribute__((deprecated("use strlcpy or String::copy_characters_to_buffer")))
|
||||||
char* strcpy(char* dest, const char* src);
|
char* strcpy(char* dest, const char* src);
|
||||||
size_t strlcpy(char* dest, const char* src, size_t);
|
__attribute__((deprecated("use strlcpy or String::copy_characters_to_buffer")))
|
||||||
char* strncpy(char* dest, const char* src, size_t);
|
char* strncpy(char* dest, const char* src, size_t);
|
||||||
|
__attribute__((warn_unused_result)) size_t strlcpy(char* dest, const char* src, size_t);
|
||||||
|
|
||||||
char* strchr(const char*, int c);
|
char* strchr(const char*, int c);
|
||||||
char* strchrnul(const char*, int c);
|
char* strchrnul(const char*, int c);
|
||||||
char* strstr(const char* haystack, const char* needle);
|
char* strstr(const char* haystack, const char* needle);
|
||||||
char* strrchr(const char*, int c);
|
char* strrchr(const char*, int c);
|
||||||
char* strcat(char* dest, const char* src);
|
|
||||||
char* strncat(char* dest, const char* src, size_t);
|
__attribute__((deprecated("use strlcat"))) char* strcat(char* dest, const char* src);
|
||||||
|
__attribute__((deprecated("use strlcat"))) char* strncat(char* dest, const char* src, size_t);
|
||||||
|
__attribute__((warn_unused_result)) size_t strlcat(char* dest, const char* src, size_t);
|
||||||
|
|
||||||
size_t strspn(const char*, const char* accept);
|
size_t strspn(const char*, const char* accept);
|
||||||
size_t strcspn(const char*, const char* reject);
|
size_t strcspn(const char*, const char* reject);
|
||||||
char* strerror(int errnum);
|
char* strerror(int errnum);
|
||||||
|
|
|
@ -95,6 +95,11 @@ static void ensure_caps()
|
||||||
caps->set("li", "25");
|
caps->set("li", "25");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unfortunately, tgetstr() doesn't accept a size argument for the buffer
|
||||||
|
// pointed to by area, so we have to use bare strcpy().
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
|
||||||
char* tgetstr(const char* id, char** area)
|
char* tgetstr(const char* id, char** area)
|
||||||
{
|
{
|
||||||
ensure_caps();
|
ensure_caps();
|
||||||
|
@ -113,6 +118,8 @@ char* tgetstr(const char* id, char** area)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
int tgetflag(const char* id)
|
int tgetflag(const char* id)
|
||||||
{
|
{
|
||||||
(void)id;
|
(void)id;
|
||||||
|
|
|
@ -37,6 +37,8 @@ asm("haxcode:\n"
|
||||||
extern "C" void haxcode();
|
extern "C" void haxcode();
|
||||||
extern "C" void haxcode_end();
|
extern "C" void haxcode_end();
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
char buffer[16384];
|
char buffer[16384];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue