mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	* Update tail to support -q/-v on NetBSD * Add several new functions (with one change needed to _hosts compdefs)
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef tail gtail
 | 
						|
 | 
						|
local curcontext=$curcontext state state_descr line opts args ret=1
 | 
						|
typeset -A opt_args
 | 
						|
 | 
						|
if _pick_variant gnu=GNU unix --version; then
 | 
						|
  args=(
 | 
						|
    '(-n --lines -c --bytes)'{-c+,--bytes=}'[print the last specified bytes; with +, start at the specified byte]:number of bytes:->number'
 | 
						|
    '(-n --lines -c --bytes)'{-n+,--lines=}'[print the last specified lines; with +, start at the specified line]:number of lines:->number'
 | 
						|
    '(-F -f)--follow=-[output appended data as the file grows]::how:(name descriptor)'
 | 
						|
    '(-F --follow)-f[same as --follow=descriptor]'
 | 
						|
    '(-f --follow --retry)-F[same as --follow=name --retry]'
 | 
						|
    '--max-unchanged-stats=[with --follow=name, check file rename after the specified number of iterations]:number of iterations'
 | 
						|
    '(-s --sleep-interval)'{-s+,--sleep-interval=}'[with -f, sleep the specified seconds between iterations]:seconds'
 | 
						|
    '--pid=[with -f, terminate after the specified process dies]:pid:_pids'
 | 
						|
    '(-q --quiet --silent -v --verbose)'{-q,--quiet,--silent}'[never output headers giving file names]'
 | 
						|
    '(-q --quiet --silent -v --verbose)'{-v,--verbose}'[always output headers giving file names]'
 | 
						|
    '--retry[keep trying to open a file even when it becomes inaccessible]'
 | 
						|
    '(- *)--help[display help and exit]'
 | 
						|
    '(- *)--version[output version information and exit]'
 | 
						|
  )
 | 
						|
else
 | 
						|
  opts=(-A '-*')
 | 
						|
  args=(
 | 
						|
    '(-b -n)-c+[start at the specified byte]:bytes relative to the end (with +, beginning) of file'
 | 
						|
    '(-b -c)-n+[start at the specified line]:lines relative to the end (with +, beginning) of file'
 | 
						|
    '(-F -r)-f[wait for new data to be appended to the file]'
 | 
						|
  )
 | 
						|
  case $OSTYPE in
 | 
						|
    (freebsd*|darwin*|dragonfly*|netbsd*|openbsd*|solaris*)
 | 
						|
      args+=(
 | 
						|
	'(-f -F)-r[display the file in reverse order]'
 | 
						|
      )
 | 
						|
    ;|
 | 
						|
    (freebsd*|darwin*|dragonfly*|netbsd*|openbsd*)
 | 
						|
      args+=(
 | 
						|
	'(-c -n)-b+[start at the specified block (512-byte)]:blocks relative to the end (with +, beginning) of file'
 | 
						|
      )
 | 
						|
      ;|
 | 
						|
    (freebsd*|darwin*|dragonfly*|netbsd*)
 | 
						|
      args+=(
 | 
						|
	'(-f -r)-F[implies -f, but also detect file rename]'
 | 
						|
	'(-v)-q[never output headers giving file names]'
 | 
						|
      )
 | 
						|
      ;|
 | 
						|
    (netbsd*)
 | 
						|
      args+=( '(-q)-v[always output headers giving file names]' )
 | 
						|
      ;;
 | 
						|
  esac
 | 
						|
fi
 | 
						|
 | 
						|
_arguments -C -s -S $opts : $args '*:file:_files' && return
 | 
						|
 | 
						|
case $state in
 | 
						|
  (number)
 | 
						|
    local mlt sign digit
 | 
						|
    mlt='multipliers:multiplier:((b\:512 K\:1024 KB\:1000 M\:1024\^2'
 | 
						|
    mlt+=' MB\:1000\^2 G\:1024\^3 GB\:1000\^3 T\:1024\^4 TB\:1000\^4))'
 | 
						|
    sign='signs:sign:((+\:"start at the specified byte/line"'
 | 
						|
    sign+=' -\:"output the last specified bytes/lines (default)"))'
 | 
						|
    digit='digits:digit:(0 1 2 3 4 5 6 7 8 9)'
 | 
						|
    if compset -P '(-|+|)[0-9]##'; then
 | 
						|
      _alternative $mlt $digit && ret=0
 | 
						|
    elif [[ -z $PREFIX ]]; then
 | 
						|
      _alternative $sign $digit && ret=0
 | 
						|
    elif compset -P '(+|-)'; then
 | 
						|
      _alternative $digit && ret=0
 | 
						|
    fi
 | 
						|
    ;;
 | 
						|
esac
 | 
						|
 | 
						|
return ret
 |