[TableGen] Use range-based for loops. Also fix one loop to not use some index name...
[oota-llvm.git] / utils / llvmgrep
index 5ed48f19d527711a0189a6e27f517de620c3caeb..dc15da4961efcad5cd8c668056af99f1c7099ccd 100755 (executable)
@@ -1,24 +1,39 @@
 #!/bin/sh
-# This is useful because it prints out all of the source files.  Useful for
-# greps.
-PATTERN="$*"
-TOPDIR=`pwd | sed -e 's#(.*/llvm).*#$1#'`
+##===- utils/llvmgrep - Counts Lines Of Code -----------------*- Script -*-===##
+# 
+#                     The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+# 
+##===----------------------------------------------------------------------===##
+#
+# This script searches your srcdir for an egrep style pattern. This can quickly
+# help you build a list of the places you need to modify when changing a header
+# or other "global" name. The only argument is the pattern you want to search
+# for. It should be quoted to escape shell interpretation of the pattern's
+# special characters.
+#
+# Note that the implementation is based on llvmdo. See that script for more
+# details.
+##===----------------------------------------------------------------------===##
+
+if test "$1" = "-topdir" ; then
+  TOPDIR="$2"
+  shift; shift;
+else
+  TOPDIR=`llvm-config --src-root`
+fi
+
 if test -d "$TOPDIR" ; then
   cd $TOPDIR
-  find docs include lib tools utils projects -type f \
-      \( -path '*/doxygen/*' -o -path '*/Burg/*' \) -prune -o \
-      -name '*.[cdhyl]*' \
-      \! -name '*~' \
-      \! -name '#*' \
-      \! -name '*.ll' \
-      \! -name '*.d' \
-      \! -name '*.dir' \
-      \! -name 'Sparc.burm.c' \
-      \! -name 'llvmAsmParser.cpp' \
-      \! -name 'llvmAsmParser.h' \
-      \! -name 'FileParser.cpp' \
-      \! -name 'FileParser.h' \
-      -exec egrep -H -n "$PATTERN" {} \;
+  case `uname -s` in
+    SunOS) grep_cmd="ggrep -H -n" ;;
+    Linux|Darwin) grep_cmd="egrep -H -n" ;;
+    *) grep_cmd="egrep -l -n" ;;
+  esac
+  ./utils/llvmdo -topdir "$TOPDIR" \
+    -dirs "include lib tools utils docs examples test unittests projects cmake" $grep_cmd "$*"
 else
-  echo "Can't find LLVM top directory in $TOPDIR"
+  echo "Can't find LLVM top directory"
 fi