patch 8.2.3641: xxd code has duplicate expressions
Problem: Xxd code has duplicate expressions.
Solution: Refactor to avoid duplication. (closes #9185)
diff --git a/src/version.c b/src/version.c
index a83ff61..99c8a26 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3641,
+/**/
3640,
/**/
3639,
diff --git a/src/xxd/xxd.c b/src/xxd/xxd.c
index e2f893b..cef3c61 100644
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -811,24 +811,16 @@
{
if (p == 0)
{
- if (decimal_offset)
- addrlen = sprintf(l, "%08ld:",
- ((unsigned long)(n + seekoff + displayoff)));
- else
- addrlen = sprintf(l, "%08lx:",
+ addrlen = sprintf(l, decimal_offset ? "%08ld:" : "%08lx:",
((unsigned long)(n + seekoff + displayoff)));
for (c = addrlen; c < LLEN; l[c++] = ' ');
}
- if (hextype == HEX_NORMAL)
+ if (hextype == HEX_NORMAL || hextype == HEX_LITTLEENDIAN)
{
- l[c = (addrlen + 1 + (grplen * p) / octspergrp)] = hexx[(e >> 4) & 0xf];
- l[++c] = hexx[ e & 0xf];
- }
- else if (hextype == HEX_LITTLEENDIAN)
- {
- int x = p ^ (octspergrp-1);
- l[c = (addrlen + 1 + (grplen * x) / octspergrp)] = hexx[(e >> 4) & 0xf];
- l[++c] = hexx[ e & 0xf];
+ int x = hextype == HEX_NORMAL ? p : p ^ (octspergrp-1);
+ l[c = (addrlen + 1 + (grplen * x) / octspergrp)]
+ = hexx[(e >> 4) & 0xf];
+ l[++c] = hexx[e & 0xf];
}
else /* hextype == HEX_BITS */
{