[PATCH v2] scripts: socfpga_import_preloader: Translate DOS line endings

Ian Abbott abbotti at mev.co.uk
Fri Jun 16 05:02:10 PDT 2023


Hi Sascha,

On 16/06/2023 11:30, Sascha Hauer wrote:
> On Fri, Jun 16, 2023 at 10:19:38AM +0100, Ian Abbott wrote:
>> On 16/06/2023 07:41, Sascha Hauer wrote:
>>> Hi Ian,
>>>
>>> On Thu, Jun 15, 2023 at 04:57:38PM +0100, Ian Abbott wrote:
>>>> If the handoff files were generated on a Windows system, they will have
>>>> DOS line endings.  The `indent` program (with the options used by the
>>>> script) does a lousy job tidying up those files, leaving ASCII CR
>>>> characters embedded in the lines.  This is particularly bad for array
>>>> initializers that have one value per line, because they all end up on a
>>>> single line with embedded ASCII CR characters between each value.
>>>>
>>>> Add an initial `sed` command to `copy_source()` to match and remove an
>>>> ASCII CR character from the end of each input line.
>>>>
>>>> Also output a message before running `unifdef` and fix the spelling of
>>>> "paths" in one of the other messages.
>>>>
>>>> Signed-off-by: Ian Abbott <abbotti at mev.co.uk>
>>>> ---
>>>> v2: Corrected tabs in echoed output.
>>>> ---
>>>>    scripts/socfpga_import_preloader | 6 +++++-
>>>>    1 file changed, 5 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/scripts/socfpga_import_preloader b/scripts/socfpga_import_preloader
>>>> index bd54e1b913..26a8556b1a 100755
>>>> --- a/scripts/socfpga_import_preloader
>>>> +++ b/scripts/socfpga_import_preloader
>>>> @@ -79,6 +79,10 @@ copy_source() {
>>>>    	cp $src $tgt
>>>> +	echo "	Translating DOS line endings..."
>>>> +	sed -i "s/`echo -e '\r'`$//" $tgt
>>>
>>> Why `echo -e '\r'` here? A plain \r should work as well.
>>
>> A plain \r doesn't work, but \\\r works. I prefer '\r'.
> 
> Strange, would be interesting to know where the difference is.
> Here both of these commands have behave the same:
> 
> echo hallo | unix2dos | sed "s/`echo -e '\r'`$//" | hexdump -C
> echo hallo | unix2dos | sed "s/\r$//" | hexdump -C
> 
> They both result in:
> 
> 00000000  68 61 6c 6c 6f 0a                                 |hallo.|
> 00000006

Sorry, I misinterpreted what you wrote. I thought you meant replace 
'\r'` with \r, rather than replace `echo -e '\r'` with \r.

I've never seen \r in a sed regular expression before. It seems to be a 
GNU sed extension. POSIX only supports \\ and \n.

-- 
-=( Ian Abbott <abbotti at mev.co.uk> || MEV Ltd. is a company  )=-
-=( registered in England & Wales.  Regd. number: 02862268.  )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || www.mev.co.uk )=-




More information about the barebox mailing list