From: Uwe Hermann Date: Fri, 11 Apr 2008 19:43:55 +0000 (+0000) Subject: Rewrite and filling of libc/ctype.c (thus adjusting copyright line). X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=72199bc49a7ac72fd89c1ddf105c000d457b01ad;p=coreboot.git 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 Acked-by: Jordan Crouse git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3236 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h index 4b868b447..27668e168 100644 --- a/payloads/libpayload/include/libpayload.h +++ b/payloads/libpayload/include/libpayload.h @@ -99,9 +99,21 @@ extern int last_putchar; #define havechar havekey /* 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 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 toupper(int c); /* libc/ipchecksum.c */ unsigned short ipchksum(const unsigned short *ptr, unsigned long nbytes); diff --git a/payloads/libpayload/libc/ctype.c b/payloads/libpayload/libc/ctype.c index 9853fceb5..9f83261ac 100644 --- a/payloads/libpayload/libc/ctype.c +++ b/payloads/libpayload/libc/ctype.c @@ -1,7 +1,7 @@ /* * This file is part of the libpayload project. * - * Copyright (C) 2008 Advanced Micro Devices, Inc. + * Copyright (C) 2008 Uwe Hermann * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -29,34 +29,78 @@ #include -int isspace(int c) +int isalpha(int c) +{ + return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); +} + +int isascii(int c) +{ + return (c >= 0 && c <= 127); +} + +int isblank(int c) +{ + return (c == ' ' || c == '\t'); +} + +int iscntrl(int c) { - switch (c) { - case ' ': - case '\f': - case '\n': - case '\r': - case '\t': - case '\v': - return 1; - default: - return 0; - } + return (c <= 31 || c == 127); } int isdigit(int c) { - switch (c) { - case '0'...'9': - return 1; - default: - return 0; - } + return (c >= '0' && c <= '9'); +} + +int isalnum(int c) +{ + 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) { - if (c >= 'A' && c <= 'Z') - return c - 'A' + 'a'; - return c; + return (c >= 'A' && c <= 'Z') ? (c + 32) : c; } + +int toupper(int c) +{ + return (c >= 'a' && c <= 'z') ? (c - 32) : c; +} +