fixed a lot of stuff
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
function verify_file
|
||||
if test (count $argv) -ne 2
|
||||
echo "Usage: verify_file <file> <expected_hash>"
|
||||
return 1
|
||||
end
|
||||
|
||||
set file $argv[1]
|
||||
if not test -f "$file"
|
||||
echo "verify_file: '$file' is not a valid file"
|
||||
return 1
|
||||
end
|
||||
|
||||
set expected $argv[2]
|
||||
set len (string length "$expected")
|
||||
|
||||
switch $len
|
||||
case 32
|
||||
set cmd md5sum
|
||||
case 40
|
||||
set cmd sha1sum
|
||||
case 56
|
||||
set cmd sha224sum
|
||||
case 64
|
||||
set cmd sha256sum
|
||||
case 96
|
||||
set cmd sha384sum
|
||||
case 128
|
||||
if command -q sha512sum
|
||||
set cmd sha512sum
|
||||
else if command -q b2sum
|
||||
set cmd b2sum
|
||||
else
|
||||
echo "verify_file: no tool available for 128-char hash (sha512sum or b2sum required)"
|
||||
return 1
|
||||
end
|
||||
case '*'
|
||||
echo "verify_file: unknown hash length ($len chars). Supported: md5(32), sha1(40), sha224(56), sha256(64), sha384(96), sha512/b2(128)"
|
||||
return 1
|
||||
end
|
||||
|
||||
if not command -q $cmd
|
||||
echo "verify_file: '$cmd' is not installed."
|
||||
return 1
|
||||
end
|
||||
|
||||
set actual ($cmd "$file" | string split -f1 " ")
|
||||
|
||||
if test "$actual" = "$expected"
|
||||
echo "Match"
|
||||
return 0
|
||||
else
|
||||
echo "Mismatch"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user