任务单 #10615

catで行の右端が切れる
开放日期: 2007-06-22 21:32 最后更新: 2007-07-11 13:35

报告人:
(del#24082)
属主:
类型:
状态:
关闭
组件:
(无)
里程碑:
(无)
优先:
7
严重性:
5 - Medium
处理结果:
Fixed
文件:
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

$ cat foo.txt
foo bar cifs
ro,credentials=/etc/cifs_cred.conf 0 0

$ hexdump -C foo.txt
00000000 66 6f 6f 09 62 61 72 09 63 69 66 73 09 72 6f
2c |foo.bar.cifs.ro,|
00000010 63 72 65 64 65 6e 74 69 61 6c 73 3d 2f 65 74
63 |credentials=/etc|
00000020 2f 63 69 66 73 5f 63 72 65 64 2e 63 6f 6e 66
09 |/cifs_cred.conf.|
00000030 30 09 30 0a 0a
|0.0..|
00000035

上記のようなタブで区切られた一行が含まれるファイルを、
ちょうどTeraTermの右側ラインがタブの間に入るように、
ウィンドウを調整すると(ターミナルサイズを59×34にす
る)、cat表示がおかしくなる(下記参照)。

$ cat foo.txt
foo bar cifs ro,credentials=/etc/cifs_cred.conf0

PuTTYでは問題ないため、TeraTermの右端処理に制御コードが
含まれるとバグるものと予想。

任务单历史 (3/4 Histories)

2007-06-25 14:54 Updated by: (del#24082)
评论
Logged In: YES
user_id=24082

TeraTerm 2.3(w/o TTSSH)で再現しました。オリジナルバグです。

タブストップ処理が行跨ぎを考慮していないようです。

@ ParseControl() -> Tab() -> MoveToNextTab()#buffer.c

void MoveToNextTab()
{
int i;

if (NTabStops>0)
{
i = -1;
do
i++;
while ((TabStops[i]<=CursorX) && (i<NTabStops-1));
if (TabStops[i]>CursorX)
MoveCursor(TabStops[i],CursorY);
else
MoveCursor(NumOfColumns-1,CursorY);
}
else
MoveCursor(NumOfColumns-1,CursorY);
}
2007-06-26 01:21 Updated by: doda
  • 属主 Update from (无) to doda
  • 处理结果 Update from to Accepted
评论
Logged In: YES
user_id=14322

とりあえず暫定対処を入れてみました。
まだおかしい部分があるのでもう少し対処が必要ですが、
週末まで時間が取れそうにないので、ちょっとまって下さい。
2007-06-26 09:02 Updated by: (del#24082)
评论
Logged In: YES
user_id=24082

>doda様
今日、当方時間が取れそうなので、修正にトライしてみますよ。
この修正、結構難しそうです。
2007-07-11 13:35 Updated by: doda
  • Ticket Close date is changed to 2007-07-11 13:35
  • 处理结果 Update from Accepted to Fixed
  • 状态 Update from 开启 to 关闭
评论
Logged In: YES
user_id=14322

一通りの修正が終わりましたので、Closeします。

Attachment File List

No attachments

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名