[Skiboot] [PATCH 06/15] libc/string: Add strnlen

Claudio Carvalho cclaudio at linux.vnet.ibm.com
Fri Sep 2 15:02:25 AEST 2016



On 09/01/2016 06:42 AM, Stewart Smith wrote:
> Claudio Carvalho <cclaudio at linux.vnet.ibm.com> writes:
>> diff --git a/libc/string/strnlen.c b/libc/string/strnlen.c new
>> file mode 100644 index 0000000..904c12e --- /dev/null +++
>> b/libc/string/strnlen.c @@ -0,0 +1,28 @@ 
>> +/******************************************************************************
>>
>> 
+ * Copyright (c) 2004, 2016 IBM Corporation
>> + * All rights reserved. + * This program and the accompanying
>> materials + * are made available under the terms of the BSD
>> License + * which accompanies this distribution, and is available
>> at + * http://www.opensource.org/licenses/bsd-license.php + * + *
>> Contributors: + *     IBM Corporation - initial implementation +
>> *****************************************************************************/
>>
>> 
+
>> +#include <string.h> + +size_t strnlen(const char *s, size_t n) 
>> +{ +	size_t len = 0;
> 
> Looks good, but I just noticed that our strlen() has int rather
> than size_t here, so I've posted a fix for that.
> 
>> + +	if (n < 1) +		return 0;
> 
> You don't need this check if you swap the while condition around to
> be while( n-- > 0 && *s != '\0')

I will apply this in V2.

> 
>> + +	while (*s != 0 && n-- > 0) {
> 
> Using '\0' is slightly better as it implies null character rather
> than a zero.
> 
>> +		len++; +		s++; +	} + +	return len; +}
> 



More information about the Skiboot mailing list