diff options
author | Evan Martin <martine@danga.com> | 2011-03-06 00:27:25 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-03-07 19:31:11 (GMT) |
commit | 07ffa9195dd83176ddb96bbfb1eca0a3ca938a8b (patch) | |
tree | 03b240b89fa2500cf8b6285ad8e2f7be277eb667 /src/browse.cc | |
parent | 15d4695878749c3525c96e856ef08dfb19a2c3e5 (diff) | |
download | Ninja-07ffa9195dd83176ddb96bbfb1eca0a3ca938a8b.zip Ninja-07ffa9195dd83176ddb96bbfb1eca0a3ca938a8b.tar.gz Ninja-07ffa9195dd83176ddb96bbfb1eca0a3ca938a8b.tar.bz2 |
use a shell script to inline browse.py
Relying on the inline-assembly trick was cute but it didn't work on
other platforms; relying on xxd will make us depend on xxd being
available. Instead, inline browse.py into a header using a shell
script.
(Making this work required fixing multiple bugs in ninja...)
Diffstat (limited to 'src/browse.cc')
-rw-r--r-- | src/browse.cc | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/browse.cc b/src/browse.cc index 92b290d..db89db0 100644 --- a/src/browse.cc +++ b/src/browse.cc @@ -17,19 +17,9 @@ #include <stdio.h> #include <unistd.h> +#include "../build/browse_py.h" #include "ninja.h" -// Import browse.py as binary data. -asm( -".data\n" -"browse_data_begin:\n" -".incbin \"src/browse.py\"\n" -"browse_data_end:\n" -); -// Declare the symbols defined above. -extern const char browse_data_begin[]; -extern const char browse_data_end[]; - void RunBrowsePython(State* state, const char* ninja_command) { // Fork off a Python process and have it run our code via its stdin. // (Actually the Python process becomes the parent.) @@ -65,9 +55,8 @@ void RunBrowsePython(State* state, const char* ninja_command) { close(pipefd[0]); // Write the script file into the stdin of the Python process. - const int browse_data_len = browse_data_end - browse_data_begin; - int len = write(pipefd[1], browse_data_begin, browse_data_len); - if (len < browse_data_len) + ssize_t len = write(pipefd[1], kBrowsePy, sizeof(kBrowsePy)); + if (len < (ssize_t)sizeof(kBrowsePy)) perror("write"); close(pipefd[1]); exit(0); |