summaryrefslogtreecommitdiff
path: root/source/ap/vim/patches/7.3.152
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.152')
-rw-r--r--source/ap/vim/patches/7.3.152643
1 files changed, 643 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.152 b/source/ap/vim/patches/7.3.152
new file mode 100644
index 00000000..fdc58a08
--- /dev/null
+++ b/source/ap/vim/patches/7.3.152
@@ -0,0 +1,643 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.152
+Fcc: outbox
+From: Bram Moolenaar <Bram@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@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@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 ///