[U-Boot] [PATCH] Ignore all Carriage Returns when importing an environment.

Alexander Holler holler at ahsoftware.de
Sat May 12 16:25:18 CEST 2012


Am 12.05.2012 08:17, schrieb Marek Vasut:
> Dear Alexander Holler,
>
>> This is used for compatibility with text files which are
>> using CRLF instead of LF as the end of a line.
>>
>> Signed-off-by: Alexander Holler<holler at ahsoftware.de>
>
> Why don't you run the file trough dos2unix or tr -d '\r' ?

Because my files don't contain CRs. ;)

Regards,

Alexander

>
>> ---
>>   lib/hashtable.c |   18 +++++++++++++++---
>>   1 files changed, 15 insertions(+), 3 deletions(-)
>>
>> diff --git a/lib/hashtable.c b/lib/hashtable.c
>> index abd61c8..6e146ce 100644
>> --- a/lib/hashtable.c
>> +++ b/lib/hashtable.c
>> @@ -623,9 +623,9 @@ ssize_t hexport_r(struct hsearch_data *htab, const char
>> sep, * (entries separated by newline characters).
>>    *
>>    * To allow for nicely formatted text input, leading white space
>> - * (sequences of SPACE and TAB chars) is ignored, and entries starting
>> - * (after removal of any leading white space) with a '#' character are
>> - * considered comments and ignored.
>> + * (sequences of SPACE and TAB chars) is ignored, all Carriage Returns
>> + * are ignored and entries starting (after removal of any leading white
>> + * space) with a '#' character are considered comments and ignored.
>>    *
>>    * [NOTE: this means that a variable name cannot start with a '#'
>>    * character.]
>> @@ -642,6 +642,7 @@ int himport_r(struct hsearch_data *htab,
>>   	      const char *env, size_t size, const char sep, int flag)
>>   {
>>   	char *data, *sp, *dp, *name, *value;
>> +	unsigned ignored_crs;
>>
>>   	/* Test for correct arguments.  */
>>   	if (htab == NULL) {
>> @@ -698,6 +699,17 @@ int himport_r(struct hsearch_data *htab,
>>   		}
>>   	}
>>
>> +	/* Remove all Carriage Returns */
>> +	ignored_crs = 0;
>> +	for(;dp<  data + size&&  *dp; ++dp) {
>> +		if( *dp == '\r' )
>> +			++ignored_crs;
>> +		else if(ignored_crs)
>> +			*(dp-ignored_crs) = *dp;
>> +	}
>> +	size -= ignored_crs;
>> +	dp = data;
>> +
>>   	/* Parse environment; allow for '\0' and 'sep' as separators */
>>   	do {
>>   		ENTRY e, *rv;
>
> Best regards,
> Marek Vasut



More information about the U-Boot mailing list