Commit 95491ab45dcea154fc0b471feb3f25ba55e49fb4

Authored by Perry Werneck
1 parent 8cb489d2

Updating popup handler replacement (required for IPC modules).

src/core/popup.c
@@ -142,3 +142,31 @@ LIB3270_POPUP * lib3270_popup_clone_printf(const LIB3270_POPUP *origin, const ch @@ -142,3 +142,31 @@ LIB3270_POPUP * lib3270_popup_clone_printf(const LIB3270_POPUP *origin, const ch
142 return popup; 142 return popup;
143 } 143 }
144 144
  145 +static int def_popup(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char GNUC_UNUSED wait)
  146 +{
  147 + const char * text[] = {
  148 + popup->title,
  149 + popup->summary,
  150 + popup->body
  151 + };
  152 +
  153 + size_t ix;
  154 +
  155 + for(ix = 0; ix < (sizeof(text)/sizeof(text[0])); ix++)
  156 + {
  157 + lib3270_write_log(hSession,"popup","%s",text[ix]);
  158 + }
  159 +
  160 + return ENOTSUP;
  161 +}
  162 +
  163 +
  164 +LIB3270_EXPORT void lib3270_set_popup_handler(H3270 *hSession, int (*handler)(H3270 *, const LIB3270_POPUP *, unsigned char wait)) {
  165 +
  166 + if(handler)
  167 + hSession->cbk.popup = handler;
  168 + else
  169 + hSession->cbk.popup = def_popup;
  170 +
  171 +
  172 +}
src/core/session.c
@@ -229,24 +229,6 @@ static void def_popup(H3270 *hSession, LIB3270_NOTIFY type, const char *title, c @@ -229,24 +229,6 @@ static void def_popup(H3270 *hSession, LIB3270_NOTIFY type, const char *title, c
229 } 229 }
230 */ 230 */
231 231
232 -static int def_popup(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char GNUC_UNUSED wait)  
233 -{  
234 - const char * text[] = {  
235 - popup->title,  
236 - popup->summary,  
237 - popup->body  
238 - };  
239 -  
240 - size_t ix;  
241 -  
242 - for(ix = 0; ix < (sizeof(text)/sizeof(text[0])); ix++)  
243 - {  
244 - lib3270_write_log(hSession,"popup","%s",text[ix]);  
245 - }  
246 -  
247 - return ENOTSUP;  
248 -}  
249 -  
250 static void def_trace(H3270 GNUC_UNUSED(*session), void GNUC_UNUSED(*userdata), const char *fmt, va_list args) 232 static void def_trace(H3270 GNUC_UNUSED(*session), void GNUC_UNUSED(*userdata), const char *fmt, va_list args)
251 { 233 {
252 vfprintf(stdout,fmt,args); 234 vfprintf(stdout,fmt,args);
@@ -324,7 +306,8 @@ void lib3270_reset_callbacks(H3270 *hSession) @@ -324,7 +306,8 @@ void lib3270_reset_callbacks(H3270 *hSession)
324 hSession->cbk.set_peer_certificate = set_peer_certificate; 306 hSession->cbk.set_peer_certificate = set_peer_certificate;
325 hSession->cbk.update_luname = default_update_luname; 307 hSession->cbk.update_luname = default_update_luname;
326 hSession->cbk.update_url = default_update_url; 308 hSession->cbk.update_url = default_update_url;
327 - hSession->cbk.popup = def_popup; 309 +
  310 + lib3270_set_popup_handler(hSession, NULL);
328 311
329 } 312 }
330 313
src/core/telnet.c
@@ -652,6 +652,8 @@ void net_input(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG GNUC_UNUSED @@ -652,6 +652,8 @@ void net_input(H3270 *hSession, int GNUC_UNUSED(fd), LIB3270_IO_FLAG GNUC_UNUSED
652 .popup = &popup 652 .popup = &popup
653 }; 653 };
654 654
  655 + popup_ssl_error(hSession,0,&message);
  656 +
655 /* 657 /*
656 unsigned long e; 658 unsigned long e;
657 char err_buf[120]; 659 char err_buf[120];
src/include/lib3270/popup.h
@@ -71,7 +71,13 @@ @@ -71,7 +71,13 @@
71 } LIB3270_POPUP; 71 } LIB3270_POPUP;
72 72
73 /** 73 /**
74 - * Pop up an error dialog, based on an error number. 74 + * @brief Replace popup handler.
  75 + *
  76 + */
  77 + LIB3270_EXPORT void lib3270_set_popup_handler(H3270 *hSession, int (*handler)(H3270 *, const LIB3270_POPUP *, unsigned char wait));
  78 +
  79 + /**
  80 + * @brief Pop up an error dialog, based on an error number.
75 * 81 *
76 * @param hSession Session handle 82 * @param hSession Session handle
77 * @param errn Error number (errno). 83 * @param errn Error number (errno).
@@ -109,6 +115,7 @@ @@ -109,6 +115,7 @@
109 * 115 *
110 * @retval 0 User has confirmed, continue action. 116 * @retval 0 User has confirmed, continue action.
111 * @retval ECANCELED Operation was canceled. 117 * @retval ECANCELED Operation was canceled.
  118 + * @retval ENOTSUP No popup handler available.
112 */ 119 */
113 LIB3270_EXPORT int lib3270_popup(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char wait); 120 LIB3270_EXPORT int lib3270_popup(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char wait);
114 121