Sometimes coreboot needs to compile external code (e.g. vboot_reference) using its own set of system header files. When these headers don't line up with C Standard Library, it causes problems. Create stdio.h and stdarg.h header files. Relocate snprintf into stdio.h and vsnprintf into stdarg.h from string.h. Chain include these header files from string.h, since coreboot doesn't care so much about the legacy POSIX location of these functions. Also move va_* definitions from vtxprintf.h into stdarg.h where they belong (in POSIX). Just use our own definitions regardless of GCC or LLVM. Add string.h header to a few C files which should have had it in the first place. BUG=b:124141368 TEST=make clean && make test-abuild BRANCH=none Change-Id: I7223cb96e745e11c82d4012c6671a51ced3297c2 Signed-off-by: Joel Kitching <kitching@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/39468 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
52 lines
1.5 KiB
C
52 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
#ifndef STRING_H
|
|
#define STRING_H
|
|
|
|
#include <stdarg.h>
|
|
#include <stddef.h>
|
|
#include <stdio.h>
|
|
|
|
/* Stringify a token */
|
|
#ifndef STRINGIFY
|
|
#define _STRINGIFY(x) #x
|
|
#define STRINGIFY(x) _STRINGIFY(x)
|
|
#endif
|
|
|
|
void *memcpy(void *dest, const void *src, size_t n);
|
|
void *memmove(void *dest, const void *src, size_t n);
|
|
void *memset(void *s, int c, size_t n);
|
|
int memcmp(const void *s1, const void *s2, size_t n);
|
|
void *memchr(const void *s, int c, size_t n);
|
|
char *strdup(const char *s);
|
|
char *strconcat(const char *s1, const char *s2);
|
|
size_t strnlen(const char *src, size_t max);
|
|
size_t strlen(const char *src);
|
|
char *strchr(const char *s, int c);
|
|
char *strncpy(char *to, const char *from, int count);
|
|
char *strcpy(char *dst, const char *src);
|
|
int strcmp(const char *s1, const char *s2);
|
|
int strncmp(const char *s1, const char *s2, int maxlen);
|
|
int strspn(const char *str, const char *spn);
|
|
int strcspn(const char *str, const char *spn);
|
|
long atol(const char *str);
|
|
|
|
/**
|
|
* Find a character in a string.
|
|
*
|
|
* @param s The string.
|
|
* @param c The character.
|
|
* @return A pointer to the last occurrence of the character in the
|
|
* string, or NULL if the character was not encountered within the string.
|
|
*/
|
|
char *strrchr(const char *s, int c);
|
|
|
|
/*
|
|
* Parses an unsigned integer and moves the input pointer forward to the first
|
|
* character that's not a valid digit. s and *s must not be NULL. Result
|
|
* undefined if it overruns the return type size.
|
|
*/
|
|
unsigned int skip_atoi(char **s);
|
|
|
|
#endif /* STRING_H */
|