Index: tools/gn/path_output.cc |
diff --git a/tools/gn/path_output.cc b/tools/gn/path_output.cc |
index 7e739b6edc433d03268d6f1fb8accab3d891ac3a..dc142b7ed918aa805e4fc98d0f48e4cc6516006b 100644 |
--- a/tools/gn/path_output.cc |
+++ b/tools/gn/path_output.cc |
@@ -75,6 +75,32 @@ void PathOutput::WriteFile(std::ostream& out, const OutputFile& file) const { |
EscapeStringToStream(out, file.value(), options_); |
} |
+void PathOutput::WriteDir(std::ostream& out, |
+ const OutputFile& file, |
+ DirSlashEnding slash_ending) const { |
+ DCHECK(file.value().empty() || |
+ file.value()[file.value().size() - 1] == '/'); |
+ |
+ switch (slash_ending) { |
+ case DIR_INCLUDE_LAST_SLASH: |
+ EscapeStringToStream(out, file.value(), options_); |
+ break; |
+ case DIR_NO_LAST_SLASH: |
+ if (!file.value().empty() && |
+ file.value()[file.value().size() - 1] == '/') { |
+ // Trim trailing slash. |
+ EscapeStringToStream( |
+ out, |
+ base::StringPiece(file.value().data(), file.value().size() - 1), |
+ options_); |
+ } else { |
+ // Doesn't end with a slash, write the whole thing. |
+ EscapeStringToStream(out, file.value(), options_); |
+ } |
+ break; |
+ } |
+} |
+ |
void PathOutput::WriteFile(std::ostream& out, |
const base::FilePath& file) const { |
// Assume native file paths are always absolute. |