From ba32a9465a3bedb0ba750cdc80a4e84fe2de6eda Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 11 Jun 2012 21:17:38 +0200 Subject: blkdev: add blkdev_scsi_type_to_name() Add a function, and necessary symbols, to convert scsi type id's to name strings. Reference: http://permalink.gmane.org/gmane.linux.utilities.util-linux-ng/5994 Signed-off-by: Sami Kerola --- lib/blkdev.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'lib/blkdev.c') diff --git a/lib/blkdev.c b/lib/blkdev.c index 9e13e1370..35ec36954 100644 --- a/lib/blkdev.c +++ b/lib/blkdev.c @@ -21,8 +21,9 @@ #endif #include "blkdev.h" -#include "linux_version.h" #include "c.h" +#include "linux_version.h" +#include "xalloc.h" static long blkdev_valid_offset (int fd, off_t offset) { @@ -288,6 +289,51 @@ int blkdev_get_geometry(int fd, unsigned int *h, unsigned int *s) return -1; } +/* + * Convert scsi type to human readable string. Return value is + * expected to free'd after use. + */ +char *blkdev_scsi_type_to_name(int type) +{ + char *type_str = NULL; + + switch (type) { + case SCSI_TYPE_DISK: + return xstrdup("disk"); + case SCSI_TYPE_TAPE: + return xstrdup("tape"); + case SCSI_TYPE_PRINTER: + return xstrdup("printer"); + case SCSI_TYPE_PROCESSOR: + return xstrdup("processor"); + case SCSI_TYPE_WORM: + return xstrdup("worm"); + case SCSI_TYPE_ROM: + return xstrdup("rom"); + case SCSI_TYPE_SCANNER: + return xstrdup("scanner"); + case SCSI_TYPE_MOD: + return xstrdup("mo-disk"); + case SCSI_TYPE_MEDIUM_CHANGER: + return xstrdup("changer"); + case SCSI_TYPE_COMM: + return xstrdup("comm"); + case SCSI_TYPE_RAID: + return xstrdup("raid"); + case SCSI_TYPE_ENCLOSURE: + return xstrdup("enclosure"); + case SCSI_TYPE_RBC: + return xstrdup("rbc"); + case SCSI_TYPE_OSD: + return xstrdup("osd"); + case SCSI_TYPE_NO_LUN: + return xstrdup("no-lun"); + default: + xasprintf(&type_str, "0x%02x", type); + return type_str; + } +} + #ifdef TEST_PROGRAM #include #include -- cgit v1.2.3-55-g7522