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:
parent
7f7e5f34ac
commit
a3635e22af
1 changed files with 7 additions and 3 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue