[vim/f13] Patchlevel 152

Karsten Hopp karsten at fedoraproject.org
Tue Jun 7 09:54:35 UTC 2011


commit 8555db133d99209d7affa4005c753fc7f1afc6d9
Author: Karsten Hopp <karsten at redhat.com>
Date:   Tue Jun 7 11:44:17 2011 +0200

    Patchlevel 152

 7.3.152 |  643 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 643 insertions(+), 0 deletions(-)
---
diff --git a/7.3.152 b/7.3.152
new file mode 100644
index 0000000..fdc58a0
--- /dev/null
+++ b/7.3.152
@@ -0,0 +1,643 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.152
+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.3.152
+Problem:    Xxd does not check for errors from library functions.
+Solution:   Add error checks. (Florian Zumbiehl)
+Files:	    src/xxd/xxd.c
+
+
+*** ../vim-7.3.151/src/xxd/xxd.c	2010-08-15 21:57:25.000000000 +0200
+--- src/xxd/xxd.c	2011-04-01 18:56:11.000000000 +0200
+***************
+*** 49,54 ****
+--- 49,56 ----
+   *	    option -b added: 01000101 binary output in normal format.
+   * 16.05.00 Added VAXC changes by Stephen P. Wall
+   * 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
+   *
+   * (c) 1990-1998 by Juergen Weigert (jnweiger at informatik.uni-erlangen.de)
+   *
+***************
+*** 207,214 ****
+  
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+! static void exit_with_usage __P((char *));
+! static int huntype __P((FILE *, FILE *, FILE *, char *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+  #define TRY_SEEK	/* attempt to use lseek, or skip forward by reading */
+--- 209,216 ----
+  
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+! static void exit_with_usage __P((void));
+! static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+  #define TRY_SEEK	/* attempt to use lseek, or skip forward by reading */
+***************
+*** 223,231 ****
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3		/* not hex a dump, but bits: 01111001 */
+  
+! static void
+! exit_with_usage(pname)
+! char *pname;
+  {
+    fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
+    fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+--- 225,234 ----
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3		/* not hex a dump, but bits: 01111001 */
+  
+! static char *pname;
+! 
+!   static void
+! exit_with_usage()
+  {
+    fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
+    fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+***************
+*** 252,257 ****
+--- 255,269 ----
+    exit(1);
+  }
+  
++   static void
++ die(ret)
++   int ret;
++ {
++   fprintf(stderr, "%s: ", pname);
++   perror(NULL);
++   exit(ret);
++ }
++ 
+  /*
+   * Max. cols binary characters are decoded from the input stream per line.
+   * Two adjacent garbage characters after evaluated data delimit valid data.
+***************
+*** 259,270 ****
+   *
+   * The name is historic and came from 'undo type opt h'.
+   */
+! static int
+! huntype(fpi, fpo, fperr, pname, cols, hextype, base_off)
+! FILE *fpi, *fpo, *fperr;
+! char *pname;
+! int cols, hextype;
+! long base_off;
+  {
+    int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
+    long have_off = 0, want_off = 0;
+--- 271,281 ----
+   *
+   * The name is historic and came from 'undo type opt h'.
+   */
+!   static int
+! huntype(fpi, fpo, fperr, cols, hextype, base_off)
+!   FILE *fpi, *fpo, *fperr;
+!   int cols, hextype;
+!   long base_off;
+  {
+    int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
+    long have_off = 0, want_off = 0;
+***************
+*** 318,324 ****
+  
+        if (base_off + want_off != have_off)
+  	{
+! 	  fflush(fpo);
+  #ifdef TRY_SEEK
+  	  c = fseek(fpo, base_off + want_off - have_off, 1);
+  	  if (c >= 0)
+--- 329,336 ----
+  
+        if (base_off + want_off != have_off)
+  	{
+! 	  if (fflush(fpo) != 0)
+! 	    die(3);
+  #ifdef TRY_SEEK
+  	  c = fseek(fpo, base_off + want_off - have_off, 1);
+  	  if (c >= 0)
+***************
+*** 330,341 ****
+  	      return 5;
+  	    }
+  	  for (; have_off < base_off + want_off; have_off++)
+! 	    putc(0, fpo);
+  	}
+  
+        if (n2 >= 0 && n1 >= 0)
+  	{
+! 	  putc((n2 << 4) | n1, fpo);
+  	  have_off++;
+  	  want_off++;
+  	  n1 = -1;
+--- 342,355 ----
+  	      return 5;
+  	    }
+  	  for (; have_off < base_off + want_off; have_off++)
+! 	    if (putc(0, fpo) == EOF)
+! 	      die(3);
+  	}
+  
+        if (n2 >= 0 && n1 >= 0)
+  	{
+! 	  if (putc((n2 << 4) | n1, fpo) == EOF)
+! 	    die(3);
+  	  have_off++;
+  	  want_off++;
+  	  n1 = -1;
+***************
+*** 345,350 ****
+--- 359,366 ----
+  	      want_off = 0;
+  	      while ((c = getc(fpi)) != '\n' && c != EOF)
+  		;
++ 	      if (c == EOF && ferror(fpi))
++ 		die(2);
+  	      ign_garb = 1;
+  	    }
+  	}
+***************
+*** 355,369 ****
+  	    want_off = 0;
+  	  while ((c = getc(fpi)) != '\n' && c != EOF)
+  	    ;
+  	  ign_garb = 1;
+  	}
+      }
+!   fflush(fpo);
+  #ifdef TRY_SEEK
+    fseek(fpo, 0L, 2);
+  #endif
+!   fclose(fpo);
+!   fclose(fpi);
+    return 0;
+  }
+  
+--- 371,390 ----
+  	    want_off = 0;
+  	  while ((c = getc(fpi)) != '\n' && c != EOF)
+  	    ;
++ 	  if (c == EOF && ferror(fpi))
++ 	    die(2);
+  	  ign_garb = 1;
+  	}
+      }
+!   if (fflush(fpo) != 0)
+!     die(3);
+  #ifdef TRY_SEEK
+    fseek(fpo, 0L, 2);
+  #endif
+!   if (fclose(fpo) != 0)
+!     die(3);
+!   if (fclose(fpi) != 0)
+!     die(2);
+    return 0;
+  }
+  
+***************
+*** 379,389 ****
+   *
+   * If nz is always positive, lines are never suppressed.
+   */
+! static void
+  xxdline(fp, l, nz)
+! FILE *fp;
+! char *l;
+! int nz;
+  {
+    static char z[LLEN+1];
+    static int zero_seen = 0;
+--- 400,410 ----
+   *
+   * If nz is always positive, lines are never suppressed.
+   */
+!   static void
+  xxdline(fp, l, nz)
+!   FILE *fp;
+!   char *l;
+!   int nz;
+  {
+    static char z[LLEN+1];
+    static int zero_seen = 0;
+***************
+*** 398,409 ****
+  	  if (nz < 0)
+  	    zero_seen--;
+  	  if (zero_seen == 2)
+! 	    fputs(z, fp);
+  	  if (zero_seen > 2)
+! 	    fputs("*\n", fp);
+  	}
+        if (nz >= 0 || zero_seen > 0)
+! 	fputs(l, fp);
+        if (nz)
+  	zero_seen = 0;
+      }
+--- 419,433 ----
+  	  if (nz < 0)
+  	    zero_seen--;
+  	  if (zero_seen == 2)
+! 	    if (fputs(z, fp) == EOF)
+! 	      die(3);
+  	  if (zero_seen > 2)
+! 	    if (fputs("*\n", fp) == EOF)
+! 	      die(3);
+  	}
+        if (nz >= 0 || zero_seen > 0)
+! 	if (fputs(l, fp) == EOF)
+! 	  die(3);
+        if (nz)
+  	zero_seen = 0;
+      }
+***************
+*** 439,448 ****
+      0070,0071,0372,0373,0374,0375,0376,0377
+  };
+  
+! int
+  main(argc, argv)
+! int argc;
+! char *argv[];
+  {
+    FILE *fp, *fpo;
+    int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+--- 463,472 ----
+      0070,0071,0372,0373,0374,0375,0376,0377
+  };
+  
+!   int
+  main(argc, argv)
+!   int argc;
+!   char *argv[];
+  {
+    FILE *fp, *fpo;
+    int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+***************
+*** 452,458 ****
+    int grplen;		/* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+    char l[LLEN+1];
+!   char *pname, *pp;
+  
+  #ifdef AMIGA
+    /* This program doesn't work when started from the Workbench */
+--- 476,482 ----
+    int grplen;		/* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+    char l[LLEN+1];
+!   char *pp;
+  
+  #ifdef AMIGA
+    /* This program doesn't work when started from the Workbench */
+***************
+*** 495,501 ****
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage(pname);
+  	      cols = (int)strtol(argv[2], NULL, 0);
+  	      argv++;
+  	      argc--;
+--- 519,525 ----
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage();
+  	      cols = (int)strtol(argv[2], NULL, 0);
+  	      argv++;
+  	      argc--;
+***************
+*** 508,514 ****
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage(pname);
+  	      octspergrp = (int)strtol(argv[2], NULL, 0);
+  	      argv++;
+  	      argc--;
+--- 532,538 ----
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage();
+  	      octspergrp = (int)strtol(argv[2], NULL, 0);
+  	      argv++;
+  	      argc--;
+***************
+*** 531,537 ****
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage(pname);
+  #ifdef TRY_SEEK
+  	      if (argv[2][0] == '+')
+  		relseek++;
+--- 555,561 ----
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage();
+  #ifdef TRY_SEEK
+  	      if (argv[2][0] == '+')
+  		relseek++;
+***************
+*** 550,556 ****
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage(pname);
+  	      length = strtol(argv[2], (char **)NULL, 0);
+  	      argv++;
+  	      argc--;
+--- 574,580 ----
+  	  else
+  	    {
+  	      if (!argv[2])
+! 		exit_with_usage();
+  	      length = strtol(argv[2], (char **)NULL, 0);
+  	      argv++;
+  	      argc--;
+***************
+*** 563,569 ****
+  	  break;
+  	}
+        else if (pp[0] == '-' && pp[1])	/* unknown option */
+! 	exit_with_usage(pname);
+        else
+  	break;				/* not an option */
+  
+--- 587,593 ----
+  	  break;
+  	}
+        else if (pp[0] == '-' && pp[1])	/* unknown option */
+! 	exit_with_usage();
+        else
+  	break;				/* not an option */
+  
+***************
+*** 602,608 ****
+      octspergrp = cols;
+  
+    if (argc > 3)
+!     exit_with_usage(pname);
+  
+    if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
+      BIN_ASSIGN(fp = stdin, !revert);
+--- 626,632 ----
+      octspergrp = cols;
+  
+    if (argc > 3)
+!     exit_with_usage();
+  
+    if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
+      BIN_ASSIGN(fp = stdin, !revert);
+***************
+*** 640,646 ****
+  	  fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
+  	  return -1;
+  	}
+!       return huntype(fp, fpo, stderr, pname, cols, hextype,
+  		negseek ? -seekoff : seekoff);
+      }
+  
+--- 664,670 ----
+  	  fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
+  	  return -1;
+  	}
+!       return huntype(fp, fpo, stderr, cols, hextype,
+  		negseek ? -seekoff : seekoff);
+      }
+  
+***************
+*** 664,670 ****
+  	  long s = seekoff;
+  
+  	  while (s--)
+! 	    (void)getc(fp);
+  	}
+      }
+  
+--- 688,703 ----
+  	  long s = seekoff;
+  
+  	  while (s--)
+! 	    if (getc(fp) == EOF)
+! 	      if (ferror(fp))
+! 		{
+! 		  die(2);
+! 		}
+! 	      else
+! 		{
+! 		  fprintf(stderr, "%s: sorry cannot seek.\n", pname);
+! 		  return 4;
+! 		}
+  	}
+      }
+  
+***************
+*** 672,725 ****
+      {
+        if (fp != stdin)
+  	{
+! 	  fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "");
+  	  for (e = 0; (c = argv[1][e]) != 0; e++)
+! 	    putc(isalnum(c) ? c : '_', fpo);
+! 	  fputs("[] = {\n", fpo);
+  	}
+  
+        p = 0;
+        while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+  	{
+! 	  fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
+! 	    (p % cols) ? ", " : ",\n  "+2*!p,  c);
+  	  p++;
+  	}
+  
+        if (p)
+! 	fputs("\n};\n"+3*(fp == stdin), fpo);
+  
+        if (fp != stdin)
+  	{
+! 	  fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "");
+  	  for (e = 0; (c = argv[1][e]) != 0; e++)
+! 	    putc(isalnum(c) ? c : '_', fpo);
+! 	  fprintf(fpo, "_len = %d;\n", p);
+  	}
+  
+!       fclose(fp);
+!       fclose(fpo);
+        return 0;
+      }
+  
+    if (hextype == HEX_POSTSCRIPT)
+      {
+        p = cols;
+        while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+  	{
+! 	  putchar(hexx[(e >> 4) & 0xf]);
+! 	  putchar(hexx[(e     ) & 0xf]);
+  	  n++;
+  	  if (!--p)
+  	    {
+! 	      putchar('\n');
+  	      p = cols;
+  	    }
+  	}
+        if (p < cols)
+! 	putchar('\n');
+!       fclose(fp);
+!       fclose(fpo);
+        return 0;
+      }
+  
+--- 705,779 ----
+      {
+        if (fp != stdin)
+  	{
+! 	  if (fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
+! 	    die(3);
+  	  for (e = 0; (c = argv[1][e]) != 0; e++)
+! 	    if (putc(isalnum(c) ? c : '_', fpo) == EOF)
+! 	      die(3);
+! 	  if (fputs("[] = {\n", fpo) == EOF)
+! 	    die(3);
+  	}
+  
+        p = 0;
++       c = 0;
+        while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+  	{
+! 	  if (fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
+! 		(p % cols) ? ", " : ",\n  "+2*!p,  c) < 0)
+! 	    die(3);
+  	  p++;
+  	}
++       if (c == EOF && ferror(fp))
++ 	die(2);
+  
+        if (p)
+! 	if (fputs("\n};\n" + 3 * (fp == stdin), fpo) == EOF)
+! 	  die(3);
+  
+        if (fp != stdin)
+  	{
+! 	  if (fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
+! 	    die(3);
+  	  for (e = 0; (c = argv[1][e]) != 0; e++)
+! 	    if (putc(isalnum(c) ? c : '_', fpo) == EOF)
+! 	      die(3);
+! 	  if (fprintf(fpo, "_len = %d;\n", p) < 0)
+! 	    die(3);
+  	}
+  
+!       if (fclose(fp))
+! 	die(2);
+!       if (fclose(fpo))
+! 	die(3);
+        return 0;
+      }
+  
+    if (hextype == HEX_POSTSCRIPT)
+      {
+        p = cols;
++       e = 0;
+        while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+  	{
+! 	  if (putc(hexx[(e >> 4) & 0xf], fpo) == EOF
+! 		  || putc(hexx[e & 0xf], fpo) == EOF)
+! 	    die(3);
+  	  n++;
+  	  if (!--p)
+  	    {
+! 	      if (putc('\n', fpo) == EOF)
+! 		die(3);
+  	      p = cols;
+  	    }
+  	}
++       if (e == EOF && ferror(fp))
++ 	die(2);
+        if (p < cols)
+! 	if (putc('\n', fpo) == EOF)
+! 	  die(3);
+!       if (fclose(fp))
+! 	die(2);
+!       if (fclose(fpo))
+! 	die(3);
+        return 0;
+      }
+  
+***************
+*** 730,735 ****
+--- 784,790 ----
+    else	/* hextype == HEX_BITS */
+      grplen = 8 * octspergrp + 1;
+  
++   e = 0;
+    while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+      {
+        if (p == 0)
+***************
+*** 771,776 ****
+--- 826,833 ----
+  	  p = 0;
+  	}
+      }
++   if (e == EOF && ferror(fp))
++     die(2);
+    if (p)
+      {
+        l[c = (11 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
+***************
+*** 779,785 ****
+    else if (autoskip)
+      xxdline(fpo, l, -1);	/* last chance to flush out suppressed lines */
+  
+!   fclose(fp);
+!   fclose(fpo);
+    return 0;
+  }
+--- 836,846 ----
+    else if (autoskip)
+      xxdline(fpo, l, -1);	/* last chance to flush out suppressed lines */
+  
+!   if (fclose(fp))
+!     die(2);
+!   if (fclose(fpo))
+!     die(3);
+    return 0;
+  }
++ 
++ /* vi:set ts=8 sw=4 sts=2 cino+={2 cino+=n-2 : */
+*** ../vim-7.3.151/src/version.c	2011-04-01 16:28:33.000000000 +0200
+--- src/version.c	2011-04-01 19:00:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     152,
+  /**/
+
+-- 
+Eye have a spelling checker, it came with my PC;
+It plainly marks four my revue mistakes I cannot sea.
+I've run this poem threw it, I'm sure your please to no,
+It's letter perfect in it's weigh, my checker tolled me sew!
+
+ /// 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