summaryrefslogtreecommitdiff
path: root/external/autopygmentize
diff options
context:
space:
mode:
Diffstat (limited to 'external/autopygmentize')
-rwxr-xr-xexternal/autopygmentize16
1 files changed, 12 insertions, 4 deletions
diff --git a/external/autopygmentize b/external/autopygmentize
index 9b030fac..26fe365c 100755
--- a/external/autopygmentize
+++ b/external/autopygmentize
@@ -74,14 +74,22 @@ case $(file $file_common_opts --mime-type "$file") in
application/x-xz) concat=xzcat;;
esac
-# Find a reader: either a suitable lexer, or hd for binary files
-reader=""
+# Find a suitable lexer, preceded by a hex dump for binary files
+prereader=""
encoding=$(file --mime-encoding --uncompress $file_common_opts "$file")
if [[ $encoding == "binary" ]]; then
- reader=hd
-elif [[ -n "$lexer" ]]; then
+ prereader="od -x" # POSIX fallback
+ if [[ -n $(which hd) ]]; then
+ prereader="hd" # preferred
+ fi
+ lexer=hexdump
+fi
+if [[ -n "$lexer" ]]; then
reader="pygmentize -O inencoding=$encoding $PYGMENTIZE_OPTS $options -l $lexer"
fi
+if [[ -n "$prereader" ]]; then
+ reader="$prereader | $reader"
+fi
# If we found a reader, run it
if [[ -n "$reader" ]]; then