forked from Mirrorlandia_minetest/minetest
Little fixes
This commit is contained in:
parent
9f882bf74d
commit
b456821680
@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "filesys.h"
|
#include "filesys.h"
|
||||||
|
#include "strfnd.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@ -78,10 +79,15 @@ std::vector<DirListNode> GetDirListing(std::string pathstring)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// NOTE:
|
||||||
|
// Be very sure to not include '..' in the results, it will
|
||||||
|
// result in an epic failure when deleting stuff.
|
||||||
|
|
||||||
DirListNode node;
|
DirListNode node;
|
||||||
node.name = FindFileData.cFileName;
|
node.name = FindFileData.cFileName;
|
||||||
node.dir = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
node.dir = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
||||||
listing.push_back(node);
|
if(node.name != "." && node.name != "..")
|
||||||
|
listing.push_back(node);
|
||||||
|
|
||||||
// List all the other files in the directory.
|
// List all the other files in the directory.
|
||||||
while (FindNextFile(hFind, &FindFileData) != 0)
|
while (FindNextFile(hFind, &FindFileData) != 0)
|
||||||
@ -89,7 +95,8 @@ std::vector<DirListNode> GetDirListing(std::string pathstring)
|
|||||||
DirListNode node;
|
DirListNode node;
|
||||||
node.name = FindFileData.cFileName;
|
node.name = FindFileData.cFileName;
|
||||||
node.dir = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
node.dir = FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
|
||||||
listing.push_back(node);
|
if(node.name != "." && node.name != "..")
|
||||||
|
listing.push_back(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
dwError = GetLastError();
|
dwError = GetLastError();
|
||||||
@ -135,7 +142,7 @@ bool RecursiveDelete(std::string path)
|
|||||||
{
|
{
|
||||||
std::cerr<<"Removing \""<<path<<"\""<<std::endl;
|
std::cerr<<"Removing \""<<path<<"\""<<std::endl;
|
||||||
|
|
||||||
return false;
|
//return false;
|
||||||
|
|
||||||
// This silly function needs a double-null terminated string...
|
// This silly function needs a double-null terminated string...
|
||||||
// Well, we'll just make sure it has at least two, then.
|
// Well, we'll just make sure it has at least two, then.
|
||||||
@ -173,12 +180,16 @@ std::vector<DirListNode> GetDirListing(std::string pathstring)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while ((dirp = readdir(dp)) != NULL) {
|
while ((dirp = readdir(dp)) != NULL) {
|
||||||
|
// NOTE:
|
||||||
|
// Be very sure to not include '..' in the results, it will
|
||||||
|
// result in an epic failure when deleting stuff.
|
||||||
if(dirp->d_name[0]!='.'){
|
if(dirp->d_name[0]!='.'){
|
||||||
DirListNode node;
|
DirListNode node;
|
||||||
node.name = dirp->d_name;
|
node.name = dirp->d_name;
|
||||||
if(dirp->d_type == DT_DIR) node.dir = true;
|
if(dirp->d_type == DT_DIR) node.dir = true;
|
||||||
else node.dir = false;
|
else node.dir = false;
|
||||||
listing.push_back(node);
|
if(node.name != "." && node.name != "..")
|
||||||
|
listing.push_back(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(dp);
|
closedir(dp);
|
||||||
@ -262,7 +273,9 @@ bool RecursiveDeleteContent(std::string path)
|
|||||||
std::vector<DirListNode> list = GetDirListing(path);
|
std::vector<DirListNode> list = GetDirListing(path);
|
||||||
for(unsigned int i=0; i<list.size(); i++)
|
for(unsigned int i=0; i<list.size(); i++)
|
||||||
{
|
{
|
||||||
std::string childpath = path+"/"+list[i].name;
|
if(trim(list[i].name) == "." || trim(list[i].name) == "..")
|
||||||
|
continue;
|
||||||
|
std::string childpath = path + "/" + list[i].name;
|
||||||
bool r = RecursiveDelete(childpath);
|
bool r = RecursiveDelete(childpath);
|
||||||
if(r == false)
|
if(r == false)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user