Fix case when file does not exist

This commit is contained in:
Miodrag Milanovic 2019-07-29 12:29:13 +02:00
parent 6538671c84
commit 3e4307c104
1 changed files with 21 additions and 19 deletions

View File

@ -456,11 +456,12 @@ void Frontend::extra_args(std::istream *&f, std::string &filename, std::vector<s
delete ff;
else
f = ff;
if (f != NULL) {
// Check for gzip magic
unsigned char magic[3];
int n = readsome(*ff, reinterpret_cast<char*>(magic), 3);
if (n == 3 && magic[0] == 0x1f && magic[1] == 0x8b) {
#ifdef YOSYS_ENABLE_ZLIB
#ifdef YOSYS_ENABLE_ZLIB
log("Found gzip magic in file `%s', decompressing using zlib.\n", filename.c_str());
if (magic[2] != 8)
log_cmd_error("gzip file `%s' uses unsupported compression type %02x\n",
@ -469,14 +470,15 @@ void Frontend::extra_args(std::istream *&f, std::string &filename, std::vector<s
std::stringstream *df = new std::stringstream();
decompress_gzip(filename, *df);
f = df;
#else
#else
log_cmd_error("File `%s' is a gzip file, but Yosys is compiled without zlib.\n", filename.c_str());
#endif
#endif
} else {
ff->clear();
ff->seekg(0, std::ios::beg);
}
}
}
if (f == NULL)
log_cmd_error("Can't open input file `%s' for reading: %s\n", filename.c_str(), strerror(errno));