summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>1997-01-23 06:29:01 +0000
committerobrien <obrien@FreeBSD.org>1997-01-23 06:29:01 +0000
commit4a62d28c391a0143f68f333f48d8d9a3cb959af7 (patch)
tree39a1b25eb91546d966225dc4b1139537247fbf70 /lib
parent25753ac2ab3e7894cc141e0eff2bc589b0fe7d3c (diff)
downloadFreeBSD-src-4a62d28c391a0143f68f333f48d8d9a3cb959af7.zip
FreeBSD-src-4a62d28c391a0143f68f333f48d8d9a3cb959af7.tar.gz
Adds slice_type_name() which extends chunk_n[] for subtype's too.
Curorary review by: phk
Diffstat (limited to 'lib')
-rw-r--r--lib/libdisk/Makefile3
-rw-r--r--lib/libdisk/disk.c37
-rw-r--r--lib/libdisk/libdisk.319
-rw-r--r--lib/libdisk/libdisk.h5
4 files changed, 63 insertions, 1 deletions
diff --git a/lib/libdisk/Makefile b/lib/libdisk/Makefile
index ad8c67f..773d58a 100644
--- a/lib/libdisk/Makefile
+++ b/lib/libdisk/Makefile
@@ -37,7 +37,8 @@ MLINKS+= libdisk.3 Open_Disk.3 \
libdisk.3 MakeDev.3 \
libdisk.3 MakeDevDisk.3 \
libdisk.3 ShowChunkFlags.3 \
- libdisk.3 ChunkCanBeRoot.3
+ libdisk.3 ChunkCanBeRoot.3 \
+ libdisk.3 slice_type_name.3
.include <bsd.lib.mk>
diff --git a/lib/libdisk/disk.c b/lib/libdisk/disk.c
index 9d8ec9f..8f16ffc 100644
--- a/lib/libdisk/disk.c
+++ b/lib/libdisk/disk.c
@@ -347,3 +347,40 @@ Set_Boot_Blocks(struct disk *d, const u_char *b1, const u_char *b2)
if(!d->boot2) err(1,"malloc failed");
memcpy(d->boot2,b2,15*512);
}
+
+const char *
+slice_type_name( int type, int subtype )
+{
+ switch (type) {
+ case 0: return "whole";
+ case 1: switch (subtype) {
+ case 1: return "fat (12-bit)";
+ case 2: return "XENIX /";
+ case 3: return "XENIX /usr";
+ case 4: return "fat (16-bit)";
+ case 5: return "extended DOS";
+ case 6: return "fat (>32Mb)";
+ case 7: return "NTFS/HPFS";
+ case 10: return "OS/2 bootmgr";
+ case 84: return "OnTrack diskmgr";
+ case 100: return "Netware 2.x";
+ case 101: return "Netware 3.x";
+ case 128: return "Minix 1.1";
+ case 129: return "Minix 1.5";
+ case 130: return "linux_swap";
+ case 131: return "ext2fs";
+ case 183: return "bsd/os";
+ case 184: return "bsd/os swap";
+ default: return "unknown";
+ }
+ case 2: return "fat";
+ case 3: switch (subtype) {
+ case 165: return "freebsd";
+ default: return "unknown";
+ }
+ case 4: return "extended";
+ case 5: return "part";
+ case 6: return "unused";
+ default: return "unknown";
+ }
+}
diff --git a/lib/libdisk/libdisk.3 b/lib/libdisk/libdisk.3
index 0e44b80..83a26f7 100644
--- a/lib/libdisk/libdisk.3
+++ b/lib/libdisk/libdisk.3
@@ -57,11 +57,19 @@
.Nm MakeDevDisk ,
.Nm ShowChunkFlags ,
.Nm ChunkCanBeRoot ,
+.Nm chunk_n ,
+.Nm slice_type_name
.Nd library interface to slice and partition labels
.Sh SYNOPSIS
.Fd #include <sys/types.h>
.Fd #include <libdisk.h>
.Dv extern const u_char *boot1, boot2;
+.\" What is the correct way to cause a single line break ???
+.Bd -literal
+.Dv extern const char *chunk_n[];
+.Ed
+.Ft const char *
+.Fn slice_type_name "int type" "int subtype"
.Ft struct disk *
.Fn Open_Disk "const char *devname"
.Ft struct disk *
@@ -310,6 +318,17 @@ returns a string to show flags.
.Pp
.Fn ChunkCanBeRoot
returns NULL if chunk can be
+.Pp
+Chunk name strings can be accessed directly using the external array
+.Va chunk_n .
+.Pp
+.Fn slice_type_name
+returns the name strings associated with the specified
+.Ql type .
+.Ql subtype .
+If
+.Fn slice_type_name
+returns "unknown" for slices it isn't familar with.
.Ql / .
.Sh AUTHOR
.Nm Libdisk
diff --git a/lib/libdisk/libdisk.h b/lib/libdisk/libdisk.h
index e029fbf..425ca0b 100644
--- a/lib/libdisk/libdisk.h
+++ b/lib/libdisk/libdisk.h
@@ -86,6 +86,11 @@ struct chunk {
extern const char *chunk_n[];
extern const u_char boot1[], boot2[];
+const char *
+slice_type_name( int type, int subtype );
+/* "chunk_n" for subtypes too
+ */
+
struct disk *
Open_Disk(const char *devname);
/* Will open the named disk, and return populated tree.
OpenPOWER on IntegriCloud