diff

Nicholas Mc Guire der.herr at hofr.at
Mon Mar 13 03:43:00 EDT 2017


On Mon, Mar 13, 2017 at 05:57:14PM +1100, Tobin C. Harding wrote:
> On occasions diff output does not render the same as it does when
> editing a file. For example, while removing checkpatch tab warning
> the following diff was generated
> 
> -#define KS_WLAN_SET_WPS_ENABLE                 SIOCIWFIRSTPRIV + 4
> -#define KS_WLAN_GET_WPS_ENABLE                 SIOCIWFIRSTPRIV + 5
> +#define KS_WLAN_SET_WPS_ENABLE         SIOCIWFIRSTPRIV + 4
> +#define KS_WLAN_GET_WPS_ENABLE         SIOCIWFIRSTPRIV + 5
> 
> However when editing the file the alignment was not changed, just tabs
> were inserted instead of spaces.

if the removed lines were using tabs which they should then they are
moved by the inserted "-" while the added lines were using spaces
and thus did not "jump" to the next tabstop.

> 
> I had the same thing happen a few days ago (reproduced here from
> memory)
> 
> -static void foo(struct bar *barp, struct baz *bazp)
> +static void foo(struct bar *barp,
> +               struct baz *bazp)
> {
>         ...
> 
> When editing the file the two s's in struct were aligned but not in
> the diff output. I reapplied this patch to a clean tree and it applied
> correctly.

this is simply because the insertion is by tabs so when diff added the
+/- output it moved the "static void foo..." but not the "struct baz"
so this looks unaligned in the diff output while it actually is aligned
properly.

> 
> How do maintainers visually parse this if the output is not identical in the
> diff and the file once applied?
>
checkpatch will warn if spaces were used and if its based on tabs
I guess most can see if aligment is correct or not.

thx!
hofrat



More information about the Kernelnewbies mailing list