예제 #1
0
파일: bsd.c 프로젝트: Berrrry/util-linux
int fdisk_bsd_edit_disklabel(struct fdisk_context *cxt)
{
    struct bsd_disklabel *d = self_disklabel(cxt);
    uintmax_t res;

#if defined (__alpha__) || defined (__ia64__)
    if (fdisk_ask_number(cxt, DEFAULT_SECTOR_SIZE, d->d_secsize,
                         UINT32_MAX, _("bytes/sector"), &res) == 0)
        d->d_secsize = res;

    d->d_nsectors = ask_uint32(cxt, d->d_nsectors, _("sectors/track"));
    d->d_ntracks = ask_uint32(cxt, d->d_ntracks, _("tracks/cylinder"));
    d->d_ncylinders = ask_uint32(cxt, d->d_ncylinders  ,_("cylinders"));
#endif
    if (fdisk_ask_number(cxt, 1, d->d_nsectors * d->d_ntracks,
                         d->d_nsectors * d->d_ntracks,
                         _("sectors/cylinder"), &res) == 0)
        d->d_secpercyl = res;

    d->d_rpm = ask_uint16(cxt, d->d_rpm, _("rpm"));
    d->d_interleave = ask_uint16(cxt, d->d_interleave, _("interleave"));
    d->d_trackskew = ask_uint16(cxt, d->d_trackskew, _("trackskew"));
    d->d_cylskew = ask_uint16(cxt, d->d_cylskew, _("cylinderskew"));

    d->d_headswitch = ask_uint32(cxt, d->d_headswitch, _("headswitch"));
    d->d_trkseek = ask_uint32(cxt, d->d_trkseek, _("track-to-track seek"));

    d->d_secperunit = d->d_secpercyl * d->d_ncylinders;
    return 0;
}
예제 #2
0
파일: sun.c 프로젝트: ArakniD/util-linux
static void ask_geom(struct fdisk_context *cxt)
{
	uintmax_t res;

	assert(cxt);

	if (fdisk_ask_number(cxt, 1, 1, 1024, _("Heads"), &res) == 0)
		cxt->geom.heads = res;
	if (fdisk_ask_number(cxt, 1, 1, 1024, _("Sectors/track"), &res) == 0)
		cxt->geom.sectors = res;
	if (fdisk_ask_number(cxt, 1, 1, USHRT_MAX, _("Cylinders"), &res) == 0)
		cxt->geom.cylinders = res;
}
예제 #3
0
파일: bsd.c 프로젝트: Berrrry/util-linux
static uint16_t ask_uint16(struct fdisk_context *cxt,
                           uint16_t dflt, char *mesg)
{
    uintmax_t res;

    if (fdisk_ask_number(cxt, min(dflt, (uint16_t) 1),
                         dflt, UINT16_MAX, mesg, &res) == 0)
        return res;
    return dflt;
}
예제 #4
0
파일: sun.c 프로젝트: ArakniD/util-linux
/**
 * fdisk_sun_set_pcylcount
 * @cxt: context
 *
 * Sets number of physical cylinders. This function uses libfdisk Ask API for
 * dialog with user.
 *
 * Returns: 0 on success, <0 on error.
 */
int fdisk_sun_set_pcylcount(struct fdisk_context *cxt)
{
	struct sun_disklabel *sunlabel = self_disklabel(cxt);
	uintmax_t res;
	int rc = fdisk_ask_number(cxt, 0,			/* low */
			be16_to_cpu(sunlabel->pcyl),		/* default */
			USHRT_MAX,				/* high */
			_("Number of physical cylinders"),	/* query */
			&res);					/* result */
	if (!rc)
		return rc;
	sunlabel->pcyl = cpu_to_be16(res);
	return 0;
}
예제 #5
0
파일: sun.c 프로젝트: ArakniD/util-linux
/**
 * fdisk_sun_set_rspeed
 * @cxt: context
 *
 * Sets rotation speed. This function uses libfdisk Ask API for dialog with
 * user.
 *
 * Returns: 0 on success, <0 on error.
 */
int fdisk_sun_set_rspeed(struct fdisk_context *cxt)
{
	struct sun_disklabel *sunlabel = self_disklabel(cxt);
	uintmax_t res;
	int rc = fdisk_ask_number(cxt, 1,			/* low */
			be16_to_cpu(sunlabel->rpm),		/* default */
			USHRT_MAX,				/* high */
			_("Rotation speed (rpm)"),		/* query */
			&res);					/* result */
	if (rc)
		return rc;
	sunlabel->rpm = cpu_to_be16(res);
	return 0;
}
예제 #6
0
파일: sun.c 프로젝트: ArakniD/util-linux
/**
 * fdisk_sun_set_ilfact:
 * @cxt: context
 *
 * Sets interleave factor. This function uses libfdisk Ask API for dialog with
 * user.
 *
 * Returns: 0 on success, <0 on error.
 */
int fdisk_sun_set_ilfact(struct fdisk_context *cxt)
{
	struct sun_disklabel *sunlabel = self_disklabel(cxt);
	uintmax_t res;
	int rc = fdisk_ask_number(cxt, 1,			/* low */
			be16_to_cpu(sunlabel->intrlv),		/* default */
			32,					/* high */
			_("Interleave factor"),	/* query */
			&res);					/* result */
	if (rc)
		return rc;
	sunlabel->intrlv = cpu_to_be16(res);
	return 0;
}
예제 #7
0
파일: sun.c 프로젝트: ArakniD/util-linux
/**
 * fdisk_sun_set_xcyl:
 * @cxt: context
 *
 * Sets number of extra sectors per cylinder. This function uses libfdisk Ask API
 * for dialog with user.
 *
 * Returns: 0 on success, <0 on error.
 */
int fdisk_sun_set_xcyl(struct fdisk_context *cxt)
{
	struct sun_disklabel *sunlabel = self_disklabel(cxt);
	uintmax_t res;
	int rc = fdisk_ask_number(cxt, 0,			/* low */
			be16_to_cpu(sunlabel->apc),		/* default */
			cxt->geom.sectors,			/* high */
			_("Extra sectors per cylinder"),	/* query */
			&res);					/* result */
	if (rc)
		return rc;
	sunlabel->apc = cpu_to_be16(res);
	return 0;
}
예제 #8
0
파일: sun.c 프로젝트: ArakniD/util-linux
/**
 * fdisk_sun_set_alt_cyl:
 * @cxt: context
 *
 * Sets number of alternative cylinders. This function uses libfdisk Ask API
 * for dialog with user.
 *
 * Returns: 0 on success, <0 on error.
 */
int fdisk_sun_set_alt_cyl(struct fdisk_context *cxt)
{
	struct sun_disklabel *sunlabel = self_disklabel(cxt);
	uintmax_t res;
	int rc = fdisk_ask_number(cxt, 0,			/* low */
			be16_to_cpu(sunlabel->acyl),		/* default */
			65535,					/* high */
			_("Number of alternate cylinders"),	/* query */
			&res);					/* result */
	if (rc)
		return rc;

	sunlabel->acyl = cpu_to_be16(res);
	return 0;
}