diff --git a/helper.pl b/helper.pl index 0a6eb51..aba8d72 100755 --- a/helper.pl +++ b/helper.pl @@ -117,6 +117,40 @@ sub check_descriptors { return $fails; } +sub check_comments { + my $fails = 0; + my $first_comment = <<'MARKER'; +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +MARKER + my $last_comment = <<'MARKER'; +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ +MARKER + my @all_files; + find({ wanted=> sub { push @all_files, $_ if $_ =~ /\.(c|h)$/ }, no_chdir=>1 }, 'src'); + for my $f (@all_files) { + my $txt = read_file($f); + if ($txt !~ /^\Q$first_comment\E/s) { + warn "[first_comment] $f\n"; + $fails++; + } + if ($txt !~ /\Q$last_comment\E\s*$/s) { + warn "[last_comment] $f\n"; + $fails++; + } + } + warn( $fails > 0 ? "check-comments: FAIL $fails\n" : "check-comments: PASS\n" ); + return $fails; +} + sub prepare_variable { my ($varname, @list) = @_; my $output = "$varname="; @@ -299,18 +333,21 @@ sub process_makefiles { sub die_usage { die <<"MARKER"; - usage: $0 --check-source - $0 --check-defines - $0 --check-makefiles - $0 --check-all - $0 --update-makefiles - $0 --fixupind crypt.ind +usage: $0 -s OR $0 --check-source + $0 -c OR $0 --check-descriptors + $0 -d OR $0 --check-defines + $0 -o OR $0 --check-comments + $0 -m OR $0 --check-makefiles + $0 -a OR $0 --check-all + $0 -u OR $0 --update-makefiles + $0 --fixupind crypt.ind MARKER } GetOptions( "s|check-source" => \my $check_source, "c|check-descriptors" => \my $check_descriptors, "d|check-defines" => \my $check_defines, + "o|check-comments" => \my $check_comments, "m|check-makefiles" => \my $check_makefiles, "a|check-all" => \my $check_all, "u|update-makefiles" => \my $update_makefiles, @@ -329,6 +366,7 @@ my $failure; $failure ||= check_source() if $check_all || $check_source; $failure ||= check_defines() if $check_all || $check_defines; $failure ||= check_descriptors() if $check_all || $check_descriptors; +$failure ||= check_comments() if $check_comments; #XXX-FIXME not included in "--check-all" $failure ||= process_makefiles(0) if $check_all || $check_makefiles; $failure ||= process_makefiles(1) if $update_makefiles;