Loading ...
Sorry, an error occurred while loading the content.

Patch 6.0.113

Expand Messages
  • Bram Moolenaar
    Patch 6.0.113 Problem: :edit ~/fname doesn t work if $HOME includes a space. Also, expanding wildcards with the shell may fail. (John Daniel) Solution:
    Message 1 of 1 , Dec 31, 2001
    • 0 Attachment
      Patch 6.0.113
      Problem: ":edit ~/fname" doesn't work if $HOME includes a space. Also,
      expanding wildcards with the shell may fail. (John Daniel)
      Solution: Escape spaces with a backslash when needed.
      Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c


      *** ../vim60.112/src/ex_docmd.c Sat Dec 15 21:56:10 2001
      --- src/ex_docmd.c Mon Dec 31 17:28:09 2001
      ***************
      *** 3297,3303 ****
      if (vim_strchr(eap->arg, '$') != NULL
      || vim_strchr(eap->arg, '~') != NULL)
      {
      ! expand_env(eap->arg, NameBuff, MAXPATHL);
      has_wildcards = mch_has_wildcard(NameBuff);
      p = NameBuff;
      }
      --- 3297,3303 ----
      if (vim_strchr(eap->arg, '$') != NULL
      || vim_strchr(eap->arg, '~') != NULL)
      {
      ! expand_env_esc(eap->arg, NameBuff, MAXPATHL, TRUE);
      has_wildcards = mch_has_wildcard(NameBuff);
      p = NameBuff;
      }
      *** ../vim60.112/src/misc1.c Tue Nov 6 19:43:29 2001
      --- src/misc1.c Mon Dec 31 17:46:07 2001
      ***************
      *** 2834,2839 ****
      --- 2834,2849 ----
      char_u *dst; /* where to put the result */
      int dstlen; /* maximum length of the result */
      {
      + expand_env_esc(src, dst, dstlen, FALSE);
      + }
      +
      + void
      + expand_env_esc(src, dst, dstlen, esc)
      + char_u *src; /* input string e.g. "$HOME/vim.hlp" */
      + char_u *dst; /* where to put the result */
      + int dstlen; /* maximum length of the result */
      + int esc; /* escape spaces in expanded variables */
      + {
      char_u *tail;
      int c;
      char_u *var;
      ***************
      *** 2999,3004 ****
      --- 3009,3029 ----
      var = NULL;
      tail = (char_u *)""; /* for gcc */
      #endif /* UNIX || VMS */
      + }
      +
      + /* If "var" contains white space, escape it with a backslash.
      + * Required for ":e ~/tt" $HOME includes a space. */
      + if (esc && var != NULL && vim_strpbrk(var, (char_u *)" \t") != NULL)
      + {
      + char_u *p = vim_strsave_escaped(var, (char_u *)" \t");
      +
      + if (p != NULL)
      + {
      + if (mustfree)
      + vim_free(var);
      + var = p;
      + mustfree = TRUE;
      + }
      }

      if (var != NULL && *var != NUL
      *** ../vim60.112/src/proto/misc1.pro Tue Sep 25 21:49:20 2001
      --- src/proto/misc1.pro Mon Dec 31 17:26:25 2001
      ***************
      *** 46,51 ****
      --- 46,52 ----
      void vim_beep __ARGS((void));
      void init_homedir __ARGS((void));
      void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
      + void expand_env_esc __ARGS((char_u *src, char_u *dst, int dstlen, int esc));
      char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
      char_u *expand_env_save __ARGS((char_u *src));
      void vim_setenv __ARGS((char_u *name, char_u *val));
      *** ../vim60.112/src/os_unix.c Wed Oct 31 14:21:02 2001
      --- src/os_unix.c Mon Dec 31 17:41:29 2001
      ***************
      *** 4277,4289 ****
      if (shell_style != STYLE_BT)
      for (i = 0; i < num_pat; ++i)
      {
      ! #ifdef USE_SYSTEM
      ! STRCAT(command, " \""); /* need extra quotes because we */
      ! STRCAT(command, pat[i]); /* start the shell twice */
      ! STRCAT(command, "\"");
      ! #else
      ! STRCAT(command, " ");
      ! STRCAT(command, pat[i]);
      #endif
      }
      if (flags & EW_SILENT)
      --- 4277,4299 ----
      if (shell_style != STYLE_BT)
      for (i = 0; i < num_pat; ++i)
      {
      ! /* When using system() always add extra quotes, because the shell
      ! * is started twice. Otherwise it's only needed when the pattern
      ! * includes spaces or single quotes. */
      ! #ifndef USE_SYSTEM
      ! if (vim_strpbrk(pat[i], " '") != NULL)
      ! #endif
      ! {
      ! STRCAT(command, " \"");
      ! STRCAT(command, pat[i]);
      ! STRCAT(command, "\"");
      ! }
      ! #ifndef USE_SYSTEM
      ! else
      ! {
      ! STRCAT(command, " ");
      ! STRCAT(command, pat[i]);
      ! }
      #endif
      }
      if (flags & EW_SILENT)
      *** ../vim60.112/src/version.c Mon Dec 31 16:49:06 2001
      --- src/version.c Mon Dec 31 17:43:12 2001
      ***************
      *** 608,609 ****
      --- 608,611 ----
      { /* Add new patch number below this line */
      + /**/
      + 113,
      /**/

      --
      Microsoft: "Windows NT 4.0 now has the same user-interface as Windows 95"
      Windows 95: "Press CTRL-ALT-DEL to reboot"
      Windows NT 4.0: "Press CTRL-ALT-DEL to login"

      /// Bram Moolenaar -- Bram@... -- http://www.moolenaar.net \\\
      ((( Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim )))
      \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///
    Your message has been successfully submitted and would be delivered to recipients shortly.