lkundrak / rpms / vim

Forked from rpms/vim 4 years ago
Clone
982db62
To: vim_dev@googlegroups.com
982db62
Subject: Patch 7.4.279
982db62
Fcc: outbox
982db62
From: Bram Moolenaar <Bram@moolenaar.net>
982db62
Mime-Version: 1.0
982db62
Content-Type: text/plain; charset=UTF-8
982db62
Content-Transfer-Encoding: 8bit
982db62
------------
982db62
982db62
Patch 7.4.279
982db62
Problem:    globpath() returns a string, making it difficult to get a list of
982db62
	    matches. (Greg Novack)
982db62
Solution:   Add an optional argument like with glob(). (Adnan Zafar)
982db62
Files:	    runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/misc1.c,
982db62
	    src/misc2.c, src/proto/ex_getln.pro, src/proto/misc2.pro,
982db62
	    src/testdir/test97.in, src/testdir/test97.ok
982db62
982db62
982db62
*** ../vim-7.4.278/runtime/doc/eval.txt	2014-04-23 17:43:37.350948683 +0200
982db62
--- runtime/doc/eval.txt	2014-05-07 17:38:03.045185916 +0200
982db62
***************
982db62
*** 1832,1838 ****
982db62
  				any	variable {varname} in window {nr}
982db62
  glob( {expr} [, {nosuf} [, {list}]])
982db62
  				any	expand file wildcards in {expr}
982db62
! globpath( {path}, {expr} [, {flag}])
982db62
  				String	do glob({expr}) for all dirs in {path}
982db62
  has( {feature})			Number	TRUE if feature {feature} supported
982db62
  has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
982db62
--- 1832,1838 ----
982db62
  				any	variable {varname} in window {nr}
982db62
  glob( {expr} [, {nosuf} [, {list}]])
982db62
  				any	expand file wildcards in {expr}
982db62
! globpath( {path}, {expr} [, {nosuf} [, {list}]])
982db62
  				String	do glob({expr}) for all dirs in {path}
982db62
  has( {feature})			Number	TRUE if feature {feature} supported
982db62
  has_key( {dict}, {key})		Number	TRUE if {dict} has entry {key}
982db62
***************
982db62
*** 3570,3580 ****
982db62
  		See |expand()| for expanding special Vim variables.  See
982db62
  		|system()| for getting the raw output of an external command.
982db62
  
982db62
! globpath({path}, {expr} [, {flag}])			*globpath()*
982db62
  		Perform glob() on all directories in {path} and concatenate
982db62
  		the results.  Example: >
982db62
  			:echo globpath(&rtp, "syntax/c.vim")
982db62
! <		{path} is a comma-separated list of directory names.  Each
982db62
  		directory name is prepended to {expr} and expanded like with
982db62
  		|glob()|.  A path separator is inserted when needed.
982db62
  		To add a comma inside a directory name escape it with a
982db62
--- 3571,3582 ----
982db62
  		See |expand()| for expanding special Vim variables.  See
982db62
  		|system()| for getting the raw output of an external command.
982db62
  
982db62
! globpath({path}, {expr} [, {nosuf} [, {list}]])			*globpath()*
982db62
  		Perform glob() on all directories in {path} and concatenate
982db62
  		the results.  Example: >
982db62
  			:echo globpath(&rtp, "syntax/c.vim")
982db62
! <
982db62
! 		{path} is a comma-separated list of directory names.  Each
982db62
  		directory name is prepended to {expr} and expanded like with
982db62
  		|glob()|.  A path separator is inserted when needed.
982db62
  		To add a comma inside a directory name escape it with a
982db62
***************
982db62
*** 3582,3592 ****
982db62
  		trailing backslash, remove it if you put a comma after it.
982db62
  		If the expansion fails for one of the directories, there is no
982db62
  		error message.
982db62
! 		Unless the optional {flag} argument is given and is non-zero,
982db62
  		the 'suffixes' and 'wildignore' options apply: Names matching
