]> git.jsancho.org Git - lugaru.git/blobdiff - Source/MacCompatibility.cpp
Trying to add implementations for MacOS and Windows
[lugaru.git] / Source / MacCompatibility.cpp
index 1777791269b6c84a174e369cbbc5b881bb57844d..6e47632f0a0260b1ea5c66b54aaac00b7ed7f311 100644 (file)
@@ -116,126 +116,3 @@ Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b)
 
     return time;
 }
-
-
-#if PLATFORM_UNIX
-#include <sys/types.h>
-#include <pwd.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <dirent.h>
-
-// some but not all of this is code from PhysicsFS: http://icculus.org/physfs/
-//  the zlib license on physfs allows this cut-and-pasting.
-static int locateOneElement(char *buf)
-{
-    char *ptr;
-    DIR *dirp;
-
-    if (access(buf, F_OK) == 0)
-        return(1);  /* quick rejection: exists in current case. */
-
-    ptr = strrchr(buf, '/');  /* find entry at end of path. */
-    if (ptr == NULL) {
-        dirp = opendir(".");
-        ptr = buf;
-    } /* if */
-    else {
-        *ptr = '\0';
-        dirp = opendir(buf);
-        *ptr = '/';
-        ptr++;  /* point past dirsep to entry itself. */
-    } /* else */
-
-    struct dirent *dent;
-    while ((dent = readdir(dirp)) != NULL) {
-        if (strcasecmp(dent->d_name, ptr) == 0) {
-            strcpy(ptr, dent->d_name); /* found a match. Overwrite with this case. */
-            closedir(dirp);
-            return(1);
-        } /* if */
-    } /* for */
-
-    /* no match at all... */
-    closedir(dirp);
-    return(0);
-} /* locateOneElement */
-
-
-static inline const char *getUserDirByUID(void)
-{
-    struct passwd *pw = getpwuid(getuid());
-    if (pw != NULL)
-        return(pw->pw_dir);
-    return(NULL);
-} /* getUserDirByUID */
-
-
-static inline const char *getPrefPath(void)
-{
-    static char *prefpath = NULL;
-    if (prefpath == NULL) {
-        const char *homedir = getenv("HOME");
-        if (homedir == NULL)
-            homedir = getUserDirByUID();
-        if (homedir == NULL)
-            homedir = ".";  // oh well.
-
-#if (defined(__APPLE__) && defined(__MACH__))
-        const char *PREFPATHNAME = "Library/Application Support/Lugaru";
-#else
-        const char *PREFPATHNAME = ".lugaru";
-#endif
-        size_t len = strlen(homedir) + strlen(PREFPATHNAME) + 2;
-        prefpath = new char[len];
-        snprintf(prefpath, len, "%s/%s", homedir, PREFPATHNAME);
-    }
-    return(prefpath);
-}
-
-static int locateCorrectCase(char *buf, bool makedirs)
-{
-    int rc;
-    char *ptr = buf;
-
-    while (ptr = strchr(ptr + 1, '/')) {
-        *ptr = '\0';  /* block this path section off */
-        rc = locateOneElement(buf);
-        if (!rc) {
-            if (makedirs)  /* normal if we're writing; build dirs! */
-                mkdir(buf, S_IRWXU);
-            else {
-                *ptr = '/'; /* restore path separator */
-                return(-2);  /* missing element in path. */
-            } /* else */
-        } /* if */
-        *ptr = '/'; /* restore path separator */
-    } /* while */
-
-    /* check final element... */
-    return(locateOneElement(buf) ? 0 : -1);
-}
-
-
-static int locateCorrectFile(char *buf, const char *mode)
-{
-    if (*buf == '\0')
-        return(0);  /* Uh...I guess that's failure. */
-
-    assert((mode[0] == 'w') || (mode[0] == 'r'));
-
-    bool iswriting = (mode[0] == 'w');
-    const char *prefpath = getPrefPath();
-    size_t len = strlen(buf) + strlen(prefpath) + 2;
-    char *prefpathfile = (char *) alloca(len);
-    snprintf(prefpathfile, len, "%s/%s", prefpath, buf);
-
-    int rc = locateCorrectCase(prefpathfile, iswriting);  /* favor prefpath. */
-    if ( (rc == 0) || ((rc == -1) && (iswriting)) ) // found or create?
-        strcpy(buf, prefpathfile);
-    else if ((rc < 0) && (!iswriting))  /* not writing? Try game dir... */
-        rc = locateCorrectCase(buf, iswriting);
-
-    return(rc);
-} /* locateCorrectFile */
-#endif