13 #include <unordered_set> 20 const std::string &filename)
24 memset(&
zip, 0,
sizeof(
zip));
31 std::size_t number_of_files=
34 for(std::size_t i=0; i<number_of_files; i++)
37 char *filename_char=
new char[filename_length+1];
40 assert(filename_length==filename_len);
41 std::string file_name(filename_char);
44 bool add_file=!
has_suffix(file_name,
".class");
50 status() <<
"read class file " << file_name
51 <<
" from " << filename <<
eom;
54 delete[] filename_char;
71 return std::string(
"");
78 size_t real_index=entry->second;
80 memset(&file_stat, 0,
sizeof(file_stat));
84 std::vector<char> buffer;
86 buffer.resize(bufsize);
92 dest.insert(dest.end(), buffer.begin(), buffer.end());
103 std::string dest=
get_entry(entry->first);
104 std::istringstream in(dest);
109 while(std::getline(in, line))
111 std::size_t
pos=line.find(
':');
112 if(pos==std::string::npos)
114 std::string key=line.substr(0, pos);
118 while(pos<line.size() && line[
pos]==
' ') pos++;
120 std::string value=line.substr(pos, std::string::npos);
123 if(!value.empty() && *value.rbegin()==
'\r')
124 value.resize(value.size()-1);
void open(java_class_loader_limitt &, const std::string &)
mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat)
mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip)
mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags)
filtered_jart filtered_jar
static mstreamt & eom(mstreamt &m)
std::string get_entry(const irep_idt &)
mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags)
mz_bool mz_zip_reader_end(mz_zip_archive *pZip)
std::map< std::string, std::string > manifestt
mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size)
bool load_class_file(const irep_idt &class_file_name)
bool has_suffix(const std::string &s, const std::string &suffix)