mkswap: set variable only when it's value is known

Avoid updating ctl->pagesize twice when user does specify page size.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
Sami Kerola 2014-11-02 20:26:30 +00:00 committed by Karel Zak
parent 6af1822752
commit 076ba5a696
1 changed files with 8 additions and 10 deletions

View File

@ -90,23 +90,21 @@ struct mkswap_control {
static void
init_signature_page(struct mkswap_control *ctl)
{
int kernel_pagesize = ctl->pagesize = getpagesize();
const int kernel_pagesize = getpagesize();
if (ctl->user_pagesize) {
if (ctl->user_pagesize < 0 || !is_power_of_2(ctl->user_pagesize) ||
(size_t) ctl->user_pagesize < sizeof(struct swap_header_v1_2) + 10)
errx(EXIT_FAILURE,
_("Bad user-specified page size %u"),
ctl->user_pagesize);
ctl->pagesize = ctl->user_pagesize;
}
if (ctl->user_pagesize && ctl->user_pagesize != kernel_pagesize)
warnx(_("Using user-specified page size %d, "
_("Bad user-specified page size %u"),
ctl->user_pagesize);
if (ctl->user_pagesize != kernel_pagesize)
warnx(_("Using user-specified page size %d, "
"instead of the system value %d"),
ctl->pagesize, kernel_pagesize);
ctl->pagesize = ctl->user_pagesize;
} else
ctl->pagesize = kernel_pagesize;
ctl->signature_page = (unsigned long *) xcalloc(1, ctl->pagesize);
}