Пример #1
0
/*
 * Test whether the whole disk has BSD disk label magic.
 *
 * Note: often reformatting with DOS-type label leaves the BSD magic,
 * so this does not mean that there is a BSD disk label.
 */
static int
check_osf_label(void)
{
    if (xbsd_readlabel(NULL) == 0)
        return 0;
    return 1;
}
Пример #2
0
int
check_osf_label(void) {
    if (xbsd_readlabel (NULL, &xbsd_dlabel) == 0)
	return 0;
    osf_label = 1;
    return 1;
}
Пример #3
0
int
btrydev (char * dev) {
    if (xbsd_readlabel (NULL, &xbsd_dlabel) == 0)
	return -1;
    printf(_("\nBSD label for device: %s\n"), dev);
    xbsd_print_disklabel (0);
    return 0;
}
Пример #4
0
static int
bsd_trydev(const char * dev)
{
    if (xbsd_readlabel(NULL) == 0)
        return -1;
    printf("\nBSD label for device: %s\n", dev);
    xbsd_print_disklabel(0);
    return 0;
}
Пример #5
0
static void
bsd_select(void)
{
#if !defined(__alpha__)
    int t, ss;
    struct partition *p;

    for (t = 0; t < 4; t++) {
        p = get_part_table(t);
        if (p && is_bsd_partition_type(p->sys_ind)) {
            xbsd_part = p;
            xbsd_part_index = t;
            ss = get_start_sect(xbsd_part);
            if (ss == 0) {
                printf("Partition %s has invalid starting sector 0\n",
                       partname(disk_device, t+1, 0));
                return;
            }
            printf("Reading disklabel of %s at sector %u\n",
                   partname(disk_device, t+1, 0), ss + BSD_LABELSECTOR);
            if (xbsd_readlabel(xbsd_part) == 0) {
                if (xbsd_create_disklabel() == 0)
                    return;
                break;
            }
        }
    }

    if (t == 4) {
        printf("There is no *BSD partition on %s\n", disk_device);
        return;
    }

#elif defined(__alpha__)

    if (xbsd_readlabel(NULL) == 0)
        if (xbsd_create_disklabel() == 0)
            exit(EXIT_SUCCESS);

#endif

    while (1) {
        bb_putchar('\n');
        switch (tolower(read_nonempty("BSD disklabel command (m for help): "))) {
        case 'd':
            xbsd_delete_part();
            break;
        case 'e':
            xbsd_edit_disklabel();
            break;
        case 'i':
            xbsd_write_bootstrap();
            break;
        case 'l':
            xbsd_list_types();
            break;
        case 'n':
            xbsd_new_part();
            break;
        case 'p':
            xbsd_print_disklabel(0);
            break;
        case 'q':
            if (ENABLE_FEATURE_CLEAN_UP)
                close_dev_fd();
            exit(EXIT_SUCCESS);
        case 'r':
            return;
        case 's':
            xbsd_print_disklabel(1);
            break;
        case 't':
            xbsd_change_fstype();
            break;
        case 'u':
            change_units();
            break;
        case 'w':
            xbsd_write_disklabel();
            break;
#if !defined(__alpha__)
        case 'x':
            xbsd_link_part();
            break;
#endif
        default:
            bsd_menu();
            break;
        }
    }
}