LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1027|回复: 0

fcitx 3.2.1建议:用SIGUSR1来保存输入法文件

[复制链接]
发表于 2006-7-15 01:51:20 | 显示全部楼层 |阅读模式
这样,运行kill -s SIGUSR1 <fcitx-pid>的时候,就可以保存输入法的文件了。还有,我把if/else形式改为switch/case形式,不知道Yuking会不会喜欢~

  1. --- fcitx-3.2.1/src/MyErrorsHandlers.c  2006-06-20 21:17:44.000000000 +0800
  2. +++ fcitx-3.2.1/src/MyErrorsHandlers.c  2006-07-15 01:41:19.000000000 +0800
  3. @@ -59,24 +59,35 @@
  4. {
  5.      fprintf (stdout, "\nFCITX -- Get Signal No.: %d\n", signo);

  6. -    if (signo == SIGHUP) {
  7. -       LoadConfig (False);
  8. -       SetIM ();
  9. +    switch (signo) {
  10. +        /* 出现SIGSEGV表明程序自己有问题,此时如果还执行保存操作,
  11. +           可能会损坏输入法文件,所以不能调用SaveIM () */
  12. +       case SIGSEGV:
  13. +           break;
  14. +       case SIGHUP:
  15. +           LoadConfig (False);
  16. +           SetIM ();
  17. /*
  18. -       if (bLumaQQ)
  19. -           ConnectIDResetReset ();*/
  20. -
  21. -       return;
  22. +           if (bLumaQQ)
  23. +               ConnectIDResetReset ();
  24. +*/
  25. +           return;
  26. +           break;
  27. +       default:
  28. +           SaveIM ();
  29. +       case SIGUSR1:
  30. +       case SIGCHLD:
  31. +       case SIGQUIT:
  32. +       case SIGWINCH:
  33. +       case SIGTTIN:
  34. +       case SIGSTOP:
  35. +       case SIGTSTP:
  36. +           return;
  37. +           break;
  38.      }

  39. -    //出现SIGSEGV表明程序自己有问题,此时如果还执行保存操作,可能会损坏输入法文件
  40. -    if (signo != SIGSEGV)
  41. -       SaveIM ();
  42. -
  43. -    if (signo != SIGCHLD && signo != SIGQUIT && signo != SIGWINCH && signo != S
  44. IGTTIN && signo != SIGSTOP && signo != SIGTSTP) {
  45. -       fprintf (stdout, "FCITX -- Exit Signal No.: %d\n\n", signo);
  46. -       exit (0);
  47. -    }
  48. +    fprintf (stdout, "FCITX -- Exit Signal No.: %d\n\n", signo);
  49. +    exit (0);
  50. }

  51. void SetMyXErrorHandler (void)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表