summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDungSaga <dungsaga@users.noreply.github.com>2021-11-22 11:57:31 +0000
committerBram Moolenaar <Bram@vim.org>2021-11-22 11:57:31 +0000
commit581f41adb3ba1dc95bf4fc7c434427e1203be5e8 (patch)
tree1e35545884574d534257dee9b0afa4da0e542373
parent88a4205f1cfbdc328e987ab00521fc8a22447fc3 (diff)
patch 8.2.3641: xxd code has duplicate expressionsv8.2.3641
Problem: Xxd code has duplicate expressions. Solution: Refactor to avoid duplication. (closes #9185)
-rw-r--r--src/version.c2
-rw-r--r--src/xxd/xxd.c20
2 files changed, 8 insertions, 14 deletions
diff --git a/src/version.c b/src/version.c
index a83ff61bca..99c8a26972 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
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 e2f893b7da..cef3c61279 100644
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -811,24 +811,16 @@ main(int argc, char *argv[])
{
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)
- {
- l[c = (addrlen + 1 + (grplen * p) / octspergrp)] = hexx[(e >> 4) & 0xf];
- l[++c] = hexx[ e & 0xf];
- }
- else if (hextype == HEX_LITTLEENDIAN)
+ if (hextype == HEX_NORMAL || 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 */
{