From c92ee34e45f7e1a38ab3ab3463891f4efe96be79 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 4 Aug 2008 11:32:42 +0000 Subject: Removed join_paths from default save manager, and use FSNode API instead (may lead to regressions, watch out) svn-id: r33605 --- backends/saves/default/default-saves.cpp | 56 ++++++++++---------------------- 1 file changed, 18 insertions(+), 38 deletions(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index 21bc56e441..3eb18da8bc 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -88,32 +88,6 @@ public: } }; -static void join_paths(const char *filename, const char *directory, - char *buf, int bufsize) { - buf[bufsize-1] = '\0'; - strncpy(buf, directory, bufsize-1); - -#ifdef WIN32 - // Fix for Win98 issue related with game directory pointing to root drive ex. "c:\" - if ((buf[0] != 0) && (buf[1] == ':') && (buf[2] == '\\') && (buf[3] == 0)) { - buf[2] = 0; - } -#endif - - const int dirLen = strlen(buf); - - if (dirLen > 0) { -#if defined(__MORPHOS__) || defined(__amigaos4__) - if (buf[dirLen-1] != ':' && buf[dirLen-1] != '/') -#endif - -#if !defined(__GP32__) - strncat(buf, "/", bufsize-1); // prevent double / -#endif - } - strncat(buf, filename, bufsize-1); -} - Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { FilesystemNode savePath(getSavePath()); FSList savefiles; @@ -136,6 +110,7 @@ void DefaultSaveFileManager::checkPath(const Common::String &path) { struct stat sb; // Check whether the dir exists + // TODO: Use the FSNode API instead if (stat(path.c_str(), &sb) == -1) { // The dir does not exist, or stat failed for some other reason. // If the problem was that the path pointed to nothing, try @@ -201,13 +176,15 @@ void DefaultSaveFileManager::checkPath(const Common::String &path) { Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) { // Ensure that the savepath is valid. If not, generate an appropriate error. - char buf[256]; Common::String savePath = getSavePath(); checkPath(savePath); if (getError() == SFM_NO_ERROR) { - join_paths(filename, savePath.c_str(), buf, sizeof(buf)); - StdioSaveFile *sf = new StdioSaveFile(buf, false); + FilesystemNode saveDir(getSavePath()); + FilesystemNode file = saveDir.getChild(filename); + + // TODO: switch to file.openForLoading() + StdioSaveFile *sf = new StdioSaveFile(file.getPath().c_str(), false); if (!sf->isOpen()) { delete sf; @@ -222,13 +199,15 @@ Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) { // Ensure that the savepath is valid. If not, generate an appropriate error. - char buf[256]; Common::String savePath = getSavePath(); checkPath(savePath); if (getError() == SFM_NO_ERROR) { - join_paths(filename, savePath.c_str(), buf, sizeof(buf)); - StdioSaveFile *sf = new StdioSaveFile(buf, true); + FilesystemNode saveDir(getSavePath()); + FilesystemNode file = saveDir.getChild(filename); + + // TODO: switch to file.openForSaving() + StdioSaveFile *sf = new StdioSaveFile(file.getPath().c_str(), true); if (!sf->isOpen()) { delete sf; @@ -242,18 +221,19 @@ Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) } bool DefaultSaveFileManager::removeSavefile(const char *filename) { - char buf[256]; clearError(); - Common::String filenameStr; - join_paths(filename, getSavePath().c_str(), buf, sizeof(buf)); - if (remove(buf) != 0) { + FilesystemNode saveDir(getSavePath()); + FilesystemNode file = saveDir.getChild(filename); + + // TODO: Add new method FilesystemNode::remove() + if (remove(file.getPath().c_str()) != 0) { #ifndef _WIN32_WCE if (errno == EACCES) - setError(SFM_DIR_ACCESS, "Search or write permission denied: "+filenameStr); + setError(SFM_DIR_ACCESS, "Search or write permission denied: "+file.getName()); if (errno == ENOENT) - setError(SFM_DIR_NOENT, "A component of the path does not exist, or the path is an empty string: "+filenameStr); + setError(SFM_DIR_NOENT, "A component of the path does not exist, or the path is an empty string: "+file.getName()); #endif return false; } else { -- cgit v1.2.3 From d061e50a7efc5d5201daff760341b10bc80f55bd Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 4 Aug 2008 11:48:33 +0000 Subject: DefaultSaveFileManager: Killed class StdioSaveFile, used FilesystemNode::openForReading()/openForWriting() instead (may cause regressions, watch out) svn-id: r33608 --- backends/saves/default/default-saves.cpp | 65 ++------------------------------ 1 file changed, 4 insertions(+), 61 deletions(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index 3eb18da8bc..26dd55cec8 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -41,53 +41,6 @@ #include #endif - -class StdioSaveFile : public Common::InSaveFile, public Common::OutSaveFile { -private: - FILE *fh; -public: - StdioSaveFile(const char *filename, bool saveOrLoad) { - fh = ::fopen(filename, (saveOrLoad? "wb" : "rb")); - } - ~StdioSaveFile() { - if (fh) - ::fclose(fh); - } - - bool eos() const { return feof(fh) != 0; } - bool ioFailed() const { return ferror(fh) != 0; } - void clearIOFailed() { clearerr(fh); } - - bool isOpen() const { return fh != 0; } - - uint32 read(void *dataPtr, uint32 dataSize) { - assert(fh); - return fread(dataPtr, 1, dataSize, fh); - } - uint32 write(const void *dataPtr, uint32 dataSize) { - assert(fh); - return fwrite(dataPtr, 1, dataSize, fh); - } - - uint32 pos() const { - assert(fh); - return ftell(fh); - } - uint32 size() const { - assert(fh); - uint32 oldPos = ftell(fh); - fseek(fh, 0, SEEK_END); - uint32 length = ftell(fh); - fseek(fh, oldPos, SEEK_SET); - return length; - } - - void seek(int32 offs, int whence = SEEK_SET) { - assert(fh); - fseek(fh, offs, whence); - } -}; - Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { FilesystemNode savePath(getSavePath()); FSList savefiles; @@ -183,13 +136,8 @@ Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) FilesystemNode saveDir(getSavePath()); FilesystemNode file = saveDir.getChild(filename); - // TODO: switch to file.openForLoading() - StdioSaveFile *sf = new StdioSaveFile(file.getPath().c_str(), false); - - if (!sf->isOpen()) { - delete sf; - sf = 0; - } + // Open the file for reading + Common::SeekableReadStream *sf = file.openForReading(); return wrapInSaveFile(sf); } else { @@ -206,13 +154,8 @@ Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) FilesystemNode saveDir(getSavePath()); FilesystemNode file = saveDir.getChild(filename); - // TODO: switch to file.openForSaving() - StdioSaveFile *sf = new StdioSaveFile(file.getPath().c_str(), true); - - if (!sf->isOpen()) { - delete sf; - sf = 0; - } + // Open the file for saving + Common::WriteStream *sf = file.openForWriting(); return wrapOutSaveFile(sf); } else { -- cgit v1.2.3 From 92d6ee3d7611617abfe1c4cdcf3a838116c34c95 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 4 Aug 2008 17:17:37 +0000 Subject: Moved ConfMan.registerDefault calls for savepath to DefaultSaveFileManager (eventually, should be pushed into backends/platform/ code) svn-id: r33614 --- backends/saves/default/default-saves.cpp | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index 26dd55cec8..cd46c941f5 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -41,6 +41,50 @@ #include #endif +#ifdef IPHONE +#include "backends/platform/iphone/osys_iphone.h" +#endif + +#ifdef UNIX +#ifdef MACOSX +#define DEFAULT_SAVE_PATH "Documents/ScummVM Savegames" +#else +#define DEFAULT_SAVE_PATH ".scummvm" +#endif +#elif defined(__SYMBIAN32__) +#define DEFAULT_SAVE_PATH "Savegames" +#elif defined(PALMOS_MODE) +#define DEFAULT_SAVE_PATH "/PALM/Programs/ScummVM/Saved" +#endif + +DefaultSaveFileManager::DefaultSaveFileManager() { + // Register default savepath + // TODO: Remove this code here, and instead leave setting the + // default savepath to the ports using this class. +#ifdef DEFAULT_SAVE_PATH + char savePath[MAXPATHLEN]; +#if defined(UNIX) && !defined(IPHONE) + const char *home = getenv("HOME"); + if (home && *home && strlen(home) < MAXPATHLEN) { + snprintf(savePath, MAXPATHLEN, "%s/%s", home, DEFAULT_SAVE_PATH); + ConfMan.registerDefault("savepath", savePath); + } +#elif defined(__SYMBIAN32__) + strcpy(savePath, Symbian::GetExecutablePath()); + strcat(savePath, DEFAULT_SAVE_PATH); + strcat(savePath, "\\"); + ConfMan.registerDefault("savepath", savePath); +#elif defined (IPHONE) + ConfMan.registerDefault("savepath", OSystem_IPHONE::getSavePath()); + +#elif defined(PALMOS_MODE) + ConfMan.registerDefault("savepath", DEFAULT_SAVE_PATH); +#endif +#endif // #ifdef DEFAULT_SAVE_PATH +} + + + Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { FilesystemNode savePath(getSavePath()); FSList savefiles; -- cgit v1.2.3 From 2f2a4f03d0eda0f7f81fbfb9a8bc9cb95586bd43 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 4 Aug 2008 17:41:07 +0000 Subject: Modified DefaultSaveFileManager::checkPath to perform at least basic checks on non-UNIX, non-Symbian systems svn-id: r33615 --- backends/saves/default/default-saves.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index cd46c941f5..bd72739f44 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -100,14 +100,14 @@ Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { return results; } -void DefaultSaveFileManager::checkPath(const Common::String &path) { +void DefaultSaveFileManager::checkPath(const FilesystemNode &dir) { + const Common::String path = dir.getPath(); clearError(); #if defined(UNIX) || defined(__SYMBIAN32__) struct stat sb; // Check whether the dir exists - // TODO: Use the FSNode API instead if (stat(path.c_str(), &sb) == -1) { // The dir does not exist, or stat failed for some other reason. // If the problem was that the path pointed to nothing, try @@ -168,17 +168,24 @@ void DefaultSaveFileManager::checkPath(const Common::String &path) { setError(SFM_DIR_NOTDIR, "The given savepath is not a directory: "+path); } } +#else + if (!dir.exists()) { + // TODO: We could try to mkdir the directory here; or rather, we could + // add a mkdir method to FilesystemNode and invoke that here. + setError(SFM_DIR_NOENT, "A component of the path does not exist, or the path is an empty string: "+path); + } else if (!dir.isDirectory()) { + setError(SFM_DIR_NOTDIR, "The given savepath is not a directory: "+path); + } #endif } Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) { // Ensure that the savepath is valid. If not, generate an appropriate error. - Common::String savePath = getSavePath(); + FilesystemNode savePath(getSavePath()); checkPath(savePath); if (getError() == SFM_NO_ERROR) { - FilesystemNode saveDir(getSavePath()); - FilesystemNode file = saveDir.getChild(filename); + FilesystemNode file = savePath.getChild(filename); // Open the file for reading Common::SeekableReadStream *sf = file.openForReading(); @@ -191,12 +198,11 @@ Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) { // Ensure that the savepath is valid. If not, generate an appropriate error. - Common::String savePath = getSavePath(); + FilesystemNode savePath(getSavePath()); checkPath(savePath); if (getError() == SFM_NO_ERROR) { - FilesystemNode saveDir(getSavePath()); - FilesystemNode file = saveDir.getChild(filename); + FilesystemNode file = savePath.getChild(filename); // Open the file for saving Common::WriteStream *sf = file.openForWriting(); @@ -210,8 +216,8 @@ Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) bool DefaultSaveFileManager::removeSavefile(const char *filename) { clearError(); - FilesystemNode saveDir(getSavePath()); - FilesystemNode file = saveDir.getChild(filename); + FilesystemNode savePath(getSavePath()); + FilesystemNode file = savePath.getChild(filename); // TODO: Add new method FilesystemNode::remove() if (remove(file.getPath().c_str()) != 0) { -- cgit v1.2.3 From 4f5479ee744ac6b419cdf7ec1e96fbf7c83d36ef Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 4 Aug 2008 19:38:28 +0000 Subject: Pushed some port specific code from DefaultSaveFileManager out to port specific code in backends/platform/ svn-id: r33621 --- backends/saves/default/default-saves.cpp | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index bd72739f44..dc5e8adca7 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -41,10 +41,6 @@ #include #endif -#ifdef IPHONE -#include "backends/platform/iphone/osys_iphone.h" -#endif - #ifdef UNIX #ifdef MACOSX #define DEFAULT_SAVE_PATH "Documents/ScummVM Savegames" @@ -53,8 +49,6 @@ #endif #elif defined(__SYMBIAN32__) #define DEFAULT_SAVE_PATH "Savegames" -#elif defined(PALMOS_MODE) -#define DEFAULT_SAVE_PATH "/PALM/Programs/ScummVM/Saved" #endif DefaultSaveFileManager::DefaultSaveFileManager() { @@ -62,27 +56,25 @@ DefaultSaveFileManager::DefaultSaveFileManager() { // TODO: Remove this code here, and instead leave setting the // default savepath to the ports using this class. #ifdef DEFAULT_SAVE_PATH - char savePath[MAXPATHLEN]; + Common::String savePath; #if defined(UNIX) && !defined(IPHONE) const char *home = getenv("HOME"); if (home && *home && strlen(home) < MAXPATHLEN) { - snprintf(savePath, MAXPATHLEN, "%s/%s", home, DEFAULT_SAVE_PATH); + savePath = home; + savePath += "/" DEFAULT_SAVE_PATH; ConfMan.registerDefault("savepath", savePath); } #elif defined(__SYMBIAN32__) - strcpy(savePath, Symbian::GetExecutablePath()); - strcat(savePath, DEFAULT_SAVE_PATH); - strcat(savePath, "\\"); + savePath = Symbian::GetExecutablePath(); + savePath += DEFAULT_SAVE_PATH "\\"; ConfMan.registerDefault("savepath", savePath); -#elif defined (IPHONE) - ConfMan.registerDefault("savepath", OSystem_IPHONE::getSavePath()); - -#elif defined(PALMOS_MODE) - ConfMan.registerDefault("savepath", DEFAULT_SAVE_PATH); #endif #endif // #ifdef DEFAULT_SAVE_PATH } +DefaultSaveFileManager::DefaultSaveFileManager(const Common::String &defaultSavepath) { + ConfMan.registerDefault("savepath", defaultSavepath); +} Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { -- cgit v1.2.3 From 531bcf847ceef2b9eca82e0b3ef8473612889632 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Wed, 3 Sep 2008 11:22:51 +0000 Subject: Moved FilesystemNode / FSList to namespace Common; also got rid of some 'typedef Common::String String;' name aliases svn-id: r34302 --- backends/saves/default/default-saves.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index dc5e8adca7..c4c6f128a8 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -78,13 +78,13 @@ DefaultSaveFileManager::DefaultSaveFileManager(const Common::String &defaultSave Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { - FilesystemNode savePath(getSavePath()); - FSList savefiles; + Common::FilesystemNode savePath(getSavePath()); + Common::FSList savefiles; Common::StringList results; Common::String search(pattern); if (savePath.lookupFile(savefiles, search, false, true, 0)) { - for (FSList::const_iterator file = savefiles.begin(); file != savefiles.end(); ++file) { + for (Common::FSList::const_iterator file = savefiles.begin(); file != savefiles.end(); ++file) { results.push_back(file->getName()); } } @@ -92,7 +92,7 @@ Common::StringList DefaultSaveFileManager::listSavefiles(const char *pattern) { return results; } -void DefaultSaveFileManager::checkPath(const FilesystemNode &dir) { +void DefaultSaveFileManager::checkPath(const Common::FilesystemNode &dir) { const Common::String path = dir.getPath(); clearError(); @@ -173,11 +173,11 @@ void DefaultSaveFileManager::checkPath(const FilesystemNode &dir) { Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) { // Ensure that the savepath is valid. If not, generate an appropriate error. - FilesystemNode savePath(getSavePath()); + Common::FilesystemNode savePath(getSavePath()); checkPath(savePath); if (getError() == SFM_NO_ERROR) { - FilesystemNode file = savePath.getChild(filename); + Common::FilesystemNode file = savePath.getChild(filename); // Open the file for reading Common::SeekableReadStream *sf = file.openForReading(); @@ -190,11 +190,11 @@ Common::InSaveFile *DefaultSaveFileManager::openForLoading(const char *filename) Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) { // Ensure that the savepath is valid. If not, generate an appropriate error. - FilesystemNode savePath(getSavePath()); + Common::FilesystemNode savePath(getSavePath()); checkPath(savePath); if (getError() == SFM_NO_ERROR) { - FilesystemNode file = savePath.getChild(filename); + Common::FilesystemNode file = savePath.getChild(filename); // Open the file for saving Common::WriteStream *sf = file.openForWriting(); @@ -208,8 +208,8 @@ Common::OutSaveFile *DefaultSaveFileManager::openForSaving(const char *filename) bool DefaultSaveFileManager::removeSavefile(const char *filename) { clearError(); - FilesystemNode savePath(getSavePath()); - FilesystemNode file = savePath.getChild(filename); + Common::FilesystemNode savePath(getSavePath()); + Common::FilesystemNode file = savePath.getChild(filename); // TODO: Add new method FilesystemNode::remove() if (remove(file.getPath().c_str()) != 0) { -- cgit v1.2.3 From 55a05dc0f4c7141de44008148bbcb7add4c1b078 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Wed, 3 Sep 2008 15:22:19 +0000 Subject: Some cleanup by peres svn-id: r34308 --- backends/saves/default/default-saves.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index c4c6f128a8..bc326d615a 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -28,7 +28,6 @@ #include "common/savefile.h" #include "common/util.h" #include "common/fs.h" -#include "common/file.h" #include "common/config-manager.h" #include "backends/saves/default/default-saves.h" #include "backends/saves/compressed/compressed-saves.h" -- cgit v1.2.3 From aabf8ab1f4f4c59f39f4b92250116c9814d9c083 Mon Sep 17 00:00:00 2001 From: Lars Persson Date: Sun, 7 Sep 2008 12:54:26 +0000 Subject: Remove SYMBIAN special handing from default handler. svn-id: r34403 --- backends/saves/default/default-saves.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'backends/saves/default/default-saves.cpp') diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp index bc326d615a..0cfd265890 100644 --- a/backends/saves/default/default-saves.cpp +++ b/backends/saves/default/default-saves.cpp @@ -36,7 +36,7 @@ #include #include -#if defined(UNIX) || defined(__SYMBIAN32__) +#if defined(UNIX) #include #endif @@ -46,8 +46,6 @@ #else #define DEFAULT_SAVE_PATH ".scummvm" #endif -#elif defined(__SYMBIAN32__) -#define DEFAULT_SAVE_PATH "Savegames" #endif DefaultSaveFileManager::DefaultSaveFileManager() { @@ -63,10 +61,6 @@ DefaultSaveFileManager::DefaultSaveFileManager() { savePath += "/" DEFAULT_SAVE_PATH; ConfMan.registerDefault("savepath", savePath); } -#elif defined(__SYMBIAN32__) - savePath = Symbian::GetExecutablePath(); - savePath += DEFAULT_SAVE_PATH "\\"; - ConfMan.registerDefault("savepath", savePath); #endif #endif // #ifdef DEFAULT_SAVE_PATH } @@ -95,7 +89,7 @@ void DefaultSaveFileManager::checkPath(const Common::FilesystemNode &dir) { const Common::String path = dir.getPath(); clearError(); -#if defined(UNIX) || defined(__SYMBIAN32__) +#if defined(UNIX) struct stat sb; // Check whether the dir exists @@ -107,11 +101,9 @@ void DefaultSaveFileManager::checkPath(const Common::FilesystemNode &dir) { case EACCES: setError(SFM_DIR_ACCESS, "Search or write permission denied: "+path); break; -#if !defined(__SYMBIAN32__) case ELOOP: setError(SFM_DIR_LOOP, "Too many symbolic links encountered while traversing the path: "+path); break; -#endif case ENAMETOOLONG: setError(SFM_DIR_NAMETOOLONG, "The path name is too long: "+path); break; @@ -129,11 +121,9 @@ void DefaultSaveFileManager::checkPath(const Common::FilesystemNode &dir) { case EMLINK: setError(SFM_DIR_LINKMAX, "The link count of the parent directory would exceed {LINK_MAX}: "+path); break; -#if !defined(__SYMBIAN32__) case ELOOP: setError(SFM_DIR_LOOP, "Too many symbolic links encountered while traversing the path: "+path); break; -#endif case ENAMETOOLONG: setError(SFM_DIR_NAMETOOLONG, "The path name is too long: "+path); break; -- cgit v1.2.3