X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/da746c608fc7acbb4c9763d08c97fcd9584b809b..6fbc08cfcbfdf97fa2457739f47dced84d857799:/vtoygpt/vtoygpt.c diff --git a/vtoygpt/vtoygpt.c b/vtoygpt/vtoygpt.c index 705f750..97e4f0f 100644 --- a/vtoygpt/vtoygpt.c +++ b/vtoygpt/vtoygpt.c @@ -244,7 +244,7 @@ int DumpGptInfo(VTOY_GPT_INFO *pGptInfo) return 0; } -#define VENTOY_EFI_PART_ATTR 0xC000000000000001ULL +#define VENTOY_EFI_PART_ATTR 0x8000000000000000ULL int main(int argc, const char **argv) { @@ -291,23 +291,26 @@ int main(int argc, const 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); + } } }