|
Packit |
01d647 |
#!/usr/bin/env bash
|
|
Packit |
01d647 |
# TIFF parser test driver
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if [ "${BASH_VERSION:0:1}" -lt "4" ]; then
|
|
Packit |
01d647 |
echo "$0 requires bash v4 or greater. Running $BASH_VERSION. $0 skipped."
|
|
Packit |
01d647 |
exit 0
|
|
Packit |
01d647 |
fi
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
exifprobe()
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
f=$1
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
# References
|
|
Packit |
01d647 |
# process pipe : http://stackoverflow.com/questions/7612320/bash-weird-variable-scope-when-populating-array-with-results
|
|
Packit |
01d647 |
# to uppercase : http://unix.stackexchange.com/questions/51983/bash-how-to-uppercase-the-command-line-argument
|
|
Packit |
01d647 |
# ---------------------------------------
|
|
Packit |
01d647 |
# Parse -pa output
|
|
Packit |
01d647 |
# Exif.Image.ImageDescription Ascii 18 Created with GIMP
|
|
Packit |
01d647 |
tags=()
|
|
Packit |
01d647 |
typs=()
|
|
Packit |
01d647 |
lens=()
|
|
Packit |
01d647 |
vals=()
|
|
Packit |
01d647 |
while read line; do
|
|
Packit Service |
fb147c |
tag=$(echo $line|cut -f 3 -d. | cut -f 1 -d' ' ) ; tags+=($tag)
|
|
Packit Service |
fb147c |
typ=$(echo $line|cut -f 2- -d' ' | sed -e 's/ +/ /g' -e 's/^ //' | cut -f 1 -d' ' ); typs+=($typ)
|
|
Packit Service |
fb147c |
len=$(echo $line|cut -f 2- -d' ' | sed -e 's/ +/ /g' -e 's/^ //' | cut -f 2 -d' ' ); lens+=($len)
|
|
Packit Service |
fb147c |
val=$(echo $line|cut -f 2- -d' ' | sed -e 's/ +/ /g' -e 's/^ //' | cut -f 3- -d' ' ); vals+=("$val")
|
|
Packit |
01d647 |
done < <( runTest exiv2 -pa $f 2>/dev/null ) # process pipe
|
|
Packit |
01d647 |
count=${#tags[@]}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
echo exiv2 -pa output
|
|
Packit |
01d647 |
index=0
|
|
Packit |
01d647 |
while [ $index -lt $count ]; do
|
|
Packit |
01d647 |
tag=${tags[$index]}
|
|
Packit |
01d647 |
typ=${typs[$index]}
|
|
Packit |
01d647 |
len=${lens[$index]}
|
|
Packit |
01d647 |
val=${vals[$index]}
|
|
Packit |
01d647 |
echo ${tag} $'\t' ${typ} $'\t' ${len} $'\t' '"'${val}'"'
|
|
Packit |
01d647 |
index=$((index+1))
|
|
Packit |
01d647 |
done
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
# Parse -pS output
|
|
Packit |
01d647 |
# address | tag | type | count | offset | value
|
|
Packit |
01d647 |
# 254 | 0x00fe NewSubfileType | LONG | 1 | 0 | 0
|
|
Packit |
01d647 |
TAGS=()
|
|
Packit |
01d647 |
TYPS=()
|
|
Packit |
01d647 |
LENS=()
|
|
Packit |
01d647 |
OFFS=()
|
|
Packit |
01d647 |
VALS=()
|
|
Packit |
01d647 |
k=0
|
|
Packit |
01d647 |
while read line; do
|
|
Packit |
01d647 |
k=$((k+1)) # skip the first couple of lines
|
|
Packit |
01d647 |
if [ $k -gt 2 ]; then
|
|
Packit Service |
fb147c |
TAG=$(echo $line| cut -f 2 -d'|' | cut -f 3 -d' ' ); TAGS+=($TAG);
|
|
Packit Service |
fb147c |
TYP=$(echo $line| cut -f 3 -d'|' | sed -e's/ +//g' ); TYPS+=($TYP)
|
|
Packit Service |
fb147c |
LEN=$(echo $line| cut -f 4 -d'|' | sed -e's/ +//g' ); LENS+=($LEN)
|
|
Packit Service |
fb147c |
OFF=$(echo $line| cut -f 5 -d'|' | sed -e's/ +//g' ); OFFS+=($OFF)
|
|
Packit Service |
fb147c |
VAL=$(echo $line| cut -f 6- -d'|' | sed -e's/^ //' ); VALS+=($"$VAL")
|
|
Packit |
01d647 |
fi
|
|
Packit Service |
fb147c |
done < <( runTest exiv2 -pS $f | grep -v '^END' 2>/dev/null )
|
|
Packit |
01d647 |
COUNT=${#TAGS[@]}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
echo ''
|
|
Packit |
01d647 |
echo exiv2 -pS output
|
|
Packit |
01d647 |
INDEX=0
|
|
Packit |
01d647 |
while [ $INDEX -lt $COUNT ]; do
|
|
Packit |
01d647 |
TAG=${TAGS[$INDEX]}
|
|
Packit |
01d647 |
TYP=${TYPS[$INDEX]}
|
|
Packit |
01d647 |
LEN=${LENS[$INDEX]}
|
|
Packit |
01d647 |
OFF=${OFFS[$INDEX]}
|
|
Packit |
01d647 |
VAL=${VALS[$INDEX]}
|
|
Packit |
01d647 |
echo ${TAG} $'\t' ${TYP} $'\t' ${LEN} $'\t' '"'${VAL}'"'
|
|
Packit |
01d647 |
INDEX=$((INDEX+1))
|
|
Packit |
01d647 |
done
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
# ---------------------------------------
|
|
Packit |
01d647 |
# Compare
|
|
Packit |
01d647 |
echo ''
|
|
Packit |
01d647 |
echo "Analysis"
|
|
Packit |
01d647 |
echo "count = " $count "COUNT = " $COUNT
|
|
Packit |
01d647 |
index=0
|
|
Packit |
01d647 |
while [ $index -lt $count ]; do
|
|
Packit |
01d647 |
TAG=${TAGS[$index]}
|
|
Packit |
01d647 |
tag=${tags[$index]}
|
|
Packit |
01d647 |
if [ "$TAG" != "$tag" ]; then echo TAG $TAG $tag mismatch ; fi
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
TYP=${TYPS[$index]^^} # to uppercase
|
|
Packit |
01d647 |
typ=${typs[$index]^^}
|
|
Packit |
01d647 |
if [ "$TYP" != "$typ" ]; then echo TYPE $TYP $typ mismatch ; fi
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
LEN=${LENS[$index]}
|
|
Packit |
01d647 |
len=${lens[$index]}
|
|
Packit |
01d647 |
if [ "$LEN" != "$len" ]; then echo Length $LEN $len mismatch ; fi
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
VAL=${VALS[$index]}
|
|
Packit |
01d647 |
val=${vals[$index]}
|
|
Packit |
01d647 |
if [[ "${typ}" == "ASCII" && "$VAL" != "$val" ]]; then echo Value $VAL $val mismatch ; fi
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
index=$((index+1))
|
|
Packit |
01d647 |
done
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
# ----------------------------------------------------------------------
|
|
Packit |
01d647 |
# Setup
|
|
Packit |
01d647 |
source ./functions.source
|
|
Packit |
01d647 |
|
|
Packit Service |
fb147c |
( testfile=mini9.tif
|
|
Packit |
01d647 |
copyTestFile ${testfile}
|
|
Packit |
01d647 |
exifprobe ${testfile}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
runTest tiff-test ${testfile}
|
|
Packit |
01d647 |
exifprobe ${testfile}
|
|
Packit |
01d647 |
|
|
Packit Service |
fb147c |
) > $results 2>&1
|
|
Packit |
01d647 |
|
|
Packit Service |
fb147c |
reportTest
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
# That's all Folks!
|
|
Packit |
01d647 |
##
|