tools: env: Refactor write path of flash_io()

Extract write path of flash_io() into a separate function. This patch
should be a functional no-op.

Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Reviewed-by: Stefano Babic <sbabic@denx.de>
This commit is contained in:
Alex Kiernan 2018-03-09 12:13:01 +00:00 committed by Tom Rini
parent 2deb3cac08
commit 899b5338fa
1 changed files with 50 additions and 42 deletions

36
tools/env/fw_env.c vendored
View File

@ -1225,25 +1225,15 @@ static int flash_read(int fd)
return 0; return 0;
} }
static int flash_io(int mode) static int flash_io_write(int fd_current)
{ {
int fd_current, fd_target, rc, dev_target; int fd_target, rc, dev_target;
/* dev_current: fd_current, erase_current */
fd_current = open(DEVNAME(dev_current), mode);
if (fd_current < 0) {
fprintf(stderr,
"Can't open %s: %s\n",
DEVNAME(dev_current), strerror(errno));
return -1;
}
if (mode == O_RDWR) {
if (have_redund_env) { if (have_redund_env) {
/* switch to next partition for writing */ /* switch to next partition for writing */
dev_target = !dev_current; dev_target = !dev_current;
/* dev_target: fd_target, erase_target */ /* dev_target: fd_target, erase_target */
fd_target = open(DEVNAME(dev_target), mode); fd_target = open(DEVNAME(dev_target), O_RDWR);
if (fd_target < 0) { if (fd_target < 0) {
fprintf(stderr, fprintf(stderr,
"Can't open %s: %s\n", "Can't open %s: %s\n",
@ -1279,11 +1269,29 @@ static int flash_io(int mode)
rc = -1; rc = -1;
} }
} }
exit:
return rc;
}
static int flash_io(int mode)
{
int fd_current, rc;
/* dev_current: fd_current, erase_current */
fd_current = open(DEVNAME(dev_current), mode);
if (fd_current < 0) {
fprintf(stderr,
"Can't open %s: %s\n",
DEVNAME(dev_current), strerror(errno));
return -1;
}
if (mode == O_RDWR) {
rc = flash_io_write(fd_current);
} else { } else {
rc = flash_read(fd_current); rc = flash_read(fd_current);
} }
exit:
if (close(fd_current)) { if (close(fd_current)) {
fprintf(stderr, fprintf(stderr,
"I/O error on %s: %s\n", "I/O error on %s: %s\n",