summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mfiutil/mfi_flash.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/mfiutil/mfi_flash.c')
-rw-r--r--usr.sbin/mfiutil/mfi_flash.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/usr.sbin/mfiutil/mfi_flash.c b/usr.sbin/mfiutil/mfi_flash.c
index 5dd93f1..87bdaca 100644
--- a/usr.sbin/mfiutil/mfi_flash.c
+++ b/usr.sbin/mfiutil/mfi_flash.c
@@ -72,16 +72,18 @@ display_firmware(struct mfi_info_component *comp)
fw_time_width, comp->build_time);
}
-static void
+static int
display_pending_firmware(int fd)
{
struct mfi_ctrl_info info;
struct mfi_info_component header;
+ int error;
u_int i;
if (mfi_ctrl_get_info(fd, &info, NULL) < 0) {
+ error = errno;
warn("Failed to get controller info");
- return;
+ return (error);
}
printf("mfi%d Pending Firmware Images:\n", mfi_unit);
@@ -97,6 +99,8 @@ display_pending_firmware(int fd)
display_firmware(&header);
for (i = 0; i < info.pending_image_component_count; i++)
display_firmware(&info.pending_image_component[i]);
+
+ return (0);
}
static void
@@ -117,7 +121,7 @@ flash_adapter(int ac, char **av)
size_t nread;
char *buf;
struct stat sb;
- int fd, flash;
+ int error, fd, flash;
uint8_t mbox[4], status;
if (ac != 2) {
@@ -127,13 +131,15 @@ flash_adapter(int ac, char **av)
flash = open(av[1], O_RDONLY);
if (flash < 0) {
+ error = errno;
warn("flash: Failed to open %s", av[1]);
- return (errno);
+ return (error);
}
if (fstat(flash, &sb) < 0) {
+ error = errno;
warn("fstat(%s)", av[1]);
- return (errno);
+ return (error);
}
if (sb.st_size % 1024 != 0 || sb.st_size > 0x7fffffff) {
warnx("Invalid flash file size");
@@ -142,8 +148,9 @@ flash_adapter(int ac, char **av)
fd = mfi_open(mfi_unit);
if (fd < 0) {
+ error = errno;
warn("mfi_open");
- return (errno);
+ return (error);
}
/* First, ask the firmware to allocate space for the flash file. */
@@ -190,10 +197,10 @@ flash_adapter(int ac, char **av)
return (ENXIO);
}
printf("finished\n");
- display_pending_firmware(fd);
+ error = display_pending_firmware(fd);
close(fd);
- return (0);
+ return (error);
}
MFI_COMMAND(top, flash, flash_adapter);
OpenPOWER on IntegriCloud