Mercurial > gftp.yaz
comparison src/gtk/rename_dialog.c @ 42:cd169e4789df
2002-10-29 Brian Masney <masneyb@gftp.org>
* src/gtk/chmod_dialog.c src/gtk/delete_dialog.c src/gtk/gftp-gtk.c
src/gtk/gftp-gtk.h src/gtk/menu-items.c src/gtk/misc-gtk.c
src/gtk/mkdir_dialog.c src/gtk/rename_dialog.c src/gtk/transfer.c -
improved and simplified signal handling code
author | masneyb |
---|---|
date | Wed, 30 Oct 2002 03:34:37 +0000 |
parents | c8ec7877432e |
children | a12bcbc2fce4 |
comparison
equal
deleted
inserted
replaced
41:4bcfaf6307b5 | 42:cd169e4789df |
---|---|
18 /*****************************************************************************/ | 18 /*****************************************************************************/ |
19 | 19 |
20 #include "gftp-gtk.h" | 20 #include "gftp-gtk.h" |
21 static const char cvsid[] = "$Id$"; | 21 static const char cvsid[] = "$Id$"; |
22 | 22 |
23 static sigjmp_buf renenvir; | |
24 static const char *edttext; | 23 static const char *edttext; |
25 static gftp_file * curfle; | 24 static gftp_file * curfle; |
26 | |
27 | |
28 static RETSIGTYPE | |
29 sig_renquit (int signo) | |
30 { | |
31 signal (signo, sig_renquit); | |
32 siglongjmp (renenvir, signo == SIGINT ? 1 : 2); | |
33 } | |
34 | 25 |
35 | 26 |
36 static void * | 27 static void * |
37 do_rename_thread (void * data) | 28 do_rename_thread (void * data) |
38 { | 29 { |
42 wdata = data; | 33 wdata = data; |
43 wdata->request->user_data = (void *) 0x01; | 34 wdata->request->user_data = (void *) 0x01; |
44 | 35 |
45 if (wdata->request->use_threads) | 36 if (wdata->request->use_threads) |
46 { | 37 { |
47 sj = sigsetjmp (renenvir, 1); | 38 sj = sigsetjmp (jmp_environment, 1); |
48 signal (SIGINT, sig_renquit); | 39 use_jmp_environment = 1; |
49 signal (SIGALRM, sig_renquit); | |
50 } | 40 } |
51 else | 41 else |
52 sj = 0; | 42 sj = 0; |
53 | 43 |
54 success = 0; | 44 success = 0; |
66 wdata->request->user_data, | 56 wdata->request->user_data, |
67 _("Operation canceled\n")); | 57 _("Operation canceled\n")); |
68 } | 58 } |
69 | 59 |
70 if (wdata->request->use_threads) | 60 if (wdata->request->use_threads) |
71 { | 61 use_jmp_environment = 0; |
72 signal (SIGINT, SIG_DFL); | |
73 signal (SIGALRM, SIG_IGN); | |
74 } | |
75 | 62 |
76 wdata->request->user_data = NULL; | 63 wdata->request->user_data = NULL; |
77 wdata->request->stopable = 0; | 64 wdata->request->stopable = 0; |
78 return ((void *) success); | 65 return ((void *) success); |
79 } | 66 } |