fix ResourceFile data fork reading

This commit is contained in:
Wolfgang Thaller 2017-10-03 12:08:54 +02:00
parent 2885f5d8cd
commit 62831a7391
2 changed files with 15 additions and 9 deletions

View File

@ -39,6 +39,7 @@ int main(int argc, char *argv[])
("all,a", "print all info")
("format,f", "print format")
("count,n", "print number of resources")
("size,s", "show data fork size")
("filename,l", "echo input file name")
("set-format,F", po::value<string>(), "resource fork format)")
;
@ -82,11 +83,12 @@ int main(int argc, char *argv[])
bool showCreator = options.count("creator") != 0;
bool showFormat = options.count("format") != 0;
bool showCount = options.count("count") != 0;
bool showSize = options.count("size") != 0;
ResourceFile::Format format = ResourceFile::Format::autodetect;
if(options.count("all"))
showType = showCreator = showFormat = showCount = true;
showType = showCreator = showFormat = showCount = showSize = true;
if(options.count("set-format"))
{
@ -121,6 +123,8 @@ int main(int argc, char *argv[])
out << " " << reverseFormats[rsrcFile.format];
if(showCount)
out << " " << rsrcFile.resources.resources.size();
if(showSize)
out << " " << rsrcFile.data.size();
string str = out.str();
if(str.size())

View File

@ -270,9 +270,11 @@ bool ResourceFile::read()
switch(what)
{
case 1:
{
std::vector<char> buf(len);
in.read(buf, len);
in.read(buf.data(), len);
data = std::string(buf.begin(), buf.end());
}
break;
case 2:
resources = Resources(in);
@ -344,7 +346,7 @@ bool ResourceFile::read()
if(word(in) != crc)
return false;
std::vector<char> buf(datasize);
in.read(buf, datasize);
in.read(buf.data(), datasize);
data = std::string(buf.begin(), buf.end());
in.seekg(128 + datasize);
resources = Resources(in);