On Sun, Sep 20, 2020 at 07:07:42PM +0100, Al Viro wrote: > /proc/bus/input/devices (fucked bitmap-to-text representation) To illustrate the, er, beauty of that stuff: ; cat32 /proc/bus/input/devices >/tmp/a ; cat /proc/bus/input/devices >/tmp/b ; diff -u /tmp/a /tmp/b|grep '^[-+]' --- /tmp/a 2020-09-20 14:28:43.442560691 -0400 +++ /tmp/b 2020-09-20 14:28:49.018543230 -0400 -B: KEY=1100f 2902000 8380307c f910f001 feffffdf ffefffff ffffffff fffffffe +B: KEY=1100f02902000 8380307cf910f001 feffffdfffefffff fffffffffffffffe -B: KEY=70000 0 0 0 0 0 0 0 0 +B: KEY=70000 0 0 0 0 -B: KEY=420 0 70000 0 0 0 0 0 0 0 0 +B: KEY=420 70000 0 0 0 0 -B: KEY=100000 0 0 0 +B: KEY=10000000000000 0 -B: KEY=4000 0 0 0 0 +B: KEY=4000 0 0 -B: KEY=8000 0 0 0 0 0 1100b 800 2 200000 0 0 0 0 +B: KEY=800000000000 0 0 1100b00000800 200200000 0 0 -B: KEY=3e000b 0 0 0 0 0 0 0 +B: KEY=3e000b00000000 0 0 0 -B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe +B: KEY=ffffffffffffffff ffffffffffffffff ffffffffffffffff fffffffffffffffe ; (cat32 being a 32bit binary of cat) All the differences are due to homegrown bitmap-to-text conversion. Note that feeding that into a pipe leaves the recepient with a lovely problem - you can't go by the width of words (they are not zero-padded) and you can't go by the number of words either - it varies from device to device. And there's nothing we can do with that - it's a userland ABI, can't be changed without breaking stuff. I would prefer to avoid additional examples like that, TYVM...