use unix directory in place of mac directory

pull/433/head
Li Linfeng 2019-10-06 12:23:55 +08:00
parent 519f124b73
commit 9b773df557
2 changed files with 4 additions and 129 deletions

View File

@ -1,125 +0,0 @@
//
// MacDirectory.mm
// celestia
//
// Created by Da Woon Jung on Sun Apr 24 2004.
// Copyright (c) 2005 Chris Laurel. All rights reserved.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
#include <dirent.h>
#import "directory.h"
#import "NSString_ObjCPlusPlus.h"
class MacDirectory : public Directory
{
public:
MacDirectory(NSString *dirName);
virtual ~MacDirectory();
bool nextFile(std::string &);
bool enumFiles(EnumFilesHandler &handler, bool deep);
enum {
DirGood = 0,
DirBad = 1
};
private:
char *_dirstring;
int _status;
DIR *_dir;
};
MacDirectory::MacDirectory(NSString *dirName) :
_status(DirGood), _dir(NULL)
{
NSString *fullPath = [dirName stringByStandardizingPath];
const char *fullPathStr = [fullPath UTF8String];
unsigned dirNameLen = CFStringGetMaximumSizeForEncoding([fullPath length], kCFStringEncodingUTF8);
if (dirNameLen > 0)
{
_dirstring = (char *)calloc(dirNameLen+sizeof(char), 1);
strncpy(_dirstring, fullPathStr, dirNameLen/sizeof(char));
}
else
_dirstring = NULL;
}
MacDirectory::~MacDirectory()
{
if (_dir != NULL)
{
closedir(_dir);
_dir = NULL;
}
if (_dirstring)
free(_dirstring);
}
bool MacDirectory::nextFile(std::string &filename)
{
if (_status != DirGood)
return false;
if (_dir == NULL)
{
_dir = opendir(_dirstring);
if (_dir == NULL)
{
_status = DirBad;
return false;
}
}
struct dirent *ent = readdir(_dir);
if (ent == NULL)
{
_status = DirBad;
return false;
}
else
{
filename = ent->d_name;
return true;
}
}
bool MacDirectory::enumFiles(EnumFilesHandler &handler, bool deep)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
bool result = Directory::enumFiles(handler, deep);
[pool release];
return result;
}
std::string WordExp(const std::string &filename)
{
NSString *expandedPath = [[NSString stringWithStdString: filename] stringByStandardizingPath];
return [expandedPath stdString];
}
Directory* OpenDirectory(const std::string &dirname)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Directory *result = new MacDirectory([NSString stringWithStdString: dirname]);
[pool release];
return result;
}
bool IsDirectory(const std::string &filename)
{
BOOL isDir = NO;
return [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithStdString: filename] isDirectory:&isDir] && isDir;
}

View File

