Author: uwe
Date: 2007-11-24 23:17:26 +0100 (Sat, 24 Nov 2007)
New Revision: 518

Added:
   LinuxBIOSv3/lib/string.c
Modified:
   LinuxBIOSv3/arch/x86/Makefile
   LinuxBIOSv3/include/string.h
Log:
Move the code from strings.h to a C file. We should really avoid
to have code in header files.

Signed-off-by: Uwe Hermann <[EMAIL PROTECTED]>
Acked-by: Stefan Reinauer <[EMAIL PROTECTED]>



Modified: LinuxBIOSv3/arch/x86/Makefile
===================================================================
--- LinuxBIOSv3/arch/x86/Makefile       2007-11-22 23:43:06 UTC (rev 517)
+++ LinuxBIOSv3/arch/x86/Makefile       2007-11-24 22:17:26 UTC (rev 518)
@@ -107,7 +107,7 @@
 #
 
 STAGE0_LIB_OBJ       = uart8250.o mem.o elfboot.o lar.o delay.o vtxprintf.o \
-                      vsprintf.o console.o $(DECOMPRESSORS)
+                      vsprintf.o console.o string.o $(DECOMPRESSORS)
 STAGE0_ARCH_X86_OBJ  = stage1.o serial.o archelfboot.o speaker.o \
                       udelay_io.o mc146818rtc.o post_code.o
 
@@ -169,7 +169,8 @@
 # TODO: This should be compressed with the default compressor.
 #
 
-STAGE2_LIB_OBJ       = stage2.o clog2.o mem.o tables.o delay.o 
compute_ip_checksum.o
+STAGE2_LIB_OBJ       = stage2.o clog2.o mem.o tables.o delay.o \
+                      compute_ip_checksum.o string.o
 
 STAGE2_ARCH_X86_OBJ  = archtables.o linuxbios_table.o udelay_io.o
 STAGE2_ARCH_X86_OBJ += pci_ops_auto.o pci_ops_conf1.o pci_ops_conf2.o

Modified: LinuxBIOSv3/include/string.h
===================================================================
--- LinuxBIOSv3/include/string.h        2007-11-22 23:43:06 UTC (rev 517)
+++ LinuxBIOSv3/include/string.h        2007-11-24 22:17:26 UTC (rev 518)
@@ -23,111 +23,19 @@
 
 #include <types.h>
 
-/* Prototypes for functions from lib/mem.c. */
+/* lib/string.c */
+size_t strnlen(const char *str, size_t maxlen);
+size_t strlen(const char *str);
+int strcmp(const char *s1, const char *s2);
+int strncmp(const char *s1, const char *s2, int maxlen);
+
+/* lib/mem.c */
 void *memcpy(void *dest, const void *src, size_t len);
 void *memmove(void *dest, const void *src, size_t len);
 void *memset(void *s, int c, size_t len);
 int memcmp(const void *s1, const void *s2, size_t len);
 
-/* Prototypes for functions from console/vsprintf.c. */
+/* console/vsprintf.c */
 int sprintf(char *buf, const char *fmt, ...);
 
-/**
- * Calculate the length of a fixed-size string.
- *
- * @param str The input string.
- * @param maxlen Return at most maxlen characters as length of the string.
- * @return The length of the string, not including the final NUL character.
- *        The maximum length returned is maxlen.
- */
-static inline size_t strnlen(const char *str, size_t maxlen)
-{
-       size_t len = 0;
-
-       /* NULL and empty strings have length 0. */
-       if (!str)
-               return 0;
-
-       /* Loop until we find a NUL character, or maxlen is reached. */
-       while ((*str++ != '\0') && (len < maxlen))
-               len++;
-
-       return len;
-}
-
-/**
- * Calculate the length of a string.
- *
- * @param str The input string.
- * @return The length of the string, not including the final NUL character.
- */
-static inline size_t strlen(const char *str)
-{
-       size_t len = 0;
-
-       /* NULL and empty strings have length 0. */
-       if (!str)
-               return 0;
-
-       /* Loop until we find a NUL character. */
-       while (*str++ != '\0')
-               len++;
-
-       return len;
-}
-
-/**
- * Compare two strings.
- *
- * @param s1 The first string.
- * @param s2 The second string.
- * @return Returns a value less than zero, if s1 is shorter than s2. Returns
- *        zero, if s1 equals s2. Returns a value greater than zero, if
- *        s1 is longer than s2.
- */
-static inline int strcmp(const char *s1, const char *s2)
-{
-       char c1, c2;
-
-       /* Set c1 == c2, so that we can enter the while loop. */
-       c1 = 0;
-       c2 = 0;
-
-       /* Compare characters until they differ, or one of the strings ends. */
-       while (c1 == c2) {
-               /* Read the next character from each string. */
-               c1 = *s1++;
-               c2 = *s2++;
-
-               /* Return something negative (if s1 is shorter than s2), or
-                  zero (if s1 equals s2). */
-               if (c1 == '\0')
-                       return c1 - c2;
-       }
-
-       /* Return someting positive (if s1 is longer than s2), or zero (if s1
-          and s2 are equal). */
-       return c1 - c2;
-}
-
-/**
- * Compare two strings with fixed length.
- *
- * @param s1 The first string.
- * @param s2 The second string.
- * @param maxlen Return at most maxlen characters as length of the string.
- * @return A non-zero value if s1 and s2 differ, or zero if s1 equals s2.
- */
-static inline int strncmp(const char *s1, const char *s2, int maxlen)
-{
-       int i;
-
-       for (i = 0; i < maxlen; i++) {
-               if (s1[i] != s2[i])
-                       return s1[i] - s2[i];
-       }
-
-       return 0;
-}
-
 #endif                         /* STRING_H */

