summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrrt <rrt@sc3d.org>2016-06-20 23:10:46 +0100
committerrrt <rrt@sc3d.org>2016-06-20 23:10:46 +0100
commitcbdb7c8bc35ed8d2d6599722246c6929217ed26e (patch)
treede8e44548cf23716c72adadc661227ded63d2b6d
parent4623290607e796456d3c56a6bc7e87430ba9ae62 (diff)
downloadpygments-cbdb7c8bc35ed8d2d6599722246c6929217ed26e.tar.gz
Fall back to od -x, and use hexdump lexer
-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