summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-strings/llvm-strings.cpp
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2016-11-13 19:07:48 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2016-11-13 19:07:48 +0000
commit8b9be8fd41e707f974f13d4648878bc47aa0bd34 (patch)
treee915bdfef052aaba0be816e02d69260f28f3d19d /llvm/tools/llvm-strings/llvm-strings.cpp
parentdc45274d546b531ca64308cfe4304042e341c463 (diff)
downloadbcm5719-llvm-8b9be8fd41e707f974f13d4648878bc47aa0bd34.tar.gz
bcm5719-llvm-8b9be8fd41e707f974f13d4648878bc47aa0bd34.zip
llvm-strings: support printing the filename
This adds support for the `-f` or `--print-file-name` option for strings. llvm-svn: 286767
Diffstat (limited to 'llvm/tools/llvm-strings/llvm-strings.cpp')
-rw-r--r--llvm/tools/llvm-strings/llvm-strings.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/llvm/tools/llvm-strings/llvm-strings.cpp b/llvm/tools/llvm-strings/llvm-strings.cpp
index 6e5e2f298c3..cb0fb9651d9 100644
--- a/llvm/tools/llvm-strings/llvm-strings.cpp
+++ b/llvm/tools/llvm-strings/llvm-strings.cpp
@@ -29,7 +29,19 @@ static cl::list<std::string> InputFileNames(cl::Positional,
cl::desc("<input object files>"),
cl::ZeroOrMore);
-static void strings(raw_ostream &OS, StringRef Contents) {
+static cl::opt<bool>
+ PrintFileName("print-file-name",
+ cl::desc("Print the name of the file before each string"));
+static cl::alias PrintFileNameShort("f", cl::desc(""),
+ cl::aliasopt(PrintFileName));
+
+static void strings(raw_ostream &OS, StringRef FileName, StringRef Contents) {
+ auto print = [&OS, FileName](StringRef L) {
+ if (PrintFileName)
+ OS << FileName << ": ";
+ OS << L << '\n';
+ };
+
const char *P = nullptr, *E = nullptr, *S = nullptr;
for (P = Contents.begin(), E = Contents.end(); P < E; ++P) {
if (std::isgraph(*P) || std::isblank(*P)) {
@@ -37,12 +49,12 @@ static void strings(raw_ostream &OS, StringRef Contents) {
S = P;
} else if (S) {
if (P - S > 3)
- OS << StringRef(S, P - S) << '\n';
+ print(StringRef(S, P - S));
S = nullptr;
}
}
if (S && E - S > 3)
- OS << StringRef(S, E - S) << '\n';
+ print(StringRef(S, E - S));
}
int main(int argc, char **argv) {
@@ -60,7 +72,8 @@ int main(int argc, char **argv) {
if (std::error_code EC = Buffer.getError())
errs() << File << ": " << EC.message() << '\n';
else
- strings(llvm::outs(), Buffer.get()->getMemBufferRef().getBuffer());
+ strings(llvm::outs(), File == "-" ? "{standard input}" : File,
+ Buffer.get()->getMemBufferRef().getBuffer());
}
return EXIT_SUCCESS;
OpenPOWER on IntegriCloud