summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2013-05-02 14:54:55 +0200
committerKarel Zak <kzak@redhat.com>2013-09-16 16:46:54 +0200
commit0d75581e441ebcc56147500236cfdeca54c1a23c (patch)
tree1421dbeed6f35c0423e18dfc064fd776e7682c3f
parentaec8d8834968b472d8986e1299f3d7dda76db5ea (diff)
downloadutil-linux-0d75581e441ebcc56147500236cfdeca54c1a23c.tar.gz
libfdisk: add fdisk_scround()
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--fdisks/fdisksunlabel.c36
-rw-r--r--libfdisk/src/alignment.c7
-rw-r--r--libfdisk/src/fdiskP.h2
-rw-r--r--libfdisk/src/utils.c1
4 files changed, 27 insertions, 19 deletions
diff --git a/fdisks/fdisksunlabel.c b/fdisks/fdisksunlabel.c
index 9fc06a94..864a8b5a 100644
--- a/fdisks/fdisksunlabel.c
+++ b/fdisks/fdisksunlabel.c
@@ -513,9 +513,9 @@ static int sun_add_partition(
fdisk_ask_number_set_default(ask, 0); /* default */
fdisk_ask_number_set_high(ask, 0); /* maximal */
} else {
- fdisk_ask_number_set_low(ask, scround(cxt, start)); /* minimal */
- fdisk_ask_number_set_default(ask, scround(cxt, start)); /* default */
- fdisk_ask_number_set_high(ask, scround(cxt, stop)); /* maximal */
+ fdisk_ask_number_set_low(ask, fdisk_scround(cxt, start)); /* minimal */
+ fdisk_ask_number_set_default(ask, fdisk_scround(cxt, start)); /* default */
+ fdisk_ask_number_set_high(ask, fdisk_scround(cxt, stop)); /* maximal */
}
rc = fdisk_do_ask(cxt, ask);
first = fdisk_ask_number_get_result(ask);
@@ -586,20 +586,20 @@ and is of type `Whole disk'"));
fdisk_ask_set_type(ask, FDISK_ASKTYPE_OFFSET);
if (whole_disk) {
- fdisk_ask_number_set_low(ask, scround(cxt, stop2)); /* minimal */
- fdisk_ask_number_set_default(ask, scround(cxt, stop2)); /* default */
- fdisk_ask_number_set_high(ask, scround(cxt, stop2)); /* maximal */
+ fdisk_ask_number_set_low(ask, fdisk_scround(cxt, stop2)); /* minimal */
+ fdisk_ask_number_set_default(ask, fdisk_scround(cxt, stop2)); /* default */
+ fdisk_ask_number_set_high(ask, fdisk_scround(cxt, stop2)); /* maximal */
fdisk_ask_number_set_base(ask, 0);
} else if (n == 2 && !first) {
- fdisk_ask_number_set_low(ask, scround(cxt, first)); /* minimal */
- fdisk_ask_number_set_default(ask, scround(cxt, stop2)); /* default */
- fdisk_ask_number_set_high(ask, scround(cxt, stop2)); /* maximal */
- fdisk_ask_number_set_base(ask, scround(cxt, first));
+ fdisk_ask_number_set_low(ask, fdisk_scround(cxt, first)); /* minimal */
+ fdisk_ask_number_set_default(ask, fdisk_scround(cxt, stop2)); /* default */
+ fdisk_ask_number_set_high(ask, fdisk_scround(cxt, stop2)); /* maximal */
+ fdisk_ask_number_set_base(ask, fdisk_scround(cxt, first));
} else {
- fdisk_ask_number_set_low(ask, scround(cxt, first)); /* minimal */
- fdisk_ask_number_set_default(ask, scround(cxt, stop)); /* default */
- fdisk_ask_number_set_high(ask, scround(cxt, stop)); /* maximal */
- fdisk_ask_number_set_base(ask, scround(cxt, first));
+ fdisk_ask_number_set_low(ask, fdisk_scround(cxt, first)); /* minimal */
+ fdisk_ask_number_set_default(ask, fdisk_scround(cxt, stop)); /* default */
+ fdisk_ask_number_set_high(ask, fdisk_scround(cxt, stop)); /* maximal */
+ fdisk_ask_number_set_base(ask, fdisk_scround(cxt, first));
}
if (fdisk_context_use_cylinders(cxt))
@@ -625,8 +625,8 @@ and is of type `Whole disk'"));
_("You haven't covered the whole disk with the 3rd partition, but your value\n"
"%d %s covers some other partition. Your entry has been changed\n"
"to %d %s"),
- scround(cxt, last), fdisk_context_get_unit(cxt, SINGULAR),
- scround(cxt, stop), fdisk_context_get_unit(cxt, SINGULAR));
+ fdisk_scround(cxt, last), fdisk_context_get_unit(cxt, SINGULAR),
+ fdisk_scround(cxt, stop), fdisk_context_get_unit(cxt, SINGULAR));
last = stop;
}
} else if (!whole_disk && last > stop)
@@ -742,9 +742,9 @@ static int sun_list_disklabel(struct fdisk_context *cxt)
flags & SUN_FLAG_UNMNT ? 'u' : ' ',
flags & SUN_FLAG_RONLY ? 'r' : ' ') > 0)
tt_line_set_data(ln, 1, p); /* flags */
- if (asprintf(&p, "%lu", scround(cxt, start)) > 0)
+ if (asprintf(&p, "%ju", (uintmax_t) fdisk_scround(cxt, start)) > 0)
tt_line_set_data(ln, 2, p); /* start */
- if (asprintf(&p, "%lu", scround(cxt, start + len)) > 0)
+ if (asprintf(&p, "%ju", (uintmax_t) fdisk_scround(cxt, start + len)) > 0)
tt_line_set_data(ln, 3, p); /* end */
if (asprintf(&p, "%lu%c",
(unsigned long) len / 2,
diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c
index ac44e73c..b4d3ee01 100644
--- a/libfdisk/src/alignment.c
+++ b/libfdisk/src/alignment.c
@@ -379,3 +379,10 @@ int fdisk_reset_alignment(struct fdisk_context *cxt)
cxt->grain, rc));
return rc;
}
+
+
+sector_t fdisk_scround(struct fdisk_context *cxt, sector_t num)
+{
+ sector_t un = fdisk_context_get_units_per_sector(cxt);
+ return (num + un - 1) / un;
+}
diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h
index ac490be0..4dd4db6c 100644
--- a/libfdisk/src/fdiskP.h
+++ b/libfdisk/src/fdiskP.h
@@ -291,6 +291,8 @@ extern int fdisk_context_display_details(struct fdisk_context *cxt);
/* alignment.c */
+extern sector_t fdisk_scround(struct fdisk_context *cxt, sector_t num);
+
extern sector_t fdisk_topology_get_first_lba(struct fdisk_context *cxt);
extern unsigned long fdisk_topology_get_grain(struct fdisk_context *cxt);
diff --git a/libfdisk/src/utils.c b/libfdisk/src/utils.c
index 9195b2b1..9a95ba24 100644
--- a/libfdisk/src/utils.c
+++ b/libfdisk/src/utils.c
@@ -46,7 +46,6 @@ int fdisk_read_firstsector(struct fdisk_context *cxt)
return 0;
}
-
/*
* Return allocated buffer with partition name
*/