From: Alberto Gonzalez Date: Mon, 16 Mar 2020 16:42:04 +0000 (+0000) Subject: Clean up `exec` code according to review. X-Git-Tag: working-ls180~741^2~1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cbc5664d370230803ac25705485ef1c6ed5f8416;p=yosys.git Clean up `exec` code according to review. Co-Authored-By: Miodrag Milanović --- diff --git a/passes/cmds/exec.cc b/passes/cmds/exec.cc index ec7b5b377..7b5428f16 100644 --- a/passes/cmds/exec.cc +++ b/passes/cmds/exec.cc @@ -20,7 +20,16 @@ #include "kernel/register.h" #include "kernel/log.h" #include -#include + +#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 +#endif USING_YOSYS_NAMESPACE PRIVATE_NAMESPACE_BEGIN @@ -63,7 +72,7 @@ struct ExecPass : public Pass { void execute(std::vector 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);