diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-02-06 01:28:33 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-02-06 01:28:33 +0100 |
commit | 19029f377b0866c1ac1a3c2879c445d4ac3cdd82 (patch) | |
tree | 013599d4adccf5a8e809f804750c014e1e29da39 /kernel | |
parent | 849fd62cfed9b6623865c7af76dd1bfbc6adf457 (diff) | |
download | yosys-19029f377b0866c1ac1a3c2879c445d4ac3cdd82.tar.gz yosys-19029f377b0866c1ac1a3c2879c445d4ac3cdd82.tar.bz2 yosys-19029f377b0866c1ac1a3c2879c445d4ac3cdd82.zip |
Added support for backslash continuation in script files
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/driver.cc | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/kernel/driver.cc b/kernel/driver.cc index 6d139f197..d31d36b2d 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -39,8 +39,11 @@ bool fgetline(FILE *f, std::string &buffer) if (fgets(block, 4096, f) == NULL) return false; buffer += block; - if (buffer.size() > 0 && (buffer[buffer.size()-1] == '\n' || buffer[buffer.size()-1] == '\r')) + if (buffer.size() > 0 && (buffer[buffer.size()-1] == '\n' || buffer[buffer.size()-1] == '\r')) { + while (buffer.size() > 0 && (buffer[buffer.size()-1] == '\n' || buffer[buffer.size()-1] == '\r')) + buffer.resize(buffer.size()-1); return true; + } } } @@ -67,8 +70,16 @@ static void run_frontend(std::string filename, std::string command, RTLIL::Desig if (f == NULL) log_error("Can't open script file `%s' for reading: %s\n", filename.c_str(), strerror(errno)); std::string command; - while (fgetline(f, command)) + while (fgetline(f, command)) { + while (!command.empty() && command[command.size()-1] == '\\') { + std::string next_line; + if (!fgetline(f, next_line)) + break; + command.resize(command.size()-1); + command += next_line; + } Pass::call(design, command); + } if (!command.empty()) Pass::call(design, command); if (filename != "-") |