From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Holler Date: Sat, 12 May 2012 16:25:18 +0200 Subject: [U-Boot] [PATCH] Ignore all Carriage Returns when importing an environment. In-Reply-To: <201205120817.33059.marex@denx.de> References: <1336720486-7424-1-git-send-email-holler@ahsoftware.de> <201205120817.33059.marex@denx.de> Message-ID: <4FAE72CE.3020201@ahsoftware.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > > 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