X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/b0568922d20d7c19025f371fa9066044777d7b5b..HEAD:/vtoycli/vtoygpt.c diff --git a/vtoycli/vtoygpt.c b/vtoycli/vtoygpt.c index 1d9d262..f0e2e62 100644 --- a/vtoycli/vtoygpt.c +++ b/vtoycli/vtoygpt.c @@ -191,23 +191,26 @@ int vtoygpt_main(int argc, char **argv) Name = pMainGptInfo->PartTbl[1].Name; if (Name[0] == 'V' && Name[1] == 'T' && Name[2] == 'O' && Name[3] == 'Y') { - pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR; - pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl)); - pMainGptInfo->Head.Crc = 0; - pMainGptInfo->Head.Crc = VtoyCrc32(&pMainGptInfo->Head, pMainGptInfo->Head.Length); - - pBackGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR; - pBackGptInfo->Head.PartTblCrc = VtoyCrc32(pBackGptInfo->PartTbl, sizeof(pBackGptInfo->PartTbl)); - pBackGptInfo->Head.Crc = 0; - pBackGptInfo->Head.Crc = VtoyCrc32(&pBackGptInfo->Head, pBackGptInfo->Head.Length); - - lseek(fd, 512, SEEK_SET); - write(fd, (UINT8 *)pMainGptInfo + 512, sizeof(VTOY_GPT_INFO) - 512); - - lseek(fd, DiskSize - 33 * 512, SEEK_SET); - write(fd, pBackGptInfo, sizeof(VTOY_BK_GPT_INFO)); - - fsync(fd); + if (pMainGptInfo->PartTbl[1].Attr != VENTOY_EFI_PART_ATTR) + { + pMainGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR; + pMainGptInfo->Head.PartTblCrc = VtoyCrc32(pMainGptInfo->PartTbl, sizeof(pMainGptInfo->PartTbl)); + pMainGptInfo->Head.Crc = 0; + pMainGptInfo->Head.Crc = VtoyCrc32(&pMainGptInfo->Head, pMainGptInfo->Head.Length); + + pBackGptInfo->PartTbl[1].Attr = VENTOY_EFI_PART_ATTR; + pBackGptInfo->Head.PartTblCrc = VtoyCrc32(pBackGptInfo->PartTbl, sizeof(pBackGptInfo->PartTbl)); + pBackGptInfo->Head.Crc = 0; + pBackGptInfo->Head.Crc = VtoyCrc32(&pBackGptInfo->Head, pBackGptInfo->Head.Length); + + lseek(fd, 512, SEEK_SET); + write(fd, (UINT8 *)pMainGptInfo + 512, sizeof(VTOY_GPT_INFO) - 512); + + lseek(fd, DiskSize - 33 * 512, SEEK_SET); + write(fd, pBackGptInfo, sizeof(VTOY_BK_GPT_INFO)); + + fsync(fd); + } } }