summaryrefslogtreecommitdiffstats
path: root/bin/dd
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2003-02-27 18:04:54 +0000
committermarkm <markm@FreeBSD.org>2003-02-27 18:04:54 +0000
commit5736aa9039e290655a2484d65e3da9ab4033863d (patch)
treed203dbd769dc431349601f5d03ed08b57352472d /bin/dd
parent5c7b43870b95aef3fdb86f420e387bc30f7fb1d5 (diff)
downloadFreeBSD-src-5736aa9039e290655a2484d65e3da9ab4033863d.zip
FreeBSD-src-5736aa9039e290655a2484d65e3da9ab4033863d.tar.gz
WARNS=4 fixes. This would be WARNS=9 if we were -std=99 instead of
-ansi, due to 'long long'. Reviewed by: green (slightly earlier version)
Diffstat (limited to 'bin/dd')
-rw-r--r--bin/dd/Makefile3
-rw-r--r--bin/dd/args.c47
-rw-r--r--bin/dd/conv.c8
-rw-r--r--bin/dd/dd.c9
-rw-r--r--bin/dd/dd.h14
-rw-r--r--bin/dd/extern.h6
-rw-r--r--bin/dd/misc.c9
-rw-r--r--bin/dd/position.c1
8 files changed, 50 insertions, 47 deletions
diff --git a/bin/dd/Makefile b/bin/dd/Makefile
index 7edf221..892ca8d 100644
--- a/bin/dd/Makefile
+++ b/bin/dd/Makefile
@@ -3,8 +3,7 @@
PROG= dd
SRCS= args.c conv.c conv_tab.c dd.c misc.c position.c
-WARNS= 0
-WFORMAT=0
+WARNS?= 4
MAINTAINER= green@FreeBSD.org
diff --git a/bin/dd/args.c b/bin/dd/args.c
index 490e33d..9d2aa6a 100644
--- a/bin/dd/args.c
+++ b/bin/dd/args.c
@@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <errno.h>
+#include <inttypes.h>
#include <limits.h>
#include <stdlib.h>
#include <string.h>
@@ -67,7 +68,7 @@ static void f_obs(char *);
static void f_of(char *);
static void f_seek(char *);
static void f_skip(char *);
-static u_quad_t get_num(const char *);
+static uintmax_t get_num(const char *);
static off_t get_off_t(const char *);
static const struct arg {
@@ -167,8 +168,10 @@ jcl(char **argv)
/*
* Bail out if the calculation of a file offset would overflow.
*/
- if (in.offset > QUAD_MAX / in.dbsz || out.offset > QUAD_MAX / out.dbsz)
- errx(1, "seek offsets cannot be larger than %qd", QUAD_MAX);
+ if (in.offset > OFF_MAX / (ssize_t)in.dbsz ||
+ out.offset > OFF_MAX / (ssize_t)out.dbsz)
+ errx(1, "seek offsets cannot be larger than %jd",
+ (intmax_t)OFF_MAX);
}
static int
@@ -182,7 +185,7 @@ c_arg(const void *a, const void *b)
static void
f_bs(char *arg)
{
- u_quad_t res;
+ uintmax_t res;
res = get_num(arg);
if (res < 1 || res > SSIZE_MAX)
@@ -193,7 +196,7 @@ f_bs(char *arg)
static void
f_cbs(char *arg)
{
- u_quad_t res;
+ uintmax_t res;
res = get_num(arg);
if (res < 1 || res > SSIZE_MAX)
@@ -204,15 +207,15 @@ f_cbs(char *arg)
static void
f_count(char *arg)
{
- u_quad_t res;
+ intmax_t res;
- res = get_num(arg);
- if ((quad_t)res < 0)
+ res = (intmax_t)get_num(arg);
+ if (res < 0)
errx(1, "count cannot be negative");
if (res == 0)
- cpy_cnt = -1;
+ cpy_cnt = (uintmax_t)-1;
else
- cpy_cnt = (quad_t)res;
+ cpy_cnt = (uintmax_t)res;
}
static void
@@ -221,18 +224,18 @@ f_files(char *arg)
files_cnt = get_num(arg);
if (files_cnt < 1)
- errx(1, "files must be between 1 and %qd", QUAD_MAX);
+ errx(1, "files must be between 1 and %jd", (uintmax_t)-1);
}
static void
f_ibs(char *arg)
{
- u_quad_t res;
+ uintmax_t res;
if (!(ddflags & C_BS)) {
res = get_num(arg);
if (res < 1 || res > SSIZE_MAX)
- errx(1, "ibs must be between 1 and %d", SSIZE_MAX);
+ errx(1, "ibs must be between 1 and %zd", SSIZE_MAX);
in.dbsz = (size_t)res;
}
}
@@ -247,12 +250,12 @@ f_if(char *arg)
static void
f_obs(char *arg)
{
- u_quad_t res;
+ uintmax_t res;
if (!(ddflags & C_BS)) {
res = get_num(arg);
if (res < 1 || res > SSIZE_MAX)
- errx(1, "obs must be between 1 and %d", SSIZE_MAX);
+ errx(1, "obs must be between 1 and %zd", SSIZE_MAX);
out.dbsz = (size_t)res;
}
}
@@ -329,7 +332,7 @@ c_conv(const void *a, const void *b)
}
/*
- * Convert an expression of the following forms to a u_quad_t.
+ * Convert an expression of the following forms to a uintmax_t.
* 1) A positive decimal number.
* 2) A positive decimal number followed by a b (mult by 512).
* 3) A positive decimal number followed by a k (mult by 1 << 10).
@@ -340,10 +343,10 @@ c_conv(const void *a, const void *b)
* separated by x (also * for backwards compatibility), specifying
* the product of the indicated values.
*/
-static u_quad_t
+static uintmax_t
get_num(const char *val)
{
- u_quad_t num, mult, prevnum;
+ uintmax_t num, mult, prevnum;
char *expr;
errno = 0;
@@ -406,14 +409,12 @@ erange:
* Convert an expression of the following forms to an off_t. This is the
* same as get_num(), but it uses signed numbers.
*
- * The major problem here is that an off_t may not necessarily be a quad_t.
- * The right thing to do would be to use intmax_t when available and then
- * cast down to an off_t, if possible.
+ * The major problem here is that an off_t may not necessarily be a intmax_t.
*/
static off_t
get_off_t(const char *val)
{
- quad_t num, mult, prevnum;
+ intmax_t num, mult, prevnum;
char *expr;
errno = 0;
@@ -457,7 +458,7 @@ get_off_t(const char *val)
break;
case '*': /* Backward compatible. */
case 'x':
- mult = (quad_t)get_off_t(expr + 1);
+ mult = (intmax_t)get_off_t(expr + 1);
prevnum = num;
num *= mult;
if ((prevnum > 0) == (num > 0) && num / mult == prevnum)
diff --git a/bin/dd/conv.c b/bin/dd/conv.c
index 734513a..a31e520 100644
--- a/bin/dd/conv.c
+++ b/bin/dd/conv.c
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <err.h>
+#include <inttypes.h>
#include <string.h>
#include "dd.h"
@@ -171,7 +172,8 @@ block(void)
++st.trunc;
/* Toss characters to a newline. */
- for (; in.dbcnt && *inp++ != '\n'; --in.dbcnt);
+ for (; in.dbcnt && *inp++ != '\n'; --in.dbcnt)
+ ;
if (!in.dbcnt)
intrunc = 1;
else
@@ -223,8 +225,8 @@ unblock(void)
/* Translation and case conversion. */
if ((t = ctab) != NULL)
- for (cnt = in.dbrcnt, inp = in.dbp; cnt--;)
- *--inp = t[*inp];
+ for (inp = in.dbp - (cnt = in.dbrcnt); cnt--; ++inp)
+ *inp = t[*inp];
/*
* Copy records (max cbsz size chunks) into the output buffer. The
* translation has to already be done or we might not recognize the
diff --git a/bin/dd/dd.c b/bin/dd/dd.c
index 78558d2..92274f2 100644
--- a/bin/dd/dd.c
+++ b/bin/dd/dd.c
@@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <errno.h>
#include <fcntl.h>
+#include <inttypes.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
@@ -77,11 +78,11 @@ static void setup(void);
IO in, out; /* input/output state */
STAT st; /* statistics */
void (*cfunc)(void); /* conversion function */
-u_quad_t cpy_cnt; /* # of blocks to copy */
+uintmax_t cpy_cnt; /* # of blocks to copy */
static off_t pending = 0; /* pending seek if sparse */
-u_int ddflags; /* conversion options */
+u_int ddflags = 0; /* conversion options */
size_t cbsz; /* conversion block size */
-quad_t files_cnt = 1; /* # of files to copy */
+uintmax_t files_cnt = 1; /* # of files to copy */
const u_char *ctab; /* conversion table */
int
@@ -247,7 +248,7 @@ dd_in(void)
case 0:
break;
default:
- if (st.in_full + st.in_part >= (u_quad_t)cpy_cnt)
+ if (st.in_full + st.in_part >= (uintmax_t)cpy_cnt)
return;
break;
}
diff --git a/bin/dd/dd.h b/bin/dd/dd.h
index caf161b..c6211d9 100644
--- a/bin/dd/dd.h
+++ b/bin/dd/dd.h
@@ -62,13 +62,13 @@ typedef struct {
} IO;
typedef struct {
- u_quad_t in_full; /* # of full input blocks */
- u_quad_t in_part; /* # of partial input blocks */
- u_quad_t out_full; /* # of full output blocks */
- u_quad_t out_part; /* # of partial output blocks */
- u_quad_t trunc; /* # of truncated records */
- u_quad_t swab; /* # of odd-length swab blocks */
- u_quad_t bytes; /* # of bytes written */
+ uintmax_t in_full; /* # of full input blocks */
+ uintmax_t in_part; /* # of partial input blocks */
+ uintmax_t out_full; /* # of full output blocks */
+ uintmax_t out_part; /* # of partial output blocks */
+ uintmax_t trunc; /* # of truncated records */
+ uintmax_t swab; /* # of odd-length swab blocks */
+ uintmax_t bytes; /* # of bytes written */
double start; /* start time of dd */
} STAT;
diff --git a/bin/dd/extern.h b/bin/dd/extern.h
index 8bbb357..e835462 100644
--- a/bin/dd/extern.h
+++ b/bin/dd/extern.h
@@ -38,8 +38,6 @@
* $FreeBSD$
*/
-#include <sys/cdefs.h>
-
void block(void);
void block_close(void);
void dd_out(int);
@@ -57,10 +55,10 @@ void unblock_close(void);
extern IO in, out;
extern STAT st;
extern void (*cfunc)(void);
-extern u_quad_t cpy_cnt;
+extern uintmax_t cpy_cnt;
extern size_t cbsz;
extern u_int ddflags;
-extern quad_t files_cnt;
+extern uintmax_t files_cnt;
extern const u_char *ctab;
extern const u_char a2e_32V[], a2e_POSIX[];
extern const u_char e2a_32V[], e2a_POSIX[];
diff --git a/bin/dd/misc.c b/bin/dd/misc.c
index f95a811..e142009 100644
--- a/bin/dd/misc.c
+++ b/bin/dd/misc.c
@@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$");
#include <sys/time.h>
#include <errno.h>
+#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -68,21 +69,21 @@ summary(void)
secs = 1e-6;
/* Use snprintf(3) so that we don't reenter stdio(3). */
(void)snprintf(buf, sizeof(buf),
- "%qu+%qu records in\n%qu+%qu records out\n",
+ "%ju+%ju records in\n%ju+%ju records out\n",
st.in_full, st.in_part, st.out_full, st.out_part);
(void)write(STDERR_FILENO, buf, strlen(buf));
if (st.swab) {
- (void)snprintf(buf, sizeof(buf), "%qu odd length swab %s\n",
+ (void)snprintf(buf, sizeof(buf), "%ju odd length swab %s\n",
st.swab, (st.swab == 1) ? "block" : "blocks");
(void)write(STDERR_FILENO, buf, strlen(buf));
}
if (st.trunc) {
- (void)snprintf(buf, sizeof(buf), "%qu truncated %s\n",
+ (void)snprintf(buf, sizeof(buf), "%ju truncated %s\n",
st.trunc, (st.trunc == 1) ? "block" : "blocks");
(void)write(STDERR_FILENO, buf, strlen(buf));
}
(void)snprintf(buf, sizeof(buf),
- "%qu bytes transferred in %.6f secs (%.0f bytes/sec)\n",
+ "%ju bytes transferred in %.6f secs (%.0f bytes/sec)\n",
st.bytes, secs, st.bytes / secs);
(void)write(STDERR_FILENO, buf, strlen(buf));
}
diff --git a/bin/dd/position.c b/bin/dd/position.c
index 51eafde..6476f41 100644
--- a/bin/dd/position.c
+++ b/bin/dd/position.c
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
#include <err.h>
#include <errno.h>
+#include <inttypes.h>
#include <unistd.h>
#include "dd.h"
OpenPOWER on IntegriCloud