2024-04-16 07:19:07

by Prasad Pandit

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: error if file terminates without a new-line

[+linux-kernel]

On Saturday, 30 March, 2024 at 09:09:12 am IST, Prasad Pandit <[email protected]> wrote: 
From: Prasad Pandit <[email protected]>

Add check to flag an error if a patch terminates a file
without a new line (\n) character.

Suggested-by: Dan Carpenter <[email protected]>
Signed-off-by: Prasad Pandit <[email protected]>
---
scripts/checkpatch.pl | 7 +++++++
1 file changed, 7 insertions(+)

-> https://lore.kernel.org/all/CAE8KmOxG=3sWKpeB5fdWTK-SCipS=JyDE-_DNgY--DtoSQZ0Qw@mail.gmail.com/T/#t

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 9c4c4a61bc83..df34c0709410 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2795,6 +2795,13 @@ sub process {
            $is_patch = 1;
        }

+# check if patch terminates file without a new line (\n)
+        if ($line =~ /^\\ No newline at end of file$/
+            and $rawlines[$linenr - 2] =~ /^\+.*$/) {
+            ERROR("NOEOL_FILE",
+                  "patch terminates file without a new line (\\n).");
+        }
+
#extract the line range in the file after the patch is applied
        if (!$in_commit_log &&
            $line =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@(.*)/) {
--
2.44.0


2024-04-16 08:48:41

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: error if file terminates without a new-line

On Tue, Apr 16, 2024 at 07:04:47AM +0000, Prasad Pandit wrote:
> [+linux-kernel]
>
> On Saturday, 30 March, 2024 at 09:09:12 am IST, Prasad Pandit <[email protected]> wrote:?

Why are these lines in a changelog of a patch to submit? That's not
going to work :(

I suggest taking some time and talking to some other kernel developers
in red hat as to how to submit changes, that will make things much
easier.

> From: Prasad Pandit <[email protected]>
>
> Add check to flag an error if a patch terminates a file
> without a new line (\n) character.
>
> Suggested-by: Dan Carpenter <[email protected]>
> Signed-off-by: Prasad Pandit <[email protected]>

Also, I see 3 different emails for you here, none of which match, pick
one for kernel development and stick with it?

> ---
> scripts/checkpatch.pl | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> -> https://lore.kernel.org/all/CAE8KmOxG=3sWKpeB5fdWTK-SCipS=JyDE-_DNgY--DtoSQZ0Qw@mail.gmail.com/T/#t
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 9c4c4a61bc83..df34c0709410 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2795,6 +2795,13 @@ sub process {
> ??? ??? ??? $is_patch = 1;
> ??? ??? }
>
> +# check if patch terminates file without a new line (\n)
> +? ? ? ? if ($line =~ /^\\ No newline at end of file$/
> +? ? ? ? ? ? and $rawlines[$linenr - 2] =~ /^\+.*$/) {
> +? ? ? ? ? ? ERROR("NOEOL_FILE",
> +? ? ? ? ? ? ? ? ? "patch terminates file without a new line (\\n).");
> +? ? ? ? }

Why is this a problem? files without a new line should not cause
problems with a compiler, right? You don't have a justification for why
this change needs to be checked for anywhere.

thanks,

greg k-h

2024-04-16 08:59:59

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: error if file terminates without a new-line

On Tue, Apr 16, 2024 at 10:48:27AM +0200, Greg KH wrote:
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> > index 9c4c4a61bc83..df34c0709410 100755
> > --- a/scripts/checkpatch.pl
> > +++ b/scripts/checkpatch.pl
> > @@ -2795,6 +2795,13 @@ sub process {
> > ??? ??? ??? $is_patch = 1;
> > ??? ??? }
> >
> > +# check if patch terminates file without a new line (\n)
> > +? ? ? ? if ($line =~ /^\\ No newline at end of file$/
> > +? ? ? ? ? ? and $rawlines[$linenr - 2] =~ /^\+.*$/) {
> > +? ? ? ? ? ? ERROR("NOEOL_FILE",
> > +? ? ? ? ? ? ? ? ? "patch terminates file without a new line (\\n).");
> > +? ? ? ? }
>
> Why is this a problem? files without a new line should not cause
> problems with a compiler, right? You don't have a justification for why
> this change needs to be checked for anywhere.
>

I gave him such a good reason too... It breaks `cat file.c`. Plus, it
looks weird in `git log -p` because it has a "No newline at the end of
file" comment.

regards,
dan carpenter

diff --git a/test.c b/test.c
new file mode 100644
index 000000000000..d808cac2d962
--- /dev/null
+++ b/test.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <stdbool.h>
+#include "check_debug.h"
+
+void kfree(int *p);
+
+int *p;
+int main(void)
+{
+ kfree(p);
+ *p = 1;
+}
\ No newline at end of file

commit f4a997924122d0094675c897a220371f0a129d90





2024-04-16 10:14:50

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: error if file terminates without a new-line

On Tue, 2024-04-16 at 11:59 +0300, Dan Carpenter wrote:
> On Tue, Apr 16, 2024 at 10:48:27AM +0200, Greg KH wrote:
> > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> > > index 9c4c4a61bc83..df34c0709410 100755
> > > --- a/scripts/checkpatch.pl
> > > +++ b/scripts/checkpatch.pl
> > > @@ -2795,6 +2795,13 @@ sub process {
> > > ??? ??? ??? $is_patch = 1;
> > > ??? ??? }
> > >
> > > +# check if patch terminates file without a new line (\n)
> > > +? ? ? ? if ($line =~ /^\\ No newline at end of file$/
> > > +? ? ? ? ? ? and $rawlines[$linenr - 2] =~ /^\+.*$/) {
> > > +? ? ? ? ? ? ERROR("NOEOL_FILE",
> > > +? ? ? ? ? ? ? ? ? "patch terminates file without a new line (\\n).");
> > > +? ? ? ? }
> >
> > Why is this a problem? files without a new line should not cause
> > problems with a compiler, right? You don't have a justification for why
> > this change needs to be checked for anywhere.
> >
>
> I gave him such a good reason too... It breaks `cat file.c`. Plus, it
> looks weird in `git log -p` because it has a "No newline at the end of
> file" comment.
>
> regards,
> dan carpenter
>
> diff --git a/test.c b/test.c
> new file mode 100644
> index 000000000000..d808cac2d962
> --- /dev/null
> +++ b/test.c
> @@ -0,0 +1,12 @@
> +#include <stdio.h>
> +#include <stdbool.h>
> +#include "check_debug.h"
> +
> +void kfree(int *p);
> +
> +int *p;
> +int main(void)
> +{
> + kfree(p);
> + *p = 1;
> +}
> \ No newline at end of file
>
> commit f4a997924122d0094675c897a220371f0a129d90
>

There's an existing check for this.
I believe it at least used to work.
Fix that instead.

# check for adding lines without a newline.
if ($line =~ /^\+/ && defined $lines[$linenr] && $lines[$linenr] =~ /^\\ No newline at end of file/) {
if (WARN("MISSING_EOF_NEWLINE",
"adding a line without newline at end of file\n" . $herecurr) &&
$fix) {
fix_delete_line($fixlinenr+1, "No newline at end of file");
}
}


2024-04-17 06:36:32

by Prasad Pandit

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: error if file terminates without a new-line

On Tuesday, 16 April, 2024 at 03:25:18 pm IST, Joe Perches wrote: 
>There's an existing check for this. Fix that instead.
>
># check for adding lines without a newline.
>        if ($line =~ /^\+/ && defined $lines[$linenr]
>            && $lines[$linenr] =~ /^\\ No newline >at end of file/) {
>            if (WARN("MISSING_EOF_NEWLINE",
>                    "adding a line without newline at end of file\n" . $herecurr) &&
>                $fix) {
>                fix_delete_line($fixlinenr+1, "No newline at end of file");


Okay, will check; Thank you.
---
  -Prasad