diff options
Diffstat (limited to '0001-fdisk-fix-l-device.patch')
-rw-r--r-- | 0001-fdisk-fix-l-device.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/0001-fdisk-fix-l-device.patch b/0001-fdisk-fix-l-device.patch new file mode 100644 index 000000000000..ed0e748e3dd6 --- /dev/null +++ b/0001-fdisk-fix-l-device.patch @@ -0,0 +1,61 @@ +From 52d92543ffb8efb56036f316a1072d8fbba62c38 Mon Sep 17 00:00:00 2001 +From: Karel Zak <kzak@redhat.com> +Date: Mon, 28 Jul 2014 11:57:10 +0200 +Subject: [PATCH] fdisk: fix -l [<device>] + + * don't use err(), but warn(), so don't stop after the first error + + * display all errors when "-l <device> ..." specified + + * display only EACCES errors when list whole disks from + /proc/partitions ("fdisk -l" ) + +Reported-by: Boian Bonev <bbonev@ipacct.com> +Addresses: https://github.com/karelzak/util-linux/pull/106 +Signed-off-by: Karel Zak <kzak@redhat.com> +--- + disk-utils/fdisk.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c +index 8d57dbb..46e632a 100644 +--- a/disk-utils/fdisk.c ++++ b/disk-utils/fdisk.c +@@ -670,10 +670,13 @@ static int is_ide_cdrom_or_tape(char *device) + return ret; + } + +-static void print_device_pt(struct fdisk_context *cxt, char *device) ++static void print_device_pt(struct fdisk_context *cxt, char *device, int warnme) + { +- if (fdisk_context_assign_device(cxt, device, 1) != 0) /* read-only */ +- err(EXIT_FAILURE, _("cannot open %s"), device); ++ if (fdisk_context_assign_device(cxt, device, 1) != 0) { /* read-only */ ++ if (warnme || errno == EACCES) ++ warn(_("cannot open %s"), device); ++ return; ++ } + + list_disk_geometry(cxt); + +@@ -717,7 +720,7 @@ static void print_all_devices_pt(struct fdisk_context *cxt) + if (!cn) + continue; + if (!is_ide_cdrom_or_tape(cn)) +- print_device_pt(cxt, cn); ++ print_device_pt(cxt, cn, 0); + free(cn); + } + fclose(f); +@@ -912,7 +915,7 @@ int main(int argc, char **argv) + if (argc > optind) { + int k; + for (k = optind; k < argc; k++) +- print_device_pt(cxt, argv[k]); ++ print_device_pt(cxt, argv[k], 1); + } else + print_all_devices_pt(cxt); + break; +-- +2.0.3 + |