summaryrefslogtreecommitdiff
path: root/external
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
commit1c98edb23b320d1723954fd63ca4be2d8616a3fb (patch)
treecf27e629c8f609b4f7c6ef8d8ce316e0528ecfe1 /external
parent2283341da95c4b245b0c3862e137bd6190d63d77 (diff)
downloadpygments-git-1c98edb23b320d1723954fd63ca4be2d8616a3fb.tar.gz
Fall back to od -x, and use hexdump lexer
Diffstat (limited to 'external')
-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