summaryrefslogtreecommitdiffstats
path: root/lib/libdisk/rules.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2004-03-16 17:07:06 +0000
committerjhb <jhb@FreeBSD.org>2004-03-16 17:07:06 +0000
commitb7e56e9eea26be625659f4a99d9094c501a0a3bc (patch)
tree5aa997ef67b14b420649f8ea11a120707fde3633 /lib/libdisk/rules.c
parent662b843050ffa69c81e8bd9be635806f6abd5739 (diff)
downloadFreeBSD-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.c39
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);
}
}
OpenPOWER on IntegriCloud