Added: LinuxBIOSv3/lib/string.c
===================================================================
--- LinuxBIOSv3/lib/string.c                            (rev 0)
+++ LinuxBIOSv3/lib/string.c    2007-11-24 22:17:26 UTC (rev 518)
@@ -0,0 +1,119 @@
+/*
+ * This file is part of the LinuxBIOS project.
+ *
+ * Copyright (C) 2007 Uwe Hermann <[EMAIL PROTECTED]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <types.h>
+
+/**
+ * Calculate the length of a fixed-size string.
+ *
+ * @param str The input string.
+ * @param maxlen Return at most maxlen characters as length of the string.
+ * @return The length of the string, not including the final NUL character.
+ *        The maximum length returned is maxlen.
+ */
+size_t strnlen(const char *str, size_t maxlen)
+{
+       size_t len = 0;
+
+       /* NULL and empty strings have length 0. */
+       if (!str)
+               return 0;
+
+       /* Loop until we find a NUL character, or maxlen is reached. */
+       while ((*str++ != '\0') && (len < maxlen))
+               len++;
+
+       return len;
+}
+
+/**
+ * Calculate the length of a string.
+ *
+ * @param str The input string.
+ * @return The length of the string, not including the final NUL character.
+ */
+size_t strlen(const char *str)
+{
+       size_t len = 0;
+
+       /* NULL and empty strings have length 0. */
+       if (!str)
+               return 0;
+
+       /* Loop until we find a NUL character. */
+       while (*str++ != '\0')
+               len++;
+
+       return len;
+}
+
+/**
+ * Compare two strings.
+ *
+ * @param s1 The first string.
+ * @param s2 The second string.
+ * @return Returns a value less than zero, if s1 is shorter than s2. Returns
+ *        zero, if s1 equals s2. Returns a value greater than zero, if
+ *        s1 is longer than s2.
+ */
+int strcmp(const char *s1, const char *s2)
+{
+       char c1, c2;
+
+       /* Set c1 == c2, so that we can enter the while loop. */
+       c1 = 0;
+       c2 = 0;
+
+       /* Compare characters until they differ, or one of the strings ends. */
+       while (c1 == c2) {
+               /* Read the next character from each string. */
+               c1 = *s1++;
+               c2 = *s2++;
+
+               /* Return something negative (if s1 is shorter than s2), or
+                  zero (if s1 equals s2). */
+               if (c1 == '\0')
+                       return c1 - c2;
+       }
+
+       /* Return someting positive (if s1 is longer than s2), or zero (if s1
+          and s2 are equal). */
+       return c1 - c2;
+}
+
+/**
+ * Compare two strings with fixed length.
+ *
+ * @param s1 The first string.
+ * @param s2 The second string.
+ * @param maxlen Return at most maxlen characters as length of the string.
+ * @return A non-zero value if s1 and s2 differ, or zero if s1 equals s2.
+ */
+int strncmp(const char *s1, const char *s2, int maxlen)
+{
+       int i;
+
+       for (i = 0; i < maxlen; i++) {
+               if (s1[i] != s2[i])
+                       return s1[i] - s2[i];
+       }
+
+       return 0;
+}


-- 
linuxbios mailing list
linuxbios@linuxbios.org
http://www.linuxbios.org/mailman/listinfo/linuxbios

Reply via email to