Example #1
0
static TCHAR *
FindDataPath()
{
  if (is_altair() && is_embedded())
    /* hard-coded path for Altair */
    return _tcsdup(_T("\\NOR Flash"));

  if (is_android()) {
    /* XXX use Environment.getExternalStorageDirectory() */

#ifdef ANDROID
    /* hack for Samsung Galaxy S and Samsung Galaxy Tab (which has a
       build-in and an external SD card) */
    struct stat st;
    if (stat("/sdcard/external_sd", &st) == 0 &&
        (st.st_mode & S_IFDIR) != 0 &&
        fgrep("/proc/mounts", "/sdcard/external_sd "))
      return strdup("/sdcard/external_sd/XCSoarData");
#endif

    /* hard-coded path for Android */
    return _tcsdup(_T("/sdcard/XCSoarData"));
  }

#ifdef _WIN32_WCE
  /* if XCSoar was started from a flash disk, put the XCSoarData onto
     it, too */
  {
    TCHAR buffer[MAX_PATH];
    if (ModuleInFlash(NULL, buffer) != NULL) {
      _tcscat(buffer, _T(DIR_SEPARATOR_S));
      _tcscat(buffer, XCSDATADIR);
      if (Directory::Exists(buffer))
        return _tcsdup(buffer);
    }

    /* if a flash disk with XCSoarData exists, use it */
    if (ExistingDataOnFlash(buffer) != NULL)
      return _tcsdup(buffer);
  }
#endif

  {
    TCHAR buffer[MAX_PATH];
    const TCHAR *path = GetHomeDataPath(buffer);
    if (path != NULL)
      return _tcsdup(path);
  }

  return NULL;
}
Example #2
0
static TCHAR *
FindDataPath()
{
    if (is_altair())
        /* hard-coded path for Altair */
        return _tcsdup(_T("\\NOR Flash"));

    if (is_android())
        /* hard-coded path for Android */
        return _tcsdup(_T("/sdcard/XCSoarData"));

#ifdef _WIN32_WCE
    /* if XCSoar was started from a flash disk, put the XCSoarData onto
       it, too */
    {
        TCHAR buffer[MAX_PATH];
        if (ModuleInFlash(NULL, buffer) != NULL) {
            _tcscat(buffer, _T(DIR_SEPARATOR_S));
            _tcscat(buffer, XCSDATADIR);
            if (Directory::Exists(buffer))
                return _tcsdup(buffer);
        }

        /* if a flash disk with XCSoarData exists, use it */
        if (ExistingDataOnFlash(buffer) != NULL)
            return _tcsdup(buffer);
    }
#endif

    {
        TCHAR buffer[MAX_PATH];
        const TCHAR *path = GetHomeDataPath(buffer);
        if (path != NULL)
            return _tcsdup(path);
    }

    return NULL;
}