diff options
author | jhb <jhb@FreeBSD.org> | 2010-10-26 19:11:09 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2010-10-26 19:11:09 +0000 |
commit | ab04f918b77c07762793bcfd5fa21844569f68e5 (patch) | |
tree | e36599632f0916c8cd644998c49555ca4f9f9161 /usr.sbin/mfiutil/mfi_flash.c | |
parent | c6fcb4db70476854aa1936d8e3d495b3add0d19a (diff) | |
download | FreeBSD-src-ab04f918b77c07762793bcfd5fa21844569f68e5.zip FreeBSD-src-ab04f918b77c07762793bcfd5fa21844569f68e5.tar.gz |
- Save errno values before calling warn(3) so that errors are correctly
reported.
- Use powerof2() from <sys/param.h> rather than a copy and paste version.
Submitted by: gcooper
MFC after: 1 week
Diffstat (limited to 'usr.sbin/mfiutil/mfi_flash.c')
-rw-r--r-- | usr.sbin/mfiutil/mfi_flash.c | 23 |
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); |