[coreboot] r3608 - in trunk/payloads/libpayload: include libc
svn at coreboot.org
svn at coreboot.org
Fri Sep 26 20:42:40 CEST 2008
Author: stepan
Date: 2008-09-26 20:42:40 +0200 (Fri, 26 Sep 2008)
New Revision: 3608
Modified:
trunk/payloads/libpayload/include/libpayload.h
trunk/payloads/libpayload/libc/string.c
Log:
* Add strsep (since strtok is considered obsolete)
* add a bunch of string function doxygen comments.
Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Acked-by: Uwe Hermann <uwe at hermann-uwe.de>
Modified: trunk/payloads/libpayload/include/libpayload.h
===================================================================
--- trunk/payloads/libpayload/include/libpayload.h 2008-09-26 18:40:06 UTC (rev 3607)
+++ trunk/payloads/libpayload/include/libpayload.h 2008-09-26 18:42:40 UTC (rev 3608)
@@ -110,6 +110,13 @@
/** @} */
/**
+ * @defgroup usb USB functions
+ * @{
+ */
+int usb_initialize(void);
+/** @} */
+
+/**
* @defgroup input Device functions
* @{ @}
*/
@@ -315,6 +322,7 @@
char *strchr(const char *s, int c);
char *strdup(const char *s);
char *strstr(const char *h, const char *n);
+char *strsep(char **stringp, const char *delim);
/** @} */
/**
Modified: trunk/payloads/libpayload/libc/string.c
===================================================================
--- trunk/payloads/libpayload/libc/string.c 2008-09-26 18:40:06 UTC (rev 3607)
+++ trunk/payloads/libpayload/libc/string.c 2008-09-26 18:42:40 UTC (rev 3608)
@@ -128,6 +128,14 @@
return 0;
}
+/**
+ * Copy a string with a maximum length.
+ *
+ * @param d The destination memory.
+ * @param s The source string.
+ * @param n Copy at most n characters as length of the string.
+ * @return A pointer to the destination memory.
+ */
char *strncpy(char *d, const char *s, size_t n)
{
/* Use +1 to get the NUL terminator. */
@@ -140,11 +148,26 @@
return d;
}
+/**
+ * Copy a string.
+ *
+ * @param d The destination memory.
+ * @param s The source string.
+ * @return A pointer to the destination memory.
+ */
char *strcpy(char *d, const char *s)
{
return strncpy(d, s, strlen(s) + 1);
}
+/**
+ * Concatenates two strings with a maximum length.
+ *
+ * @param d The destination string.
+ * @param s The source string.
+ * @param n The target string will have a length of n characters at most.
+ * @return A pointer to the destination string.
+ */
char *strncat(char *d, const char *s, size_t n)
{
char *p = d + strlen(d);
@@ -158,6 +181,14 @@
return d;
}
+/**
+ * Find a character in a string.
+ *
+ * @param s The string.
+ * @param c The character.
+ * @return A pointer to the first occurence of the character in the
+ * string, or NULL if the character was not encountered within the string.
+ */
char *strchr(const char *s, int c)
{
char *p = (char *)s;
@@ -170,6 +201,12 @@
return NULL;
}
+/**
+ * Duplicate a string.
+ *
+ * @param s The string to duplicate.
+ * @return A pointer to the copy of the original string.
+ */
char *strdup(const char *s)
{
int n = strlen(s);
@@ -182,6 +219,14 @@
return p;
}
+/**
+ * Find a substring within a string.
+ *
+ * @param h The haystack string.
+ * @param n The needle string (substring).
+ * @return A pointer to the first occurence of the substring in
+ * the string, or NULL if the substring was not encountered within the string.
+ */
char *strstr(const char *h, const char *n)
{
int hn = strlen(h);
@@ -194,3 +239,35 @@
return NULL;
}
+
+/**
+ * Separate strings.
+ *
+ * @param stringp reference of the string to separate.
+ * @param delim string containing all delimiters.
+ * @return Token string.
+ */
+char *strsep(char **stringp, const char *delim)
+{
+ char *walk, *token;
+
+ if (!stringp || !*stringp || !**stringp)
+ return NULL;
+
+ token = walk = *stringp;
+
+ /* Walk, search for delimiters */
+ while(*walk && !strchr(delim, *walk))
+ walk++;
+
+ if (*walk) {
+ /* NUL terminate */
+ *walk = '\0';
+ walk++;
+ }
+
+ *stringp = walk;
+
+ return token;
+}
+
More information about the coreboot
mailing list