diff --git a/app/src/main/java/org/andbootmgr/app/CreatePartFlow.kt b/app/src/main/java/org/andbootmgr/app/CreatePartFlow.kt index 8d50de47..4a5011d4 100644 --- a/app/src/main/java/org/andbootmgr/app/CreatePartFlow.kt +++ b/app/src/main/java/org/andbootmgr/app/CreatePartFlow.kt @@ -273,7 +273,7 @@ private fun StartSdLess(c: CreatePartDataHolder) { if (c.freeSpace == null) { LaunchedEffect(Unit) { withContext(Dispatchers.IO) { - c.freeSpace = SDLessUtils.getFreeSpaceBytes() + c.freeSpace = SDLessUtils.getFreeSpaceBytes(c.vm.logic) } } LoadingCircle(stringResource(R.string.loading), modifier = Modifier.fillMaxSize()) diff --git a/app/src/main/java/org/andbootmgr/app/util/SDLessUtils.kt b/app/src/main/java/org/andbootmgr/app/util/SDLessUtils.kt index dabc8237..3fcf9091 100644 --- a/app/src/main/java/org/andbootmgr/app/util/SDLessUtils.kt +++ b/app/src/main/java/org/andbootmgr/app/util/SDLessUtils.kt @@ -4,10 +4,12 @@ import com.topjohnwu.superuser.Shell import com.topjohnwu.superuser.io.SuFile import org.andbootmgr.app.DeviceLogic import java.io.File +import kotlin.math.max object SDLessUtils { - fun getFreeSpaceBytes(): Long { - return 4L * 1024L * 1024L * 1024L // TODO + fun getFreeSpaceBytes(logic: DeviceLogic): Long { + val raw = Shell.cmd("stat -f ${logic.abmSdLessBootset} -c '%f:%S'").exec().out.joinToString("\n").split(":").map { it.trim().toLong() } + return max(raw[0] * raw[1] - 1024L * 1024L * 1024L, 0) } fun getSpaceUsageBytes(logic: DeviceLogic, fn: String): Long? {