Index: third_party/woff2/src/woff2_decompress.cc |
diff --git a/third_party/woff2/src/woff2_decompress.cc b/third_party/woff2/src/woff2_decompress.cc |
index 7668c4e824a7ce4a23088374db0447669c93ac9d..f29c797cbb59b976705ea128f4c88a4a8d80dde5 100644 |
--- a/third_party/woff2/src/woff2_decompress.cc |
+++ b/third_party/woff2/src/woff2_decompress.cc |
@@ -17,10 +17,10 @@ |
#include <string> |
- |
-#include "file.h" |
+#include "./file.h" |
#include "./woff2_dec.h" |
+ |
int main(int argc, char **argv) { |
using std::string; |
@@ -31,24 +31,18 @@ int main(int argc, char **argv) { |
string filename(argv[1]); |
string outfilename = filename.substr(0, filename.find_last_of(".")) + ".ttf"; |
- fprintf(stdout, "Processing %s => %s\n", |
- filename.c_str(), outfilename.c_str()); |
+ |
string input = woff2::GetFileContent(filename); |
+ const uint8_t* raw_input = reinterpret_cast<const uint8_t*>(input.data()); |
+ string output(std::min(woff2::ComputeWOFF2FinalSize(raw_input, input.size()), |
+ woff2::kDefaultMaxSize), 0); |
+ woff2::WOFF2StringOut out(&output); |
- size_t decompressed_size = woff2::ComputeWOFF2FinalSize( |
- reinterpret_cast<const uint8_t*>(input.data()), input.size()); |
- string output(decompressed_size, 0); |
- const bool ok = woff2::ConvertWOFF2ToTTF( |
- reinterpret_cast<uint8_t*>(&output[0]), decompressed_size, |
- reinterpret_cast<const uint8_t*>(input.data()), input.size()); |
+ const bool ok = woff2::ConvertWOFF2ToTTF(raw_input, input.size(), &out); |
- if (!ok) { |
- fprintf(stderr, "Decompression failed\n"); |
- return 1; |
+ if (ok) { |
+ woff2::SetFileContents(outfilename, output.begin(), |
+ output.begin() + out.Size()); |
} |
- |
- woff2::SetFileContents(outfilename, output); |
- |
- return 0; |
+ return ok ? 0 : 1; |
} |
- |