Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c707a81d authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds
Browse files

checkpatch: make the CamelCase cache work for non-git trees too



Might as well check include timestamps and cache the include file
CamelCase uses for the non-git case too.

The camelcase cache file is now named:

  for git:      .checkpatch-camelcase.git.<commit_id>
  for non-git:  .checkpatch-camelcase.date.<YYYYMMDDhhmm>

All .checkpatch-camelcase* files are deleted if not current.

Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent dcb6b452
Loading
Loading
Loading
Loading
+35 −19
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
# Licensed under the terms of the GNU GPL License version 2

use strict;
use POSIX;

my $P = $0;
$P =~ s@.*/@@g;
@@ -399,15 +400,30 @@ sub seed_camelcase_includes {
	return if ($camelcase_seeded);

	my $files;
	my $camelcase_git_file = "";
	my $camelcase_cache = "";
	my @include_files = ();

	$camelcase_seeded = 1;

	if (-d ".git") {
		my $git_last_include_commit = `git log --no-merges --pretty=format:"%h%n" -1 -- include`;
		chomp $git_last_include_commit;
		$camelcase_git_file = ".checkpatch-camelcase.$git_last_include_commit";
		if (-f $camelcase_git_file) {
			open(my $camelcase_file, '<', "$camelcase_git_file")
			    or warn "$P: Can't read '$camelcase_git_file' $!\n";
		$camelcase_cache = ".checkpatch-camelcase.git.$git_last_include_commit";
	} else {
		my $last_mod_date = 0;
		$files = `find $root/include -name "*.h"`;
		@include_files = split('\n', $files);
		foreach my $file (@include_files) {
			my $date = POSIX::strftime("%Y%m%d%H%M",
						   localtime((stat $file)[9]));
			$last_mod_date = $date if ($last_mod_date < $date);
		}
		$camelcase_cache = ".checkpatch-camelcase.date.$last_mod_date";
	}

	if ($camelcase_cache ne "" && -f $camelcase_cache) {
		open(my $camelcase_file, '<', "$camelcase_cache")
		    or warn "$P: Can't read '$camelcase_cache' $!\n";
		while (<$camelcase_file>) {
			chomp;
			$camelcase{$_} = 1;
@@ -416,20 +432,20 @@ sub seed_camelcase_includes {

		return;
	}
		$files = `git ls-files include`;
	} else {
		$files = `find $root/include -name "*.h"`;

	if (-d ".git") {
		$files = `git ls-files "include/*.h"`;
		@include_files = split('\n', $files);
	}
	my @include_files = split('\n', $files);

	foreach my $file (@include_files) {
		seed_camelcase_file($file);
	}
	$camelcase_seeded = 1;

	if ($camelcase_git_file ne "") {
	if ($camelcase_cache ne "") {
		unlink glob ".checkpatch-camelcase.*";
		open(my $camelcase_file, '>', "$camelcase_git_file")
		    or warn "$P: Can't write '$camelcase_git_file' $!\n";
		open(my $camelcase_file, '>', "$camelcase_cache")
		    or warn "$P: Can't write '$camelcase_cache' $!\n";
		foreach (sort { lc($a) cmp lc($b) } keys(%camelcase)) {
			print $camelcase_file ("$_\n");
		}