Mercurial > ec-dotfiles
view bin/cek.pl @ 655:82f5e43259eb
Add helper for easier doas
author | nanaya <me@nanaya.pro> |
---|---|
date | Mon, 31 May 2021 14:56:58 +0900 |
parents | 70355e17653e |
children |
line wrap: on
line source
#!/usr/bin/env perl use strict; use warnings; use Compress::Zlib; use File::Basename; my @files = @ARGV or print("Usage: ",basename($0)," file1 file2 ... fileN\n") && exit(1); my $num_ok = 0; my $num_err = 0; my $num_nf = 0; my $num_na = @files; foreach (@files) { my $filename = $_; my ($name_crc,$real_crc); unless (-f $filename) { $num_nf++; $num_na--; print(qq(Could not find "$filename", skipping\n)); next(); } if (/(\[|\()([0-9A-F]{8})(\]|\))/i){ $name_crc = uc($2); } open(FILE,"<",$filename); binmode(FILE); my $file_crc = 0; my $file_part = ''; while (read(FILE, $file_part, 4096)) { $file_crc = crc32($file_part, $file_crc); } close(FILE); $real_crc = sprintf("%08X", $file_crc); if ($name_crc) { $num_na--; if($name_crc eq $real_crc) { $num_ok++; print("$filename: OK - $real_crc\n"); } else { $num_err++; print("$filename: NOT OK - $real_crc, should be $name_crc\n"); } } else { print("$filename: $real_crc\n"); } } printf("%s\n","-"x40); if ($num_ok > 0) { print("Files OK: $num_ok\n"); } if ($num_err > 0) { print("Files error: $num_err\n"); } if ($num_nf > 0) { print("Files not found: $num_nf\n"); } if ($num_na > 0) { print("Files without crc information: $num_na\n"); } exit(0);