Re: Problem with function cd in bash 4.0

2009-02-26 Thread Richard Leeden


Chet Ramey wrote:
 
 Interesting.  This happens only on Linux.  FreeBSD, MacOS X, and Solaris
 all interrupt and return to $PS1.
 
 Chet
 

Actually, this was happening for me on Solaris too, so looks like not just a
Linux thing. 

But your patch fixed the issue on Solaris as well.

Richard
-- 
View this message in context: 
http://www.nabble.com/Problem-with-function-cd-in-bash-4.0-tp22171999p0451.html
Sent from the Gnu - Bash mailing list archive at Nabble.com.





Re: Problem with function cd in bash 4.0

2009-02-25 Thread Mike Frysinger
On Wednesday 25 February 2009 16:21:47 Chet Ramey wrote:
   Yep, it's a bug.  Try the attached patch; it works for me.
 
  this introduces a bug of it's own though :/.  you can no longer use
  ctrl+c to escape from unbalanced quotes.
 
  - type: echo '
  - hit enter
  - hit ctrl+c over and over
  - bash still waits for the ' to be balanced

 Still not sure what extra stuff Linux runs to make this only fail there,
 but here's a patch that should fix it.

seems to fix the issue on my system, thanks
-mike




Re: Problem with function cd in bash 4.0

2009-02-24 Thread Bernd Eggink

Chet Ramey schrieb:

Bernd Eggink wrote:

I normally wrap the builtin cd into a function cd, which does some
additional things and then calls the builtin. Example:

   function cd
   {
local list=$(echo *.bui)
# ...
builtin cd $1
   }

I have a PS1 like this:

   PS1=\\w \$ 

With bash 3, this worked well; cd-ing into a directory changed the
prompt immediately. With bash 4, however, the prompt keeps unchanged
after a call to cd and only gets adjusted after the _next_ command. I
noticed that this depends on a subshell being used in the function.
Without that, it behaves as before.

Is that a bug? I can get the intended behaviour by putting

   eval PS1='$PS1'

at the end of the function, but that's a rather ugly workaround.


Yep, it's a bug.  Try the attached patch; it works for me.


Works for me, too. Thanks!

Bernd

--
Bernd Eggink
http://sudrala.de





Re: Problem with function cd in bash 4.0

2009-02-24 Thread Chet Ramey
Richard Leeden wrote:

 Unfortunately doesn't work for me
 
 I'm doing something to Bernd - i.e. I have a function called cd that calls
 the builtin cd after doing some extra things. In bash 4.0 with my cd
 function enabled I get a bus error and the shell quits each time I attempt a
 tab completion on cd. To make things easier I replaced my (rather
 complicated) function with the very simple:

That's a problem with completion, not anything to do with whether you have
a function named `cd' defined.

I posted a patch for this earlier.  Look at

http://lists.gnu.org/archive/html/bug-bash/2009-02/msg00153.html

and see if it fixes things for you.

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer

Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/




Problem with function cd in bash 4.0

2009-02-23 Thread Bernd Eggink
I normally wrap the builtin cd into a function cd, which does some 
additional things and then calls the builtin. Example:


   function cd
   {
local list=$(echo *.bui)
# ...
builtin cd $1
   }

I have a PS1 like this:

   PS1=\\w \$ 

With bash 3, this worked well; cd-ing into a directory changed the 
prompt immediately. With bash 4, however, the prompt keeps unchanged 
after a call to cd and only gets adjusted after the _next_ command. I 
noticed that this depends on a subshell being used in the function. 
Without that, it behaves as before.


Is that a bug? I can get the intended behaviour by putting

   eval PS1='$PS1'

at the end of the function, but that's a rather ugly workaround.

Regards,
Bernd

--
Bernd Eggink
http://sudrala.de





Re: Problem with function cd in bash 4.0

2009-02-23 Thread Chet Ramey
Bernd Eggink wrote:
 I normally wrap the builtin cd into a function cd, which does some
 additional things and then calls the builtin. Example:
 
function cd
{
 local list=$(echo *.bui)
 # ...
 builtin cd $1
}
 
 I have a PS1 like this:
 
PS1=\\w \$ 
 
 With bash 3, this worked well; cd-ing into a directory changed the
 prompt immediately. With bash 4, however, the prompt keeps unchanged
 after a call to cd and only gets adjusted after the _next_ command. I
 noticed that this depends on a subshell being used in the function.
 Without that, it behaves as before.
 
 Is that a bug? I can get the intended behaviour by putting
 
eval PS1='$PS1'
 
 at the end of the function, but that's a rather ugly workaround.

Yep, it's a bug.  Try the attached patch; it works for me.

Chet

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer

Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/
*** ../bash-4.0/parse.y 2009-01-08 08:29:12.0 -0500
--- parse.y 2009-02-23 22:40:55.0 -0500
***
*** 1616,1623 
int *ret;
  
!   ret = (int *)xmalloc (3 * sizeof (int));
ret[0] = last_read_token;
ret[1] = token_before_that;
ret[2] = two_tokens_ago;
return ret;
  }
--- 1616,1624 
int *ret;
  
!   ret = (int *)xmalloc (4 * sizeof (int));
ret[0] = last_read_token;
ret[1] = token_before_that;
ret[2] = two_tokens_ago;
+   ret[3] = current_token;
return ret;
  }
***
*** 1632,1635 
--- 1633,1637 
token_before_that = ts[1];
two_tokens_ago = ts[2];
+   current_token = ts[3];
  }