diff options
author | Alejandro Colomar <alx.manpages@gmail.com> | 2022-05-11 20:46:01 +0200 |
---|---|---|
committer | Alejandro Colomar <alx.manpages@gmail.com> | 2022-05-11 21:24:44 +0200 |
commit | 439553e50dbc17c9ef29a50aaeae93bb9f6cbf81 (patch) | |
tree | 83685a6788d963b107d652c846046f7570252e97 | |
parent | f417552f109cff273293be848b79813ee60110b4 (diff) |
grepc, grepc.1: Add optional FILE trailing arguments
Reported-by: наб <nabijaczleweli@nabijaczleweli.xyz>
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
-rwxr-xr-x | bin/grepc | 14 | ||||
-rw-r--r-- | share/man/man1/grepc.1 | 22 |
2 files changed, 30 insertions, 6 deletions
@@ -4,11 +4,12 @@ # Defaults: git='no'; ext='\.[ch]$'; +FILES='.'; grepc_usage() { - echo "Usage: $0 [OPTION ...] IDENTIFIER"; + echo "Usage: $0 [OPTION ...] IDENTIFIER [FILE ...]"; } @@ -34,11 +35,16 @@ grepc_parse_cmd() done; shift $(($OPTIND-1)); - if [ $# -ne 1 ]; then + if [ $# -lt 1 ]; then grepc_usage >&2; exit 1; fi; identifier=$1; + shift; + + if [ $# -gt 0 ]; then + FILES=$@; + fi; } @@ -47,9 +53,9 @@ grepc_find_files() files="$(mktemp -t 'grepc.XXXXXX')"; if [ "$git" = 'yes' ]; then - git ls-files .; + git ls-files $FILES; else - find . -type f; + find $FILES -type f; fi \ | grep -P "$ext" \ | xargs grep -lPI "$1\b" \ diff --git a/share/man/man1/grepc.1 b/share/man/man1/grepc.1 index 6caaeb5..b8403f9 100644 --- a/share/man/man1/grepc.1 +++ b/share/man/man1/grepc.1 @@ -5,15 +5,33 @@ grepc \- find C declarations and definitions in source code .B grepc .RI [ option " ...]" .I identifier +.RI [ file " ...]" .SH DESCRIPTION .MR grepc 1 -searches for all C declarations and definitions of +searches for C declarations and definitions of .I identifier -in all .c and .h files under the current working directory. +in each +.IR file . +.PP .I identifier is normally a C identifier, but it is actually a PCRE pattern, so it can be used to find complex patterns. +.PP +If +.I file +is a directory, +the search is recursive within that directory. +If +.I file +doesn't match a certain extension, it is skipped +(see +.B \-x +in OPTIONS). +If no +.I file +is given, +the working directory is searched. .SH OPTIONS .TP .B \-g |