#!/bin/bash #==VAR========================================================================== OLD_FILE=$2 NEW_FILE=$5 COMPARE_TMP_FILE=/tmp/gd_${OLD_FILE##*/}_${NEW_FILE##*/}_ XCF_2_PNG_TMP_OLD_FILE=/tmp/gd_${OLD_FILE##*/}.png XCF_2_PNG_TMP_NEW_FILE=/tmp/gd_${NEW_FILE##*/}.png HEXDUMP_TMP_OLD_FILE=/tmp/gd_${OLD_FILE##*/}.hex HEXDUMP_TMP_NEW_FILE=/tmp/gd_${NEW_FILE##*/}.hex #==FUNCTIONS==================================================================== function compareimage { compare "$1" "$2" "$COMPARE_TMP_FILE" eog "$COMPARE_TMP_FILE" rm "$COMPARE_TMP_FILE" } function comparexcf { xcf2png "$1" -o "$XCF_2_PNG_TMP_OLD_FILE" xcf2png "$2" -o "$XCF_2_PNG_TMP_NEW_FILE" compareimage "$XCF_2_PNG_TMP_OLD_FILE" "$XCF_2_PNG_TMP_NEW_FILE" rm "$XCF_2_PNG_TMP_OLD_FILE" "$XCF_2_PNG_TMP_NEW_FILE" } function binarydiff { hexdump "$1" > "$HEXDUMP_TMP_OLD_FILE" hexdump "$2" > "$HEXDUMP_TMP_NEW_FILE" meld "$HEXDUMP_TMP_OLD_FILE" "$HEXDUMP_TMP_NEW_FILE" rm "$HEXDUMP_TMP_OLD_FILE" "$HEXDUMP_TMP_NEW_FILE" } #==MAIN========================================================================= #Make sure the tempfile does not exist for i in "$COMPARE_TMP_FILE" "$XCF_2_PNG_TMP_OLD_FILE" \ "$XCF_2_PNG_TMP_NEW_FILE" "$HEXDUMP_TMP_OLD_FILE" \ "$HEXDUMP_TMP_NEW_FILE"; do if [ -f "$i" ]; then echo "FATAL ERROR: tmp file $i already exists" exit 1 fi done #Use meld for any kind of ASCII files, compare for images and hexdump with meld #for unsupported filetypes if [ -n "$(file -i "$OLD_FILE" | grep text)" -o \ -n "$(file -i "$NEW_FILE" | grep text)" ] ; then echo "ASCII detected calling meld..." meld $OLD_FILE $NEW_FILE else case "${NEW_FILE##*.}" in gif | png | jpg | jpeg | tiff) echo "Image detected calling compare..." compareimage "$OLD_FILE" "$NEW_FILE" ;; xcf) echo "Gimp xcf detected calling compare..." comparexcf "$OLD_FILE" "$NEW_FILE" ;; *) echo "Filetype not supported fall back to meld with hexdumps..." binarydiff "$OLD_FILE" "$NEW_FILE" ;; esac fi exit 0