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; }
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; }
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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }