| Index: tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
|
| diff --git a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
|
| index 98b4c9453d376aa24450476a1991068f6e7e1443..071ec2a0c37b974351db9fb85b37d99be001f900 100644
|
| --- a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
|
| +++ b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
|
| @@ -20,6 +20,13 @@
|
| #include <unordered_map>
|
| #include <unordered_set>
|
|
|
| +#if defined(_WIN32)
|
| +#include <windows.h>
|
| +#else
|
| +#include <sys/file.h>
|
| +#include <unistd.h>
|
| +#endif
|
| +
|
| #include "clang/AST/ASTContext.h"
|
| #include "clang/ASTMatchers/ASTMatchFinder.h"
|
| #include "clang/ASTMatchers/ASTMatchers.h"
|
| @@ -511,6 +518,17 @@ int main(int argc, const char* argv[]) {
|
| if (result != 0)
|
| return result;
|
|
|
| +#if defined(_WIN32)
|
| + HFILE lockfd = CreateFile("rewrite-sym.lock", GENERIC_READ, FILE_SHARE_READ,
|
| + NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
| + OVERLAPPED overlapped = {};
|
| + LockFileEx(lockfd, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &overlapped);
|
| +#else
|
| + int lockfd = open("rewrite-sym.lock", O_RDWR | O_CREAT, 0666);
|
| + while (flock(lockfd, LOCK_EX)) { // :D
|
| + }
|
| +#endif
|
| +
|
| std::ofstream replacement_db_file("rewrite-sym.txt",
|
| std::ios_base::out | std::ios_base::app);
|
| for (const auto& p : field_decl_rewriter.replacement_names())
|
| @@ -523,6 +541,14 @@ int main(int argc, const char* argv[]) {
|
| replacement_db_file << "fun:" << p.first << ":" << p.second << "\n";
|
| replacement_db_file.close();
|
|
|
| +#if defined(_WIN32)
|
| + UnlockFileEx(lockfd, 0, 1, 0, &overlapped);
|
| + CloseHandle(lockfd);
|
| +#else
|
| + flock(lockfd, LOCK_UN);
|
| + close(lockfd);
|
| +#endif
|
| +
|
| // Serialization format is documented in tools/clang/scripts/run_tool.py
|
| llvm::outs() << "==== BEGIN EDITS ====\n";
|
| for (const auto& r : replacements) {
|
|
|