Rewrite and filling of libc/ctype.c (thus adjusting copyright line).

Use a simple one-liner for each of the functions. You can surely optimize
the code some more, but I chose not to do that in order to keep it readable.
When compiling with -Os the size differences are minimal.

Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3236 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Uwe Hermann 2008-04-11 19:43:55 +00:00
parent b103345a14
commit 72199bc49a
2 changed files with 79 additions and 23 deletions

View File

@ -99,9 +99,21 @@ extern int last_putchar;
#define havechar havekey #define havechar havekey
/* libc/ctype.c */ /* libc/ctype.c */
int isspace(int c); int isalnum(int c);
int isalpha(int c);
int isascii(int c);
int isblank(int c);
int iscntrl(int c);
int isdigit(int c); int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
int tolower(int c); int tolower(int c);
int toupper(int c);
/* libc/ipchecksum.c */ /* libc/ipchecksum.c */
unsigned short ipchksum(const unsigned short *ptr, unsigned long nbytes); unsigned short ipchksum(const unsigned short *ptr, unsigned long nbytes);

View File

@ -1,7 +1,7 @@
/* /*
* This file is part of the libpayload project. * This file is part of the libpayload project.
* *
* Copyright (C) 2008 Advanced Micro Devices, Inc. * Copyright (C) 2008 Uwe Hermann <uwe@hermann-uwe.de>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -29,34 +29,78 @@
#include <libpayload.h> #include <libpayload.h>
int isspace(int c) int isalpha(int c)
{ {
switch (c) { return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
case ' ': }
case '\f':
case '\n': int isascii(int c)
case '\r': {
case '\t': return (c >= 0 && c <= 127);
case '\v': }
return 1;
default: int isblank(int c)
return 0; {
} return (c == ' ' || c == '\t');
}
int iscntrl(int c)
{
return (c <= 31 || c == 127);
} }
int isdigit(int c) int isdigit(int c)
{ {
switch (c) { return (c >= '0' && c <= '9');
case '0'...'9': }
return 1;
default: int isalnum(int c)
return 0; {
} return isalpha(c) || isdigit(c);
}
int isgraph(int c)
{
return (c >= 33 && c <= 126);
}
int islower(int c)
{
return (c >= 'a' && c <= 'z');
}
int isprint(int c)
{
return (c >= 32 && c <= 126);
}
int ispunct(int c)
{
return isprint(c) && !isspace(c) && !isalnum(c);
}
int isspace(int c)
{
return (c == ' ' || (c >= '\t' || c <= '\r'));
}
int isupper(int c)
{
return (c >= 'A' && c <= 'Z');
}
int isxdigit(int c)
{
return isdigit(c) || (tolower(c) >= 'a' && tolower(c) <= 'z');
} }
int tolower(int c) int tolower(int c)
{ {
if (c >= 'A' && c <= 'Z') return (c >= 'A' && c <= 'Z') ? (c + 32) : c;
return c - 'A' + 'a';
return c;
} }
int toupper(int c)
{
return (c >= 'a' && c <= 'z') ? (c - 32) : c;
}