Commit f7c5cc2e authored by David Renshaw's avatar David Renshaw Committed by Kenton Varda

Hardcode /bin/cat output option for `capnp compile`.

parent ef67b411
...@@ -243,10 +243,12 @@ public: ...@@ -243,10 +243,12 @@ public:
builder.addOptionWithArg({'o', "output"}, KJ_BIND_METHOD(*this, addOutput), "<lang>[:<dir>]", builder.addOptionWithArg({'o', "output"}, KJ_BIND_METHOD(*this, addOutput), "<lang>[:<dir>]",
"Generate source code for language <lang> in directory <dir> " "Generate source code for language <lang> in directory <dir> "
"(default: current directory). <lang> actually specifies a plugin " "(default: current directory). <lang> actually specifies a plugin "
"to use. If <lang> is a simple word, the compiler for a plugin " "to use. If <lang> is a simple word, the compiler searches for a plugin "
"called 'capnpc-<lang>' in $PATH. If <lang> is a file path " "called 'capnpc-<lang>' in $PATH. If <lang> is a file path "
"containing slashes, it is interpreted as the exact plugin " "containing slashes, it is interpreted as the exact plugin "
"executable file name, and $PATH is not searched.") "executable file name, and $PATH is not searched. The special case of "
"'/bin/cat' is hardcoded to dump the request to standard output, as "
"this is a common operation and /bin/cat is not available on all systems.")
.addOptionWithArg({"src-prefix"}, KJ_BIND_METHOD(*this, addSourcePrefix), "<prefix>", .addOptionWithArg({"src-prefix"}, KJ_BIND_METHOD(*this, addSourcePrefix), "<prefix>",
"If a file specified for compilation starts with <prefix>, remove " "If a file specified for compilation starts with <prefix>, remove "
"the prefix for the purpose of deciding the names of output files. " "the prefix for the purpose of deciding the names of output files. "
...@@ -441,6 +443,11 @@ public: ...@@ -441,6 +443,11 @@ public:
} }
for (auto& output: outputs) { for (auto& output: outputs) {
if (kj::str(output.name) == "/bin/cat") {
writeMessageToFd(STDOUT_FILENO, message);
continue;
}
int pipeFds[2]; int pipeFds[2];
KJ_SYSCALL(pipe(pipeFds)); KJ_SYSCALL(pipe(pipeFds));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment