about summary refs log tree commit diff
path: root/Completion/Unix/Command/_cmp
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_cmp')
-rw-r--r--Completion/Unix/Command/_cmp14
1 files changed, 10 insertions, 4 deletions
diff --git a/Completion/Unix/Command/_cmp b/Completion/Unix/Command/_cmp
index 6d7bfb1b7..20d309e32 100644
--- a/Completion/Unix/Command/_cmp
+++ b/Completion/Unix/Command/_cmp
@@ -1,23 +1,29 @@
 #compdef cmp gcmp
 
-local args variant
+local args variant units
 _pick_variant -r variant gnu=GNU $OSTYPE --version
 
 case $variant in
-  gnu)
+  freebsd*|gnu)
     args=(
       '(-b --print-bytes)'{-b,--print-bytes}'[print differing bytes]'
       '(-i --ignore-initial)'{-i+,--ignore-initial}'[skip specified number of bytes]:bytes'
       '(-l --verbose -s --silent --quiet)'{-l,--verbose}'[output all differences]'
       '(-n --bytes)'{-n+,--bytes=}'[specify maximum bytes to compare]:bytes'
       '(-s --quiet --silent -l --verbose)'{-s,--quiet,--silent}'[return status alone signifies differences]'
+    )
+    units=":_numbers -u bytes offset K M G T P E Z Y"
+  ;|
+  gnu)
+    args=(
       '(- *)'{-v,--version}'[display version information]'
       '(- *)--help[display help information]'
     )
+    units+=" kB MB GB TB PB EB ZB YB"
   ;;
   netbsd*) args+=( "-c[don't use mmap]" ) ;|
   freebsd*|openbsd*)
-    args=(
+    args+=(
       "-h[don't follow symbolic links]"
       '-x[hexadecimal output and zero based offset index]'
       '-z[compare file sizes first]'
@@ -31,4 +37,4 @@ case $variant in
   ;;
 esac
 
-_arguments -s $args '1:file 1:_files' '2:file 2:_files' '::byte offset' '::byte offset'
+_arguments -s $args '1:file 1:_files' '2:file 2:_files' "::byte offset$units" "::byte offset$units"