mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Clean up exec code according to review.
				
					
				
			Co-Authored-By: Miodrag Milanović <mmicko@gmail.com>
This commit is contained in:
		
							parent
							
								
									a09b260c01
								
							
						
					
					
						commit
						cbc5664d37
					
				
					 1 changed files with 18 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -20,7 +20,16 @@
 | 
			
		|||
#include "kernel/register.h"
 | 
			
		||||
#include "kernel/log.h"
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
#  define WIFEXITED(x) 1
 | 
			
		||||
#  define WIFSIGNALED(x) 0
 | 
			
		||||
#  define WIFSTOPPED(x) 0
 | 
			
		||||
#  define WEXITSTATUS(x) ((x) & 0xff)
 | 
			
		||||
#  define WTERMSIG(x) SIGTERM
 | 
			
		||||
#else
 | 
			
		||||
#  include <sys/wait.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
USING_YOSYS_NAMESPACE
 | 
			
		||||
PRIVATE_NAMESPACE_BEGIN
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +72,7 @@ struct ExecPass : public Pass {
 | 
			
		|||
	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
 | 
			
		||||
	{
 | 
			
		||||
		std::string cmd = "";
 | 
			
		||||
		char buf[4096] = {};
 | 
			
		||||
		char buf[1024] = {};
 | 
			
		||||
		std::string linebuf = "";
 | 
			
		||||
		bool flag_cmd = false;
 | 
			
		||||
		bool flag_quiet = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -139,7 +148,11 @@ struct ExecPass : public Pass {
 | 
			
		|||
 | 
			
		||||
		fflush(stdout);
 | 
			
		||||
		bool keep_reading = true;
 | 
			
		||||
		auto *f = popen(cmd.c_str(), "r");
 | 
			
		||||
		int status = 0;
 | 
			
		||||
		int retval = 0;
 | 
			
		||||
 | 
			
		||||
#ifndef EMSCRIPTEN
 | 
			
		||||
		FILE *f = popen(cmd.c_str(), "r");
 | 
			
		||||
		if (f == nullptr)
 | 
			
		||||
			log_cmd_error("errno %d after popen() returned NULL.\n", errno);
 | 
			
		||||
		while (keep_reading) {
 | 
			
		||||
| 
						 | 
				
			
			@ -162,8 +175,8 @@ struct ExecPass : public Pass {
 | 
			
		|||
				pos = linebuf.find('\n');
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		int status = pclose(f);
 | 
			
		||||
		int retval = -1;
 | 
			
		||||
		status = pclose(f);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		if(WIFEXITED(status)) {
 | 
			
		||||
		    retval = WEXITSTATUS(status);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue