回精華區
作者itoc, 信區: itoc
標題[修正] talk.c 聊天時連續按二次 Ctrl-C 才離開
時間02/10/17
作者: itoc (拯救一個靈魂) 看板: plan
標題: [修正] talk.c 聊天時連續按二次 Ctrl-C 才離開
時間: Sat Jul 20 01:10:36 2002                          Updated: 2002/10/17

※ 引述《tbp.bbs@xeon.tfcis.org (tbp)》之銘言:
> 兩人聊天時
> 如何修改才能讓第一次按^C為警告
> 再按一次^C才退出呢

: talk.c:talk_speak()

static void
talk_speak(fd)
  int fd;
{
  talk_win mywin, itswin;
  uschar data[80];
  char buf[80];
  int i, ch;
+ int ctrlc;

  ...
  ...

+ ctrlc = 0;        /* 1:上一鍵是 Ctrl-C 或 Ctrl-D */

  for (;;)
  {
    ch = vkey();

+   if (ch == Ctrl('D') || ch == Ctrl('C'))
+   {
+     if (ctrlc)    /* 連續按二次 Ctrl-C 或 Ctrl-D 離開 */
+     {
+       break;
+     }
+     else          /* 第一次按 Ctrl-C 或 Ctrl-D */
+     {
+       ctrlc = 1;
+       continue;
+     }
+   }
+   else
+   {
+     ctrlc = 0;
+   }

    ...
    ...

-   if (ch == Ctrl('D') || ch == Ctrl('C'))
-     break;

  ...
  ...

: theme.h

#ifdef HAVE_GAME
#define FOOTER_TALK     \
COLOR1 " 交談模式 " COLOR2 " (^O)對奕 (連續二次^C,^D)結束交談 (^T)呼叫器 (^Z)快捷列表 (^G)嗶嗶  \033[m"
#else
#define FOOTER_TALK     \
COLOR1 " 交談模式 " COLOR2 " (連續二次^C,^D)結束交談 (^T)呼叫器 (^Z)快捷列表 (^G)嗶嗶 (^Y)清除  \033[m"
#endif

--
  應該是這樣,沒試過

--
□ 本文章由 itocitoc.Dorm-GD2.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