dev->name = basename(devstr);
        err = open(devstr, flags);
        if (err < 0) {
-               perror(devstr);
+               nvme_show_perror(devstr);
                goto err_free;
        }
        dev->direct.fd = err;
 
        err = fstat(dev_fd(dev), &dev->direct.stat);
        if (err < 0) {
-               perror(devstr);
+               nvme_show_perror(devstr);
                goto err_close;
        }
        if (!is_chardev(dev) && !is_blkdev(dev)) {
-               nvme_show_error("%s is not a block or character device",
-                       devstr);
+               nvme_show_error("%s is not a block or character device", devstr);
                err = -ENODEV;
                goto err_close;
        }
 {
        if (optind >= argc) {
                errno = EINVAL;
-               perror(argv[0]);
+               nvme_show_perror(argv[0]);
                return -EINVAL;
        }
        return 0;
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("effects log page");
+               nvme_show_perror("effects log page");
 
 close_dev:
        while ((node = list_pop(&log_pages, nvme_effects_log_node_t, node))) {
 
        err = nvme_cli_identify_ctrl(dev, &ctrl);
        if (err < 0) {
-               perror("identify controller");
+               nvme_show_perror("identify controller");
                goto close_dev;
        } else if (err) {
                nvme_show_error("could not identify controller");
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("error log");
+               nvme_show_perror("error log");
+
        free(err_log);
+
 close_dev:
        dev_close(dev);
 ret:
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("supported capacity configuration list log");
+               nvme_show_perror("supported capacity configuration list log");
 
 close_dev:
        dev_close(dev);
        if (!cfg.namespace_id) {
                err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
                if (err < 0) {
-                       perror("get-namespace-id");
+                       nvme_show_perror("get-namespace-id");
                        goto close_dev;
                }
        }
        if (cfg.data_len) {
                buf = calloc(1, cfg.data_len);
                if (!buf) {
-                       perror("could not alloc memory for io mgmt receive data");
+                       nvme_show_perror("could not alloc memory for io mgmt receive data");
                        err = -ENOMEM;
                        goto close_dev;
                }
        if (cfg.file) {
                dfd = open(cfg.file, O_RDONLY);
                if (dfd < 0) {
-                       perror(cfg.file);
+                       nvme_show_perror(cfg.file);
                        goto free;
                }
        }
 
        err = read(dfd, buf, cfg.data_len);
        if (err < 0) {
-               perror("read");
+               nvme_show_perror("read");
                goto close_fd;
        }
 
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("io-mgmt-send");
+               nvme_show_perror("io-mgmt-send");
 
 close_fd:
        if (cfg.file)
        if (!cfg.namespace_id) {
                err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
                if (err < 0) {
-                       perror("get-namespace-id");
+                       nvme_show_perror("get-namespace-id");
                        goto close_dev;
                }
        }
        if (cfg.data_len) {
                buf = calloc(1, cfg.data_len);
                if (!buf) {
-                       perror("could not alloc memory for io mgmt receive data");
+                       nvme_show_perror("could not alloc memory for io mgmt receive data");
                        err = -ENOMEM;
                        goto close_dev;
                }
                if (cfg.file) {
                        dfd = open(cfg.file, O_WRONLY | O_CREAT, 0644);
                        if (dfd < 0) {
-                               perror(cfg.file);
+                               nvme_show_perror(cfg.file);
                                goto free;
                        }
 
                        err = write(dfd, buf, cfg.data_len);
                        if (err < 0) {
-                               perror("write");
+                               nvme_show_perror("write");
                                goto close_fd;
                        }
                } else {
        } else if (err > 0) {
                nvme_show_status(err);
        } else {
-               perror("io-mgmt-recv");
+               nvme_show_perror("io-mgmt-recv");
        }
 
 close_fd:
 
        log = malloc(cfg.log_len);
        if (!log) {
-               perror("could not alloc buffer for log\n");
+               nvme_show_perror("could not alloc buffer for log\n");
                err = -ENOMEM;
                goto close_dev;
        }
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("identify namespace for specific LBA format");
+               nvme_show_perror("identify namespace for specific LBA format");
+
 close_dev:
        dev_close(dev);
 ret:
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror(attach ? "attach namespace" : "detach namespace");
+               nvme_show_perror(attach ? "attach namespace" : "detach namespace");
 
 close_dev:
        dev_close(dev);
        if (!cfg.namespace_id) {
                err = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
                if (err < 0) {
-                       perror("get-namespace-id");
+                       nvme_show_perror("get-namespace-id");
                        goto close_dev;
                }
        }
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("nvm identify namespace");
+               nvme_show_perror("nvm identify namespace");
+
 close_dev:
        dev_close(dev);
 ret:
                ns.nlbaf = NVME_FEAT_LBA_RANGE_MAX - 1;
                ns.nulbaf = 0;
        }
-       err = nvme_identify_iocs_ns_csi_user_data_format(dev_fd(dev),
-                                                                               cfg.lba_format_index,
-                                                                               cfg.uuid_index, NVME_CSI_NVM, &nvm_ns);
+
+       err = nvme_identify_iocs_ns_csi_user_data_format(dev_fd(dev), cfg.lba_format_index,
+                                                        cfg.uuid_index, NVME_CSI_NVM, &nvm_ns);
        if (!err)
-               nvme_show_nvm_id_ns(&nvm_ns, 0, &ns, cfg.lba_format_index, true,
-                                               flags);
+               nvme_show_nvm_id_ns(&nvm_ns, 0, &ns, cfg.lba_format_index, true, flags);
        else if (err > 0)
                nvme_show_status(err);
        else
-               perror("NVM identify namespace for specific LBA format");
+               nvme_show_perror("NVM identify namespace for specific LBA format");
+
 close_dev:
        dev_close(dev);
 ret:
                flags |= VERBOSE;
 
        if (!cfg.namespace_id) {
-               err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev),
-                                                      &cfg.namespace_id);
+               err = cfg.namespace_id = nvme_get_nsid(dev_fd(dev), &cfg.namespace_id);
                if (err < 0) {
-                       perror("get-namespace-id");
+                       nvme_show_perror("get-namespace-id");
                        goto close_dev;
                }
        }
 
        err = fstat(fw_fd, &sb);
        if (err < 0) {
-               perror("fstat");
+               nvme_show_perror("fstat");
                goto close_fw_fd;
        }
 
 
                err = fstat(sec_fd, &sb);
                if (err < 0) {
-                       perror("fstat");
+                       nvme_show_perror("fstat");
                        goto close_sec_fd;
                }
 
        if (strlen(cfg.data)) {
                dfd = open(cfg.data, flags, mode);
                if (dfd < 0) {
-                       perror(cfg.data);
+                       nvme_show_perror(cfg.data);
                        err = -EINVAL;
                        goto close_dev;
                }
        if (strlen(cfg.metadata)) {
                mfd = open(cfg.metadata, flags, mode);
                if (mfd < 0) {
-                       perror(cfg.metadata);
+                       nvme_show_perror(cfg.metadata);
                        err = -EINVAL;
                        goto close_dfd;
                }
        if (strlen(cfg.input_file)) {
                dfd = open(cfg.input_file, flags, mode);
                if (dfd < 0) {
-                       perror(cfg.input_file);
+                       nvme_show_perror(cfg.input_file);
                        err = -EINVAL;
                        goto close_dev;
                }
        if (cfg.metadata && strlen(cfg.metadata)) {
                mfd = open(cfg.metadata, flags, mode);
                if (mfd < 0) {
-                       perror(cfg.metadata);
+                       nvme_show_perror(cfg.metadata);
                        err = -EINVAL;
                        goto close_dfd;
                }
                if (cfg.write) {
                        if (read(mfd, mdata, cfg.metadata_len) < 0) {
                                err = -errno;
-                               perror("failed to read metadata write buffer");
+                               nvme_show_perror("failed to read metadata write buffer");
                                goto free_metadata;
                        }
                } else {
        if (strlen(cfg.input_file)) {
                fd = open(cfg.input_file, flags, mode);
                if (fd < 0) {
-                       perror(cfg.input_file);
+                       nvme_show_perror(cfg.input_file);
                        err = -EINVAL;
                        goto close_dev;
                }