|
这样,运行kill -s SIGUSR1 <fcitx-pid>的时候,就可以保存输入法的文件了。还有,我把if/else形式改为switch/case形式,不知道Yuking会不会喜欢~
- --- fcitx-3.2.1/src/MyErrorsHandlers.c 2006-06-20 21:17:44.000000000 +0800
- +++ fcitx-3.2.1/src/MyErrorsHandlers.c 2006-07-15 01:41:19.000000000 +0800
- @@ -59,24 +59,35 @@
- {
- fprintf (stdout, "\nFCITX -- Get Signal No.: %d\n", signo);
- - if (signo == SIGHUP) {
- - LoadConfig (False);
- - SetIM ();
- + switch (signo) {
- + /* 出现SIGSEGV表明程序自己有问题,此时如果还执行保存操作,
- + 可能会损坏输入法文件,所以不能调用SaveIM () */
- + case SIGSEGV:
- + break;
- + case SIGHUP:
- + LoadConfig (False);
- + SetIM ();
- /*
- - if (bLumaQQ)
- - ConnectIDResetReset ();*/
- -
- - return;
- + if (bLumaQQ)
- + ConnectIDResetReset ();
- +*/
- + return;
- + break;
- + default:
- + SaveIM ();
- + case SIGUSR1:
- + case SIGCHLD:
- + case SIGQUIT:
- + case SIGWINCH:
- + case SIGTTIN:
- + case SIGSTOP:
- + case SIGTSTP:
- + return;
- + break;
- }
- - //出现SIGSEGV表明程序自己有问题,此时如果还执行保存操作,可能会损坏输入法文件
- - if (signo != SIGSEGV)
- - SaveIM ();
- -
- - if (signo != SIGCHLD && signo != SIGQUIT && signo != SIGWINCH && signo != S
- IGTTIN && signo != SIGSTOP && signo != SIGTSTP) {
- - fprintf (stdout, "FCITX -- Exit Signal No.: %d\n\n", signo);
- - exit (0);
- - }
- + fprintf (stdout, "FCITX -- Exit Signal No.: %d\n\n", signo);
- + exit (0);
- }
- void SetMyXErrorHandler (void)
复制代码 |
|