diff options
author | obrien <obrien@FreeBSD.org> | 1997-01-23 06:29:01 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 1997-01-23 06:29:01 +0000 |
commit | 4a62d28c391a0143f68f333f48d8d9a3cb959af7 (patch) | |
tree | 39a1b25eb91546d966225dc4b1139537247fbf70 /lib | |
parent | 25753ac2ab3e7894cc141e0eff2bc589b0fe7d3c (diff) | |
download | FreeBSD-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/Makefile | 3 | ||||
-rw-r--r-- | lib/libdisk/disk.c | 37 | ||||
-rw-r--r-- | lib/libdisk/libdisk.3 | 19 | ||||
-rw-r--r-- | lib/libdisk/libdisk.h | 5 |
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. |