diff options
author | FWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544> | 2012-06-08 16:48:28 +0000 |
---|---|---|
committer | FWoltermann@gmail.com <FWoltermann@gmail.com@076cb2c4-205e-83fd-5cf3-1be9aa105544> | 2012-06-08 16:48:28 +0000 |
commit | 567bd9471bf7061cf92061f3569f76e260be9c50 (patch) | |
tree | b9283b99d8f0468e0c5674587339d9ac01aa96c2 | |
parent | 85c79bef459d1dc7fc10573772b1785c152d9539 (diff) | |
download | starshatter-567bd9471bf7061cf92061f3569f76e260be9c50.zip starshatter-567bd9471bf7061cf92061f3569f76e260be9c50.tar.gz starshatter-567bd9471bf7061cf92061f3569f76e260be9c50.tar.bz2 |
Ooops, stupid mistake here.
-rw-r--r-- | Datafile/Archive.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Datafile/Archive.cpp b/Datafile/Archive.cpp index 039fbb1..9d47465 100644 --- a/Datafile/Archive.cpp +++ b/Datafile/Archive.cpp @@ -406,8 +406,10 @@ void DataArchive::Extract(const char* name) ExpandEntry(index, buf);
std::string dirname = directory[index].name;
+ bool create_subdir = (dirname.find_first_of('/', 0) != std::string::npos);
std::wstring wdirname = ToWideString(dirname.substr(0, dirname.find_first_of('/')));
- CreateDirectory(wdirname.c_str(), NULL);
+ if (create_subdir)
+ CreateDirectory(wdirname.c_str(), NULL);
size_t offset = wdirname.length();
while (dirname.find_first_of('/', offset + 1) != std::string::npos) {
wdirname.push_back('/');
@@ -416,7 +418,7 @@ void DataArchive::Extract(const char* name) offset = wdirname.length();
}
- FILE* f = fopen(directory[index].name, "wb");
+ FILE* f = fopen(directory[index].name, "w+b");
if (f) {
fwrite(buf, directory[index].size_orig, 1, f);
fclose(f);
|