| #!/usr/bin/env bash |
| # |
| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| # Helper script that reads a file from stdin and replaces every tab character |
| # with at most eight spaces (i.e. what smart tabs would render it as at an |
| # eight-space tab. |
| # |
| # This is useful for cleaning up the output of GCC tools that are excited about |
| # mixing tabs and spaces. |
| |
| set -e |
| |
| # A simple perl program that matches every tab in every line |
| # and replaces it with `8 - n % 8` spaces, where `n` is the |
| # index of the tab. Although the array $@ holds this |
| # information, it does not account for previous tab |
| # replacements, so we need to maintain a running total of |
| # how many new spaces we've added, which we do with `$acc`. |
| perl -pe ' |
| my $acc = 0; |
| s/\t/ |
| my $sp = 8 - ($acc + $-[0]) % 8; |
| $acc += $sp - 1; |
| " " x $sp |
| /eg' |