summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sbin/fdisk/cmd.c16
-rw-r--r--sbin/fdisk/misc.c25
-rw-r--r--sbin/fdisk/misc.h4
-rw-r--r--sbin/fdisk/part.c15
-rw-r--r--sbin/fdisk/part.h6
-rw-r--r--sbin/fdisk/user.c4
6 files changed, 35 insertions, 35 deletions
diff --git a/sbin/fdisk/cmd.c b/sbin/fdisk/cmd.c
index fc9fa34d30e..ef9531fe786 100644
--- a/sbin/fdisk/cmd.c
+++ b/sbin/fdisk/cmd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd.c,v 1.79 2015/03/19 22:48:57 krw Exp $ */
+/* $OpenBSD: cmd.c,v 1.80 2015/03/26 14:08:12 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -176,10 +176,10 @@ Xedit(char *args, struct mbr *mbr)
/* Fix up CHS values for LBA */
PRT_fix_CHS(pp);
} else {
- pp->bs = getuint("Partition offset", pp->bs,
- disk.size);
- pp->ns = getuint("Partition size", pp->ns,
- disk.size - pp->bs);
+ pp->bs = getuint64("Partition offset", pp->bs,
+ (u_int64_t)disk.size);
+ pp->ns = getuint64("Partition size", pp->ns,
+ (u_int64_t)(disk.size - pp->bs));
/* Fix up CHS values */
PRT_fix_CHS(pp);
}
@@ -219,8 +219,8 @@ int
Xselect(char *args, struct mbr *mbr)
{
const char *errstr;
- static int firstoff = 0;
- int off;
+ static off_t firstoff = 0;
+ off_t off;
int pn;
pn = strtonum(args, 0, 3, &errstr);
@@ -246,7 +246,7 @@ Xselect(char *args, struct mbr *mbr)
return (CMD_CONT);
} else {
printf("Selected extended partition %d\n", pn);
- printf("New MBR at offset %d.\n", off);
+ printf("New MBR at offset %lld.\n", (long long)off);
}
/* Recursion is beautiful! */
diff --git a/sbin/fdisk/misc.c b/sbin/fdisk/misc.c
index ad4c7a46aa4..94cd3044f2d 100644
--- a/sbin/fdisk/misc.c
+++ b/sbin/fdisk/misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.c,v 1.45 2015/03/16 23:51:50 krw Exp $ */
+/* $OpenBSD: misc.c,v 1.46 2015/03/26 14:08:12 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -191,8 +191,8 @@ ask_yn(const char *str)
/*
* adapted from sbin/disklabel/editor.c
*/
-u_int32_t
-getuint(char *prompt, u_int32_t oval, u_int32_t maxval)
+u_int64_t
+getuint64(char *prompt, u_int64_t oval, u_int64_t maxval)
{
char buf[BUFSIZ], *endptr, *p, operator = '\0';
size_t n;
@@ -207,7 +207,7 @@ getuint(char *prompt, u_int32_t oval, u_int32_t maxval)
secpercyl = disk.sectors * disk.heads;
do {
- printf("%s: [%u] ", prompt, oval);
+ printf("%s: [%llu] ", prompt, oval);
if (fgets(buf, sizeof(buf), stdin) == NULL)
errx(1, "eof");
@@ -231,7 +231,7 @@ getuint(char *prompt, u_int32_t oval, u_int32_t maxval)
break;
case 'b':
unit = 'b';
- mult = -secsize;
+ mult = -(int64_t)secsize;
buf[--n] = '\0';
break;
case 's':
@@ -242,19 +242,24 @@ getuint(char *prompt, u_int32_t oval, u_int32_t maxval)
case 'k':
unit = 'k';
if (secsize > 1024)
- mult = -secsize / 1024;
+ mult = -(int64_t)secsize / 1024LL;
else
- mult = 1024 / secsize;
+ mult = 1024LL / secsize;
buf[--n] = '\0';
break;
case 'm':
unit = 'm';
- mult = 1048576 / secsize;
+ mult = (1024LL * 1024) / secsize;
buf[--n] = '\0';
break;
case 'g':
unit = 'g';
- mult = 1073741824 / secsize;
+ mult = (1024LL * 1024 * 1024) / secsize;
+ buf[--n] = '\0';
+ break;
+ case 't':
+ unit = 't';
+ mult = (1024LL * 1024 * 1024 * 1024) / secsize;
buf[--n] = '\0';
break;
default:
@@ -301,5 +306,5 @@ getuint(char *prompt, u_int32_t oval, u_int32_t maxval)
}
} while (1);
- return ((u_int32_t)d);
+ return((u_int64_t)d);
}
diff --git a/sbin/fdisk/misc.h b/sbin/fdisk/misc.h
index 302c66dfaba..30e781ccd45 100644
--- a/sbin/fdisk/misc.h
+++ b/sbin/fdisk/misc.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.h,v 1.24 2015/03/16 23:51:50 krw Exp $ */
+/* $OpenBSD: misc.h,v 1.25 2015/03/26 14:08:12 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -33,6 +33,6 @@ int ask_cmd(char **, char **);
int ask_num(const char *, int, int, int);
int ask_pid(int);
int ask_yn(const char *);
-u_int32_t getuint(char *, u_int32_t, u_int32_t);
+u_int64_t getuint64(char *, u_int64_t, u_int64_t);
#endif /* _MISC_H */
diff --git a/sbin/fdisk/part.c b/sbin/fdisk/part.c
index 50173f680cd..109a45b2b33 100644
--- a/sbin/fdisk/part.c
+++ b/sbin/fdisk/part.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: part.c,v 1.69 2015/03/16 23:51:50 krw Exp $ */
+/* $OpenBSD: part.c,v 1.70 2015/03/26 14:08:12 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -222,7 +222,7 @@ PRT_make(struct prt *partn, off_t offset, off_t reloff,
{
off_t off;
u_int32_t ecsave, scsave;
- u_int32_t t;
+ u_int64_t t;
/* Save (and restore below) cylinder info we may fiddle with. */
scsave = partn->scyl;
@@ -255,15 +255,10 @@ PRT_make(struct prt *partn, off_t offset, off_t reloff,
prt->dp_flag = partn->flag & 0xFF;
prt->dp_typ = partn->id & 0xFF;
-#if 0 /* XXX */
- prt->dp_start = htole32(partn->bs - off);
- prt->dp_size = htole32(partn->ns);
-#else
- t = htole32(partn->bs - off);
+ t = htole64(partn->bs - off);
memcpy(&prt->dp_start, &t, sizeof(u_int32_t));
- t = htole32(partn->ns);
+ t = htole64(partn->ns);
memcpy(&prt->dp_size, &t, sizeof(u_int32_t));
-#endif
partn->scyl = scsave;
partn->ecyl = ecsave;
@@ -284,7 +279,7 @@ PRT_print(int num, struct prt *partn, char *units)
} else {
size = ((double)partn->ns * unit_types[SECTORS].conversion) /
unit_types[i].conversion;
- printf("%c%1d: %.2X %6u %3u %3u - %6u %3u %3u [%12u:%12.0f%s] %s\n",
+ printf("%c%1d: %.2X %6u %3u %3u - %6u %3u %3u [%12llu:%12.0f%s] %s\n",
(partn->flag == 0x80)?'*':' ',
num, partn->id,
partn->scyl, partn->shead, partn->ssect,
diff --git a/sbin/fdisk/part.h b/sbin/fdisk/part.h
index 1c16f7f02f8..645c1c8c2df 100644
--- a/sbin/fdisk/part.h
+++ b/sbin/fdisk/part.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: part.h,v 1.18 2015/03/16 23:51:50 krw Exp $ */
+/* $OpenBSD: part.h,v 1.19 2015/03/26 14:08:12 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -20,10 +20,10 @@
#define _PART_H
struct prt {
+ u_int64_t bs;
+ u_int64_t ns;
u_int32_t shead, scyl, ssect;
u_int32_t ehead, ecyl, esect;
- u_int32_t bs;
- u_int32_t ns;
unsigned char flag;
unsigned char id;
};
diff --git a/sbin/fdisk/user.c b/sbin/fdisk/user.c
index 1a25339bd35..073c099d44b 100644
--- a/sbin/fdisk/user.c
+++ b/sbin/fdisk/user.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: user.c,v 1.42 2015/03/18 14:46:59 krw Exp $ */
+/* $OpenBSD: user.c,v 1.43 2015/03/26 14:08:12 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -149,7 +149,7 @@ USER_print_disk(void)
break;
MBR_parse(&dos_mbr, offset, firstoff, &mbr);
- printf("Offset: %lld\t", offset);
+ printf("Offset: %lld\t", (long long)offset);
MBR_print(&mbr, NULL);
/* Print out extended partitions too */