version 1.37, 2003/06/03 11:54:48 |
version 1.38, 2003/06/12 16:48:43 |
Line 105 struct part_id { |
|
Line 105 struct part_id { |
|
|
|
int dosptyp_nbsd = MBR_PTYPE_NETBSD; |
int dosptyp_nbsd = MBR_PTYPE_NETBSD; |
|
|
static int get_mapping (struct mbr_partition *, int, int *, int *, int *, |
static int get_mapping(struct mbr_partition *, int, int *, int *, int *, |
long *absolute); |
long *); |
static void convert_mbr_chs (int, int, int, u_int8_t *, u_int8_t *, |
static void convert_mbr_chs(int, int, int, u_int8_t *, u_int8_t *, |
u_int8_t *, u_int32_t); |
u_int8_t *, u_int32_t); |
|
|
#ifdef BOOTSEL |
#ifdef BOOTSEL |
Line 115 static int defbootselpart, defbootseldis |
|
Line 115 static int defbootselpart, defbootseldis |
|
struct mbr_bootsel *mbs; |
struct mbr_bootsel *mbs; |
#endif |
#endif |
|
|
#ifdef notdef |
|
/* |
|
* First, geometry stuff... |
|
*/ |
|
int |
|
check_geom() |
|
{ |
|
|
|
return bcyl <= 1024 && bsec < 64 && bcyl > 0 && bhead > 0 && bsec > 0; |
|
} |
|
#endif |
|
|
|
/* |
/* |
* get C/H/S geometry from user via menu interface and |
* get C/H/S geometry from user via menu interface and |
* store in globals. |
* store in globals. |
*/ |
*/ |
void |
void |
set_bios_geom(cyl, head, sec) |
set_bios_geom(int cyl, int head, int sec) |
int cyl, head, sec; |
|
{ |
{ |
char res[80]; |
char res[80]; |
|
|
Line 153 set_bios_geom(cyl, head, sec) |
|
Line 140 set_bios_geom(cyl, head, sec) |
|
|
|
#ifdef notdef |
#ifdef notdef |
void |
void |
disp_cur_geom() |
disp_cur_geom(void) |
{ |
{ |
|
|
msg_display_add(MSG_realgeom, dlcyl, dlhead, dlsec); |
msg_display_add(MSG_realgeom, dlcyl, dlhead, dlsec); |
|
|
* Then, the partition stuff... |
* Then, the partition stuff... |
*/ |
*/ |
int |
int |
otherpart(id) |
otherpart(int id) |
int id; |
|
{ |
{ |
|
|
return (id != 0 && id != MBR_PTYPE_386BSD && id != MBR_PTYPE_NETBSD); |
return (id != 0 && id != MBR_PTYPE_386BSD && id != MBR_PTYPE_NETBSD); |
} |
} |
|
|
int |
int |
ourpart(id) |
ourpart(int id) |
int id; |
|
{ |
{ |
|
|
return (id == MBR_PTYPE_386BSD || id == MBR_PTYPE_NETBSD); |
return (id == MBR_PTYPE_386BSD || id == MBR_PTYPE_NETBSD); |
|
|
* Let user change incore Master Boot Record partitions via menu. |
* Let user change incore Master Boot Record partitions via menu. |
*/ |
*/ |
int |
int |
edit_mbr(mbr) |
edit_mbr(struct mbr_sector *mbr) |
struct mbr_sector *mbr; |
|
{ |
{ |
int i, j; |
int i, j; |
|
|
Line 350 edit_ptn_bounds(void) |
|
Line 334 edit_ptn_bounds(void) |
|
if (sizemult > 1 && start < bsec) |
if (sizemult > 1 && start < bsec) |
start = bsec; |
start = bsec; |
msg_table_add(MSG_mbrpart_size_special); |
msg_table_add(MSG_mbrpart_size_special); |
msg_prompt_add (MSG_size, NULL, buf, 40); |
msg_prompt_add(MSG_size, NULL, buf, 40); |
inp = atoi(buf); |
inp = atoi(buf); |
/* |
/* |
* -0, -1, -2, -3: until start of part # given |
* -0, -1, -2, -3: until start of part # given |
Line 376 edit_ptn_bounds(void) |
|
Line 360 edit_ptn_bounds(void) |
|
} |
} |
|
|
int |
int |
partsoverlap(part, i, j) |
partsoverlap(struct mbr_partition *part, int i, int j) |
struct mbr_partition *part; |
|
int i; |
|
int j; |
|
{ |
{ |
|
|
/* |
/* |
Line 401 partsoverlap(part, i, j) |
|
Line 382 partsoverlap(part, i, j) |
|
} |
} |
|
|
char * |
char * |
get_partname(i) |
get_partname(int i) |
int i; |
|
{ |
{ |
int j; |
int j; |
static char unknown[32]; |
static char unknown[32]; |
|
|
} |
} |
|
|
void |
void |
disp_cur_part(part, sel, disp) |
disp_cur_part(struct mbr_partition *part, int sel, int disp) |
struct mbr_partition *part; |
|
int sel; |
|
int disp; |
|
{ |
{ |
int i, start, stop, rsize, rend; |
int i, start, stop, rsize, rend; |
|
|
Line 452 disp_cur_part(part, sel, disp) |
|
Line 429 disp_cur_part(part, sel, disp) |
|
} |
} |
|
|
int |
int |
read_mbr(disk, mbr, len) |
read_mbr(const char *disk, mbr_sector_t *mbr, size_t len) |
const char *disk; |
|
mbr_sector_t *mbr; |
|
size_t len; |
|
{ |
{ |
char diskpath[MAXPATHLEN]; |
char diskpath[MAXPATHLEN]; |
int fd, i; |
int fd, i; |
Line 496 read_mbr(disk, mbr, len) |
|
Line 470 read_mbr(disk, mbr, len) |
|
} |
} |
|
|
int |
int |
write_mbr(disk, mbr, len, convert) |
write_mbr(const char *disk, mbr_sector_t *mbr, size_t len, int convert) |
const char *disk; |
|
mbr_sector_t *mbr; |
|
size_t len; |
|
int convert; |
|
{ |
{ |
char diskpath[MAXPATHLEN]; |
char diskpath[MAXPATHLEN]; |
int fd, i, ret = 0; |
int fd, i, ret = 0; |
Line 551 write_mbr(disk, mbr, len, convert) |
|
Line 521 write_mbr(disk, mbr, len, convert) |
|
} |
} |
|
|
int |
int |
valid_mbr(mbr) |
valid_mbr(mbr_sector_t *mbr) |
mbr_sector_t *mbr; |
|
{ |
{ |
|
|
return (le_to_native16(mbr->mbr_signature) == MBR_MAGIC); |
return (le_to_native16(mbr->mbr_signature) == MBR_MAGIC); |
} |
} |
|
|
static void |
static void |
convert_mbr_chs(cyl, head, sec, cylp, headp, secp, relsecs) |
convert_mbr_chs(int cyl, int head, int sec, |
int cyl, head, sec; |
u_int8_t *cylp, u_int8_t *headp, u_int8_t *secp, |
u_int8_t *cylp, *headp, *secp; |
u_int32_t relsecs) |
u_int32_t relsecs; |
|
{ |
{ |
unsigned int tcyl, temp, thead, tsec; |
unsigned int tcyl, temp, thead, tsec; |
|
|
Line 593 convert_mbr_chs(cyl, head, sec, cylp, he |
|
Line 561 convert_mbr_chs(cyl, head, sec, cylp, he |
|
* device. |
* device. |
*/ |
*/ |
int |
int |
guess_biosgeom_from_mbr(mbr, cyl, head, sec) |
guess_biosgeom_from_mbr(mbr_sector_t *mbr, int *cyl, int *head, int *sec) |
mbr_sector_t *mbr; |
|
int *cyl, *head, *sec; |
|
{ |
{ |
struct mbr_partition *parts = &mbr->mbr_parts[0]; |
struct mbr_partition *parts = &mbr->mbr_parts[0]; |
int cylinders = -1, heads = -1, sectors = -1, i, j; |
int cylinders = -1, heads = -1, sectors = -1, i, j; |
Line 668 guess_biosgeom_from_mbr(mbr, cyl, head, |
|
Line 634 guess_biosgeom_from_mbr(mbr, cyl, head, |
|
} |
} |
|
|
static int |
static int |
get_mapping(parts, i, cylinder, head, sector, absolute) |
get_mapping(mbr_partition_t *parts, int i, |
struct mbr_partition *parts; |
int *cylinder, int *head, int *sector, long *absolute) |
int i, *cylinder, *head, *sector; |
|
long *absolute; |
|
{ |
{ |
struct mbr_partition *apart = &parts[i / 2]; |
struct mbr_partition *apart = &parts[i / 2]; |
|
|
Line 719 disp_bootsel(void) |
|
Line 683 disp_bootsel(void) |
|
void |
void |
edit_bootsel_entry(int ptn) |
edit_bootsel_entry(int ptn) |
{ |
{ |
|
|
if (part[ptn].mbrp_typ != 0) |
if (part[ptn].mbrp_typ != 0) |
msg_prompt(MSG_bootselitemname, mbs->mbrb_nametab[ptn], |
msg_prompt(MSG_bootselitemname, mbs->mbrb_nametab[ptn], |
mbs->mbrb_nametab[ptn], 8); |
mbs->mbrb_nametab[ptn], 8); |