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/214/head
							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