fix log values with non-utf8 characters and remove index_log (#20173)
* remove index_log * handle non-unicode characters in values * dump.py better handling of printing non-unicode characters * only replace errors in mainpull/20200/head^2
parent
167fa565c0
commit
78808961c5
8 changed files with 10 additions and 116 deletions
@ -1 +0,0 @@ |
|||||||
index_log |
|
@ -1,9 +0,0 @@ |
|||||||
CC := gcc
|
|
||||||
CXX := g++
|
|
||||||
|
|
||||||
index_log: index_log.cc |
|
||||||
$(eval $@_TMP := $(shell mktemp))
|
|
||||||
$(CXX) -std=c++1z -o $($@_TMP) \
|
|
||||||
index_log.cc \
|
|
||||||
-lcapnp -lkj
|
|
||||||
mv $($@_TMP) $@
|
|
@ -1,3 +0,0 @@ |
|||||||
Import('env', 'arch', 'messaging') |
|
||||||
|
|
||||||
env.Program('index_log', ['index_log.cc'], LIBS=[messaging, 'kj', 'capnp']) |
|
@ -1,63 +0,0 @@ |
|||||||
#include <cstdio> |
|
||||||
#include <cstdlib> |
|
||||||
#include <cassert> |
|
||||||
#include <string> |
|
||||||
|
|
||||||
#include <unistd.h> |
|
||||||
#include <fcntl.h> |
|
||||||
|
|
||||||
#include <sys/stat.h> |
|
||||||
#include <sys/mman.h> |
|
||||||
|
|
||||||
#include <kj/io.h> |
|
||||||
#include <capnp/serialize.h> |
|
||||||
|
|
||||||
int main(int argc, char** argv) { |
|
||||||
|
|
||||||
if (argc != 3) { |
|
||||||
printf("usage: %s <log_path> <index_output_path>\n", argv[0]); |
|
||||||
return 1; |
|
||||||
} |
|
||||||
|
|
||||||
const std::string log_fn = argv[1]; |
|
||||||
const std::string index_fn = argv[2]; |
|
||||||
|
|
||||||
int log_fd = open(log_fn.c_str(), O_RDONLY, 0); |
|
||||||
assert(log_fd >= 0); |
|
||||||
|
|
||||||
off_t log_size = lseek(log_fd, 0, SEEK_END); |
|
||||||
lseek(log_fd, 0, SEEK_SET); |
|
||||||
|
|
||||||
FILE* index_f = NULL; |
|
||||||
if (index_fn == "-") { |
|
||||||
index_f = stdout; |
|
||||||
} else { |
|
||||||
index_f = fopen(index_fn.c_str(), "wb"); |
|
||||||
} |
|
||||||
assert(index_f); |
|
||||||
|
|
||||||
void* log_data = mmap(NULL, log_size, PROT_READ, MAP_PRIVATE, log_fd, 0); |
|
||||||
assert(log_data); |
|
||||||
|
|
||||||
auto words = kj::arrayPtr((const capnp::word*)log_data, log_size/sizeof(capnp::word)); |
|
||||||
while (words.size() > 0) { |
|
||||||
uint64_t idx = ((uintptr_t)words.begin() - (uintptr_t)log_data); |
|
||||||
// printf("%llu - %ld\n", idx, words.size());
|
|
||||||
const char* idx_bytes = (const char*)&idx; |
|
||||||
fwrite(idx_bytes, 8, 1, index_f); |
|
||||||
try { |
|
||||||
capnp::FlatArrayMessageReader reader(words); |
|
||||||
words = kj::arrayPtr(reader.getEnd(), words.end()); |
|
||||||
} catch (const kj::Exception& exc) { |
|
||||||
break; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
munmap(log_data, log_size); |
|
||||||
|
|
||||||
fclose(index_f); |
|
||||||
|
|
||||||
close(log_fd); |
|
||||||
|
|
||||||
return 0; |
|
||||||
} |
|
Loading…
Reference in new issue