982db62
  		one of the patterns in 'wildignore' will be skipped and
982db62
  		'suffixes' affect the ordering of matches.
982db62
  
982db62
  		The "**" item can be used to search in a directory tree.
982db62
  		For example, to find all "README.txt" files in the directories
982db62
  		in 'runtimepath' and below: >
982db62
--- 3584,3602 ----
982db62
  		trailing backslash, remove it if you put a comma after it.
982db62
  		If the expansion fails for one of the directories, there is no
982db62
  		error message.
982db62
! 
982db62
! 		Unless the optional {nosuf} argument is given and is non-zero,
982db62
  		the 'suffixes' and 'wildignore' options apply: Names matching
982db62
  		one of the patterns in 'wildignore' will be skipped and
982db62
  		'suffixes' affect the ordering of matches.
982db62
  
982db62
+ 		When {list} is present and it is non-zero the result is a List
982db62
+ 		with all matching files. The advantage of using a List is, you
982db62
+ 		also get filenames containing newlines correctly. Otherwise
982db62
+ 		the result is a String and when there are several matches,
982db62
+ 		they are separated by <NL> characters.  Example: >
982db62
+ 			:echo globpath(&rtp, "syntax/c.vim", 0, 1)
982db62
+ <
982db62
  		The "**" item can be used to search in a directory tree.
982db62
  		For example, to find all "README.txt" files in the directories
982db62
  		in 'runtimepath' and below: >
982db62
*** ../vim-7.4.278/src/eval.c	2014-05-07 17:31:32.473182497 +0200
982db62
--- src/eval.c	2014-05-07 18:06:29.541200854 +0200
982db62
***************
982db62
*** 7985,7991 ****
982db62
      {"getwinposy",	0, 0, f_getwinposy},
982db62
      {"getwinvar",	2, 3, f_getwinvar},
982db62
      {"glob",		1, 3, f_glob},
982db62
!     {"globpath",	2, 3, f_globpath},
982db62
      {"has",		1, 1, f_has},
982db62
      {"has_key",		2, 2, f_has_key},
982db62
      {"haslocaldir",	0, 0, f_haslocaldir},
982db62
--- 7985,7991 ----
982db62
      {"getwinposy",	0, 0, f_getwinposy},
982db62
      {"getwinvar",	2, 3, f_getwinvar},
982db62
      {"glob",		1, 3, f_glob},
982db62
!     {"globpath",	2, 4, f_globpath},
982db62
      {"has",		1, 1, f_has},
982db62
      {"has_key",		2, 2, f_has_key},
982db62
      {"haslocaldir",	0, 0, f_haslocaldir},
982db62
***************
982db62
*** 12151,12168 ****
982db62
      char_u	buf1[NUMBUFLEN];
982db62
      char_u	*file = get_tv_string_buf_chk(&argvars[1], buf1);
982db62
      int		error = FALSE;
982db62
  
982db62
      /* When the optional second argument is non-zero, don't remove matches
982db62
      * for 'wildignore' and don't put matches for 'suffixes' at the end. */
982db62
-     if (argvars[2].v_type != VAR_UNKNOWN
982db62
- 				&& get_tv_number_chk(&argvars[2], &error))
982db62
- 	flags |= WILD_KEEP_ALL;
982db62
      rettv->v_type = VAR_STRING;
982db62
!     if (file == NULL || error)
982db62
! 	rettv->vval.v_string = NULL;
982db62
      else
982db62
! 	rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file,
982db62
! 								       flags);
982db62
  }
982db62
  
982db62
  /*
982db62
--- 12151,12187 ----
982db62
      char_u	buf1[NUMBUFLEN];
982db62
      char_u	*file = get_tv_string_buf_chk(&argvars[1], buf1);
982db62
      int		error = FALSE;
982db62
+     garray_T	ga;
982db62
+     int		i;
982db62
  
982db62
      /* When the optional second argument is non-zero, don't remove matches
982db62
      * for 'wildignore' and don't put matches for 'suffixes' at the end. */
982db62
      rettv->v_type = VAR_STRING;
982db62
!     if (argvars[2].v_type != VAR_UNKNOWN)
982db62
!     {
982db62
! 	if (get_tv_number_chk(&argvars[2], &error))
982db62
! 	    flags |= WILD_KEEP_ALL;
982db62
! 	if (argvars[3].v_type != VAR_UNKNOWN
982db62
! 				    && get_tv_number_chk(&argvars[3], &error))
982db62
! 	{
982db62
! 	    rettv->v_type = VAR_LIST;
982db62
! 	    rettv->vval.v_list = NULL;
982db62
! 	}
982db62
!     }
982db62
!     if (file != NULL && !error)
982db62
!     {
982db62
! 	ga_init2(&ga, (int)sizeof(char_u *), 10);
982db62
! 	globpath(get_tv_string(&argvars[0]), file, &ga, flags);
982db62
! 	if (rettv->v_type == VAR_STRING)
982db62
! 	    rettv->vval.v_string = ga_concat_strings(&ga, "\n");
982db62
! 	else if (rettv_list_alloc(rettv) != FAIL)
982db62
! 	    for (i = 0; i < ga.ga_len; ++i)
982db62
! 		list_append_string(rettv->vval.v_list,
982db62
! 					    ((char_u **)(ga.ga_data))[i], -1);
982db62
! 	ga_clear_strings(&ga);
982db62
!     }
982db62
      else
982db62
! 	rettv->vval.v_string = NULL;
982db62
  }
982db62
  
982db62
  /*
982db62
*** ../vim-7.4.278/src/ex_getln.c	2013-11-12 05:28:08.000000000 +0100
982db62
--- src/ex_getln.c	2014-05-07 18:11:49.281203653 +0200
982db62
***************
982db62
*** 5095,5103 ****
982db62
      char_u	***file;
982db62
      char	*dirnames[];
982db62
  {
982db62
-     char_u	*matches;
982db62
      char_u	*s;
982db62
      char_u	*e;
982db62
      garray_T	ga;
982db62
      int		i;
982db62
      int		pat_len;
982db62
--- 5095,5103 ----
982db62
      char_u	***file;
982db62
      char	*dirnames[];
982db62
  {
982db62
      char_u	*s;
982db62
      char_u	*e;
982db62
+     char_u	*match;
982db62
      garray_T	ga;
982db62
      int		i;
982db62
      int		pat_len;
982db62
***************
982db62
*** 5116,5148 ****
982db62
  	    return FAIL;
982db62
  	}
982db62
  	sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat);
982db62
! 	matches = globpath(p_rtp, s, 0);
982db62
  	vim_free(s);
982db62
! 	if (matches == NULL)
982db62
! 	    continue;
982db62
  
982db62
! 	for (s = matches; *s != NUL; s = e)
982db62
  	{
982db62
! 	    e = vim_strchr(s, '\n');
982db62
! 	    if (e == NULL)
982db62
! 		e = s + STRLEN(s);
982db62
! 	    if (ga_grow(&ga, 1) == FAIL)
982db62
! 		break;
982db62
! 	    if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
982db62
! 	    {
982db62
! 		for (s = e - 4; s > matches; mb_ptr_back(matches, s))
982db62
! 		    if (*s == '\n' || vim_ispathsep(*s))
982db62
! 			break;
982db62
! 		++s;
982db62
! 		((char_u **)ga.ga_data)[ga.ga_len] =
982db62
! 					    vim_strnsave(s, (int)(e - s - 4));
982db62
! 		++ga.ga_len;
982db62
! 	    }
982db62
! 	    if (*e != NUL)
982db62
! 		++e;
982db62
  	}
982db62
- 	vim_free(matches);
982db62
      }
982db62
      if (ga.ga_len == 0)
982db62
  	return FAIL;
982db62
  
982db62
--- 5116,5142 ----
982db62
  	    return FAIL;
982db62
  	}
982db62
  	sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat);
982db62
! 	globpath(p_rtp, s, &ga, 0);
982db62
  	vim_free(s);
982db62
!     }
982db62
  
982db62
!     for (i = 0; i < ga.ga_len; ++i)
982db62
!     {
982db62
! 	match = ((char_u **)ga.ga_data)[i];
982db62
! 	s = match;
982db62
! 	e = s + STRLEN(s);
982db62
! 	if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
982db62
  	{
982db62
! 	    e -= 4;
982db62
! 	    for (s = e; s > match; mb_ptr_back(match, s))
982db62
! 		if (s < match || vim_ispathsep(*s))
982db62
! 		    break;
982db62
! 	    ++s;
982db62
! 	    *e = NUL;
982db62
! 	    mch_memmove(match, s, e - s + 1);
982db62
  	}
982db62
      }
982db62
+ 
982db62
      if (ga.ga_len == 0)
982db62
  	return FAIL;
982db62
  
982db62
***************
982db62
*** 5160,5192 ****
982db62
  #if defined(FEAT_CMDL_COMPL) || defined(FEAT_EVAL) || defined(PROTO)
982db62
  /*
982db62
   * Expand "file" for all comma-separated directories in "path".
982db62
!  * Returns an allocated string with all matches concatenated, separated by
982db62
!  * newlines.  Returns NULL for an error or no matches.
982db62
   */
982db62
!     char_u *
982db62
! globpath(path, file, expand_options)
982db62
      char_u	*path;
982db62
      char_u	*file;
982db62
      int		expand_options;
982db62
  {
982db62
      expand_T	xpc;
982db62
      char_u	*buf;
982db62
-     garray_T	ga;
982db62
      int		i;
982db62
-     int		len;
982db62
      int		num_p;
982db62
      char_u	**p;
982db62
-     char_u	*cur = NULL;
982db62
  
982db62
      buf = alloc(MAXPATHL);
982db62
      if (buf == NULL)
982db62
! 	return NULL;
982db62
  
982db62
      ExpandInit(&xpc);
982db62
      xpc.xp_context = EXPAND_FILES;
982db62
  
982db62
-     ga_init2(&ga, 1, 100);
982db62
- 
982db62
      /* Loop over all entries in {path}. */
982db62
      while (*path != NUL)
982db62
      {
982db62
--- 5154,5181 ----
982db62
  #if defined(FEAT_CMDL_COMPL) || defined(FEAT_EVAL) || defined(PROTO)
982db62
  /*
982db62
   * Expand "file" for all comma-separated directories in "path".
982db62
!  * Adds the matches to "ga".  Caller must init "ga".
982db62
   */
982db62
!     void
982db62
! globpath(path, file, ga, expand_options)
982db62
      char_u	*path;
982db62
      char_u	*file;
982db62
+     garray_T	*ga;
982db62
      int		expand_options;
982db62
  {
982db62
      expand_T	xpc;
982db62
      char_u	*buf;
982db62
      int		i;
982db62
      int		num_p;
982db62
      char_u	**p;
982db62
  
982db62
      buf = alloc(MAXPATHL);
982db62
      if (buf == NULL)
982db62
! 	return;
982db62
  
982db62
      ExpandInit(&xpc);
982db62
      xpc.xp_context = EXPAND_FILES;
982db62
  
982db62
      /* Loop over all entries in {path}. */
982db62
      while (*path != NUL)
982db62
      {
982db62
***************
982db62
*** 5207,5236 ****
982db62
  			     WILD_SILENT|expand_options) != FAIL && num_p > 0)
982db62
  	    {
982db62
  		ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
982db62
- 		for (len = 0, i = 0; i < num_p; ++i)
982db62
- 		    len += (int)STRLEN(p[i]) + 1;
982db62
  
982db62
! 		/* Concatenate new results to previous ones. */
982db62
! 		if (ga_grow(&ga, len) == OK)
982db62
  		{
982db62
- 		    cur = (char_u *)ga.ga_data + ga.ga_len;
982db62
  		    for (i = 0; i < num_p; ++i)
982db62
  		    {
982db62
! 			STRCPY(cur, p[i]);
982db62
! 			cur += STRLEN(p[i]);
982db62
! 			*cur++ = '\n';
982db62
  		    }
982db62
- 		    ga.ga_len += len;
982db62
  		}
982db62
  		FreeWild(num_p, p);
982db62
  	    }
982db62
  	}
982db62
      }
982db62
-     if (cur != NULL)
982db62
- 	*--cur = 0; /* Replace trailing newline with NUL */
982db62
  
982db62
      vim_free(buf);
982db62
-     return (char_u *)ga.ga_data;
982db62
  }
982db62
  
982db62
  #endif
982db62
--- 5196,5218 ----
982db62
  			     WILD_SILENT|expand_options) != FAIL && num_p > 0)
982db62
  	    {
982db62
  		ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
982db62
  
982db62
! 		if (ga_grow(ga, num_p) == OK)
982db62
  		{
982db62
  		    for (i = 0; i < num_p; ++i)
982db62
  		    {
982db62
! 			((char_u **)ga->ga_data)[ga->ga_len] =
982db62
! 					    vim_strnsave(p[i], STRLEN(p[i]));
982db62
! 			++ga->ga_len;
982db62
  		    }
982db62
  		}
982db62
+ 
982db62
  		FreeWild(num_p, p);
982db62
  	    }
982db62
  	}
982db62
      }
982db62
  
982db62
      vim_free(buf);
982db62
  }
982db62
  
982db62
  #endif
982db62
*** ../vim-7.4.278/src/misc1.c	2014-05-07 15:10:17.657108310 +0200
982db62
--- src/misc1.c	2014-05-07 17:46:30.269190356 +0200
982db62
***************
982db62
*** 10336,10344 ****
982db62
  {
982db62
      char_u	*curdir;
982db62
      garray_T	path_ga;
982db62
-     char_u	*files = NULL;
982db62
-     char_u	*s;	/* start */
982db62
-     char_u	*e;	/* end */
982db62
      char_u	*paths = NULL;
982db62
  
982db62
      if ((curdir = alloc((unsigned)MAXPATHL)) == NULL)
982db62
--- 10336,10341 ----
982db62
***************
982db62
*** 10351,10387 ****
982db62
      if (path_ga.ga_len == 0)
982db62
  	return 0;
982db62
  
982db62
!     paths = ga_concat_strings(&path_ga);
982db62
      ga_clear_strings(&path_ga);
982db62
      if (paths == NULL)
982db62
  	return 0;
982db62
  
982db62
!     files = globpath(paths, pattern, (flags & EW_ICASE) ? WILD_ICASE : 0);
982db62
      vim_free(paths);
982db62
-     if (files == NULL)
982db62
- 	return 0;
982db62
- 
982db62
-     /* Copy each path in files into gap */
982db62
-     s = e = files;
982db62
-     while (*s != NUL)
982db62
-     {
982db62
- 	while (*e != '\n' && *e != NUL)
982db62
- 	    e++;
982db62
- 	if (*e == NUL)
982db62
- 	{
982db62
- 	    addfile(gap, s, flags);
982db62
- 	    break;
982db62
- 	}
982db62
- 	else
982db62
- 	{
982db62
- 	    /* *e is '\n' */
982db62
- 	    *e = NUL;
982db62
- 	    addfile(gap, s, flags);
982db62
- 	    e++;
982db62
- 	    s = e;
982db62
- 	}
982db62
-     }
982db62
-     vim_free(files);
982db62
  
982db62
      return gap->ga_len;
982db62
  }
982db62
--- 10348,10360 ----
982db62
      if (path_ga.ga_len == 0)
982db62
  	return 0;
982db62
  
982db62
!     paths = ga_concat_strings(&path_ga, ",");
982db62
      ga_clear_strings(&path_ga);
982db62
      if (paths == NULL)
982db62
  	return 0;
982db62
  
982db62
!     globpath(paths, pattern, gap, (flags & EW_ICASE) ? WILD_ICASE : 0);
982db62
      vim_free(paths);
982db62
  
982db62
      return gap->ga_len;
982db62
  }
982db62
*** ../vim-7.4.278/src/misc2.c	2014-03-23 15:12:29.927264336 +0100
982db62
--- src/misc2.c	2014-05-07 18:34:37.689215632 +0200
982db62
***************
982db62
*** 2087,2115 ****
982db62
  
982db62
  /*
982db62
   * For a growing array that contains a list of strings: concatenate all the
982db62
!  * strings with a separating comma.
982db62
   * Returns NULL when out of memory.
982db62
   */
982db62
      char_u *
982db62
! ga_concat_strings(gap)
982db62
      garray_T *gap;
982db62
  {
982db62
      int		i;
982db62
      int		len = 0;
982db62
      char_u	*s;
982db62
  
982db62
      for (i = 0; i < gap->ga_len; ++i)
982db62
! 	len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + 1;
982db62
  
982db62
      s = alloc(len + 1);
982db62
      if (s != NULL)
982db62
      {
982db62
  	*s = NUL;
982db62
  	for (i = 0; i < gap->ga_len; ++i)
982db62
  	{
982db62
! 	    if (*s != NUL)
982db62
! 		STRCAT(s, ",");
982db62
! 	    STRCAT(s, ((char_u **)(gap->ga_data))[i]);
982db62
  	}
982db62
      }
982db62
      return s;
982db62
--- 2087,2123 ----
982db62
  
982db62
  /*
982db62
   * For a growing array that contains a list of strings: concatenate all the
982db62
!  * strings with a separating "sep".
982db62
   * Returns NULL when out of memory.
982db62
   */
982db62
      char_u *
982db62
! ga_concat_strings(gap, sep)
982db62
      garray_T *gap;
982db62
+     char     *sep;
982db62
  {
982db62
      int		i;
982db62
      int		len = 0;
982db62
+     int		sep_len = (int)STRLEN(sep);
982db62
      char_u	*s;
982db62
+     char_u	*p;
982db62
  
982db62
      for (i = 0; i < gap->ga_len; ++i)
982db62
! 	len += (int)STRLEN(((char_u **)(gap->ga_data))[i]) + sep_len;
982db62
  
982db62
      s = alloc(len + 1);
982db62
      if (s != NULL)
982db62
      {
982db62
  	*s = NUL;
982db62
+ 	p = s;
982db62
  	for (i = 0; i < gap->ga_len; ++i)
982db62
  	{
982db62
! 	    if (p != s)
982db62
! 	    {
982db62
! 		STRCPY(p, sep);
982db62
! 		p += sep_len;
982db62
! 	    }
982db62
! 	    STRCPY(p, ((char_u **)(gap->ga_data))[i]);
982db62
! 	    p += STRLEN(p);
982db62
  	}
982db62
      }
982db62
      return s;
982db62
*** ../vim-7.4.278/src/proto/ex_getln.pro	2013-08-10 13:37:11.000000000 +0200
982db62
--- src/proto/ex_getln.pro	2014-05-07 17:52:42.457193614 +0200
982db62
***************
982db62
*** 32,38 ****
982db62
  void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
982db62
  int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
982db62
  int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped));
982db62
! char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
982db62
  void init_history __ARGS((void));
982db62
  int get_histtype __ARGS((char_u *name));
982db62
  void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
982db62
--- 32,38 ----
982db62
  void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
982db62
  int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
982db62
  int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped));
982db62
! void globpath __ARGS((char_u *path, char_u *file, garray_T *ga, int expand_options));
982db62
  void init_history __ARGS((void));
982db62
  int get_histtype __ARGS((char_u *name));
982db62
  void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
982db62
*** ../vim-7.4.278/src/proto/misc2.pro	2014-02-23 23:38:58.828760280 +0100
982db62
--- src/proto/misc2.pro	2014-05-07 17:52:36.189193559 +0200
982db62
***************
982db62
*** 55,61 ****
982db62
  void ga_init __ARGS((garray_T *gap));
982db62
  void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize));
982db62
  int ga_grow __ARGS((garray_T *gap, int n));
982db62
! char_u *ga_concat_strings __ARGS((garray_T *gap));
982db62
  void ga_concat __ARGS((garray_T *gap, char_u *s));
982db62
  void ga_append __ARGS((garray_T *gap, int c));
982db62
  void append_ga_line __ARGS((garray_T *gap));
982db62
--- 55,61 ----
982db62
  void ga_init __ARGS((garray_T *gap));
982db62
  void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize));
982db62
  int ga_grow __ARGS((garray_T *gap, int n));
982db62
! char_u *ga_concat_strings __ARGS((garray_T *gap, char *sep));
982db62
  void ga_concat __ARGS((garray_T *gap, char_u *s));
982db62
  void ga_append __ARGS((garray_T *gap, int c));
982db62
  void append_ga_line __ARGS((garray_T *gap));
982db62
*** ../vim-7.4.278/src/testdir/test97.in	2013-08-02 14:55:50.000000000 +0200
982db62
--- src/testdir/test97.in	2014-05-07 18:27:59.213212144 +0200
982db62
***************
982db62
*** 5,16 ****
982db62
  :so small.vim
982db62
  :set shell=doesnotexist
982db62
  :e test.out
982db62
! :put =glob('Xxx\{')
982db62
! :put =glob('Xxx\$')
982db62
  :w! Xxx{
982db62
  :w! Xxx\$
982db62
! :put =glob('Xxx\{')
982db62
! :put =glob('Xxx\$')
982db62
  :w
982db62
  :qa!
982db62
  ENDTEST
982db62
--- 5,19 ----
982db62
  :so small.vim
982db62
  :set shell=doesnotexist
982db62
  :e test.out
982db62
! :$put =glob('Xxx\{')
982db62
! :$put =glob('Xxx\$')
982db62
  :w! Xxx{
982db62
  :w! Xxx\$
982db62
! :$put =glob('Xxx\{')
982db62
! :$put =glob('Xxx\$')
982db62
! :"
982db62
! :$put =string(globpath('sautest/autoload', '*.vim'))
982db62
! :$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
982db62
  :w
982db62
  :qa!
982db62
  ENDTEST
982db62
*** ../vim-7.4.278/src/testdir/test97.ok	2013-07-03 16:14:50.000000000 +0200
982db62
--- src/testdir/test97.ok	2014-05-07 18:28:01.985212168 +0200
982db62
***************
982db62
*** 3,5 ****
982db62
--- 3,8 ----
982db62
  
982db62
  Xxx{
982db62
  Xxx$
982db62
+ 'sautest/autoload/Test104.vim
982db62
+ sautest/autoload/footest.vim'
982db62
+ ['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim']
982db62
*** ../vim-7.4.278/src/version.c	2014-05-07 17:31:32.473182497 +0200
982db62
--- src/version.c	2014-05-07 17:35:06.253184368 +0200
982db62
***************
982db62
*** 736,737 ****
982db62
--- 736,739 ----
982db62
  {   /* Add new patch number below this line */
982db62
+ /**/
982db62
+     279,
982db62
  /**/
982db62
982db62
-- 
982db62
hundred-and-one symptoms of being an internet addict:
982db62
121. You ask for e-mail adresses instead of telephone numbers.
982db62
982db62
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
982db62
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
982db62
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
982db62
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///