coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: expand/unexpand: add tests, refactor common code


From: Pádraig Brady
Subject: Re: expand/unexpand: add tests, refactor common code
Date: Mon, 27 Jun 2016 11:56:38 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 27/06/16 06:17, Assaf Gordon wrote:
> Hello Pádraig and all,
> 
>> On Jun 25, 2016, at 07:20, Pádraig Brady <address@hidden> wrote:
>>
>> As part of this, or at least before looking at multibyte changes,
>> it would be worth considering this proposal for changing the
>> unexpand algorithm: http://bugs.gnu.org/23335
> 
> The above bug-report addresses this TODO item:
> ===
> unexpand: [http://www.opengroup.org/onlinepubs/007908799/xcu/unexpand.html]
>   printf 'x\t \t y\n'|unexpand -t 8,9 should print its input, unmodified.
>   printf 'x\t \t y\n'|unexpand -t 5,8 should print "x\ty\n"
> ===

I think the second command is wrong there actually?
Surely it should print "x\t\t y\n"

> I haven't yet carefully read the POSIX description (it seems misleadingly 
> short),
> but a quick test shows many different implementations struggle with this 
> input (see below).
> 
> So before starting to work on changing the algorithm, I'd like to verify the 
> stated expected output is indeed what is expected by posix (or perhaps, as 
> there is simply no consensus, this is not a commonly used case and is better 
> left as is?).

Interesting.
To me the Solaris output is most correct since it does minimal translation,
however the coreutils output will behave the same with tabstops at 8 and 9.
I.E. we use a tab rather than the existing space to fill the single width space.
So ideally we'd have the Solaris output, but I wouldn't jump through any hoops,
or slow down the code to achieve it.

thanks!
Pádraig.

> ===
> 
> System: AIX
> which unexpand: /usr/bin/unexpand
> input: 
>           78  09  20  09  20  79  0a
>            x  \t      \t       y  \n
>     
> 
> expand -t 8,9 :
>           78  09  09  09  20  79  0a
>            x  \t  \t  \t       y  \n
>     
> 
> expand -t 5,8 :
>           78  09  20  09  20  79  0a
>            x  \t      \t       y  \n
> 
> ===
> 
> System: SunOS 5.11
> which unexpand: /usr/bin/unexpand
> input: 
>           78  09  20  09  20  79  0a
>            x  \t      \t       y  \n
>     
> 
> expand -t 8,9 :
>           78  09  20  09  20  79  0a
>            x  \t      \t       y  \n
>     
> 
> expand -t 5,8 :
>           78  09  09  20  79  0a
>            x  \t  \t       y  \n
> 
> ===
> 
> System: Linux 3.16.0-4-amd64 (Debian 8)
> which unexpand: /usr/local/bin/unexpand (coreutils 8.25)
> input:  
>       78  09  20  09  20  79  0a
>        x  \t      \t       y  \n
> 
> expand -t 8,9 :
>       78  09  09  09  20  79  0a
>        x  \t  \t  \t       y  \n
> 
> expand -t 5,8 :
>       78  09  09  20  79  0a
>        x  \t  \t       y  \n
> 
> ===
> 
> System: FreeBSD 10.1-RELEASE
> which unexpand: /usr/bin/unexpand
> input: 
>                78  09  20  09  20  79  0a                                    
>                x  \t      \t       y  \n                                    
> 
> expand -t 8,9 :
>                78  09  09  20  79  0a                                        
>                x  \t  \t       y  \n                                        
> 
> expand -t 5,8 :
>                78  09  09  09  79  0a                                        
>                x  \t  \t  \t   y  \n                                        
> 
> ===
> 
> (test code available in http://files.housegordon.org/tmp/test-unexpand.sh)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]