Proposal: Unify printing the function name in panic messages()

Christoph Mallon christoph.mallon at gmx.de
Mon Feb 11 10:01:37 UTC 2013


On 09.02.2013 16:27, Andriy Gapon wrote:
> on 09/02/2013 12:46 Chris Rees said the following:
>> OK, which tool can one find a panic message split across lines in source code? 
>> I would find this very useful.
> 
> http://grok.x12.su/source/search?q=%22offset+below+first+LBA%22&project=freebsd
> 
> Generally, I like opengrok very much.  Pity that we don't have an official
> server.  fxr.watson.org is great, but opengrok is superior to glimpse.
> E.g. try the same kind of search here: http://fxr.watson.org/fxr/search
> 
> BTW, a local version (slower because no index is used):
> $ pcregrep -r -M 'offset\W*below\W*first\W*LBA' sys/
> sys/geom/part/g_part.c:                 DPRINTF("partition %d has start offset
> below first "
>                             "LBA: %jd < %jd\n", e1->gpe_index,
> pcregrep comes from devel/pcre.
> 
> P.S. my first instinct was to try git grep first, git grep seems to support perl
> regular expressions in general, but it looks like the port doesn't include the
> necessary support:
> fatal: cannot use Perl-compatible regexes when not compiled with USE_LIBPCRE
> 
> P.P.S. I must say that I use textproc/glimpse (with index weekly updated via
> cron) and in 99% of cases glimpse 'something' immediately returns useful
> results.  It's quite rare that I have to use other tools for searching the code.
> I use vim + ctags too :-)

Your suggestion is to replace a simple, automatic mechanism by several different tools, which require quite some manual fiddling.
When showing the function name, your simple suggestion for using git grep works fine: [0]
	$EDITOR `git grep -Il "^$NAME("`

	Christoph


[0] I use the following script for the general case "edit all files containing a pattern".
I named it git-ed and git-ew, placed it in $PATH, so it can be used conveniently as git ed $PATTERN and git ew $PATTERN.
It edits all files containing the given pattern, searches for the pattern und binds \ to find the pattern.

#! /bin/sh
set -eu

PATTERN="$1"
shift

NAME="${0##*/}"
case "$NAME" in
  git-ed) ;;
  git-ew) PATTERN="[[:<:]]$PATTERN[[:>:]]";;

  *) echo "$NAME: who am I?" >&2; exit 1;;
esac

VIPATTERN=$(echo "$PATTERN" | sed -e 's#\[\[:<:\]\]#\\<#g' -e 's#\[\[:>:\]\]#\\>#g')
"$EDITOR" -c "map \\ /$VIPATTERN^M" -c "/$VIPATTERN" $(git grep -Il -e "$PATTERN" "$@")


More information about the freebsd-arch mailing list