<div dir="ltr"><div><div>Hello, friends.</div><div><br></div><div>How can I see, in the ssh_cli.erl module, delete_chars method incorrectly calculate variable "NewCol".</div><div><br></div><div>I can offer the option of a patch that fixes this problem.</div>
<div>The person who is responsible for supporting ssh has the discretion to take it as it is, or can make own fix.</div><div>Tested by Erlang 16B02, ssh 2.1.8 and R15B02, ssh 2.1.1</div><div><br></div><div>hurd@insider:~/Documents/Erlang/reports/ssh_expand_test$ cat ssh.patch </div>
<div>--- ssh-2.1.1/src/ssh_cli.erl<span class="" style="white-space:pre">       </span>2013-10-26 14:25:26.000000000 </div><div>+++ ssh-2.1.2/src/ssh_cli.erl<span class="" style="white-space:pre">       </span>2013-10-26 14:18:18.000000000</div>
<div>@@ -311,13 +319,14 @@</div><div>     NewBufTail = nthtail(N, BufTail),</div><div>     M = move_cursor(Col + length(NewBufTail) + N, Col, Tty),</div><div>     {[NewBufTail, lists:duplicate(N, $ ) | M],</div><div>      {Buf, NewBufTail, Col}};</div>
<div> delete_chars(N, {Buf, BufTail, Col}, Tty) -> % N < 0</div><div>     NewBuf = nthtail(-N, Buf),</div><div>-    NewCol = Col + N,</div><div>+    NewCol = case Col + N of V when V >= 0 -> V; _ -> 0 end,</div>
<div>     M1 = move_cursor(Col, NewCol, Tty),</div><div>     M2 = move_cursor(NewCol + length(BufTail) - N, NewCol, Tty),</div><div>     {[M1, BufTail, lists:duplicate(-N, $ ) | M2],</div><div>      {NewBuf, BufTail, NewCol}}.</div>
<div> </div><div> %%% Window change, redraw the current line (and clear out after it </div><div><br></div><div><br></div><div>I attached simple sample, where you can see this problem.</div><div>To run it, compile ssh_manager.erl and invoke "ssh_manager:start()" method to run ssh-daemon.</div>
<div>Then run simple ssh-client on terminal to localhost on port 9999, and entering the password "test".</div><div>(you need put keys in .ssh folder)</div><div>Below example show trouble with the display of available commands when you press Tab.</div>
<div><br></div><div>At the command prompt "ssh_app:"</div><div>_____________________________________________________</div><div>1> ssh_app:</div><div>_____________________________________________________</div>
<div><br></div><div>Press tab.</div><div>_____________________________________________________</div><div>1> ssh_app:</div><div>module_info/0  module_info/1  start/2        stop/1</div><div>1> ssh_app:</div><div>_____________________________________________________</div>
<div><br></div><div>You will see the line below "module_info/0 module_info/1 start/2 stop/1," and below that "ssh_app:".</div><div>Everything is wonderful. Yet.</div><div><br></div><div>Do the following: Go to the new line (Press enter) and enter a space as long as the input field team did not go on the line below .</div>
<div>_____________________________________________________</div><div>1></div><div>                   </div><div>_____________________________________________________</div><div><br></div><div>Enter "ssh_app:"</div>
<div><br></div><div>_____________________________________________________</div><div>1></div><div>                       ssh_app:</div><div>_____________________________________________________</div><div><br></div><div>
Press tab.</div><div>_____________________________________________________</div><div>1></div><div>                       ssh_app:</div><div>1></div><div>                       ssh_app:</div><div>_____________________________________________________</div>
<div><br></div><div>You will see that the tab has not worked. The string "module_info/0 module_info/1 start/2 stop/1" was not withdrawn.</div><div>This is not good.</div><div><br></div><div>You still can do the following: Go to the new line (press the button enter) and enter a space as long as the input field team did not go on 2 lines below.</div>
<div>_____________________________________________________</div><div>1></div><div>                                   </div><div>_____________________________________________________</div><div><br></div><div>Enter "ssh_app:".</div>
<div>____________________________________________________</div><div>1></div><div>                                   ssh_app:</div><div>_____________________________________________________</div><div><br></div><div>Press tab.</div>
<div><br></div><div>_____________________________________________________</div><div>1></div><div>  </div><div>1></div><div><br></div><div>                                   ssh_app:</div><div>_____________________________________________________</div>
<div><br></div><div>You will see that the tab has not worked. The string "module_info/0 module_info/1 start/2 stop/1" was not withdrawn. This is not good.</div></div><div><br></div>-- <br>---------------------------------------------<br>
With best regards,<br>Alexander.
</div>