Disk (Linux): replace all \\x20 to real charactors in disk label

This commit is contained in:
李通洲
2023-08-15 20:59:29 +08:00
parent 98b9ef74cf
commit ed9639c66b
+16
View File
@@ -132,6 +132,22 @@ static void detectName(FFDisk* disk, const FFstrbuf* device)
ffStrbufSetS(&basePath, "/dev/disk/by-partlabel/");
detectNameFromPath(disk, &deviceStat, &basePath);
}
// Basic\x20data\x20partition
for (uint32_t i = ffStrbufFirstIndexS(&disk->name, "\\x");
i != disk->name.length;
i = ffStrbufNextIndexS(&disk->name, i + 1, "\\x"))
{
uint32_t len = (uint32_t) strlen("\\x20");
if (disk->name.length >= len)
{
char bak = disk->name.chars[i + len];
disk->name.chars[i + len] = '\0';
disk->name.chars[i] = (char) strtoul(&disk->name.chars[i + 2], NULL, 16);
ffStrbufRemoveSubstr(&disk->name, i + 1, i + len);
disk->name.chars[i + 1] = bak;
}
}
}
#ifdef __ANDROID__