{'y', N_("change number of physical cylinders"), {0, SUN_LABEL}},
};
-int
-valid_part_table_flag(unsigned char *b) {
- return (b[510] == 0x55 && b[511] == 0xaa);
-}
-
sector_t get_nr_sects(struct partition *p) {
return read4_little_endian(p->size4);
}
extern int read_hex(struct systypes *sys);
extern void reread_partition_table(struct fdisk_context *cxt, int leave);
extern struct partition *get_part_table(int);
-extern int valid_part_table_flag(unsigned char *b);
extern unsigned int read_int(struct fdisk_context *cxt,
unsigned int low, unsigned int dflt,
unsigned int high, unsigned int base, char *mesg);
b[511] = 0xaa;
}
+int mbr_is_valid_magic(unsigned char *b)
+{
+ return (b[510] == 0x55 && b[511] == 0xaa);
+}
+
static unsigned int mbr_get_id(const unsigned char *b)
{
return read4_little_endian(&b[440]);
int i;
unsigned int h = 0, s = 0;
- if (!valid_part_table_flag(cxt->mbr))
+ if (!mbr_is_valid_magic(cxt->mbr))
return 0;
dos_init(cxt);
for (i = 3; i < partitions; i++) {
struct pte *pe = &ptes[i];
- if (!valid_part_table_flag(pe->sectorbuffer)) {
+ if (!mbr_is_valid_magic(pe->sectorbuffer)) {
fprintf(stderr,
_("Warning: invalid flag 0x%04x of partition "
"table %d will be corrected by w(rite)\n"),
extern void dos_new_partition(struct fdisk_context *cxt);
extern void dos_write_table(struct fdisk_context *cxt);
+extern int mbr_is_valid_magic(unsigned char *b);
+
#endif
#include "common.h"
#include "fdisk.h"
#include "fdisksgilabel.h"
+#include "fdiskdoslabel.h"
static int other_endian = 0;
static int debug = 0;
" > 33.8 GB.\n"), cxt->dev_path, cxt->geom.cylinders);
}
#endif
+ /*
+ * Convert old MBR to SGI label, make it DEPRECATED, this feature
+ * has to be handled in by any top-level fdisk command.
+ */
for (i = 0; i < 4; i++) {
old[i].sysid = 0;
- if (valid_part_table_flag(cxt->mbr)) {
+ if (mbr_is_valid_magic(cxt->mbr)) {
if (get_part_table(i)->sys_ind) {
old[i].sysid = get_part_table(i)->sys_ind;
old[i].start = get_start_sect(get_part_table(i));