KernelNewbies
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Kernel Hacking

  • Frontpage

  • Kernel Hacking

  • Kernel Documentation

  • Kernel Glossary

  • FAQ

  • Found a bug?

  • Kernel Changelog

  • Upstream Merge Guide

Projects

  • KernelJanitors

  • KernelMentors

  • KernelProjects

Community

  • Why a community?

  • Regional Kernelnewbies

  • Personal Pages

  • Upcoming Events

References

  • Mailing Lists

  • Related Sites

  • Programming Links

Wiki

  • Recent Changes

  • Site Editors

  • Side Bar

  • Tips for Editors

  • Hosted by WikiWall

Navigation

  • RecentChanges
  • FindPage
  • HelpContents

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Revision 6 as of 2010-01-20 01:23:42
KernelNewbies:
  • roelkluin
  • cvars_howto

You have to source [wiki:roelkluin/cvars cvars] to use these tools and run these commands in your git Linux kernel directory.

gg

gg does something like

git grep -n -E [other_options] "$(bli2 "$1")"

bli2

bli2() parses a string and transforms it into a more complex extended regexp, which it simply echoes.

To understand how it parses things try these:

bli2 "@V"
bli2 "@d"
bli2 " "
bli2 "
 "

Note that @V will catch the identifier of a simple local variable, @d will catch a number (even if it's a hex or 1ull), spaces are squeezed and parsed to match optional spaces.

bli2 pattern

description of what is echoed

echoed string (literally)

number of back-references

any space

optional space

[[:space:]]*

-

\!

exclamation mark (because bash otherwise bangs)

!

-

@S

obligatory space

[[:space:]]+

-

@V

identifier

[[:alpha:]_]+[[:alnum:]_]*

-

@K

identifier in only uppercases

[[:upper:]_]+[[:upper:][:digit:]_]*

-

@Q

a non-alnumeric

[^[:alnum:]_]

-

@Q2

a non-alnumeric or extension to the left of a variable

[^[:alnum:]_>.]

-

@w

(pointer) member, array

see `bli2 "@w"'

1

@d

any number

bli2 "@d"

1

@n

any number of lines, subsequent matches on the beginning of the next line

([^\n]*\n)*

1

\(...\)

up to 2 nested parentheses

bli2 "\(...\)"

2

\{...\}

up to 2 nested curly brackets

bli2 "\{...\}"

2

\[...\]

up to 2 nested square brackets

bli2 "\[...\]"

2

\(-..\)

characters optionally followed by up to 2 nested parentheses

bli2 "\(-..\)"

3

\{-..\}

characters optionally followed by up to 2 nested curly brackets

bli2 "\{-..\}"

3

\{.8.\}

up to 8 nested curly brackets

bli2 "\(.8.\)"

8

@...&|@

prior conditions

bli2 "@...&|@"

4

@&|...@

later conditions

bli2 "@&|...@"

4

@&|...&|@

conditions inbetween

bli2 "@&|...&|@"

4

@branch

a branch

bli2 "@branch"

3

@in_branch

in a branch

bli2 "@in_branch"

4

gres

I wrote this to do a multiline (git-)grep, See [wiki:roelkluin/gres_examples examples]. gres does something in the order of:

git grep -E -n -other_opts "$(bli2 "$1")" -- '*.c' '*.h' | sed -n -r "$(ecsed2 "${@:2})"

with `gres -B1 -A40 "pattern1" "pattern2" "..."' the `-B1' and `-A40' are passed to git-grep, bli2() parses the first pattern to a extended regexp query. Subsequent patterns are passed to ecsed2() which are used to create a sed script. With this script, sed parses the `git grep' output and prints only the output of which the last - but not prior - patterns matched.

The sed script transforms the first of the `path/to/filename.c-301-' into a vi command, the remainder are removed. Until an end-of-function- or end-of-match-pattern occurs, lines are extended. Any comments are removed. For each match that `git grep' piped to sed, (parsed) matches are displayed if no exclusion pattern matched and the last pattern matched.

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01