File: _gprof

package info (click to toggle)
zsh-beta 4.3.6-dev-0%2B20080723-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 14,752 kB
  • ctags: 7,403
  • sloc: ansic: 90,889; sh: 5,568; makefile: 836; perl: 745; awk: 381; sed: 16
file content (58 lines) | stat: -rw-r--r-- 1,337 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#compdef gprof

local curcontext="$curcontext" state line ret=1
typeset -A opt_args

_arguments -C -s -{a,b,c,D,h,i,l,L,s,T,v,w,x,y,z} \
           -{A,C,e,E,f,F,J,n,N,O,p,P,q,Q,Z}:'function name:->funcs' \
	   '-I:directory:_dir_list' \
	   '-d-:debug level:' '-k:function names:->pair' \
	   '-m:minimum execution count:' \
	   ':executable:_files -g \*\(-\*\)' \
	   ':profile file:_files -g gmon.\*\(-.\)' \
	   -- -s '((#s)--[no-] --)' \
           '*=name*:function name:->funcs' \
	   '*=dirs*:directory:_dir_list' && ret=0

if [[ -n "$state" ]]; then
  local cmd pair expl

  _tags functions || return 1

  [[ "$state" = pair ]] && pair=yes

  if [[ $#line -gt 1 ]]; then
    cmd="$line[2]"
  else
    return 1
  fi

  if [[ -n "$cmd" ]]; then
    if [[ "$cmd" = /* ]]; then
      tmp="$cmd"
    else
      tmp="$PWD/$cmd"
    fi

    if [[ "$tmp" != "$_gprof_command" ]]; then
      _gprof_command="$tmp"
      _gprof_funcs=( "${(@)${(@M)${(@f)$(nm $cmd)}:#[^ ]# [tT] ([^_]|_[^_])*}##* }" )
    fi
  
    if [[ -n "$pair" ]]; then
      if compset -P '*/'; then
        expl='call arc to function'
      else
        expl='call arc from function'
      fi
    else
      expl=function
    fi
    _wanted functions expl "$expl" \
        compadd -M 'r:|_=* r:|=*' -a _gprof_funcs && ret=0
  else
    return 1
  fi
fi

return ret