diff options
author | Yoichi Hirai <i@yoichihirai.com> | 2017-03-13 23:37:55 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-13 23:37:55 +0800 |
commit | 9aab3b8639afa6e30e866e052a412b6f39c6ef6c (patch) | |
tree | 511895fefe1b4cf33df9359663b6537901c56ddf /solc/CommandLineInterface.cpp | |
parent | ef8b56a05823e39ffc2577af653200f22d6b15a1 (diff) | |
parent | 31a5e5bfef086c1cac477661dd627fa774bc44f5 (diff) | |
download | dexon-solidity-9aab3b8639afa6e30e866e052a412b6f39c6ef6c.tar.gz dexon-solidity-9aab3b8639afa6e30e866e052a412b6f39c6ef6c.tar.zst dexon-solidity-9aab3b8639afa6e30e866e052a412b6f39c6ef6c.zip |
Merge pull request #1768 from ethereum/abortiffileexists
Do not overwrite files unless forced.
Diffstat (limited to 'solc/CommandLineInterface.cpp')
-rw-r--r-- | solc/CommandLineInterface.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index 6759727f..0c777c77 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -93,6 +93,7 @@ static string const g_strOpcodes = "opcodes"; static string const g_strOptimize = "optimize"; static string const g_strOptimizeRuns = "optimize-runs"; static string const g_strOutputDir = "output-dir"; +static string const g_strOverwrite = "overwrite"; static string const g_strSignatureHashes = "hashes"; static string const g_strSources = "sources"; static string const g_strSourceList = "sourceList"; @@ -465,6 +466,12 @@ void CommandLineInterface::createFile(string const& _fileName, string const& _da if (p.filename() != "." && p.filename() != "..") fs::create_directories(p); string pathName = (p / _fileName).string(); + if (fs::exists(pathName) && !m_args.count(g_strOverwrite)) + { + cerr << "Refusing to overwrite existing file \"" << pathName << "\" (use --overwrite to force)." << endl; + m_error = true; + return; + } ofstream outFile(pathName); outFile << _data; if (!outFile) @@ -510,6 +517,7 @@ Allowed options)", po::value<string>()->value_name("path"), "If given, creates one file per component and contract/file at the specified directory." ) + (g_strOverwrite.c_str(), "Overwrite existing files (used together with -o).") ( g_argCombinedJson.c_str(), po::value<string>()->value_name(boost::join(g_combinedJsonArgs, ",")), @@ -858,7 +866,7 @@ void CommandLineInterface::handleAst(string const& _argStr) } } -void CommandLineInterface::actOnInput() +bool CommandLineInterface::actOnInput() { if (m_onlyAssemble) outputAssembly(); @@ -866,6 +874,7 @@ void CommandLineInterface::actOnInput() writeLinkedFiles(); else outputCompilationResults(); + return !m_error; } bool CommandLineInterface::link() |