| Index: tools/android/md5sum/md5sum.cc
|
| diff --git a/tools/android/md5sum/md5sum.cc b/tools/android/md5sum/md5sum.cc
|
| index 07ce2c290c8079230bbc7e1571d436c215f67a50..a204569d1fdc99eba0965416bd481bfddf0c0f96 100644
|
| --- a/tools/android/md5sum/md5sum.cc
|
| +++ b/tools/android/md5sum/md5sum.cc
|
| @@ -18,25 +18,21 @@
|
|
|
| namespace {
|
|
|
| -const int kBufferSize = 1024;
|
| -
|
| // Returns whether |path|'s MD5 was successfully written to |digest_string|.
|
| bool MD5Sum(const char* path, std::string* digest_string) {
|
| - std::ifstream stream(path);
|
| - if (!stream.good()) {
|
| + base::ScopedFILE file(fopen(path, "rb"));
|
| + if (!file) {
|
| LOG(ERROR) << "Could not open file " << path;
|
| return false;
|
| }
|
| base::MD5Context ctx;
|
| base::MD5Init(&ctx);
|
| - char buf[kBufferSize];
|
| - while (stream.good()) {
|
| - std::streamsize bytes_read = stream.readsome(buf, sizeof(buf));
|
| - if (bytes_read == 0)
|
| - break;
|
| - base::MD5Update(&ctx, base::StringPiece(buf, bytes_read));
|
| - }
|
| - if (stream.fail()) {
|
| + const size_t kBufferSize = 1 << 16;
|
| + scoped_ptr<char[]> buf(new char[kBufferSize]);
|
| + size_t len;
|
| + while ((len = fread(buf.get(), 1, kBufferSize, file.get())) > 0)
|
| + base::MD5Update(&ctx, base::StringPiece(buf.get(), len));
|
| + if (ferror(file.get())) {
|
| LOG(ERROR) << "Error reading file " << path;
|
| return false;
|
| }
|
|
|