--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.147
+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.147 (after 7.3.143)
+Problem: Can't build on HP-UX.
+Solution: Remove an unnecessary backslash. (John Marriott)
+Files: src/Makefile
+
+
+*** ../vim-7.3.146/src/Makefile 2011-03-22 18:10:34.000000000 +0100
+--- src/Makefile 2011-04-01 13:00:58.000000000 +0200
+***************
+*** 1565,1571 ****
+
+ OBJ = $(OBJ_COMMON) \
+ objects/main.o \
+! objects/memfile.o \
+
+ MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
+ objects/memfile_test.o
+--- 1565,1571 ----
+
+ OBJ = $(OBJ_COMMON) \
+ objects/main.o \
+! objects/memfile.o
+
+ MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
+ objects/memfile_test.o
+*** ../vim-7.3.146/src/version.c 2011-03-27 16:03:09.000000000 +0200
+--- src/version.c 2011-04-01 13:05:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 147,
+ /**/
+
+--
+DENNIS: You can't expect to wield supreme executive power just 'cause some
+ watery tart threw a sword at you!
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.148
+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.148
+Problem: A syntax file with a huge number of items or clusters causes weird
+ behavior, a hang or a crash. (Yukihiro Nakadaira)
+Solution: Check running out of IDs. (partly by Ben Schmidt)
+Files: src/syntax.c
+
+
+*** ../vim-7.3.147/src/syntax.c 2011-01-22 00:58:15.000000000 +0100
+--- src/syntax.c 2011-04-01 14:25:39.000000000 +0200
+***************
+*** 219,234 ****
+
+ /*
+ * Syntax group IDs have different types:
+! * 0 - 9999 normal syntax groups
+! * 10000 - 14999 ALLBUT indicator (current_syn_inc_tag added)
+! * 15000 - 19999 TOP indicator (current_syn_inc_tag added)
+! * 20000 - 24999 CONTAINED indicator (current_syn_inc_tag added)
+! * >= 25000 cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+! */
+! #define SYNID_ALLBUT 10000 /* syntax group ID for contains=ALLBUT */
+! #define SYNID_TOP 15000 /* syntax group ID for contains=TOP */
+! #define SYNID_CONTAINED 20000 /* syntax group ID for contains=CONTAINED */
+! #define SYNID_CLUSTER 25000 /* first syntax group ID for clusters */
+
+ /*
+ * Annoying Hack(TM): ":syn include" needs this pointer to pass to
+--- 219,238 ----
+
+ /*
+ * Syntax group IDs have different types:
+! * 0 - 19999 normal syntax groups
+! * 20000 - 20999 ALLBUT indicator (current_syn_inc_tag added)
+! * 21000 - 21999 TOP indicator (current_syn_inc_tag added)
+! * 22000 - 22999 CONTAINED indicator (current_syn_inc_tag added)
+! * 23000 - 32767 cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+! */
+! #define SYNID_ALLBUT 20000 /* syntax group ID for contains=ALLBUT */
+! #define SYNID_TOP 21000 /* syntax group ID for contains=TOP */
+! #define SYNID_CONTAINED 22000 /* syntax group ID for contains=CONTAINED */
+! #define SYNID_CLUSTER 23000 /* first syntax group ID for clusters */
+!
+! #define MAX_SYNID SYNID_ALLBUT
+! #define MAX_SYN_INC_TAG 999 /* maximum before the above overflow */
+! #define MAX_CLUSTER_ID (32767 - SYNID_CLUSTER)
+
+ /*
+ * Annoying Hack(TM): ":syn include" needs this pointer to pass to
+***************
+*** 3442,3447 ****
+--- 3446,3454 ----
+ /* free the stored states */
+ syn_stack_free_all(block);
+ invalidate_current_state();
++
++ /* Reset the counter for ":syn include" */
++ running_syn_inc_tag = 0;
+ }
+
+ /*
+***************
+*** 4661,4666 ****
+--- 4668,4675 ----
+ return;
+ }
+ sgl_id = syn_check_cluster(arg, (int)(group_name_end - arg));
++ if (sgl_id == 0)
++ return;
+ /* separate_nextcmd() and expand_filename() depend on this */
+ eap->arg = rest;
+ }
+***************
+*** 4689,4694 ****
+--- 4698,4708 ----
+ * Save and restore the existing top-level grouplist id and ":syn
+ * include" tag around the actual inclusion.
+ */
++ if (running_syn_inc_tag >= MAX_SYN_INC_TAG)
++ {
++ EMSG((char_u *)_("E847: Too many syntax includes"));
++ return;
++ }
+ prev_syn_inc_tag = current_syn_inc_tag;
+ current_syn_inc_tag = ++running_syn_inc_tag;
+ prev_toplvl_grp = curwin->w_s->b_syn_topgrp;
+***************
+*** 4712,4718 ****
+ char_u *group_name_end;
+ int syn_id;
+ char_u *rest;
+! char_u *keyword_copy;
+ char_u *p;
+ char_u *kw;
+ syn_opt_arg_T syn_opt_arg;
+--- 4726,4732 ----
+ char_u *group_name_end;
+ int syn_id;
+ char_u *rest;
+! char_u *keyword_copy = NULL;
+ char_u *p;
+ char_u *kw;
+ syn_opt_arg_T syn_opt_arg;
+***************
+*** 4724,4732 ****
+ if (rest != NULL)
+ {
+ syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+!
+! /* allocate a buffer, for removing the backslashes in the keyword */
+! keyword_copy = alloc((unsigned)STRLEN(rest) + 1);
+ if (keyword_copy != NULL)
+ {
+ syn_opt_arg.flags = 0;
+--- 4738,4746 ----
+ if (rest != NULL)
+ {
+ syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+! if (syn_id != 0)
+! /* allocate a buffer, for removing backslashes in the keyword */
+! keyword_copy = alloc((unsigned)STRLEN(rest) + 1);
+ if (keyword_copy != NULL)
+ {
+ syn_opt_arg.flags = 0;
+***************
+*** 5133,5139 ****
+ (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END;
+ SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags;
+ SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id;
+! SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag = current_syn_inc_tag;
+ SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id =
+ ppp->pp_matchgroup_id;
+ #ifdef FEAT_CONCEAL
+--- 5147,5154 ----
+ (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END;
+ SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags;
+ SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id;
+! SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag =
+! current_syn_inc_tag;
+ SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id =
+ ppp->pp_matchgroup_id;
+ #ifdef FEAT_CONCEAL
+***************
+*** 5426,5431 ****
+--- 5441,5454 ----
+ curwin->w_s->b_syn_clusters.ga_growsize = 10;
+ }
+
++ len = curwin->w_s->b_syn_clusters.ga_len;
++ if (len >= MAX_CLUSTER_ID)
++ {
++ EMSG((char_u *)_("E848: Too many syntax clusters"));
++ vim_free(name);
++ return 0;
++ }
++
+ /*
+ * Make room for at least one other cluster entry.
+ */
+***************
+*** 5434,5440 ****
+ vim_free(name);
+ return 0;
+ }
+- len = curwin->w_s->b_syn_clusters.ga_len;
+
+ vim_memset(&(SYN_CLSTR(curwin->w_s)[len]), 0, sizeof(syn_cluster_T));
+ SYN_CLSTR(curwin->w_s)[len].scl_name = name;
+--- 5457,5462 ----
+***************
+*** 5476,5483 ****
+
+ if (rest != NULL)
+ {
+! scl_id = syn_check_cluster(arg, (int)(group_name_end - arg))
+! - SYNID_CLUSTER;
+
+ for (;;)
+ {
+--- 5498,5507 ----
+
+ if (rest != NULL)
+ {
+! scl_id = syn_check_cluster(arg, (int)(group_name_end - arg));
+! if (scl_id == 0)
+! return;
+! scl_id -= SYNID_CLUSTER;
+
+ for (;;)
+ {
+***************
+*** 5516,5522 ****
+ if (got_clstr)
+ {
+ redraw_curbuf_later(SOME_VALID);
+! syn_stack_free_all(curwin->w_s); /* Need to recompute all syntax. */
+ }
+ }
+
+--- 5540,5546 ----
+ if (got_clstr)
+ {
+ redraw_curbuf_later(SOME_VALID);
+! syn_stack_free_all(curwin->w_s); /* Need to recompute all. */
+ }
+ }
+
+***************
+*** 8972,8977 ****
+--- 8996,9008 ----
+ highlight_ga.ga_growsize = 10;
+ }
+
++ if (highlight_ga.ga_len >= MAX_SYNID)
++ {
++ EMSG(_("E849: Too many syntax groups"));
++ vim_free(name);
++ return 0;
++ }
++
+ /*
+ * Make room for at least one other syntax_highlight entry.
+ */
+*** ../vim-7.3.147/src/version.c 2011-04-01 13:05:37.000000000 +0200
+--- src/version.c 2011-04-01 14:26:44.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 148,
+ /**/
+
+--
+BLACK KNIGHT: None shall pass.
+ARTHUR: I have no quarrel with you, brave Sir knight, but I must cross
+ this bridge.
+BLACK KNIGHT: Then you shall die.
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.149
+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.149
+Problem: The cursor disappears after the processing of the 'setDot'
+ netbeans command when vim runs in a terminal.
+Solution: Show the cursor after a screen update. (Xavier de Gaye, 2011
+Files: src/netbeans.c
+
+
+*** ../vim-7.3.148/src/netbeans.c 2011-01-04 18:11:39.000000000 +0100
+--- src/netbeans.c 2011-04-01 15:33:49.000000000 +0200
+***************
+*** 191,196 ****
+--- 191,197 ----
+ changed_window_setting();
+ update_screen(CLEAR);
+ setcursor();
++ cursor_on();
+ out_flush();
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+***************
+*** 2248,2253 ****
+--- 2249,2255 ----
+ update_topline(); /* scroll to show the line */
+ update_screen(VALID);
+ setcursor();
++ cursor_on();
+ out_flush();
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+***************
+*** 2642,2647 ****
+--- 2644,2650 ----
+ {
+ update_screen(NOT_VALID);
+ setcursor();
++ cursor_on();
+ out_flush();
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+***************
+*** 3008,3013 ****
+--- 3011,3017 ----
+ changed_window_setting();
+ update_screen(CLEAR);
+ setcursor();
++ cursor_on();
+ out_flush();
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+*** ../vim-7.3.148/src/version.c 2011-04-01 14:44:54.000000000 +0200
+--- src/version.c 2011-04-01 15:33:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 149,
+ /**/
+
+--
+ARTHUR: You are indeed brave Sir knight, but the fight is mine.
+BLACK KNIGHT: Had enough?
+ARTHUR: You stupid bastard. You havn't got any arms left.
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.150
+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.150
+Problem: readline() does not return the last line when the NL is missing.
+ (Hong Xu)
+Solution: When at the end of the file Also check for a previous line.
+Files: src/eval.c
+
+
+*** ../vim-7.3.149/src/eval.c 2011-03-27 16:03:09.000000000 +0200
+--- src/eval.c 2011-04-01 16:06:04.000000000 +0200
+***************
+*** 14305,14313 ****
+ {
+ if (buf[filtd] == '\n' || readlen <= 0)
+ {
+! /* Only when in binary mode add an empty list item when the
+! * last line ends in a '\n'. */
+! if (!binary && readlen == 0 && filtd == 0)
+ break;
+
+ /* Found end-of-line or end-of-file: add a text line to the
+--- 14305,14313 ----
+ {
+ if (buf[filtd] == '\n' || readlen <= 0)
+ {
+! /* In binary mode add an empty list item when the last
+! * non-empty line ends in a '\n'. */
+! if (!binary && readlen == 0 && filtd == 0 && prev == NULL)
+ break;
+
+ /* Found end-of-line or end-of-file: add a text line to the
+***************
+*** 14372,14396 ****
+
+ if (tolist == 0)
+ {
+! /* "buf" is full, need to move text to an allocated buffer */
+! if (prev == NULL)
+ {
+! prev = vim_strnsave(buf, buflen);
+! prevlen = buflen;
+! }
+! else
+! {
+! s = alloc((unsigned)(prevlen + buflen));
+! if (s != NULL)
+ {
+! mch_memmove(s, prev, prevlen);
+! mch_memmove(s + prevlen, buf, buflen);
+! vim_free(prev);
+! prev = s;
+! prevlen += buflen;
+ }
+ }
+- filtd = 0;
+ }
+ else
+ {
+--- 14372,14399 ----
+
+ if (tolist == 0)
+ {
+! if (buflen >= FREAD_SIZE / 2)
+ {
+! /* "buf" is full, need to move text to an allocated buffer */
+! if (prev == NULL)
+! {
+! prev = vim_strnsave(buf, buflen);
+! prevlen = buflen;
+! }
+! else
+ {
+! s = alloc((unsigned)(prevlen + buflen));
+! if (s != NULL)
+! {
+! mch_memmove(s, prev, prevlen);
+! mch_memmove(s + prevlen, buf, buflen);
+! vim_free(prev);
+! prev = s;
+! prevlen += buflen;
+! }
+ }
++ filtd = 0;
+ }
+ }
+ else
+ {
+*** ../vim-7.3.149/src/version.c 2011-04-01 15:33:54.000000000 +0200
+--- src/version.c 2011-04-01 16:04:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 150,
+ /**/
+
+--
+ARTHUR: What are you going to do. bleed on me?
+ "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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.151
+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.151 (after 7.3.074)
+Problem: When "unnamedplus" is in 'clipboard' the selection is sometimes
+ also copied to the star register.
+Solution: Avoid copy to the star register when undesired. (James Vega)
+Files: src/ops.c
+
+
+*** ../vim-7.3.150/src/ops.c 2010-12-08 14:23:08.000000000 +0100
+--- src/ops.c 2011-04-01 16:23:10.000000000 +0200
+***************
+*** 3148,3157 ****
+ /* Copy the text from register 0 to the clipboard register. */
+ copy_yank_reg(&(y_regs[PLUS_REGISTER]));
+
+- /* No need to copy to * register upon 'unnamed' now - see below */
+ clip_own_selection(&clip_plus);
+ clip_gen_set_selection(&clip_plus);
+! if (!clip_isautosel() && !did_star)
+ {
+ copy_yank_reg(&(y_regs[STAR_REGISTER]));
+ clip_own_selection(&clip_star);
+--- 3148,3156 ----
+ /* Copy the text from register 0 to the clipboard register. */
+ copy_yank_reg(&(y_regs[PLUS_REGISTER]));
+
+ clip_own_selection(&clip_plus);
+ clip_gen_set_selection(&clip_plus);
+! if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER]))
+ {
+ copy_yank_reg(&(y_regs[STAR_REGISTER]));
+ clip_own_selection(&clip_star);
+*** ../vim-7.3.150/src/version.c 2011-04-01 16:07:41.000000000 +0200
+--- src/version.c 2011-04-01 16:25:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 151,
+ /**/
+
+--
+BLACK KNIGHT: I'm invincible!
+ARTHUR: You're a looney.
+ "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 ///
--- /dev/null
+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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.153
+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.153 (after 7.3.152)
+Problem: Compiler warning for ambiguous else, missing prototype.
+Solution: Add braces. (Dominique Pelle) Add prototype for die().
+Files: src/xxd/xxd.c
+
+
+*** ../vim-7.3.152/src/xxd/xxd.c 2011-04-01 19:14:35.000000000 +0200
+--- src/xxd/xxd.c 2011-04-02 14:42:54.000000000 +0200
+***************
+*** 210,215 ****
+--- 210,216 ----
+ /* Let's collect some prototypes */
+ /* CodeWarrior is really picky about missing prototypes */
+ static void exit_with_usage __P((void));
++ static void die __P((int));
+ static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
+ static void xxdline __P((FILE *, char *, int));
+
+***************
+*** 689,694 ****
+--- 690,696 ----
+
+ while (s--)
+ if (getc(fp) == EOF)
++ {
+ if (ferror(fp))
+ {
+ die(2);
+***************
+*** 698,703 ****
+--- 700,706 ----
+ fprintf(stderr, "%s: sorry cannot seek.\n", pname);
+ return 4;
+ }
++ }
+ }
+ }
+
+*** ../vim-7.3.152/src/version.c 2011-04-01 19:14:35.000000000 +0200
+--- src/version.c 2011-04-02 14:41:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 153,
+ /**/
+
+--
+ |
+
+Ceci n'est pas une pipe.
+
+ /// 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 ///
--- /dev/null
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.154
+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.154 (after 7.3.148)
+Problem: Can't compile with tiny features. (Tony Mechelynck)
+Solution: Move #define outside of #ifdef.
+Files: src/syntax.c
+
+
+*** ../vim-7.3.153/src/syntax.c 2011-04-01 14:44:54.000000000 +0200
+--- src/syntax.c 2011-04-02 15:11:47.000000000 +0200
+***************
+*** 68,73 ****
+--- 68,75 ----
+
+ #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data)))
+
++ #define MAX_HL_ID 20000 /* maximum value for a highlight ID. */
++
+ #ifdef FEAT_CMDL_COMPL
+ /* Flags to indicate an additional string for highlight name completion. */
+ static int include_none = 0; /* when 1 include "None" */
+***************
+*** 225,236 ****
+ * 22000 - 22999 CONTAINED indicator (current_syn_inc_tag added)
+ * 23000 - 32767 cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+ */
+! #define SYNID_ALLBUT 20000 /* syntax group ID for contains=ALLBUT */
+ #define SYNID_TOP 21000 /* syntax group ID for contains=TOP */
+ #define SYNID_CONTAINED 22000 /* syntax group ID for contains=CONTAINED */
+ #define SYNID_CLUSTER 23000 /* first syntax group ID for clusters */
+
+- #define MAX_SYNID SYNID_ALLBUT
+ #define MAX_SYN_INC_TAG 999 /* maximum before the above overflow */
+ #define MAX_CLUSTER_ID (32767 - SYNID_CLUSTER)
+
+--- 227,237 ----
+ * 22000 - 22999 CONTAINED indicator (current_syn_inc_tag added)
+ * 23000 - 32767 cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+ */
+! #define SYNID_ALLBUT MAX_HL_ID /* syntax group ID for contains=ALLBUT */
+ #define SYNID_TOP 21000 /* syntax group ID for contains=TOP */
+ #define SYNID_CONTAINED 22000 /* syntax group ID for contains=CONTAINED */
+ #define SYNID_CLUSTER 23000 /* first syntax group ID for clusters */
+
+ #define MAX_SYN_INC_TAG 999 /* maximum before the above overflow */
+ #define MAX_CLUSTER_ID (32767 - SYNID_CLUSTER)
+
+***************
+*** 6462,6468 ****
+
+ #endif /* FEAT_SYN_HL */
+
+-
+ /**************************************
+ * Highlighting stuff *
+ **************************************/
+--- 6463,6468 ----
+***************
+*** 8996,9004 ****
+ highlight_ga.ga_growsize = 10;
+ }
+
+! if (highlight_ga.ga_len >= MAX_SYNID)
+ {
+! EMSG(_("E849: Too many syntax groups"));
+ vim_free(name);
+ return 0;
+ }
+--- 8996,9004 ----
+ highlight_ga.ga_growsize = 10;
+ }
+
+! if (highlight_ga.ga_len >= MAX_HL_ID)
+ {
+! EMSG(_("E849: Too many highlight and syntax groups"));
+ vim_free(name);
+ return 0;
+ }
+*** ../vim-7.3.153/src/version.c 2011-04-02 14:44:50.000000000 +0200
+--- src/version.c 2011-04-02 14:52:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 154,
+ /**/
+
+--
+BEDEVERE: Why do you think she is a witch?
+SECOND VILLAGER: She turned me into a newt.
+BEDEVERE: A newt?
+SECOND VILLAGER: (After looking at himself for some time) I got better.
+ "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 ///