www.pudn.com > bootany.zip > PREINST.C
#include#include "bootany.h" #define DISK_READ 2 #define DISK_WRITE 3 extern int bootio(int, char *); #define EMPTY 0 #define FAT_12 1 #define XENIX 2 #define FAT_16 4 #define EXTEND 5 #define BIGDOS 6 #define HPFS 7 #define NOVELL 0x64 #define PCIX 0x75 #define CP_M 0xDB #define BBT 0xFF #define StandardTable 0 #define BootAnyTable 1 main() { static char msg[] = "All bootable partitions have been re-validated\n"; static char msg1[] = "All bootable partitions have been validated\n"; char bootRecord[512]; int rc; int tableType = StandardTable; if ((rc = BOOTIO(DISK_READ, bootRecord)) == 0) { register BootData *bootInfo = (BootData *)(bootRecord + DataAddr); register PartitionEntry *part = bootInfo->partEntry; int i; for (i = 0; i < 4; ++i) { char type; char boot; if (part->bootIndicator == 0 || part->bootIndicator == (char)(0x80)) { type = part->systemId; boot = part->bootIndicator; } else { tableType = BootAnyTable; type = part->bootIndicator; boot = part->systemId; } if (boot == (char)(0x80)) { part->bootIndicator = boot; part->systemId = type; } ++part; } if (tableType == BootAnyTable) { if ((rc = BOOTIO(DISK_WRITE, bootRecord)) == 0) { printf(msg); } else { printf("Error updating boot record - rc = %d\n",rc); } } else { printf(msg1); } } else { printf("Error reading boot record - rc = %d\n",rc); } }