1
0
Fork 0

Repair double slash in configfile location on Macs. Add some protection against a NULL dirp.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4193
This commit is contained in:
Peter Veenstra 2019-02-28 13:03:22 +00:00
parent 7f7e5f34ac
commit a3635e22af

View file

@ -85,7 +85,7 @@ void Cross::CreatePlatformConfigDir(std::string& in) {
in += "\\DOSBox";
mkdir(in.c_str());
#elif defined(MACOSX)
in = "~/Library/Preferences/";
in = "~/Library/Preferences";
ResolveHomedir(in);
//Don't create it. Assume it exists
#else
@ -155,6 +155,7 @@ dir_information* open_directory(const char* dirname) {
}
bool read_directory_first(dir_information* dirp, char* entry_name, bool& is_directory) {
if (!dirp) return false;
dirp->handle = FindFirstFile(dirp->base_path, &dirp->search_data);
if (INVALID_HANDLE_VALUE == dirp->handle) {
return false;
@ -169,6 +170,7 @@ bool read_directory_first(dir_information* dirp, char* entry_name, bool& is_dire
}
bool read_directory_next(dir_information* dirp, char* entry_name, bool& is_directory) {
if (!dirp) return false;
int result = FindNextFile(dirp->handle, &dirp->search_data);
if (result==0) return false;
@ -181,7 +183,7 @@ bool read_directory_next(dir_information* dirp, char* entry_name, bool& is_direc
}
void close_directory(dir_information* dirp) {
if (dirp->handle != INVALID_HANDLE_VALUE) {
if (dirp && dirp->handle != INVALID_HANDLE_VALUE) {
FindClose(dirp->handle);
dirp->handle = INVALID_HANDLE_VALUE;
}
@ -197,10 +199,12 @@ dir_information* open_directory(const char* dirname) {
}
bool read_directory_first(dir_information* dirp, char* entry_name, bool& is_directory) {
if (!dirp) return false;
return read_directory_next(dirp,entry_name,is_directory);
}
bool read_directory_next(dir_information* dirp, char* entry_name, bool& is_directory) {
if (!dirp) return false;
struct dirent* dentry = readdir(dirp->dir);
if (dentry==NULL) {
return false;
@ -236,7 +240,7 @@ bool read_directory_next(dir_information* dirp, char* entry_name, bool& is_direc
}
void close_directory(dir_information* dirp) {
closedir(dirp->dir);
if (dirp) closedir(dirp->dir);
}
#endif