- __int64 value = a.hi;
- value <<= 32;
- value |= a.lo;
- __int64 value2 = b.hi;
- value2 <<= 32;
- value2 |= b.lo;
- value -= value2;
-
- if (value <= 0)
- return durationImmediate;
-
- __int64 frac = value % g_appTime.counterRate;
- value /= g_appTime.counterRate;
-
- Duration time;
-
- if (value == 0)
- {
- frac *= -1000000;
- frac /= g_appTime.counterRate;
- time = (Duration)frac;
- }
- else
- {
- frac *= 1000;
- frac /= g_appTime.counterRate;
- value *= 1000;
- value += frac;
- time = (Duration)value;
- }
-
- 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;
- char **rc;
- char **i;
- DIR *dirp;
-
- //if (PHYSFS_exists(buf))
- 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);
+ __int64 value = a.hi;
+ value <<= 32;
+ value |= a.lo;
+ __int64 value2 = b.hi;
+ value2 <<= 32;
+ value2 |= b.lo;
+ value -= value2;
+
+ if (value <= 0)
+ return durationImmediate;
+
+ __int64 frac = value % g_appTime.counterRate;
+ value /= g_appTime.counterRate;
+
+ Duration time;
+
+ if (value == 0) {
+ frac *= -1000000;
+ frac /= g_appTime.counterRate;
+ time = (Duration)frac;
+ } else {
+ frac *= 1000;
+ frac /= g_appTime.counterRate;
+ value *= 1000;
+ value += frac;
+ time = (Duration)value;