Your message dated Tue, 3 Nov 2009 16:12:43 -0500 with message-id <[email protected]> has caused the report #542430, regarding [vim] vim try to expand files or directories that contain ~ (when using tcsh shell) to be marked as having been forwarded to the upstream software author(s) Bram Moolenaar <[email protected]>
(NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact [email protected] immediately.) -- 542430: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542430 Debian Bug Tracking System Contact [email protected] with problems
--- Begin Message ---Bram, The code in src/os_unix.c:mch_expand_wildcards which detects what shell is being used doesn't work properly if 'shell' has been set to a shell and arguments (e.g., "/bin/tcsh -f"). 5354 else if ((len = STRLEN(p_sh)) >= 3) 5355 { 5356 if (STRCMP(p_sh + len - 3, "csh") == 0) 5357 shell_style = STYLE_GLOB; 5358 else if (STRCMP(p_sh + len - 3, "zsh") == 0) 5359 shell_style = STYLE_PRINT; 5360 } 5361 if (shell_style == STYLE_ECHO && strstr((char *)gettail(p_sh), 5362 "sh") != NULL) 5363 shell_style = STYLE_VIMGLOB; Vim checks whether the last 3 characters of 'shell' are "csh". Since the last 3 characters of p_sh in this case are " -f", Vim then checks whether "sh" is in gettail(p_sh) and uses sh-compatible shell expansion. It looks like a safer approach would be to grab p_sh up to the first whitespace and then use gettail() on that to get the shell name. That should reduce the false-positive rate for setting STYLE_VIMGLOB in line 5363. Although, it'll still fail with shells like fish which will pass the strstr(..., "sh") check but not work with STYLE_VIMGLOB. fish does work with STYLE_ECHO, so we could add that to the special-case list. -- James GPG Key: 1024D/61326D40 2003-09-02 James Vega <[email protected]>
--- End Message ---

