aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/cmp
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>2000-05-15 08:30:43 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>2000-05-15 08:30:43 +0000
commite03983a32c622bf10e90ba1708ffd10cbaed8980 (patch)
tree775e166682f3dc341e80ee52ac88b204a305bcad /usr.bin/cmp
parent0669702c014873e2018539a5089f06a768b51f56 (diff)
downloadsrc-e03983a32c622bf10e90ba1708ffd10cbaed8980.tar.gz
src-e03983a32c622bf10e90ba1708ffd10cbaed8980.zip
Let cmp(1) grow in -x option to print differences in contemporarry hex
format rather than the mixed decimal/octal format of -l.
Notes
Notes: svn path=/head/; revision=60583
Diffstat (limited to 'usr.bin/cmp')
-rw-r--r--usr.bin/cmp/cmp.15
-rw-r--r--usr.bin/cmp/cmp.c11
-rw-r--r--usr.bin/cmp/extern.h5
-rw-r--r--usr.bin/cmp/regular.c8
4 files changed, 25 insertions, 4 deletions
diff --git a/usr.bin/cmp/cmp.1 b/usr.bin/cmp/cmp.1
index 6153e5160cb4..60baf924da31 100644
--- a/usr.bin/cmp/cmp.1
+++ b/usr.bin/cmp/cmp.1
@@ -66,6 +66,11 @@ byte values (octal) for each difference.
.It Fl s
Print nothing for differing files; return exit
status only.
+.It Fl x
+Like
+.Fl l
+but prints in hexadecimal and using zero as index
+for the first byte in the files.
.El
.Pp
The optional arguments
diff --git a/usr.bin/cmp/cmp.c b/usr.bin/cmp/cmp.c
index a4f4d8860563..2e1d7984e6c2 100644
--- a/usr.bin/cmp/cmp.c
+++ b/usr.bin/cmp/cmp.c
@@ -29,6 +29,9 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
*/
#ifndef lint
@@ -53,7 +56,7 @@ static const char sccsid[] = "@(#)cmp.c 8.3 (Berkeley) 4/2/94";
#include "extern.h"
-int lflag, sflag;
+int lflag, sflag, xflag;
static void usage __P((void));
@@ -67,7 +70,7 @@ main(argc, argv)
int ch, fd1, fd2, special;
char *file1, *file2;
- while ((ch = getopt(argc, argv, "-ls")) != -1)
+ while ((ch = getopt(argc, argv, "-lsx")) != -1)
switch (ch) {
case 'l': /* print all differences */
lflag = 1;
@@ -75,6 +78,10 @@ main(argc, argv)
case 's': /* silent run */
sflag = 1;
break;
+ case 'x': /* hex output */
+ lflag = 1;
+ xflag = 1;
+ break;
case '-': /* stdin (must be after options) */
--optind;
goto endargs;
diff --git a/usr.bin/cmp/extern.h b/usr.bin/cmp/extern.h
index b01e2de546cc..f3f25d764d69 100644
--- a/usr.bin/cmp/extern.h
+++ b/usr.bin/cmp/extern.h
@@ -31,6 +31,9 @@
* SUCH DAMAGE.
*
* @(#)extern.h 8.3 (Berkeley) 4/2/94
+ *
+ * $FreeBSD$
+ *
*/
#define OK_EXIT 0
@@ -42,4 +45,4 @@ 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 *));
-extern int lflag, sflag;
+extern int lflag, sflag, xflag;
diff --git a/usr.bin/cmp/regular.c b/usr.bin/cmp/regular.c
index 6f4e482954f9..feb5ba2d80b7 100644
--- a/usr.bin/cmp/regular.c
+++ b/usr.bin/cmp/regular.c
@@ -29,6 +29,9 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
*/
#ifndef lint
@@ -96,7 +99,10 @@ c_regular(fd1, file1, skip1, len1, fd2, file2, skip2, len2)
p2 += skip2 - off2;
for (byte = line = 1; length--; ++p1, ++p2, ++byte) {
if ((ch = *p1) != *p2) {
- if (lflag) {
+ if (xflag) {
+ dfound = 1;
+ (void)printf("%08x %02x %02x\n", byte - 1, ch, *p2);
+ } else if (lflag) {
dfound = 1;
(void)printf("%6qd %3o %3o\n", byte, ch, *p2);
} else