[Toybox] [PATCH] Make ls.test work without awk.

enh enh at google.com
Tue Apr 11 12:56:44 PDT 2017


On Tue, Apr 11, 2017 at 12:14 PM, Rob Landley <rob at landley.net> wrote:

> On 04/05/2017 12:28 PM, enh wrote:
> >  tests/ls.test | 4 ++++
> >  1 file changed, 4 insertions(+)
>
> This patch removes no lines, it just adds a new test. How does this make
> it work without awk in a way that wasn't previously the case? (The
> description doesn't match what the patch does?)
>

yeah, i fucked up trying to manage too many patches at once. those four
lines should replace the four lines immediately below.


> Also, minor quibble, they're called symlinks (symbolic links) not
> softlinks. Kinda fixed in stone on linux because that's what the syscall
> to make 'em is called (man 2 symlink).
>

(yeah, that was me only changing the part that _needed_ to change. except i
screwed that up so it was no longer obvious.)


> Also, I want a grep option that ignores whitespace differences like
> patch -l does. Squash all runs of whitespace to one ascii 32 space
> character, then compare. Alas I'd probably have to use a --longopt for
> the name and I dislike those slightly more than I want this feature.
>

speaking of which: all the blkid tests fail if you run it on the desktop
because you don't output trailing spaces. i'm not sure whether to "break"
toybox blkid to just always output trailing spaces or make the test less
readable to allow either output. (regular expression matches rather than
just literal matches might help here.)


> And if you want to be really cruel to this test:
>
> ln -s "three -> four" "one -> two"
> lrwxrwxrwx 1 landley landley 13 Apr 11 12:39 one -> two -> three -> four
>
> Which is why ls -1b and readlink exist, but my -b needs upgrading? It's
> wildcarding stuff out ala -q but that can cause collisions, and given
> the other one escapes spaces what it really means by "nongraphic" is
> escape anything that prevents the shell from seeing this as a single
> argument, and I'm not entirely sure what that list is...
>
> $ mkdir sub
> $ cd sub
> $ touch "$(echo -e "$(X=0;while [ $X -lt 255 ];do X=$(($X+1));[ $X -eq
> 47 ]&& continue;printf '\\x%02x' $X; done)")"
> $ ls -b
>
> Answer: it's anything <= 32 and >= 128, which gets an octal escape,
> except for \a\b\t\n\v\f\r and "\ ". And backslash is escaped with
> another backslash.
>
> And the FUN part is that I should add the above to the test suite. Wow
> that's ugly. Should use the octal not hex escapes though...
>
> (You want to know why I can't work through my todo list until it's
> smaller? That's why. Working through my todo list makes it BIGGER.
> Always has.)
>

everyone else's too. this is why we give in and have bug databases. anr/or
XFAIL tests.


> Except... looking in ls there's code to do this. Why isn't it
> triggering... Huh, Izabera pointed out that ubuntu's ls defaults to -q
> and so I made it do that, and -q trumps -b. Blah.
>
> Ok, fixed and my code is escaping \e which ubuntu's ls isn't. But both
> printf and echo support \e so I think I'm right. :)
>
> Rob
>



-- 
Elliott Hughes - http://who/enh - http://jessies.org/~enh/
Android native code/tools questions? Mail me/drop by/add me as a reviewer.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20170411/74b1e743/attachment-0003.htm>


More information about the Toybox mailing list