@ -48,6 +48,7 @@
970AEE8E2329417000E9ED22 /* liblua5.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 970AEE8D2329417000E9ED22 /* liblua5.3.a */; };
970AEE90232943D300E9ED22 /* libintl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 970AEE8F232943D300E9ED22 /* libintl.a */; };
970AEE92232943DC00E9ED22 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 970AEE91232943DC00E9ED22 /* libiconv.tbd */; };
973256992349A397002D1DAE /* unixdirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 973256982349A397002D1DAE /* unixdirectory.cpp */; };
9772E5A02329DDC400531773 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9772E59F2329DDC400531773 /* Images.xcassets */; };
978EBA922324D0740025C9D5 /* ConfigSelectionWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 978EBA912324D0740025C9D5 /* ConfigSelectionWindow.xib */; };
9798FB522324D2BE007F92B8 /* ConfigSelectionWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9798FB502324D2BE007F92B8 /* ConfigSelectionWindowController.m */; };
@ -226,7 +227,6 @@
E567F093099112EC00D05031 /* venus_locs.ssc in Copy Data */ = {isa = PBXBuildFile; fileRef = E567EF8E09910E8F00D05031 /* venus_locs.ssc */; };
E567F094099112EC00D05031 /* visualbins.stc in Copy Data */ = {isa = PBXBuildFile; fileRef = E567EF8F09910E8F00D05031 /* visualbins.stc */; };
E567F095099112EC00D05031 /* world-capitals.ssc in Copy Data */ = {isa = PBXBuildFile; fileRef = E567EF9009910E8F00D05031 /* world-capitals.ssc */; };
E56A3DB80848C19800A21D7E /* MacDirectory.mm in Sources */ = {isa = PBXBuildFile; fileRef = E56A3DB70848C19800A21D7E /* MacDirectory.mm */; };
E56A5AED0848F92200A21D7E /* FullScreenWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = E56A5AEB0848F92200A21D7E /* FullScreenWindow.m */; };
E56B96570AAB22AA0097DDFE /* renderglsl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E56B96530AAB22AA0097DDFE /* renderglsl.cpp */; };
E572837C0793A02800C1F239 /* celestia.cfg in Copy Misc */ = {isa = PBXBuildFile; fileRef = F5626A0002A49B8B014901DC /* celestia.cfg */; };
@ -539,6 +539,7 @@
970AEE8F232943D300E9ED22 /* libintl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libintl.a; path = lib/libintl.a; sourceTree = "<group>"; };
970AEE91232943DC00E9ED22 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
9726813A231D0D930014C8D7 /* Celestia.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Celestia.entitlements; sourceTree = "<group>"; };
973256982349A397002D1DAE /* unixdirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = unixdirectory.cpp; path = ../src/celutil/unixdirectory.cpp; sourceTree = SOURCE_ROOT; };
9772E59F2329DDC400531773 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
978EBA912324D0740025C9D5 /* ConfigSelectionWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ConfigSelectionWindow.xib; sourceTree = "<group>"; };
9798FB4F2324D2BE007F92B8 /* ConfigSelectionWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConfigSelectionWindowController.h; sourceTree = "<group>"; };
@ -670,7 +671,6 @@
E567EFF409910F0D00D05031 /* shroxclassic.ssc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shroxclassic.ssc; sourceTree = "<group>"; };
E567EFF509910F0D00D05031 /* shroxmars.ssc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shroxmars.ssc; sourceTree = "<group>"; };
E567EFF609910F0D00D05031 /* skylab.ssc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = skylab.ssc; sourceTree = "<group>"; };
E56A3DB70848C19800A21D7E /* MacDirectory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MacDirectory.mm; sourceTree = "<group>"; };
E56A5AEA0848F92200A21D7E /* FullScreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FullScreenWindow.h; sourceTree = "<group>"; };
E56A5AEB0848F92200A21D7E /* FullScreenWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FullScreenWindow.m; sourceTree = "<group>"; };
E56B96520AAB22AA0097DDFE /* lightenv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lightenv.h; path = ../src/celengine/lightenv.h; sourceTree = SOURCE_ROOT; };
@ -1084,7 +1084,6 @@
E50CCA680C06632A00E9C76A /* EclipseFinderController.mm */,
F57FA4F002B9AB8601000006 /* FavoriteInfoWindowController.m */,
F578B7B402B3E4DB0100020A /* FavoritesDrawerController.m */,
E56A3DB70848C19800A21D7E /* MacDirectory.mm */,
F55C817602AF55890100020A /* GotoWindowController.m */,
F565A8B202EB418701000006 /* RenderPanelController.m */,
E53E61AB0C0CA444003CD767 /* ScriptsController.mm */,
@ -1437,6 +1436,7 @@
F51C6D580295987B014901DC /* bytes.h */,
F51C6D5A0295987B014901DC /* color.h */,
F51C6D5C0295987B014901DC /* debug.h */,
973256982349A397002D1DAE /* unixdirectory.cpp */,
F51C6D5D0295987B014901DC /* directory.h */,
F51C6D5F0295987B014901DC /* filetype.h */,
F51C6D600295987B014901DC /* reshandle.h */,
@ -2085,6 +2085,7 @@
E564310C07769C9000E2C4A3 /* MyTree.m in Sources */,
E564310D07769C9000E2C4A3 /* boundaries.cpp in Sources */,
E564310F07769C9000E2C4A3 /* RenderPanelController.m in Sources */,
973256992349A397002D1DAE /* unixdirectory.cpp in Sources */,
E564311007769C9000E2C4A3 /* url.cpp in Sources */,
E564311107769C9000E2C4A3 /* render.cpp in Sources */,
E564311207769C9000E2C4A3 /* CelestiaAppCore.mm in Sources */,
@ -2124,7 +2125,6 @@
E54343170783C42500053094 /* BrowserWindowController.mm in Sources */,
E589B6DD078AC511005B8DD9 /* glshader.cpp in Sources */,
E589B6DF078AC511005B8DD9 /* shadermanager.cpp in Sources */,
E56A3DB80848C19800A21D7E /* MacDirectory.mm in Sources */,
E56A5AED0848F92200A21D7E /* FullScreenWindow.m in Sources */,
0C76BFD108537EDB00D31A90 /* qtcapture.cpp in Sources */,
E532F4F10933331800D7D5B3 /* dsodb.cpp in Sources */,