[vim: 14/25] - patchlevel 652

Karsten Hopp karsten at fedoraproject.org
Mon Mar 9 13:11:40 UTC 2015


commit c9f4a220b8c874b8df2dac393e158b4fbcc7e267
Author: Karsten Hopp <karsten at redhat.com>
Date:   Thu Mar 5 18:00:04 2015 +0100

    - patchlevel 652

 7.4.652 | 381 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 381 insertions(+)
---
diff --git a/7.4.652 b/7.4.652
new file mode 100644
index 0000000..cba5bc1
--- /dev/null
+++ b/7.4.652
@@ -0,0 +1,381 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.4.652
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.652
+Problem:    Xxd lacks a few features.
+Solution:   Use 8 characters for the file position.  Add the -e and -o
+	    arguments. (Vadim Vygonets)
+Files:	    src/xxd/xxd.c, runtime/doc/xxd.1
+
+
+*** ../vim-7.4.651/src/xxd/xxd.c	2013-06-21 18:23:53.000000000 +0200
+--- src/xxd/xxd.c	2015-03-05 17:45:36.140691416 +0100
+***************
+*** 51,56 ****
+--- 51,57 ----
+   * 16.05.00 Improved MMS file and merge for VMS by Zoltan Arpadffy
+   * 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.
+   *
+   * (c) 1990-1998 by Juergen Weigert (jnweiger at informatik.uni-erlangen.de)
+   *
+***************
+*** 216,222 ****
+  
+  #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 (11 + (9*COLS-1)/1 + COLS + 2)
+  
+  char hexxa[] = "0123456789abcdef0123456789ABCDEF", *hexx = hexxa;
+  
+--- 217,223 ----
+  
+  #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;
+  
+***************
+*** 225,230 ****
+--- 226,232 ----
+  #define HEX_POSTSCRIPT 1
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3		/* not hex a dump, but bits: 01111001 */
++ #define HEX_LITTLEENDIAN 4
+  
+  static char *pname;
+  
+***************
+*** 238,247 ****
+    fprintf(stderr, "    -b          binary digit dump (incompatible with -ps,-i,-r). Default hex.\n");
+    fprintf(stderr, "    -c cols     format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
+    fprintf(stderr, "    -E          show characters in EBCDIC. Default ASCII.\n");
+!   fprintf(stderr, "    -g          number of octets per group in normal output. Default 2.\n");
+    fprintf(stderr, "    -h          print this summary.\n");
+    fprintf(stderr, "    -i          output in C include file style.\n");
+    fprintf(stderr, "    -l len      stop after <len> octets.\n");
+    fprintf(stderr, "    -ps         output in postscript plain hexdump style.\n");
+    fprintf(stderr, "    -r          reverse operation: convert (or patch) hexdump into binary.\n");
+    fprintf(stderr, "    -r -s off   revert with <off> added to file positions found in hexdump.\n");
+--- 240,251 ----
+    fprintf(stderr, "    -b          binary digit dump (incompatible with -ps,-i,-r). Default hex.\n");
+    fprintf(stderr, "    -c cols     format <cols> octets per line. Default 16 (-i: 12, -ps: 30).\n");
+    fprintf(stderr, "    -E          show characters in EBCDIC. Default ASCII.\n");
+!   fprintf(stderr, "    -e          little-endian dump (incompatible with -ps,-i,-r).\n");
+!   fprintf(stderr, "    -g          number of octets per group in normal output. Default 2 (-e: 4).\n");
+    fprintf(stderr, "    -h          print this summary.\n");
+    fprintf(stderr, "    -i          output in C include file style.\n");
+    fprintf(stderr, "    -l len      stop after <len> octets.\n");
++   fprintf(stderr, "    -o off      add <off> to the displayed file position.\n");
+    fprintf(stderr, "    -ps         output in postscript plain hexdump style.\n");
+    fprintf(stderr, "    -r          reverse operation: convert (or patch) hexdump into binary.\n");
+    fprintf(stderr, "    -r -s off   revert with <off> added to file positions found in hexdump.\n");
+***************
+*** 475,481 ****
+    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;
+    static char l[LLEN+1];  /* static because it may be too big for stack */
+    char *pp;
+  
+--- 479,485 ----
+    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;
+  
+***************
+*** 503,508 ****
+--- 507,513 ----
+        pp = argv[1] + (!STRNCMP(argv[1], "--", 2) && argv[1][2]);
+  	   if (!STRNCMP(pp, "-a", 2)) autoskip = 1 - autoskip;
+        else if (!STRNCMP(pp, "-b", 2)) hextype = HEX_BITS;
++       else if (!STRNCMP(pp, "-e", 2)) hextype = HEX_LITTLEENDIAN;
+        else if (!STRNCMP(pp, "-u", 2)) hexx = hexxa + 16;
+        else if (!STRNCMP(pp, "-p", 2)) hextype = HEX_POSTSCRIPT;
+        else if (!STRNCMP(pp, "-i", 2)) hextype = HEX_CINCLUDE;
+***************
+*** 539,544 ****
+--- 544,562 ----
+  	      argc--;
+  	    }
+  	}
++       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--;
++ 	    }
++ 	}
+        else if (!STRNCMP(pp, "-s", 2))
+  	{
+  	  relseek = 0;
+***************
+*** 603,608 ****
+--- 621,627 ----
+        case HEX_CINCLUDE:	cols = 12; break;
+        case HEX_BITS:		cols = 6; break;
+        case HEX_NORMAL:
++       case HEX_LITTLEENDIAN:
+        default:			cols = 16; break;
+        }
+  
+***************
+*** 611,630 ****
+        {
+        case HEX_BITS:		octspergrp = 1; break;
+        case HEX_NORMAL:		octspergrp = 2; break;
+        case HEX_POSTSCRIPT:
+        case HEX_CINCLUDE:
+        default:			octspergrp = 0; break;
+        }
+  
+!   if (cols < 1 || ((hextype == HEX_NORMAL || hextype == HEX_BITS)
+  							    && (cols > COLS)))
+      {
+        fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS);
+        exit(1);
+      }
+  
+!   if (octspergrp < 1)
+      octspergrp = cols;
+  
+    if (argc > 3)
+      exit_with_usage();
+--- 630,657 ----
+        {
+        case HEX_BITS:		octspergrp = 1; break;
+        case HEX_NORMAL:		octspergrp = 2; break;
++       case HEX_LITTLEENDIAN:	octspergrp = 4; break;
+        case HEX_POSTSCRIPT:
+        case HEX_CINCLUDE:
+        default:			octspergrp = 0; break;
+        }
+  
+!   if (cols < 1 || ((hextype == HEX_NORMAL || hextype == HEX_BITS || hextype == HEX_LITTLEENDIAN)
+  							    && (cols > COLS)))
+      {
+        fprintf(stderr, "%s: invalid number of columns (max. %d).\n", pname, COLS);
+        exit(1);
+      }
+  
+!   if (octspergrp < 1 || octspergrp > cols)
+      octspergrp = cols;
++   else if (hextype == HEX_LITTLEENDIAN && (octspergrp & (octspergrp-1)))
++     {
++       fprintf(stderr,
++ 	      "%s: number of octets per group must be a power of 2 with -e.\n",
++ 	      pname);
++       exit(1);
++     }
+  
+    if (argc > 3)
+      exit_with_usage();
+***************
+*** 781,789 ****
+        return 0;
+      }
+  
+!   /* hextype: HEX_NORMAL or HEX_BITS */
+  
+!   if (hextype == HEX_NORMAL)
+      grplen = octspergrp + octspergrp + 1;	/* chars per octet group */
+    else	/* hextype == HEX_BITS */
+      grplen = 8 * octspergrp + 1;
+--- 808,816 ----
+        return 0;
+      }
+  
+!   /* hextype: HEX_NORMAL or HEX_BITS or HEX_LITTLEENDIAN */
+  
+!   if (hextype != HEX_BITS)
+      grplen = octspergrp + octspergrp + 1;	/* chars per octet group */
+    else	/* hextype == HEX_BITS */
+      grplen = 8 * octspergrp + 1;
+***************
+*** 793,818 ****
+      {
+        if (p == 0)
+  	{
+! 	  sprintf(l, "%07lx: ", n + seekoff);
+  	  for (c = 9; c < LLEN; l[c++] = ' ');
+  	}
+        if (hextype == HEX_NORMAL)
+  	{
+! 	  l[c = (9 + (grplen * p) / octspergrp)] = hexx[(e >> 4) & 0xf];
+! 	  l[++c]			       = hexx[ e       & 0xf];
+  	}
+        else /* hextype == HEX_BITS */
+  	{
+  	  int i;
+  
+! 	  c = (9 + (grplen * p) / octspergrp) - 1;
+  	  for (i = 7; i >= 0; i--)
+  	    l[++c] = (e & (1 << i)) ? '1' : '0';
+  	}
+        if (ebcdic)
+  	e = (e < 64) ? '.' : etoa64[e-64];
+        /* When changing this update definition of LLEN above. */
+!       l[11 + (grplen * cols - 1)/octspergrp + p] =
+  #ifdef __MVS__
+  	  (e >= 64)
+  #else
+--- 820,852 ----
+      {
+        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';
+  	}
+        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
+***************
+*** 824,830 ****
+        n++;
+        if (++p == cols)
+  	{
+! 	  l[c = (11 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
+  	  xxdline(fpo, l, autoskip ? nonzero : 1);
+  	  nonzero = 0;
+  	  p = 0;
+--- 858,864 ----
+        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;
+***************
+*** 834,840 ****
+      die(2);
+    if (p)
+      {
+!       l[c = (11 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
+        xxdline(fpo, l, 1);
+      }
+    else if (autoskip)
+--- 868,874 ----
+      die(2);
+    if (p)
+      {
+!       l[c = (12 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
+        xxdline(fpo, l, 1);
+      }
+    else if (autoskip)
+*** ../vim-7.4.651/runtime/doc/xxd.1	2010-05-15 13:04:00.000000000 +0200
+--- runtime/doc/xxd.1	2015-03-05 17:45:27.064793726 +0100
+***************
+*** 76,81 ****
+--- 76,91 ----
+  This does not change the hexadecimal representation. The option is
+  meaningless in combinations with \-r, \-p or \-i.
+  .TP
++ .IR \-e
++ Switch to little-endian hexdump.
++ This option treats byte groups as words in little-endian byte order.
++ The default grouping of 4 bytes may be changed using
++ .RI "" \-g .
++ This option only applies to hexdump, leaving the ASCII (or EBCDIC)
++ representation unchanged.
++ The command line switches
++ \-r, \-p, \-i do not work with this mode.
++ .TP
+  .IR "\-g bytes " | " \-groupsize bytes"
+  separate the output of every
+  .RI < bytes >
+***************
+*** 84,90 ****
+  .I \-g 0
+  to suppress grouping.
+  .RI < Bytes "> defaults to " 2
+! in normal mode and \fI1\fP in bits mode.
+  Grouping does not apply to postscript or include style.
+  .TP
+  .IR \-h " | " \-help
+--- 94,100 ----
+  .I \-g 0
+  to suppress grouping.
+  .RI < Bytes "> defaults to " 2
+! in normal mode, \fI4\fP in little-endian mode and \fI1\fP in bits mode.
+  Grouping does not apply to postscript or include style.
+  .TP
+  .IR \-h " | " \-help
+***************
+*** 99,104 ****
+--- 109,119 ----
+  .RI  < len >
+  octets.
+  .TP
++ .I \-o offset
++ add
++ .RI < offset >
++ to the displayed file position.
++ .TP
+  .IR \-p " | " \-ps " | " \-postscript " | " \-plain
+  output in postscript continuous hexdump style. Also known as plain hexdump
+  style.
+*** ../vim-7.4.651/src/version.c	2015-03-05 17:16:02.620687666 +0100
+--- src/version.c	2015-03-05 17:41:25.523515077 +0100
+***************
+*** 743,744 ****
+--- 743,746 ----
+  {   /* Add new patch number below this line */
++ /**/
++     652,
+  /**/
+
+-- 
+FATHER:       Make sure the Prince doesn't leave this room until I come and
+              get him.
+FIRST GUARD:  Not ... to leave the room ... even if you come and get him.
+FATHER:       No.  Until I come and get him.
+SECOND GUARD: Hic.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram at 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    ///


More information about the scm-commits mailing list