mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 13:29:12 +00:00 
			
		
		
		
	escape spaces with backslash when writing dep file
filenames are sparated by spaces in the dep file. if a filename in the dep file contains spaces they must be escaped, otherwise the tool that reads the dep file will see multiple wrong filenames.
This commit is contained in:
		
							parent
							
								
									ea0e0722bb
								
							
						
					
					
						commit
						e531fb203a
					
				
					 3 changed files with 17 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -529,13 +529,13 @@ int main(int argc, char **argv)
 | 
			
		|||
			log_error("Can't open dependencies file for writing: %s\n", strerror(errno));
 | 
			
		||||
		bool first = true;
 | 
			
		||||
		for (auto fn : yosys_output_files) {
 | 
			
		||||
			fprintf(f, "%s%s", first ? "" : " ", fn.c_str());
 | 
			
		||||
			fprintf(f, "%s%s", first ? "" : " ", escape_filename_spaces (fn).c_str());
 | 
			
		||||
			first = false;
 | 
			
		||||
		}
 | 
			
		||||
		fprintf(f, ":");
 | 
			
		||||
		for (auto fn : yosys_input_files) {
 | 
			
		||||
			if (yosys_output_files.count(fn) == 0)
 | 
			
		||||
				fprintf(f, " %s", fn.c_str());
 | 
			
		||||
				fprintf(f, " %s", escape_filename_spaces (fn).c_str());
 | 
			
		||||
		}
 | 
			
		||||
		fprintf(f, "\n");
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -482,6 +482,20 @@ void remove_directory(std::string dirname)
 | 
			
		|||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::string escape_filename_spaces (const std::string& filename)
 | 
			
		||||
{
 | 
			
		||||
  std::string out;
 | 
			
		||||
  out.reserve (filename.size ());
 | 
			
		||||
  for (auto c : filename)
 | 
			
		||||
  {
 | 
			
		||||
    if (c == ' ')
 | 
			
		||||
      out += "\\ ";
 | 
			
		||||
    else
 | 
			
		||||
      out.push_back (c);
 | 
			
		||||
  }
 | 
			
		||||
  return out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int GetSize(RTLIL::Wire *wire)
 | 
			
		||||
{
 | 
			
		||||
	return wire->width;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -257,6 +257,7 @@ std::string make_temp_dir(std::string template_str = "/tmp/yosys_XXXXXX");
 | 
			
		|||
bool check_file_exists(std::string filename, bool is_exec = false);
 | 
			
		||||
bool is_absolute_path(std::string filename);
 | 
			
		||||
void remove_directory(std::string dirname);
 | 
			
		||||
std::string escape_filename_spaces (const std::string& filename);
 | 
			
		||||
 | 
			
		||||
template<typename T> int GetSize(const T &obj) { return obj.size(); }
 | 
			
		||||
int GetSize(RTLIL::Wire *wire);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue