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

Re: mch_expand_wildcards() fails with Solaris /usr/bin/ksh

Expand Messages
  • Gary Johnson
    On 2008-05-08, Gary Johnson wrote: [...] ... Bram, What s the status of this proposal? Is the official patch coming or do you have
    Message 1 of 6 , Jun 3, 2008
    View Source
    • 0 Attachment
      On 2008-05-08, Gary Johnson <garyjohn@...> wrote:

      [...]

      > The Problem:
      >
      > The basic problem is that "echo -n" is not portable. This is
      > mentioned in the echo(1) man page on SunOS and has been discussed
      > numerous times on comp.unix.shell. In particular, the echo commands
      > in sh and ksh on HP-UX and Solaris do not have a -n option.
      > Consequently, the sh_vimglob_func fails on those shells and systems.
      >
      > The Proposed Solution:
      >
      > I don't know the history or rationale behind the current
      > implementation of sh_vimglob_func, but it seems odd that the first
      > echo is given the -n option to suppress the final newline, then a
      > second echo is used to create a newline in the same place. The
      > solution, therefore, seems to be to eliminate the -n option to the
      > first echo command and eliminate the second echo command completely.
      > The resulting initial value of sh_vimglob_func is
      >
      > vimglob() { while [ $# -ge 1 ]; do echo "$1"; shift; done }; vimglob >
      >
      > This fixes the problem on SunOS with sh and ksh and would seem to
      > improve portability. It does not fix the problem on SunOS with csh,
      > but I think that problem has a different cause.
      >
      > I have made this change to vim 7.1.297 on Cygwin, Linux and SunOS
      > and have so far not observed any adverse effects. The patch is
      > included below.
      >
      > Regards,
      > Gary
      >
      > -------------------------- os_unix.c.diff --------------------------
      > *** os_unix.c.orig Wed May 7 17:17:29 2008
      > --- os_unix.c Thu May 8 14:15:01 2008
      > ***************
      > *** 5152,5158 ****
      > static int did_find_nul = FALSE;
      > int ampersent = FALSE;
      > /* vimglob() function to define for Posix shell */
      > ! static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo -n \"$1\"; echo; shift; done }; vimglob >";
      >
      > *num_file = 0; /* default: no files found */
      > *file = NULL;
      > --- 5152,5158 ----
      > static int did_find_nul = FALSE;
      > int ampersent = FALSE;
      > /* vimglob() function to define for Posix shell */
      > ! static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo \"$1\"; shift; done }; vimglob >";
      >
      > *num_file = 0; /* default: no files found */
      > *file = NULL;
      >

      Bram,

      What's the status of this proposal? Is the official patch coming or
      do you have reservations?

      Regards,
      Gary


      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • Bram Moolenaar
      ... It s in the todo list. We have had problems in this area before, so I need to look into it. It does make a lot of sense. -- Engineers will go without
      Message 2 of 6 , Jun 3, 2008
      View Source
      • 0 Attachment
        Gary Johnson wrote:

        > On 2008-05-08, Gary Johnson <garyjohn@...> wrote:
        >
        > [...]
        >
        > > The Problem:
        > >
        > > The basic problem is that "echo -n" is not portable. This is
        > > mentioned in the echo(1) man page on SunOS and has been discussed
        > > numerous times on comp.unix.shell. In particular, the echo commands
        > > in sh and ksh on HP-UX and Solaris do not have a -n option.
        > > Consequently, the sh_vimglob_func fails on those shells and systems.
        > >
        > > The Proposed Solution:
        > >
        > > I don't know the history or rationale behind the current
        > > implementation of sh_vimglob_func, but it seems odd that the first
        > > echo is given the -n option to suppress the final newline, then a
        > > second echo is used to create a newline in the same place. The
        > > solution, therefore, seems to be to eliminate the -n option to the
        > > first echo command and eliminate the second echo command completely.
        > > The resulting initial value of sh_vimglob_func is
        > >
        > > vimglob() { while [ $# -ge 1 ]; do echo "$1"; shift; done }; vimglob >
        > >
        > > This fixes the problem on SunOS with sh and ksh and would seem to
        > > improve portability. It does not fix the problem on SunOS with csh,
        > > but I think that problem has a different cause.
        > >
        > > I have made this change to vim 7.1.297 on Cygwin, Linux and SunOS
        > > and have so far not observed any adverse effects. The patch is
        > > included below.
        > >
        > > Regards,
        > > Gary
        > >
        > > -------------------------- os_unix.c.diff --------------------------
        > > *** os_unix.c.orig Wed May 7 17:17:29 2008
        > > --- os_unix.c Thu May 8 14:15:01 2008
        > > ***************
        > > *** 5152,5158 ****
        > > static int did_find_nul = FALSE;
        > > int ampersent = FALSE;
        > > /* vimglob() function to define for Posix shell */
        > > ! static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo -n \"$1\"; echo; shift; done }; vimglob >";
        > >
        > > *num_file = 0; /* default: no files found */
        > > *file = NULL;
        > > --- 5152,5158 ----
        > > static int did_find_nul = FALSE;
        > > int ampersent = FALSE;
        > > /* vimglob() function to define for Posix shell */
        > > ! static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo \"$1\"; shift; done }; vimglob >";
        > >
        > > *num_file = 0; /* default: no files found */
        > > *file = NULL;
        > >
        >
        > Bram,
        >
        > What's the status of this proposal? Is the official patch coming or
        > do you have reservations?

        It's in the todo list. We have had problems in this area before, so I
        need to look into it. It does make a lot of sense.

        --
        Engineers will go without food and hygiene for days to solve a problem.
        (Other times just because they forgot.)
        (Scott Adams - The Dilbert principle)

        /// Bram Moolenaar -- Bram@... -- 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 ///

        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_dev" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Gary Johnson
        ... Thanks very much. I understand your caution. I just wanted to be sure that it hadn t fallen through the cracks. Regards, Gary
        Message 3 of 6 , Jun 3, 2008
        View Source
        • 0 Attachment
          On 2008-06-03, Bram Moolenaar <Bram@...> wrote:
          > Gary Johnson wrote:
          >
          > > On 2008-05-08, Gary Johnson <garyjohn@...> wrote:
          > >
          > > [...]
          > >
          > > > The Problem:
          > > >
          > > > The basic problem is that "echo -n" is not portable. This is
          > > > mentioned in the echo(1) man page on SunOS and has been discussed
          > > > numerous times on comp.unix.shell. In particular, the echo commands
          > > > in sh and ksh on HP-UX and Solaris do not have a -n option.
          > > > Consequently, the sh_vimglob_func fails on those shells and systems.
          > > >
          > > > The Proposed Solution:
          > > >
          > > > I don't know the history or rationale behind the current
          > > > implementation of sh_vimglob_func, but it seems odd that the first
          > > > echo is given the -n option to suppress the final newline, then a
          > > > second echo is used to create a newline in the same place. The
          > > > solution, therefore, seems to be to eliminate the -n option to the
          > > > first echo command and eliminate the second echo command completely.
          > > > The resulting initial value of sh_vimglob_func is
          > > >
          > > > vimglob() { while [ $# -ge 1 ]; do echo "$1"; shift; done }; vimglob >
          > > >
          > > > This fixes the problem on SunOS with sh and ksh and would seem to
          > > > improve portability. It does not fix the problem on SunOS with csh,
          > > > but I think that problem has a different cause.
          > > >
          > > > I have made this change to vim 7.1.297 on Cygwin, Linux and SunOS
          > > > and have so far not observed any adverse effects. The patch is
          > > > included below.
          > > >
          > > > Regards,
          > > > Gary
          > > >
          > > > -------------------------- os_unix.c.diff --------------------------
          > > > *** os_unix.c.orig Wed May 7 17:17:29 2008
          > > > --- os_unix.c Thu May 8 14:15:01 2008
          > > > ***************
          > > > *** 5152,5158 ****
          > > > static int did_find_nul = FALSE;
          > > > int ampersent = FALSE;
          > > > /* vimglob() function to define for Posix shell */
          > > > ! static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo -n \"$1\"; echo; shift; done }; vimglob >";
          > > >
          > > > *num_file = 0; /* default: no files found */
          > > > *file = NULL;
          > > > --- 5152,5158 ----
          > > > static int did_find_nul = FALSE;
          > > > int ampersent = FALSE;
          > > > /* vimglob() function to define for Posix shell */
          > > > ! static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo \"$1\"; shift; done }; vimglob >";
          > > >
          > > > *num_file = 0; /* default: no files found */
          > > > *file = NULL;
          > > >
          > >
          > > Bram,
          > >
          > > What's the status of this proposal? Is the official patch coming or
          > > do you have reservations?
          >
          > It's in the todo list. We have had problems in this area before, so I
          > need to look into it. It does make a lot of sense.

          Thanks very much. I understand your caution. I just wanted to be
          sure that it hadn't fallen through the cracks.

          Regards,
          Gary


          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_dev" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        Your message has been successfully submitted and would be delivered to recipients shortly.