diff options
Diffstat (limited to 'data/vim/patches/8.1.0854')
-rw-r--r-- | data/vim/patches/8.1.0854 | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0854 b/data/vim/patches/8.1.0854 new file mode 100644 index 000000000..c45b941de --- /dev/null +++ b/data/vim/patches/8.1.0854 @@ -0,0 +1,251 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0854 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0854 +Problem: xxd does not work with more than 32 bit addresses. +Solution: Add support for 64 bit addresses. (Christer Jensen, closes #3791) +Files: src/xxd/xxd.c + + +*** ../vim-8.1.0853/src/xxd/xxd.c 2019-01-25 21:52:12.190931859 +0100 +--- src/xxd/xxd.c 2019-01-30 23:00:28.306174236 +0100 +*************** +*** 52,57 **** +--- 52,58 ---- + * 2011 March Better error handling by Florian Zumbiehl. + * 2011 April Formatting by Bram Moolenaar + * 08.06.2013 Little-endian hexdump (-e) and offset (-o) by Vadim Vygonets. ++ * 11.01.2019 Add full 64/32 bit range to -o and output by Christer Jensen. + * + * (c) 1990-1998 by Juergen Weigert (jnweiger@informatik.uni-erlangen.de) + * +*************** +*** 90,95 **** +--- 91,97 ---- + #include <stdlib.h> + #include <string.h> /* for strncmp() */ + #include <ctype.h> /* for isalnum() */ ++ #include <limits.h> + #if __MWERKS__ && !defined(BEBOX) + # include <unix.h> /* for fdopen() on MAC */ + #endif +*************** +*** 204,210 **** + + #define TRY_SEEK /* attempt to use lseek, or skip forward by reading */ + #define COLS 256 /* change here, if you ever need more columns */ +! #define LLEN (12 + (9*COLS-1) + COLS + 2) + + char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa; + +--- 206,212 ---- + + #define TRY_SEEK /* attempt to use lseek, or skip forward by reading */ + #define COLS 256 /* change here, if you ever need more columns */ +! #define LLEN ((2*(int)sizeof(unsigned long)) + 4 + (9*COLS-1) + COLS + 2) + + char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa; + +*************** +*** 466,472 **** + int ebcdic = 0; + int octspergrp = -1; /* number of octets grouped in output */ + int grplen; /* total chars per octet group */ +! long length = -1, n = 0, seekoff = 0, displayoff = 0; + static char l[LLEN+1]; /* static because it may be too big for stack */ + char *pp; + +--- 468,475 ---- + int ebcdic = 0; + int octspergrp = -1; /* number of octets grouped in output */ + int grplen; /* total chars per octet group */ +! long length = -1, n = 0, seekoff = 0; +! unsigned long displayoff = 0; + static char l[LLEN+1]; /* static because it may be too big for stack */ + char *pp; + +*************** +*** 536,548 **** + } + else if (!STRNCMP(pp, "-o", 2)) + { + if (pp[2] && STRNCMP("ffset", pp + 2, 5)) +! displayoff = (int)strtol(pp + 2, NULL, 0); + else + { + if (!argv[2]) + exit_with_usage(); +! displayoff = (int)strtol(argv[2], NULL, 0); + argv++; + argc--; + } +--- 539,563 ---- + } + else if (!STRNCMP(pp, "-o", 2)) + { ++ int reloffset = 0; ++ int negoffset = 0; + if (pp[2] && STRNCMP("ffset", pp + 2, 5)) +! displayoff = strtoul(pp + 2, NULL, 0); + else + { + if (!argv[2]) + exit_with_usage(); +! +! if (argv[2][0] == '+') +! reloffset++; +! if (argv[2][reloffset] == '-') +! negoffset++; +! +! if (negoffset) +! displayoff = ULONG_MAX - strtoul(argv[2] + reloffset+negoffset, NULL, 0) + 1; +! else +! displayoff = strtoul(argv[2] + reloffset+negoffset, NULL, 0); +! + argv++; + argc--; + } +*************** +*** 805,835 **** + else /* hextype == HEX_BITS */ + grplen = 8 * octspergrp + 1; + + e = 0; + while ((length < 0 || n < length) && (e = getc(fp)) != EOF) + { + if (p == 0) + { +! sprintf(l, "%08lx:", +! ((unsigned long)(n + seekoff + displayoff)) & 0xffffffff); +! for (c = 9; c < LLEN; l[c++] = ' '); + } + if (hextype == HEX_NORMAL) + { +! l[c = (10 + (grplen * p) / octspergrp)] = hexx[(e >> 4) & 0xf]; + l[++c] = hexx[ e & 0xf]; + } + else if (hextype == HEX_LITTLEENDIAN) + { + int x = p ^ (octspergrp-1); +! l[c = (10 + (grplen * x) / octspergrp)] = hexx[(e >> 4) & 0xf]; + l[++c] = hexx[ e & 0xf]; + } + else /* hextype == HEX_BITS */ + { + int i; + +! c = (10 + (grplen * p) / octspergrp) - 1; + for (i = 7; i >= 0; i--) + l[++c] = (e & (1 << i)) ? '1' : '0'; + } +--- 820,851 ---- + else /* hextype == HEX_BITS */ + grplen = 8 * octspergrp + 1; + ++ int addrlen = 9; + e = 0; + while ((length < 0 || n < length) && (e = getc(fp)) != EOF) + { + if (p == 0) + { +! addrlen = sprintf(l, "%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) + { + int x = p ^ (octspergrp-1); +! l[c = (addrlen + 1 + (grplen * x) / octspergrp)] = hexx[(e >> 4) & 0xf]; + l[++c] = hexx[ e & 0xf]; + } + else /* hextype == HEX_BITS */ + { + int i; + +! c = (addrlen + 1 + (grplen * p) / octspergrp) - 1; + for (i = 7; i >= 0; i--) + l[++c] = (e & (1 << i)) ? '1' : '0'; + } +*************** +*** 838,844 **** + if (ebcdic) + e = (e < 64) ? '.' : etoa64[e-64]; + /* When changing this update definition of LLEN above. */ +! l[12 + (grplen * cols - 1)/octspergrp + p] = + #ifdef __MVS__ + (e >= 64) + #else +--- 854,860 ---- + if (ebcdic) + e = (e < 64) ? '.' : etoa64[e-64]; + /* When changing this update definition of LLEN above. */ +! l[addrlen + 3 + (grplen * cols - 1)/octspergrp + p] = + #ifdef __MVS__ + (e >= 64) + #else +*************** +*** 848,854 **** + n++; + if (++p == cols) + { +! l[c = (12 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0'; + xxdline(fpo, l, autoskip ? nonzero : 1); + nonzero = 0; + p = 0; +--- 864,870 ---- + n++; + if (++p == cols) + { +! l[c = (addrlen + 3 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0'; + xxdline(fpo, l, autoskip ? nonzero : 1); + nonzero = 0; + p = 0; +*************** +*** 858,864 **** + die(2); + if (p) + { +! l[c = (12 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0'; + xxdline(fpo, l, 1); + } + else if (autoskip) +--- 874,880 ---- + die(2); + if (p) + { +! l[c = (addrlen + 3 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0'; + xxdline(fpo, l, 1); + } + else if (autoskip) +*** ../vim-8.1.0853/src/version.c 2019-01-30 22:36:14.646981306 +0100 +--- src/version.c 2019-01-30 23:01:44.097578546 +0100 +*************** +*** 785,786 **** +--- 785,788 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 854, + /**/ + +-- +GUEST: He's killed the best man! +SECOND GUEST: (holding a limp WOMAN) He's killed my auntie. +FATHER: No, please! This is supposed to be a happy occasion! Let's + not bicker and argue about who killed who ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |