summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.2.228
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /source/ap/vim/patches/7.2.228
downloadcurrent-slackware-13.0.tar.gz
current-slackware-13.0.tar.xz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'source/ap/vim/patches/7.2.228')
-rw-r--r--source/ap/vim/patches/7.2.228573
1 files changed, 573 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.2.228 b/source/ap/vim/patches/7.2.228
new file mode 100644
index 000000000..a906bef40
--- /dev/null
+++ b/source/ap/vim/patches/7.2.228
@@ -0,0 +1,573 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.228
+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.2.228
+Problem: Cscope is limited to 8 connections.
+Solution: Allocated the connection array to handle any number of
+ connections. (Dominique Pelle)
+Files: runtime/doc/if_cscop.txt, src/if_cscope.h, src/if_cscope.c
+
+
+*** ../vim-7.2.227/runtime/doc/if_cscop.txt 2009-03-18 14:30:46.000000000 +0100
+--- runtime/doc/if_cscop.txt 2009-07-09 15:40:48.000000000 +0200
+***************
+*** 355,367 ****
+ The DJGPP-built version from http://cscope.sourceforge.net is known to not
+ work with Vim.
+
+! There are a couple of hard-coded limitations:
+!
+! 1. The maximum number of cscope connections allowed is 8. Do you
+! really need more?
+!
+! 2. Doing a |:tjump| when |:cstag| searches the tag files is not
+! configurable (e.g., you can't do a tselect instead).
+
+ ==============================================================================
+ 6. Suggested usage *cscope-suggestions*
+--- 355,362 ----
+ The DJGPP-built version from http://cscope.sourceforge.net is known to not
+ work with Vim.
+
+! Hard-coded limitation: doing a |:tjump| when |:cstag| searches the tag files
+! is not configurable (e.g., you can't do a tselect instead).
+
+ ==============================================================================
+ 6. Suggested usage *cscope-suggestions*
+*** ../vim-7.2.227/src/if_cscope.h 2008-08-25 04:35:13.000000000 +0200
+--- src/if_cscope.h 2009-07-09 15:39:32.000000000 +0200
+***************
+*** 25,31 ****
+
+ #define CSCOPE_SUCCESS 0
+ #define CSCOPE_FAILURE -1
+- #define CSCOPE_MAX_CONNECTIONS 8 /* you actually need more? */
+
+ #define CSCOPE_DBFILE "cscope.out"
+ #define CSCOPE_PROMPT ">> "
+--- 25,30 ----
+*** ../vim-7.2.227/src/if_cscope.c 2009-05-16 17:29:37.000000000 +0200
+--- src/if_cscope.c 2009-07-09 15:39:32.000000000 +0200
+***************
+*** 46,52 ****
+ static int cs_find __ARGS((exarg_T *eap));
+ static int cs_find_common __ARGS((char *opt, char *pat, int, int, int));
+ static int cs_help __ARGS((exarg_T *eap));
+- static void cs_init __ARGS((void));
+ static void clear_csinfo __ARGS((int i));
+ static int cs_insert_filelist __ARGS((char *, char *, char *,
+ struct stat *));
+--- 46,51 ----
+***************
+*** 66,72 ****
+ static int cs_show __ARGS((exarg_T *eap));
+
+
+! static csinfo_T csinfo[CSCOPE_MAX_CONNECTIONS];
+ static int eap_arg_len; /* length of eap->arg, set in
+ cs_lookup_cmd() */
+ static cscmd_T cs_cmds[] =
+--- 65,74 ----
+ static int cs_show __ARGS((exarg_T *eap));
+
+
+! static csinfo_T * csinfo = NULL;
+! static int csinfo_size = 0; /* number of items allocated in
+! csinfo[] */
+!
+ static int eap_arg_len; /* length of eap->arg, set in
+ cs_lookup_cmd() */
+ static cscmd_T cs_cmds[] =
+***************
+*** 144,166 ****
+ }
+ case EXP_CSCOPE_KILL:
+ {
+! static char_u connection[2];
+
+ /* ":cscope kill" accepts connection numbers or partial names of
+ * the pathname of the cscope database as argument. Only complete
+ * with connection numbers. -1 can also be used to kill all
+ * connections. */
+! for (i = 0, current_idx = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+ if (current_idx++ == idx)
+ {
+! /* Connection number fits in one character since
+! * CSCOPE_MAX_CONNECTIONS is < 10 */
+! connection[0] = i + '0';
+! connection[1] = NUL;
+! return connection;
+ }
+ }
+ return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
+--- 146,165 ----
+ }
+ case EXP_CSCOPE_KILL:
+ {
+! static char connection[5];
+
+ /* ":cscope kill" accepts connection numbers or partial names of
+ * the pathname of the cscope database as argument. Only complete
+ * with connection numbers. -1 can also be used to kill all
+ * connections. */
+! for (i = 0, current_idx = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+ if (current_idx++ == idx)
+ {
+! vim_snprintf(connection, sizeof(connection), "%d", i);
+! return (char_u *)connection;
+ }
+ }
+ return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
+***************
+*** 223,229 ****
+ {
+ cscmd_T *cmdp;
+
+- cs_init();
+ if ((cmdp = cs_lookup_cmd(eap)) == NULL)
+ {
+ cs_help(eap);
+--- 222,227 ----
+***************
+*** 284,291 ****
+ {
+ int ret = FALSE;
+
+- cs_init();
+-
+ if (*eap->arg == NUL)
+ {
+ (void)EMSG(_("E562: Usage: cstag <ident>"));
+--- 282,287 ----
+***************
+*** 441,447 ****
+ if (num < 0 || num > 4 || (num > 0 && !dbpath))
+ return FALSE;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (!csinfo[i].fname)
+ continue;
+--- 437,443 ----
+ if (num < 0 || num > 4 || (num > 0 && !dbpath))
+ return FALSE;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (!csinfo[i].fname)
+ continue;
+***************
+*** 684,690 ****
+ short i;
+ short cnt = 0;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname != NULL)
+ cnt++;
+--- 680,686 ----
+ short i;
+ short cnt = 0;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname != NULL)
+ cnt++;
+***************
+*** 1112,1118 ****
+ {
+ int i;
+ char *cmd;
+! int nummatches[CSCOPE_MAX_CONNECTIONS], totmatches;
+ #ifdef FEAT_QUICKFIX
+ char cmdletter;
+ char *qfpos;
+--- 1108,1115 ----
+ {
+ int i;
+ char *cmd;
+! int *nummatches;
+! int totmatches;
+ #ifdef FEAT_QUICKFIX
+ char cmdletter;
+ char *qfpos;
+***************
+*** 1123,1135 ****
+ if (cmd == NULL)
+ return FALSE;
+
+ /* send query to all open connections, then count the total number
+ * of matches so we can alloc matchesp all in one swell foop
+ */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ nummatches[i] = 0;
+ totmatches = 0;
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL || csinfo[i].to_fp == NULL)
+ continue;
+--- 1120,1136 ----
+ if (cmd == NULL)
+ return FALSE;
+
++ nummatches = (int *)alloc(sizeof(int)*csinfo_size);
++ if (nummatches == NULL)
++ return FALSE;
++
+ /* send query to all open connections, then count the total number
+ * of matches so we can alloc matchesp all in one swell foop
+ */
+! for (i = 0; i < csinfo_size; i++)
+ nummatches[i] = 0;
+ totmatches = 0;
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname == NULL || csinfo[i].to_fp == NULL)
+ continue;
+***************
+*** 1154,1160 ****
+--- 1155,1164 ----
+ char *buf;
+
+ if (!verbose)
++ {
++ vim_free(nummatches);
+ return FALSE;
++ }
+
+ buf = (char *)alloc((unsigned)(strlen(opt) + strlen(pat) + strlen(nf)));
+ if (buf == NULL)
+***************
+*** 1165,1170 ****
+--- 1169,1175 ----
+ (void)EMSG(buf);
+ vim_free(buf);
+ }
++ vim_free(nummatches);
+ return FALSE;
+ }
+
+***************
+*** 1217,1222 ****
+--- 1222,1228 ----
+ (void)EMSG(buf);
+ vim_free(buf);
+ }
++ vim_free(nummatches);
+ return FALSE;
+ }
+ }
+***************
+*** 1264,1269 ****
+--- 1270,1276 ----
+ }
+ mch_remove(tmp);
+ vim_free(tmp);
++ vim_free(nummatches);
+ return TRUE;
+ }
+ else
+***************
+*** 1275,1280 ****
+--- 1282,1288 ----
+ /* read output */
+ cs_fill_results((char *)pat, totmatches, nummatches, &matches,
+ &contexts, &matched);
++ vim_free(nummatches);
+ if (matches == NULL)
+ return FALSE;
+
+***************
+*** 1328,1353 ****
+ } /* cs_help */
+
+
+- /*
+- * PRIVATE: cs_init
+- *
+- * initialize cscope structure if not already
+- */
+- static void
+- cs_init()
+- {
+- short i;
+- static int init_already = FALSE;
+-
+- if (init_already)
+- return;
+-
+- for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+- clear_csinfo(i);
+-
+- init_already = TRUE;
+- } /* cs_init */
+-
+ static void
+ clear_csinfo(i)
+ int i;
+--- 1336,1341 ----
+***************
+*** 1444,1450 ****
+ #endif
+
+ i = -1; /* can be set to the index of an empty item in csinfo */
+! for (j = 0; j < CSCOPE_MAX_CONNECTIONS; j++)
+ {
+ if (csinfo[j].fname != NULL
+ #if defined(UNIX)
+--- 1432,1438 ----
+ #endif
+
+ i = -1; /* can be set to the index of an empty item in csinfo */
+! for (j = 0; j < csinfo_size; j++)
+ {
+ if (csinfo[j].fname != NULL
+ #if defined(UNIX)
+***************
+*** 1471,1479 ****
+
+ if (i == -1)
+ {
+! if (p_csverbose)
+! (void)EMSG(_("E569: maximum number of cscope connections reached"));
+! return -1;
+ }
+
+ if ((csinfo[i].fname = (char *)alloc((unsigned)strlen(fname)+1)) == NULL)
+--- 1459,1483 ----
+
+ if (i == -1)
+ {
+! i = csinfo_size;
+! if (csinfo_size == 0)
+! {
+! /* First time allocation: allocate only 1 connection. It should
+! * be enough for most users. If more is needed, csinfo will be
+! * reallocated. */
+! csinfo_size = 1;
+! csinfo = (csinfo_T *)alloc_clear(sizeof(csinfo_T));
+! }
+! else
+! {
+! /* Reallocate space for more connections. */
+! csinfo_size *= 2;
+! csinfo = vim_realloc(csinfo, sizeof(csinfo_T)*csinfo_size);
+! }
+! if (csinfo == NULL)
+! return -1;
+! for (j = csinfo_size/2; j < csinfo_size; j++)
+! clear_csinfo(j);
+ }
+
+ if ((csinfo[i].fname = (char *)alloc((unsigned)strlen(fname)+1)) == NULL)
+***************
+*** 1580,1594 ****
+ /* It must be part of a name. We will try to find a match
+ * within all the names in the csinfo data structure
+ */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname != NULL && strstr(csinfo[i].fname, stok))
+ break;
+ }
+ }
+
+! if ((i >= CSCOPE_MAX_CONNECTIONS || i < -1 || csinfo[i].fname == NULL)
+! && i != -1)
+ {
+ if (p_csverbose)
+ (void)EMSG2(_("E261: cscope connection %s not found"), stok);
+--- 1584,1597 ----
+ /* It must be part of a name. We will try to find a match
+ * within all the names in the csinfo data structure
+ */
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname != NULL && strstr(csinfo[i].fname, stok))
+ break;
+ }
+ }
+
+! if ((i != -1) && (i >= csinfo_size || i < -1 || csinfo[i].fname == NULL))
+ {
+ if (p_csverbose)
+ (void)EMSG2(_("E261: cscope connection %s not found"), stok);
+***************
+*** 1597,1603 ****
+ {
+ if (i == -1)
+ {
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname)
+ cs_kill_execute(i, csinfo[i].fname);
+--- 1600,1606 ----
+ {
+ if (i == -1)
+ {
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname)
+ cs_kill_execute(i, csinfo[i].fname);
+***************
+*** 1857,1863 ****
+ if (buf == NULL)
+ return;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+--- 1860,1866 ----
+ if (buf == NULL)
+ return;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+***************
+*** 1929,1935 ****
+ if ((cntxts = (char **)alloc(sizeof(char *) * totmatches)) == NULL)
+ goto parse_out;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+--- 1932,1938 ----
+ if ((cntxts = (char **)alloc(sizeof(char *) * totmatches)) == NULL)
+ goto parse_out;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+***************
+*** 2383,2392 ****
+ int i;
+ char buf[20]; /* for sprintf " (#%d)" */
+
+ /* malloc our db and ppath list */
+! dblist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
+! pplist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
+! fllist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
+ if (dblist == NULL || pplist == NULL || fllist == NULL)
+ {
+ vim_free(dblist);
+--- 2386,2398 ----
+ int i;
+ char buf[20]; /* for sprintf " (#%d)" */
+
++ if (csinfo_size == 0)
++ return CSCOPE_SUCCESS;
++
+ /* malloc our db and ppath list */
+! dblist = (char **)alloc(csinfo_size * sizeof(char *));
+! pplist = (char **)alloc(csinfo_size * sizeof(char *));
+! fllist = (char **)alloc(csinfo_size * sizeof(char *));
+ if (dblist == NULL || pplist == NULL || fllist == NULL)
+ {
+ vim_free(dblist);
+***************
+*** 2395,2401 ****
+ return CSCOPE_FAILURE;
+ }
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ dblist[i] = csinfo[i].fname;
+ pplist[i] = csinfo[i].ppath;
+--- 2401,2407 ----
+ return CSCOPE_FAILURE;
+ }
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ dblist[i] = csinfo[i].fname;
+ pplist[i] = csinfo[i].ppath;
+***************
+*** 2405,2411 ****
+ }
+
+ /* rebuild the cscope connection list */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (dblist[i] != NULL)
+ {
+--- 2411,2417 ----
+ }
+
+ /* rebuild the cscope connection list */
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (dblist[i] != NULL)
+ {
+***************
+*** 2502,2508 ****
+ MSG_PUTS_ATTR(
+ _(" # pid database name prepend path\n"),
+ hl_attr(HLF_T));
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+--- 2508,2514 ----
+ MSG_PUTS_ATTR(
+ _(" # pid database name prepend path\n"),
+ hl_attr(HLF_T));
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+***************
+*** 2531,2538 ****
+ {
+ int i;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ cs_release_csp(i, TRUE);
+ }
+
+ #endif /* FEAT_CSCOPE */
+--- 2537,2546 ----
+ {
+ int i;
+
+! for (i = 0; i < csinfo_size; i++)
+ cs_release_csp(i, TRUE);
++ vim_free(csinfo);
++ csinfo_size = 0;
+ }
+
+ #endif /* FEAT_CSCOPE */
+*** ../vim-7.2.227/src/version.c 2009-07-09 20:13:59.000000000 +0200
+--- src/version.c 2009-07-09 21:21:48.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 228,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+84. Books in your bookcase bear the names Bongo, WinSock and Inside OLE
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///