[coreboot] [PATCH] [libpayload] [5/7] strsep and string functions documentation

Uwe Hermann uwe at hermann-uwe.de
Fri Sep 26 13:22:03 CEST 2008


On Fri, Sep 26, 2008 at 01:21:04AM +0200, Stefan Reinauer wrote:
> * Add strsep (since strtok is considered obsolete)
> * add a bunch of string function doxygen comments.
> 
> Signed-off-by: Stefan Reinauer <stepan at coresystems.de>

With the cosmetic changes listed below this is

Acked-by: Uwe Hermann <uwe at hermann-uwe.de>


> Index: include/libpayload.h
> ===================================================================
> --- include/libpayload.h	(revision 3600)
> +++ include/libpayload.h	(working copy)
> @@ -309,6 +324,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);
>  /** @} */
>  
>  /**
> Index: libc/string.c
> ===================================================================
> --- libc/string.c	(revision 3600)
> +++ libc/string.c	(working copy)
> @@ -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 strncpy returns a pointer to the destination memory.

Make this "@return A pointer to the destination memory." please.
Doxygen already puts "Returns:" in its output, no need to repeat
that with "strncpy returns".


> + */
>  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 strcpy returns a pointer to the destination memory.

Ditto, drop "strcpy returns", capitalize to "A pointer"...


> + */
>  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 strncat returns a pointer to the destination string.

Ditto.


> + */
>  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 strchr returns a pointer to the first occurence of the character in
> + * the string, or NULL if the character was not encountered within the string.
> + */

Ditto.


>  char *strchr(const char *s, int c)
>  {
>  	char *p = (char *)s;
> @@ -170,6 +201,12 @@
>  	return NULL;
>  }
>  
> +/**
> + * Duplicate a string.
> + *
> + * @param s The string.

"The string to duplicate." may be a bit more readable.


> + * @return strdup returns a pointer to the copy of the original string.

As above, drop "strdup returns", capitalize to "A pointer...".


> + */
>  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)

Missing fullstop.


> + * @return strstr returns a pointer to the first occurence of the substring in

See above.


> + * 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

Missing full stop.


> + *
> + * @param stringp reference of the string to separate

Ditto.


> + * @param delim string containing all delimiters

Ditto.


> + * @return token string.

This could be a bit more verbose, but it's ok for now.
Please capitalize the first letter, though.


> + */
> +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) {
> +		/* Null terminate */

Null -> NUL ?


> +		*walk = '\0';
> +		walk++;
> +	}
> +
> +	*stringp = walk;
> +
> +	return token;
> +}
> +


Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org




More information about the coreboot mailing list