Date: Mon, 03 Dec 2001 21:55:54 +0000 From: David Malone <dwmalone@maths.tcd.ie> To: audit@freebsd.org Cc: markm@freebsd.org Subject: Warns for tcopy and wc. Message-ID: <200112032155.aa79655@salmon.maths.tcd.ie>
next in thread | raw e-mail | index | archive | help
I have warns patches for tcopy and wc, but they run into the
following problems.
1) If people want to count something big then they often
use int64_t. Unfortunately these are defined in terms of
different types on the alpha and i386 (long and long long
respectively). This means that printfing these requires
a cast, so in some cases it seems to make more sense to
just use a long long (which C99 says is at least 64 bits).
2) As far as I know, %qd is for printing quat_t and %lld
is for printing long longs. Unfortunately our gcc doesn't
seem to know this and thinks that %qd is for printing long
longs. Until this is fixed it means that quad_t's are as
hard to print as int64_t.
'cos of these two problems, I arrived at the following patches
which use long longs in preference to either quad_t or int64_t.
Any comments on if this should be committed?
David.
Index: tcopy/Makefile
===================================================================
RCS file: /home/ncvs/src/usr.bin/tcopy/Makefile,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 Makefile
--- tcopy/Makefile 27 May 1994 12:32:47 -0000 1.1.1.1
+++ tcopy/Makefile 3 Dec 2001 20:54:29 -0000
@@ -1,5 +1,6 @@
# @(#)Makefile 8.1 (Berkeley) 6/6/93
PROG= tcopy
+WARNS?= 2
.include <bsd.prog.mk>
Index: tcopy/tcopy.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/tcopy/tcopy.c,v
retrieving revision 1.9
diff -u -u -r1.9 tcopy.c
--- tcopy/tcopy.c 13 Aug 2001 21:58:16 -0000 1.9
+++ tcopy/tcopy.c 3 Dec 2001 21:44:29 -0000
@@ -64,7 +64,7 @@
#define NOCOUNT (-2)
int filen, guesslen, maxblk = MAXREC;
-u_int64_t lastrec, record, size, tsize;
+unsigned long long lastrec, record, size, tsize;
FILE *msg;
void *getspace __P((int));
@@ -83,7 +83,8 @@
enum {READ, VERIFY, COPY, COPYVERIFY} op = READ;
sig_t oldsig;
int ch, needeof;
- char *buff, *inf;
+ char *buff;
+ const char *inf;
msg = stdout;
guesslen = 1;
@@ -157,16 +158,16 @@
if (nread >= 0)
goto r1;
}
- err(1, "read error, file %d, record %qu", filen, record);
+ err(1, "read error, file %d, record %llu", filen, record);
} else if (nread != lastnread) {
if (lastnread != 0 && lastnread != NOCOUNT) {
if (lastrec == 0 && nread == 0)
- fprintf(msg, "%qu records\n", record);
+ fprintf(msg, "%llu records\n", record);
else if (record - lastrec > 1)
- fprintf(msg, "records %qu to %qu\n",
+ fprintf(msg, "records %llu to %llu\n",
lastrec, record);
else
- fprintf(msg, "record %qu\n", lastrec);
+ fprintf(msg, "record %llu\n", lastrec);
}
if (nread != 0)
fprintf(msg, "file %d: block size %d: ",
@@ -184,9 +185,9 @@
nw = write(outp, buff, nread);
if (nw != nread) {
if (nw == -1) {
- warn("write error, file %d, record %qu", filen, record);
+ warn("write error, file %d, record %llu", filen, record);
} else {
- warnx("write error, file %d, record %qu", filen, record);
+ warnx("write error, file %d, record %llu", filen, record);
warnx("write (%d) != read (%d)", nw, nread);
}
errx(5, "copy aborted");
@@ -200,7 +201,7 @@
break;
}
fprintf(msg,
- "file %d: eof after %qu records: %qu bytes\n",
+ "file %d: eof after %llu records: %llu bytes\n",
filen, record, size);
needeof = 1;
filen++;
@@ -210,7 +211,7 @@
}
lastnread = nread;
}
- fprintf(msg, "total length: %qu bytes\n", tsize);
+ fprintf(msg, "total length: %llu bytes\n", tsize);
(void)signal(SIGINT, oldsig);
if (op == COPY || op == COPYVERIFY) {
writeop(outp, MTWEOF);
@@ -280,16 +281,16 @@
void
intr(signo)
- int signo;
+ int signo __unused;
{
if (record) {
if (record - lastrec > 1)
- fprintf(msg, "records %qu to %qu\n", lastrec, record);
+ fprintf(msg, "records %llu to %llu\n", lastrec, record);
else
- fprintf(msg, "record %qu\n", lastrec);
+ fprintf(msg, "record %llu\n", lastrec);
}
- fprintf(msg, "interrupt at file %d: record %qu\n", filen, record);
- fprintf(msg, "total length: %ld bytes\n", tsize + size);
+ fprintf(msg, "interrupt at file %d: record %llu\n", filen, record);
+ fprintf(msg, "total length: %lld bytes\n", tsize + size);
exit(1);
}
Index: wc/Makefile
===================================================================
RCS file: /home/ncvs/src/usr.bin/wc/Makefile,v
retrieving revision 1.1.1.1
diff -u -u -r1.1.1.1 Makefile
--- wc/Makefile 27 May 1994 12:33:28 -0000 1.1.1.1
+++ wc/Makefile 3 Dec 2001 20:54:29 -0000
@@ -1,5 +1,6 @@
# @(#)Makefile 8.1 (Berkeley) 6/6/93
PROG= wc
+WARNS?= 2
.include <bsd.prog.mk>
Index: wc/wc.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/wc/wc.c,v
retrieving revision 1.11
diff -u -u -r1.11 wc.c
--- wc/wc.c 28 Aug 1999 01:07:34 -0000 1.11
+++ wc/wc.c 3 Dec 2001 20:54:29 -0000
@@ -58,10 +58,10 @@
#include <string.h>
#include <unistd.h>
-u_quad_t tlinect, twordct, tcharct;
+unsigned long long tlinect, twordct, tcharct;
int doline, doword, dochar;
-int cnt __P((char *));
+int cnt __P((const char *));
void usage __P((void));
int
@@ -113,11 +113,11 @@
if (total > 1) {
if (doline)
- (void)printf(" %7qu", tlinect);
+ (void)printf(" %7llu", tlinect);
if (doword)
- (void)printf(" %7qu", twordct);
+ (void)printf(" %7llu", twordct);
if (dochar)
- (void)printf(" %7qu", tcharct);
+ (void)printf(" %7llu", tcharct);
(void)printf(" total\n");
}
exit(errors == 0 ? 0 : 1);
@@ -125,10 +125,10 @@
int
cnt(file)
- char *file;
+ const char *file;
{
struct stat sb;
- u_quad_t linect, wordct, charct;
+ unsigned long long linect, wordct, charct;
int fd, len;
short gotsp;
u_char *p;
@@ -163,10 +163,10 @@
++linect;
}
tlinect += linect;
- (void)printf(" %7qu", linect);
+ (void)printf(" %7llu", linect);
if (dochar) {
tcharct += charct;
- (void)printf(" %7qu", charct);
+ (void)printf(" %7llu", charct);
}
(void)close(fd);
return (0);
@@ -217,15 +217,15 @@
}
if (doline) {
tlinect += linect;
- (void)printf(" %7qu", linect);
+ (void)printf(" %7llu", linect);
}
if (doword) {
twordct += wordct;
- (void)printf(" %7qu", wordct);
+ (void)printf(" %7llu", wordct);
}
if (dochar) {
tcharct += charct;
- (void)printf(" %7qu", charct);
+ (void)printf(" %7llu", charct);
}
(void)close(fd);
return (0);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200112032155.aa79655>
