add ctype.h header

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 ctype.h header file.  Relocate ctype.h functions from
string.h into ctype.h.  Update source files which call ctype.h
functions accordingly.

Note that ctype.h still lacks five functions which are not used
in coreboot source:
  isalnum, isalpha, iscntrl, isgraph, ispunct

BUG=b:124141368
TEST=make clean && make test-abuild
BRANCH=none

Change-Id: I31b5e8af49956ec024a392a73c3c9024b9a9c194
Signed-off-by: Joel Kitching <kitching@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33525
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
Joel Kitching 2019-06-16 16:09:42 +08:00 committed by Julius Werner
parent 2d6ed31cbd
commit 393c71c213
12 changed files with 66 additions and 52 deletions

View File

@ -16,6 +16,7 @@
*/
#include <console/vtxprintf.h>
#include <ctype.h>
#include <string.h>
#define call_tx(x) tx_byte(x, data)

56
src/include/ctype.h Normal file
View File

@ -0,0 +1,56 @@
#ifndef CTYPE_H
#define CTYPE_H
static inline int isspace(int c)
{
switch (c) {
case ' ': case '\f': case '\n':
case '\r': case '\t': case '\v':
return 1;
default:
return 0;
}
}
static inline int isprint(int c)
{
return c >= ' ' && c <= '~';
}
static inline int isdigit(int c)
{
return (c >= '0' && c <= '9');
}
static inline int isxdigit(int c)
{
return ((c >= '0' && c <= '9') ||
(c >= 'a' && c <= 'f') ||
(c >= 'A' && c <= 'F'));
}
static inline int isupper(int c)
{
return (c >= 'A' && c <= 'Z');
}
static inline int islower(int c)
{
return (c >= 'a' && c <= 'z');
}
static inline int toupper(int c)
{
if (islower(c))
c -= 'a'-'A';
return c;
}
static inline int tolower(int c)
{
if (isupper(c))
c -= 'A'-'a';
return c;
}
#endif /* CTYPE_H */

View File

@ -50,56 +50,4 @@ char *strrchr(const char *s, int c);
*/
unsigned int skip_atoi(char **s);
static inline int isspace(int c)
{
switch (c) {
case ' ': case '\f': case '\n':
case '\r': case '\t': case '\v':
return 1;
default:
return 0;
}
}
static inline int isprint(int c)
{
return c >= ' ' && c <= '~';
}
static inline int isdigit(int c)
{
return (c >= '0' && c <= '9');
}
static inline int isxdigit(int c)
{
return ((c >= '0' && c <= '9') ||
(c >= 'a' && c <= 'f') ||
(c >= 'A' && c <= 'F'));
}
static inline int isupper(int c)
{
return (c >= 'A' && c <= 'Z');
}
static inline int islower(int c)
{
return (c >= 'a' && c <= 'z');
}
static inline int toupper(int c)
{
if (islower(c))
c -= 'a'-'A';
return c;
}
static inline int tolower(int c)
{
if (isupper(c))
c -= 'A'-'a';
return c;
}
#endif /* STRING_H */

View File

@ -18,6 +18,7 @@
#include <assert.h>
#include <commonlib/stdlib.h>
#include <console/console.h>
#include <ctype.h>
#include <device_tree.h>
#include <endian.h>
#include <stdint.h>

View File

@ -31,6 +31,7 @@
#include <assert.h>
#include <stddef.h>
#include <console/console.h>
#include <ctype.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>

View File

@ -17,6 +17,7 @@
#include <assert.h>
#include <console/console.h>
#include <ctype.h>
#include <endian.h>
#include <stdint.h>
#include <bootmem.h>

View File

@ -13,6 +13,7 @@
*/
#include <console/console.h>
#include <ctype.h>
#include <lib.h>
#include <string.h>

View File

@ -11,6 +11,7 @@
* GNU General Public License for more details.
*/
#include <ctype.h>
#include <lib.h>
#include <string.h>

View File

@ -1,4 +1,5 @@
#include <assert.h>
#include <ctype.h>
#include <rules.h>
#include <string.h>
#include <stddef.h>

View File

@ -11,6 +11,7 @@
*/
#include <assert.h>
#include <ctype.h>
#include <string.h>
#include <lame_string.h>

View File

@ -44,6 +44,7 @@
#include <libbdk-hal/bdk-config.h>
#include <libbdk-hal/bdk-twsi.h>
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

View File

@ -15,6 +15,7 @@
#include <boot/coreboot_tables.h>
#include <console/console.h>
#include <ctype.h>
#include <string.h>
#include <drivers/vpd/vpd.h>