]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - vtoycli/vtoygpt.c
1.1.07 release
[Ventoy.git] / vtoycli / vtoygpt.c
index 1d9d262161baff2ef207afb85b7f1454eaf7e2c2..f0e2e62a74fc2e09e6eb72cc64972a54ef67bfb3 100644 (file)
@@ -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);
+            }
         }
     }