Volume* volume_for_path(const char* path) {
    char search_path[255];

	if (strcmp(path, "/sdcard") == 0) {
		if (DataManager_GetIntValue(TW_HAS_INTERNAL) == 1 && DataManager_GetIntValue(TW_HAS_DATA_MEDIA) == 1) {
			if (DataManager_GetIntValue(TW_HAS_EXTERNAL) == 0)
				ui_print("Unable to mount USB storage due to internal storage being in /data/media and no external storage available.\n");
			else
				strcpy(search_path, DataManager_GetStrValue(TW_EXTERNAL_MOUNT));
		} else
			strcpy(search_path, DataManager_GetCurrentStorageMount());
	} else
		strcpy(search_path, path);

	int i;
    for (i = 0; i < num_volumes; ++i) {
        Volume* v = device_volumes+i;
        int len = strlen(v->mount_point);
        if (strncmp(search_path, v->mount_point, len) == 0 &&
            (search_path[len] == '\0' || search_path[len] == '/')) {
            return v;
        }
    }
    return NULL;
}
Exemple #2
0
int unmount_current_storage(void) {
	char mount_point[255];

	strcpy(mount_point, DataManager_GetCurrentStorageMount());

	return ensure_path_unmounted(mount_point);
}