[bug-diffutils] bug#37558: [PATCH] cmp: fix address spacing with -l

2019-09-29 Thread dmo2...@gmail.com
Looks like there's a bit of a spacing goof with 'cmp -l':

$ cat /tmp/j1
Jackdaws love my big sphinx of quartz!
$ cat /tmp/j2
jackdaws love my big sphinx of quartz.
$ ./cmp -l j1 j2
1 112 152
38  41  56


I think this fixes it.

diff --git a/src/cmp.c b/src/cmp.c
index 16e8869..3124b98 100644
--- a/src/cmp.c
+++ b/src/cmp.c
@@ -394,7 +394,7 @@ cmp (void)

   if (comparison_type == type_all_diffs)
 {
-  off_t byte_number_max = MIN (bytes, TYPE_MAXIMUM (off_t));
+  off_t byte_number_max = bytes >= 0 ? bytes : TYPE_MAXIMUM (off_t);

   for (f = 0; f < 2; f++)
 if (S_ISREG (stat_buf[f].st_mode))
diff --git a/tests/cmp b/tests/cmp
index 97f2b5f..ff49388 100755
--- a/tests/cmp
+++ b/tests/cmp
@@ -218,4 +218,14 @@ case `LC_ALL=C cmp -b bad bug` in
   *) echo 'expected cmp -b to report a and u'; fail=1;;
 esac

+printf 'Jackdaws love my big sphinx of quartz!' > j1
+printf 'jackdaws love my big sphinx of quartz.' > j2
+cat <<'EOF' > exp2 || fail=1
+ 1 112 J152 j
+38  41 ! 56 .
+EOF
+cmp -bl j1 j2 > out2
+test $? -eq 1 || fail=1
+compare exp2 out2 || fail=1
+
 Exit $fail

Dave Odell





[bug-diffutils] bug#37844: [PATCH] cmp -x/--verbose-hex

2019-10-20 Thread dmo2...@gmail.com
This adds a `-x`/`--verbose-hex` option to `cmp`, similar to what FreeBSD has in
its own `cmp`. From `doc/diffutils.texi`:

'-x'
'--verbose-hex'
 Like '--verbose', but with hexadecimal numbers, and byte numbers
 starting at 0.

A few assorted points:
* `cmp -x` always displays a minimum of eight hex digits, just like FreeBSD's
implementation.
* `offtostr` only does decimal, so it was removed in a few places where
hexadecimal was called for.
* Some of the format strings had `%s` replaced with `%"PRIuMAX"`, in part
because of GCC's new `-Wformat-overflow` feature. These strings are translated,
and because it was a simple fix, I updated the `.po` files.
* For `-x`, I replaced "EOF on FILE after byte 511" to "EOF on FILE at byte
0x200". I think it's a bit more useful this way.
* I believe the Malay (`ms.po`) translation needs a bit of attention at this
spot regarding the printf format string:
```
#: src/cmp.c:592
#, fuzzy, c-format
#| msgid "cmp: EOF on %s\n"
msgid "cmp: EOF on %s after byte %s\n"
msgstr "%s: EOF tidak dijangka selepas membaca %d/%d bins\n"
```

This is a bit more than the 15-or-so lines of code that are "not legally
significant for copyright", so let me know if there's paperwork that needs to be
filled out.

Dave Odell

--- a/bg.po
+++ b/bg.po
@@ -654,18 +654,18 @@ msgstr "cmp: „EOF“ в празния „%s“\n"
 
 #: src/cmp.c:585
 #, c-format
-msgid "cmp: EOF on %s after byte %s, line %s\n"
-msgstr "cmp: „EOF“ в „%s“ след байт %s, ред %s\n"
+msgid "cmp: EOF on %s after byte %, line %\n"
+msgstr "cmp: „EOF“ в „%s“ след байт %, ред %\n"
 
 #: src/cmp.c:586
 #, c-format
-msgid "cmp: EOF on %s after byte %s, in line %s\n"
-msgstr "cmp: „EOF“ в „%s“ след байт %s, на ред %s\n"
+msgid "cmp: EOF on %s after byte %, in line %\n"
+msgstr "cmp: „EOF“ в „%s“ след байт %, на ред %\n"
 
 #: src/cmp.c:592
 #, c-format
