num, sig, pwr,
sig ? "relative" : "absolute"));
if (num >= low && num <= high) {
- if (sig)
+ if (sig && pwr)
fdisk_ask_number_set_relative(ask, 1);
return fdisk_ask_number_set_result(ask, num);
}
stop = fdisk_ask_number_get_result(ask);
isrel = fdisk_ask_number_is_relative(ask);
- if (isrel && stop == start) {
- fdisk_warnx(cxt, _("Value out of range."));
- continue; /* +0 */
- }
- break;
+ if (stop >= start && stop <= limit)
+ break;
+
+ fdisk_warnx(cxt, _("Value out of range."));
}
if (fdisk_use_cylinders(cxt)) {
user_l = fdisk_ask_number_get_result(ask);
if (fdisk_ask_number_is_relative(ask)) {
- if (user_l == user_f) {
- fdisk_warnx(cxt, _("Value out of range."));
- continue; /* +0 */
- }
-
user_l = fdisk_align_lba_in_range(cxt, user_l, user_f, dflt_l);
if (user_l > user_f)
user_l -= 1;
if (user_l >= user_f && user_l <= disk_l)
break;
+
+ fdisk_warnx(cxt, _("Value out of range."));
}
}