[coreboot] r3236 - in trunk/payloads/libpayload: include libc

svn at coreboot.org svn at coreboot.org
Fri Apr 11 21:43:55 CEST 2008


Author: uwe
Date: 2008-04-11 21:43:55 +0200 (Fri, 11 Apr 2008)
New Revision: 3236

Modified:
   trunk/payloads/libpayload/include/libpayload.h
   trunk/payloads/libpayload/libc/ctype.c
Log:
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 at hermann-uwe.de>
Acked-by: Jordan Crouse <jordan.crouse at amd.com>



Modified: trunk/payloads/libpayload/include/libpayload.h
===================================================================
--- trunk/payloads/libpayload/include/libpayload.h	2008-04-11 18:38:04 UTC (rev 3235)
+++ trunk/payloads/libpayload/include/libpayload.h	2008-04-11 19:43:55 UTC (rev 3236)
@@ -99,9 +99,21 @@
 #define havechar havekey
 
 /* libc/ctype.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 isdigit(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);

Modified: trunk/payloads/libpayload/libc/ctype.c
===================================================================
--- trunk/payloads/libpayload/libc/ctype.c	2008-04-11 18:38:04 UTC (rev 3235)
+++ trunk/payloads/libpayload/libc/ctype.c	2008-04-11 19:43:55 UTC (rev 3236)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the libpayload project.
  *
- * Copyright (C) 2008 Advanced Micro Devices, Inc.
+ * Copyright (C) 2008 Uwe Hermann <uwe at hermann-uwe.de>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -29,34 +29,78 @@
 
 #include <libpayload.h>
 
-int isspace(int c)
+int isalpha(int c)
 {
-	switch (c) {
-	case ' ':
-	case '\f':
-	case '\n':
-	case '\r':
-	case '\t':
-	case '\v':
-		return 1;
-	default:
-		return 0;
-	}
+	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)
+{
+	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;
+}
+





More information about the coreboot mailing list