-msgid "cmp: EOF on %s after byte %s\n"
-msgstr "cmp: „EOF“ в „%s“ след байт %s\n"
+msgid "cmp: EOF on %s after byte %\n"
+msgstr "cmp: „EOF“ в „%s“ след байт %\n"
 
 #. This is a proper name. See the gettext manual, section Names.
 #: src/diff.c:50
--- a/cs.po
+++ b/cs.po
@@ -649,18 +649,18 @@ msgstr "cmp: konec souboru v %s, který je prázdný\n"
 
 #: src/cmp.c:585
 #, c-format
-msgid "cmp: EOF on %s after byte %s, line %s\n"
-msgstr "cmp: konec souboru v %s po bajtu %s, řádek %s\n"
+msgid "cmp: EOF on %s after byte %, line %\n"
+msgstr "cmp: konec souboru v %s po bajtu %, řádek %\n"
 
 #: src/cmp.c:586
 #, c-format
-msgid "cmp: EOF on %s after byte %s, in line %s\n"
-msgstr "cmp: konec souboru v %s po bajtu %s na řádku %s\n"
+msgid "cmp: EOF on %s after byte %, in line %\n"
+msgstr "cmp: konec souboru v %s po bajtu % na řádku %\n"
 
 #: src/cmp.c:592
 #, c-format
-msgid "cmp: EOF on %s after byte %s\n"
-msgstr "cmp: konec souboru v %s po bajtu %s\n"
+msgid "cmp: EOF on %s after byte %\n"
+msgstr "cmp: konec souboru v %s po bajtu %\n"
 
 #. This is a proper name. See the gettext manual, section Names.
 #: src/diff.c:50
--- a/da.po
+++ b/da.po
@@ -650,18 +650,18 @@ msgstr "cmp: filafslutning på %s som er tom\n"
 
 #: src/cmp.c:585
 #, c-format
-msgid "cmp: EOF on %s after byte %s, line %s\n"
-msgstr "cmp: filafslutning på %s efter byte %s, linje %s\n"
+msgid "cmp: EOF on %s after byte %, line %\n"
+msgstr "cmp: filafslutning på %s efter byte %, linje %\n"
 
 #: src/cmp.c:586
 #, c-format
-msgid "cmp: EOF on %s after byte %s, in line %s\n"
-msgstr "cmp: filafslutning på %s efter byte %s i linje %s\n"
+msgid "cmp: EOF on %s after byte %, in line %\n"
+msgstr "cmp: filafslutning på %s efter byte % i linje %\n"
 
 #: src/cmp.c:592
 #, c-format
-msgid "cmp: EOF on %s after byte %s\n"
-msgstr "cmp: filafslutning på %s efter byte %s\n"
+msgid "cmp: EOF on %s after byte %\n"
+msgstr "cmp: filafslutning på %s efter byte %\n"
 
 #. This is a proper name. See the gettext manual, section Names.
 #: src/diff.c:50
--- a/de.po
+++ b/de.po
@@ -658,18 +658,18 @@ msgstr "cmp: Dateiende in %s, welche leer ist.\n"
 
 #: src/cmp.c:585
 #, c-format
-msgid "cmp: EOF on %s after byte %s, line %s\n"
-msgstr "cmp: Dateiende in %s nach Byte %s, Zeile %s\n"
+msgid "cmp: EOF on %s after byte %, line %\n"
+msgstr "cmp: Dateiende in %s nach Byte %, Zeile %\n"
 
 #: src/cmp.c:586
 #, c-format
-msgid "cmp: EOF on %s after byte %s, in line %s\n"
-msgstr "cmp: Dateiende in %s nach Byte %s, Zeile %s\n"
+msgid "cmp: EOF on %s after byte %, in line %\n"
+msgstr "cmp: Dateiende in %s nach Byte %, Zeile %\n"
 
 #: src/cmp.c:592
 #, c-format
-msgid "cmp: EOF on %s after byte %s\n"
-msgstr "cmp: Dateiende in %s nach Byte %s\n"
+msgid "cmp: EOF on %s after byte %\n"
+msgstr "cmp: Dateiende in %s nach Byte %\n"
 
 #. This is a proper name. See the gettext manual, section Names.
 #: src/diff.c:50
--- a/el.po
+++ b/el.po
@@ -651,18 +651,18 @@ msgstr "cmp: EOF στο %s που είÎ