diff --git a/lib/libdisk/chunk.c b/lib/libdisk/chunk.c index 906911aa8023..a34b34848611 100644 --- a/lib/libdisk/chunk.c +++ b/lib/libdisk/chunk.c @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $Id: chunk.c,v 1.14.2.2 1995/06/05 02:24:25 jkh Exp $ + * $Id: chunk.c,v 1.15 1995/06/11 19:29:32 rgrimes Exp $ * */ @@ -75,8 +75,8 @@ void Free_Chunk(struct chunk *c1) { if(!c1) return; - if(c1->private && c1->private_free) - (*c1->private_free)(c1->private); + if(c1->private_data && c1->private_free) + (*c1->private_free)(c1->private_data); if(c1->part) Free_Chunk(c1->part); if(c1->next) @@ -94,8 +94,8 @@ Clone_Chunk(struct chunk *c1) c2 = new_chunk(); if (!c2) err(1,"malloc failed"); *c2 = *c1; - if (c1->private && c1->private_clone) - c2->private = c2->private_clone(c2->private); + if (c1->private_data && c1->private_clone) + c2->private_data = c2->private_clone(c2->private_data); c2->name = strdup(c2->name); c2->next = Clone_Chunk(c2->next); c2->part = Clone_Chunk(c2->part); @@ -103,7 +103,8 @@ Clone_Chunk(struct chunk *c1) } int -Insert_Chunk(struct chunk *c2, u_long offset, u_long size, char *name, chunk_e type, int subtype, u_long flags) +Insert_Chunk(struct chunk *c2, u_long offset, u_long size, const char *name, + chunk_e type, int subtype, u_long flags) { struct chunk *ct,*cs; @@ -176,8 +177,8 @@ Insert_Chunk(struct chunk *c2, u_long offset, u_long size, char *name, chunk_e t } int -Add_Chunk(struct disk *d, long offset, u_long size, char *name, chunk_e type, - int subtype, u_long flags) +Add_Chunk(struct disk *d, long offset, u_long size, const char *name, + chunk_e type, int subtype, u_long flags) { struct chunk *c1,*c2,ct; u_long end = offset + size - 1; diff --git a/lib/libdisk/create_chunk.c b/lib/libdisk/create_chunk.c index 6c32a7d9a640..05a22a26ad68 100644 --- a/lib/libdisk/create_chunk.c +++ b/lib/libdisk/create_chunk.c @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $Id: create_chunk.c,v 1.21.2.6 1995/11/18 10:02:10 jkh Exp $ + * $Id: create_chunk.c,v 1.22 1995/12/07 10:33:20 peter Exp $ * */ @@ -244,7 +244,7 @@ Create_Chunk_DWIM(struct disk *d, struct chunk *parent , u_long size, chunk_e ty } int -MakeDev(struct chunk *c1, char *path) +MakeDev(struct chunk *c1, const char *path) { char *p = c1->name; u_long cmaj, bmaj, min, unit, part, slice; @@ -340,7 +340,7 @@ MakeDev(struct chunk *c1, char *path) } int -MakeDevChunk(struct chunk *c1, char *path) +MakeDevChunk(struct chunk *c1, const char *path) { int i; @@ -353,7 +353,7 @@ MakeDevChunk(struct chunk *c1, char *path) } int -MakeDevDisk(struct disk *d, char *path) +MakeDevDisk(struct disk *d, const char *path) { return MakeDevChunk(d->chunks, path); } diff --git a/lib/libdisk/disk.c b/lib/libdisk/disk.c index cfac7b528b2c..911eecef85cd 100644 --- a/lib/libdisk/disk.c +++ b/lib/libdisk/disk.c @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $Id: disk.c,v 1.19.2.2 1995/06/05 02:24:27 jkh Exp $ + * $Id: disk.c,v 1.20 1995/06/11 19:29:34 rgrimes Exp $ * */ @@ -26,7 +26,7 @@ #define DOSPTYP_EXTENDED 5 #define DOSPTYP_ONTRACK 84 -char *chunk_n[] = { +const char *chunk_n[] = { "whole", "unknown", "fat", @@ -38,13 +38,13 @@ char *chunk_n[] = { }; struct disk * -Open_Disk(char *name) +Open_Disk(const char *name) { return Int_Open_Disk(name,0); } struct disk * -Int_Open_Disk(char *name, u_long size) +Int_Open_Disk(const char *name, u_long size) { int i,fd; struct diskslices ds; @@ -300,7 +300,7 @@ Disk_Names() } void -Set_Boot_Mgr(struct disk *d, u_char *b) +Set_Boot_Mgr(struct disk *d, const u_char *b) { if (d->bootmgr) free(d->bootmgr); @@ -314,7 +314,7 @@ Set_Boot_Mgr(struct disk *d, u_char *b) } void -Set_Boot_Blocks(struct disk *d, u_char *b1, u_char *b2) +Set_Boot_Blocks(struct disk *d, const u_char *b1, const u_char *b2) { if (d->boot1) free(d->boot1); d->boot1 = malloc(512); diff --git a/lib/libdisk/libdisk.3 b/lib/libdisk/libdisk.3 index cf8b05bc5c7b..3746dec043df 100644 --- a/lib/libdisk/libdisk.3 +++ b/lib/libdisk/libdisk.3 @@ -25,7 +25,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $Id$ +.\" $Id: libdisk.3,v 1.1 1996/03/17 23:20:09 joerg Exp $ .\" " .Dd March 15, 1996 .Dt LIBDISK 3 @@ -61,8 +61,9 @@ .Sh SYNOPSIS .Fd #include .Fd #include +.Dv extern const u_char *boot1, boot2; .Ft struct disk * -.Fn Open_Disk "char *devname" +.Fn Open_Disk "const char *devname" .Ft struct disk * .Fn Clone_Disk "struct disk *disk" .Ft void @@ -86,9 +87,9 @@ .Ft char ** .Fn Disk_Names "void" .Ft void -.Fn Set_Boot_Mgr "struct disk *d" "u_char *bootmgr" +.Fn Set_Boot_Mgr "struct disk *d" "const u_char *bootmgr" .Ft void -.Fn Set_Boot_Blocks "struct disk *d" "u_char *boot1" "u_char *boot2" +.Fn Set_Boot_Blocks "struct disk *d" "const u_char *boot1" "const u_char *boot2" .Ft int .Fn Write_Disk "struct disk *d" .Ft int @@ -106,9 +107,9 @@ .Ft struct chunk * .Fn Create_Chunk_DWIM "struct disk *d" "struct chunk *parent" "u_long size" "chunk_e type" "int subtype" "u_long flags" .Ft int -.Fn MakeDev "struct chunk *c" "char *path" +.Fn MakeDev "struct chunk *c" "const char *path" .Ft int -.Fn MakeDevDisk "struct disk *d,char *path" +.Fn MakeDevDisk "struct disk *d" "const char *path" .Ft char * .Fn ShowChunkFlags "struct chunk *c" .Ft char * @@ -155,7 +156,7 @@ struct chunk { u_long flags; void (*private_free)(void*); void *(*private_clone)(void*); - void *private; + void *private_data; }; .Ed The @@ -190,7 +191,7 @@ considerations. .El .Pp The -.Ql private , +.Ql private_data , .Ql private_free , and .Ql private_clone @@ -254,7 +255,11 @@ is called. .Fn Set_Boot_Blocks sets the boot-blocks for use on this disk. Gets written when .Fn Write_Disk -is called. +is called. The external variables +.Dv boot1 +and +.Dv boot2 +contain suitable data to be passed to this function. .Pp .Fn Write_Disk writes all the MBRs, disklabels, bootblocks and boot managers. diff --git a/lib/libdisk/libdisk.h b/lib/libdisk/libdisk.h index e277f876307a..1473e72d7d32 100644 --- a/lib/libdisk/libdisk.h +++ b/lib/libdisk/libdisk.h @@ -1,17 +1,17 @@ /* - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - * - * $Id: libdisk.h,v 1.19.2.2 1995/10/13 08:19:12 jkh Exp $ - * - */ +* ---------------------------------------------------------------------------- +* "THE BEER-WARE LICENSE" (Revision 42): +* wrote this file. As long as you retain this notice you +* can do whatever you want with this stuff. If we meet some day, and you think +* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp +* ---------------------------------------------------------------------------- +* +* $Id: libdisk.h,v 1.20 1995/12/07 10:33:21 peter Exp $ +* +*/ #define MAX_NO_DISKS 20 - /* Max # of disks Disk_Names() will return */ +/* Max # of disks Disk_Names() will return */ typedef enum { whole, @@ -21,10 +21,9 @@ typedef enum { extended, part, unused, - } chunk_e; - -extern char *chunk_n[]; +} chunk_e; +__BEGIN_DECLS struct disk { char *name; u_long flags; @@ -52,185 +51,190 @@ struct chunk { u_long end; char *name; char *oname; - /* Used during Fixup_Names() to avoid renaming more than - * absolutely needed. - */ + /* Used during Fixup_Names() to avoid renaming more than + * absolutely needed. + */ chunk_e type; int subtype; u_long flags; # define CHUNK_PAST_1024 1 - /* this chunk cannot be booted from because it - * extends past cylinder 1024 - */ + /* this chunk cannot be booted from because it + * extends past cylinder 1024 + */ # define CHUNK_BSD_COMPAT 2 - /* this chunk is in the BSD-compatibility, and has a - * short name too, ie wd0s4f -> wd0f - */ + /* this chunk is in the BSD-compatibility, and has a + * short name too, ie wd0s4f -> wd0f + */ # define CHUNK_BAD144 4 - /* this chunk has bad144 mapping */ + /* this chunk has bad144 mapping */ # define CHUNK_ALIGN 8 - /* This chunk should be aligned */ + /* This chunk should be aligned */ # define CHUNK_IS_ROOT 16 - /* This 'part' is a rootfs, allocate 'a' */ + /* This 'part' is a rootfs, allocate 'a' */ # define CHUNK_ACTIVE 32 - /* This is the active slice in the MBR */ + /* This is the active slice in the MBR */ # define CHUNK_FORCE_ALL 64 - /* Force a dedicated disk for FreeBSD, bypassing - * all BIOS geometry considerations - */ + /* Force a dedicated disk for FreeBSD, bypassing + * all BIOS geometry considerations + */ void (*private_free)(void*); void *(*private_clone)(void*); - void *private; - /* For data private to the application, and the management - * thereof. If the functions are not provided, no storage - * management is done, Cloning will just copy the pointer - * and freeing will just forget it. - */ + void *private_data; + /* For data private to the application, and the management + * thereof. If the functions are not provided, no storage + * management is done, Cloning will just copy the pointer + * and freeing will just forget it. + */ }; +extern const char *chunk_n[]; +extern const u_char *boot1, *boot2; + struct disk * -Open_Disk(char *devname); - /* Will open the named disk, and return populated tree. - */ +Open_Disk(const char *devname); +/* Will open the named disk, and return populated tree. + */ struct disk * Clone_Disk(struct disk *disk); - /* Clone a copy of a tree. Useful for "Undo" functionality - */ +/* Clone a copy of a tree. Useful for "Undo" functionality + */ void Free_Disk(struct disk *disk); - /* Free a tree made with Open_Disk() or Clone_Disk() - */ +/* Free a tree made with Open_Disk() or Clone_Disk() + */ void Debug_Disk(struct disk *disk); - /* Print the content of the tree to stdout - */ +/* Print the content of the tree to stdout + */ #if 0 struct disk * Set_Phys_Geom(struct disk *disk, u_long cyl, u_long heads, u_long sects); - /* Use a different physical geometry. Makes sense for ST506 disks only. - * The tree returned is read from the disk, using this geometry. - */ +/* Use a different physical geometry. Makes sense for ST506 disks only. + * The tree returned is read from the disk, using this geometry. + */ #endif void Set_Bios_Geom(struct disk *disk, u_long cyl, u_long heads, u_long sects); - /* Set the geometry the bios uses. - */ +/* Set the geometry the bios uses. + */ int Delete_Chunk(struct disk *disk, struct chunk *); - /* Free a chunk of disk_space - */ +/* Free a chunk of disk_space + */ void Collapse_Disk(struct disk *disk); - /* Experimental, do not use. - */ +/* Experimental, do not use. + */ int Collapse_Chunk(struct disk *disk, struct chunk *chunk); - /* Experimental, do not use. - */ +/* Experimental, do not use. + */ int -Create_Chunk(struct disk *disk, u_long offset, u_long size, chunk_e type, int subtype, u_long flags); - /* Create a chunk with the specified paramters - */ +Create_Chunk(struct disk *disk, u_long offset, u_long size, chunk_e type, + int subtype, u_long flags); +/* Create a chunk with the specified paramters + */ void All_FreeBSD(struct disk *d, int force_all); - /* Make one FreeBSD chunk covering the entire disk; - * if force_all is set, bypass all BIOS geometry - * considerations. - */ +/* Make one FreeBSD chunk covering the entire disk; + * if force_all is set, bypass all BIOS geometry + * considerations. + */ char * CheckRules(struct disk *); - /* Return char* to warnings about broken design rules in this disklayout - */ +/* Return char* to warnings about broken design rules in this disklayout + */ char ** Disk_Names(); - /* Return char** with all disk's names (wd0, wd1 ...). You must free - * each pointer, as well as the array by hand - */ +/* Return char** with all disk's names (wd0, wd1 ...). You must free + * each pointer, as well as the array by hand + */ void -Set_Boot_Mgr(struct disk *d, u_char *bootmgr); - /* Use this boot-manager on this disk. Gets written when Write_Disk() - * is called - */ +Set_Boot_Mgr(struct disk *d, const u_char *bootmgr); +/* Use this boot-manager on this disk. Gets written when Write_Disk() + * is called + */ void -Set_Boot_Blocks(struct disk *d, u_char *boot1, u_char *boot2); - /* Use these boot-blocks on this disk. Gets written when Write_Disk() - * is called - */ +Set_Boot_Blocks(struct disk *d, const u_char *boot1, const u_char *boot2); +/* Use these boot-blocks on this disk. Gets written when Write_Disk() + * is called + */ int Write_Disk(struct disk *d); - /* Write all the MBRs, disklabels, bootblocks and boot managers - */ +/* Write all the MBRs, disklabels, bootblocks and boot managers + */ int Cyl_Aligned(struct disk *d, u_long offset); - /* Check if offset is aligned on a cylinder according to the - * bios geometry - */ +/* Check if offset is aligned on a cylinder according to the + * bios geometry + */ u_long Next_Cyl_Aligned(struct disk *d, u_long offset); - /* Round offset up to next cylinder according to the bios-geometry - */ +/* Round offset up to next cylinder according to the bios-geometry + */ u_long Prev_Cyl_Aligned(struct disk *d, u_long offset); - /* Round offset down to previous cylinder according to the bios- - * geometry - */ +/* Round offset down to previous cylinder according to the bios- + * geometry + */ int Track_Aligned(struct disk *d, u_long offset); - /* Check if offset is aligned on a track according to the - * bios geometry - */ +/* Check if offset is aligned on a track according to the + * bios geometry + */ u_long Next_Track_Aligned(struct disk *d, u_long offset); - /* Round offset up to next track according to the bios-geometry - */ +/* Round offset up to next track according to the bios-geometry + */ u_long Prev_Track_Aligned(struct disk *d, u_long offset); - /* Check if offset is aligned on a track according to the - * bios geometry - */ +/* Check if offset is aligned on a track according to the + * bios geometry + */ struct chunk * -Create_Chunk_DWIM(struct disk *d, struct chunk *parent , u_long size, chunk_e type, int subtype, u_long flags); - /* This one creates a partition inside the given parent of the given - * size, and returns a pointer to it. The first unused chunk big - * enough is used. - */ +Create_Chunk_DWIM(struct disk *d, struct chunk *parent , u_long size, + chunk_e type, int subtype, u_long flags); +/* This one creates a partition inside the given parent of the given + * size, and returns a pointer to it. The first unused chunk big + * enough is used. + */ int -MakeDev(struct chunk *c, char *path); +MakeDev(struct chunk *c, const char *path); int -MakeDevDisk(struct disk *d,char *path); - /* Make device nodes for all chunks on this disk */ +MakeDevDisk(struct disk *d, const char *path); +/* Make device nodes for all chunks on this disk */ char * ShowChunkFlags(struct chunk *c); - /* Return string to show flags. */ +/* Return string to show flags. */ char * ChunkCanBeRoot(struct chunk *c); - /* Return NULL if chunk can be /, explanation otherwise */ +/* Return NULL if chunk can be /, explanation otherwise */ /* * Implementation details >>> DO NOT USE <<< @@ -239,15 +243,16 @@ ChunkCanBeRoot(struct chunk *c); void Debug_Chunk(struct chunk *); void Free_Chunk(struct chunk *); struct chunk * Clone_Chunk(struct chunk *); -int Add_Chunk(struct disk *, long , u_long , char *, chunk_e, int , u_long); +int Add_Chunk(struct disk *, long, u_long, const char *, chunk_e, int, u_long); void Bios_Limit_Chunk(struct chunk *, u_long); -void * read_block(int, daddr_t ); +void * read_block(int, daddr_t); void write_block(int fd, daddr_t block, void *foo); struct disklabel * read_disklabel(int, daddr_t); u_short dkcksum(struct disklabel *); -struct chunk * Find_Mother_Chunk(struct chunk *, u_long , u_long , chunk_e); -struct disk * Int_Open_Disk(char *name, u_long size); +struct chunk * Find_Mother_Chunk(struct chunk *, u_long, u_long, chunk_e); +struct disk * Int_Open_Disk(const char *name, u_long size); void Fixup_Names(struct disk *); +__END_DECLS #define dprintf printf diff --git a/lib/libdisk/tst01.c b/lib/libdisk/tst01.c index 76e479b6a1b5..78da1010b332 100644 --- a/lib/libdisk/tst01.c +++ b/lib/libdisk/tst01.c @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $Id: tst01.c,v 1.15.2.1 1995/09/20 10:43:04 jkh Exp $ + * $Id: tst01.c,v 1.16 1995/12/07 10:33:25 peter Exp $ * */ @@ -269,7 +269,6 @@ main(int argc, char **argv) continue; } if (!strcasecmp(*cmds,"boot")) { - extern u_char boot1[],boot2[]; Set_Boot_Blocks(d,boot1,boot2); continue; }