Merge pull request #3648 from jviotti/jviotti/fix/exec-file-asar-bat
🏁 Preserve file extension when extracting from asar
This commit is contained in:
commit
0d50e08ed1
3 changed files with 18 additions and 7 deletions
|
@ -272,7 +272,8 @@ bool Archive::CopyFileOut(const base::FilePath& path, base::FilePath* out) {
|
||||||
}
|
}
|
||||||
|
|
||||||
scoped_ptr<ScopedTemporaryFile> temp_file(new ScopedTemporaryFile);
|
scoped_ptr<ScopedTemporaryFile> temp_file(new ScopedTemporaryFile);
|
||||||
if (!temp_file->InitFromFile(&file_, info.offset, info.size))
|
base::FilePath::StringType ext = path.Extension();
|
||||||
|
if (!temp_file->InitFromFile(&file_, ext, info.offset, info.size))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(OS_POSIX)
|
#if defined(OS_POSIX)
|
||||||
|
|
|
@ -28,20 +28,28 @@ ScopedTemporaryFile::~ScopedTemporaryFile() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScopedTemporaryFile::Init() {
|
bool ScopedTemporaryFile::Init(const base::FilePath::StringType ext) {
|
||||||
if (!path_.empty())
|
if (!path_.empty())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
||||||
return base::CreateTemporaryFile(&path_);
|
|
||||||
|
base::FilePath temporaryPath_;
|
||||||
|
if (!base::CreateTemporaryFile(&temporaryPath_)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
path_ = temporaryPath_.AddExtension(ext);
|
||||||
|
return base::Move(temporaryPath_, path_);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScopedTemporaryFile::InitFromFile(base::File* src,
|
bool ScopedTemporaryFile::InitFromFile(base::File* src,
|
||||||
|
const base::FilePath::StringType ext,
|
||||||
uint64 offset, uint64 size) {
|
uint64 offset, uint64 size) {
|
||||||
if (!src->IsValid())
|
if (!src->IsValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!Init())
|
if (!Init(ext))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
std::vector<char> buf(size);
|
std::vector<char> buf(size);
|
||||||
|
|
|
@ -22,11 +22,13 @@ class ScopedTemporaryFile {
|
||||||
ScopedTemporaryFile();
|
ScopedTemporaryFile();
|
||||||
virtual ~ScopedTemporaryFile();
|
virtual ~ScopedTemporaryFile();
|
||||||
|
|
||||||
// Init an empty temporary file.
|
// Init an empty temporary file with a certain extension.
|
||||||
bool Init();
|
bool Init(const base::FilePath::StringType ext);
|
||||||
|
|
||||||
// Init an temporary file and fill it with content of |path|.
|
// Init an temporary file and fill it with content of |path|.
|
||||||
bool InitFromFile(base::File* src, uint64 offset, uint64 size);
|
bool InitFromFile(base::File* src,
|
||||||
|
const base::FilePath::StringType ext,
|
||||||
|
uint64 offset, uint64 size);
|
||||||
|
|
||||||
base::FilePath path() const { return path_; }
|
base::FilePath path() const { return path_; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue