summaryrefslogtreecommitdiffstats
path: root/src/browse.cc
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2011-03-06 00:27:25 (GMT)
committerEvan Martin <martine@danga.com>2011-03-07 19:31:11 (GMT)
commit07ffa9195dd83176ddb96bbfb1eca0a3ca938a8b (patch)
tree03b240b89fa2500cf8b6285ad8e2f7be277eb667 /src/browse.cc
parent15d4695878749c3525c96e856ef08dfb19a2c3e5 (diff)
downloadNinja-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.cc17
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);