Date: Sun, 27 May 2001 23:29:27 -0400 From: Mike Heffner <mheffner@cowpie.acm.vt.edu> To: freebsd-audit@freebsd.org Subject: cmp(1) patch Message-ID: <20010527232926.A85869@cowpie.acm.vt.edu>
next in thread | raw e-mail | index | archive | help
BDECFLAGS cleanup, respect -s flag in one place, return instead of
exit() at end of main. Please review.
Index: cmp.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/cmp/cmp.c,v
retrieving revision 1.9
diff -u -r1.9 cmp.c
--- cmp.c 2000/07/25 13:01:34 1.9
+++ cmp.c 2001/05/26 21:57:56
@@ -58,6 +58,7 @@
int lflag, sflag, xflag, zflag;
+int main __P((int, char *[]));
static void usage __P((void));
int
@@ -68,7 +69,7 @@
struct stat sb1, sb2;
off_t skip1, skip2;
int ch, fd1, fd2, special;
- char *file1, *file2;
+ const char *file1, *file2;
while ((ch = getopt(argc, argv, "-lsxz")) != -1)
switch (ch) {
@@ -117,9 +118,13 @@
exit(1);
}
if (strcmp(file2 = argv[1], "-") == 0) {
- if (special)
- errx(ERR_EXIT,
+ if (special) {
+ if (!sflag)
+ errx(ERR_EXIT,
"standard input may only be specified once");
+ else
+ exit(1);
+ }
special = 1;
fd2 = 0;
file2 = "stdin";
@@ -160,14 +165,14 @@
else {
if (zflag && sb1.st_size != sb2.st_size) {
if (!sflag)
- (void) printf("%s %s differ: size\n",
+ (void)printf("%s %s differ: size\n",
file1, file2);
exit(DIFF_EXIT);
}
c_regular(fd1, file1, skip1, sb1.st_size,
fd2, file2, skip2, sb2.st_size);
}
- exit(0);
+ return (0);
}
static void
Index: extern.h
===================================================================
RCS file: /home/ncvs/src/usr.bin/cmp/extern.h,v
retrieving revision 1.2
diff -u -r1.2 extern.h
--- extern.h 2000/05/15 08:30:43 1.2
+++ extern.h 2001/05/26 21:57:56
@@ -40,9 +40,10 @@
#define DIFF_EXIT 1
#define ERR_EXIT 2 /* error exit code */
-void c_regular __P((int, char *, off_t, off_t, int, char *, off_t, off_t));
-void c_special __P((int, char *, off_t, int, char *, off_t));
-void diffmsg __P((char *, char *, off_t, off_t));
-void eofmsg __P((char *));
+void c_regular __P((int, const char *, off_t, off_t, int,
+ const char *, off_t, off_t));
+void c_special __P((int, const char *, off_t, int, const char *, off_t));
+void diffmsg __P((const char *, const char *, off_t, off_t));
+void eofmsg __P((const char *));
extern int lflag, sflag, xflag;
Index: misc.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/cmp/misc.c,v
retrieving revision 1.2
diff -u -r1.2 misc.c
--- misc.c 1998/12/06 22:58:15 1.2
+++ misc.c 2001/05/26 21:57:57
@@ -45,7 +45,7 @@
void
eofmsg(file)
- char *file;
+ const char *file;
{
if (!sflag)
warnx("EOF on %s", file);
@@ -54,11 +54,11 @@
void
diffmsg(file1, file2, byte, line)
- char *file1, *file2;
+ const char *file1, *file2;
off_t byte, line;
{
if (!sflag)
- (void)printf("%s %s differ: char %qd, line %qd\n",
- file1, file2, byte, line);
+ (void)printf("%s %s differ: char %lld, line %lld\n",
+ file1, file2, (long long)byte, (long long)line);
exit(DIFF_EXIT);
}
Index: regular.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/cmp/regular.c,v
retrieving revision 1.10
diff -u -r1.10 regular.c
--- regular.c 2000/06/20 20:28:40 1.10
+++ regular.c 2001/05/26 21:57:57
@@ -56,7 +56,7 @@
void
c_regular(fd1, file1, skip1, len1, fd2, file2, skip2, len2)
int fd1, fd2;
- char *file1, *file2;
+ const char *file1, *file2;
off_t skip1, len1, skip2, len2;
{
u_char ch, *p1, *p2;
@@ -81,8 +81,10 @@
off2 = ROUNDPAGE(skip2);
length = MIN(len1, len2);
- if (length > SIZE_T_MAX)
- return (c_special(fd1, file1, skip1, fd2, file2, skip2));
+ if (length > SIZE_T_MAX) {
+ c_special(fd1, file1, skip1, fd2, file2, skip2);
+ return;
+ }
if ((p1 = (u_char *)mmap(NULL, (size_t)len1 + skip1 % pagesize,
PROT_READ, MAP_SHARED, fd1, off1)) == (u_char *)MAP_FAILED)
@@ -101,10 +103,12 @@
if ((ch = *p1) != *p2) {
if (xflag) {
dfound = 1;
- (void)printf("%08qx %02x %02x\n", byte - 1, ch, *p2);
+ (void)printf("%08llx %02x %02x\n",
+ (long long)byte - 1, ch, *p2);
} else if (lflag) {
dfound = 1;
- (void)printf("%6qd %3o %3o\n", byte, ch, *p2);
+ (void)printf("%6lld %3o %3o\n", (long long)byte,
+ ch, *p2);
} else
diffmsg(file1, file2, byte, line);
/* NOTREACHED */
Index: special.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/cmp/special.c,v
retrieving revision 1.4
diff -u -r1.4 special.c
--- special.c 1999/04/25 22:37:57 1.4
+++ special.c 2001/05/26 21:57:57
@@ -47,7 +47,7 @@
void
c_special(fd1, file1, skip1, fd2, file2, skip2)
int fd1, fd2;
- char *file1, *file2;
+ const char *file1, *file2;
off_t skip1, skip2;
{
int ch1, ch2;
@@ -76,7 +76,8 @@
if (ch1 != ch2) {
if (lflag) {
dfound = 1;
- (void)printf("%6qd %3o %3o\n", byte, ch1, ch2);
+ (void)printf("%6lld %3o %3o\n",
+ (long long)byte, ch1, ch2);
} else {
diffmsg(file1, file2, byte, line);
/* NOTREACHED */
Mike
--
Mike Heffner <mheffner@vt.edu>
Fredericksburg, VA <mikeh@FreeBSD.org>
http://filebox.vt.edu/users/mheffner
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?20010527232926.A85869>
