diff options
author | jhb <jhb@FreeBSD.org> | 2004-03-16 17:07:06 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2004-03-16 17:07:06 +0000 |
commit | b7e56e9eea26be625659f4a99d9094c501a0a3bc (patch) | |
tree | 5aa997ef67b14b420649f8ea11a120707fde3633 /lib/libdisk/rules.c | |
parent | 662b843050ffa69c81e8bd9be635806f6abd5739 (diff) | |
download | FreeBSD-src-b7e56e9eea26be625659f4a99d9094c501a0a3bc.zip FreeBSD-src-b7e56e9eea26be625659f4a99d9094c501a0a3bc.tar.gz |
Change libdisk and sysinstall to use d_addr_t rather than u_long for disk
addresses. For arch's with 64-bit longs, this is a nop, but for i386 this
allows sysinstall to properly handle disks and filesystems > 1 TB.
Changes from the original patch include:
- Use d_addr_t rather than inventing a blkcnt type based on int64_t.
- Use strtoimax() rather than strtoull() to parse d_addr_t's from config
files.
- Use intmax_t casts and %jd rather than %llu to printf d_addr_t values.
Tested on: i386
Tested by: kuriyama
Submitted by: julian
MFC after: 1 month
Diffstat (limited to 'lib/libdisk/rules.c')
-rw-r--r-- | lib/libdisk/rules.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/lib/libdisk/rules.c b/lib/libdisk/rules.c index b725b32..6c7f315 100644 --- a/lib/libdisk/rules.c +++ b/lib/libdisk/rules.c @@ -10,21 +10,22 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> #include <sys/types.h> +#include <sys/stdint.h> #include <sys/disklabel.h> #ifdef PC98 #include <sys/diskpc98.h> #else #include <sys/diskmbr.h> #endif +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> #include "libdisk.h" int -Track_Aligned(const struct disk *d, u_long offset) +Track_Aligned(const struct disk *d, daddr_t offset) { #ifndef __ia64__ if (!d->bios_sect) @@ -35,8 +36,8 @@ Track_Aligned(const struct disk *d, u_long offset) return 1; } -u_long -Prev_Track_Aligned(const struct disk *d, u_long offset) +daddr_t +Prev_Track_Aligned(const struct disk *d, daddr_t offset) { #ifndef __ia64__ if (!d->bios_sect) @@ -47,8 +48,8 @@ Prev_Track_Aligned(const struct disk *d, u_long offset) #endif } -u_long -Next_Track_Aligned(const struct disk *d, u_long offset) +daddr_t +Next_Track_Aligned(const struct disk *d, daddr_t offset) { #ifndef __ia64__ if (!d->bios_sect) @@ -60,7 +61,7 @@ Next_Track_Aligned(const struct disk *d, u_long offset) } static int -Cyl_Aligned(const struct disk *d, u_long offset) +Cyl_Aligned(const struct disk *d, daddr_t offset) { #ifndef __ia64__ if (!d->bios_sect || !d->bios_hd) @@ -71,8 +72,8 @@ Cyl_Aligned(const struct disk *d, u_long offset) return 1; } -u_long -Prev_Cyl_Aligned(const struct disk *d, u_long offset) +daddr_t +Prev_Cyl_Aligned(const struct disk *d, daddr_t offset) { #ifndef __ia64__ if (!d->bios_sect || !d->bios_hd) @@ -84,8 +85,8 @@ Prev_Cyl_Aligned(const struct disk *d, u_long offset) #endif } -u_long -Next_Cyl_Aligned(const struct disk *d, u_long offset) +daddr_t +Next_Cyl_Aligned(const struct disk *d, daddr_t offset) { #ifndef __ia64__ if (!d->bios_sect || !d->bios_hd) @@ -156,21 +157,21 @@ Rule_001(const struct disk *d, const struct chunk *c, char *msg) #endif sprintf(msg + strlen(msg), #ifdef PC98 - "chunk '%s' [%ld..%ld] does not start" + "chunk '%s' [%jd..%jd] does not start" " on a cylinder boundary\n", #else - "chunk '%s' [%ld..%ld] does not start" + "chunk '%s' [%jd..%jd] does not start" " on a track boundary\n", #endif - c1->name, c1->offset, c1->end); + c1->name, (intmax_t)c1->offset, (intmax_t)c1->end); if ((c->type == whole || c->end == c1->end) || Cyl_Aligned(d, c1->end + 1)) ; else sprintf(msg + strlen(msg), - "chunk '%s' [%ld..%ld] does not end" + "chunk '%s' [%jd..%jd] does not end" " on a cylinder boundary\n", - c1->name, c1->offset, c1->end); + c1->name, (intmax_t)c1->offset, (intmax_t)c1->end); } } |