Commit 037c5e5cbee06519d47dc62a19cc5cdc2f94adb0

Authored by Perry Werneck
1 parent 01ba74fa
Exists in master and in 2 other branches develop, macos

Allowing extended actions.

src/core/actions/actions.c
... ... @@ -87,22 +87,19 @@ LIB3270_EXPORT int lib3270_action_activate(const LIB3270_ACTION *action, H3270 *
87 87  
88 88 }
89 89  
90   -LIB3270_EXPORT int lib3270_action_activate_by_name(const char *name, H3270 *hSession)
  90 +LIB3270_EXPORT int lib3270_activate_by_name(H3270 *hSession, const char *name)
91 91 {
92 92 const LIB3270_ACTION *action = lib3270_action_get_by_name(name);
93 93  
94   - if(!action)
95   - {
96   - lib3270_write_event_trace(hSession,"Can't find action \"%s\"\n",name);
97   - return errno;
98   - }
  94 + if(action)
  95 + return lib3270_action_activate(action, hSession);
99 96  
100   - return lib3270_action_activate(action, hSession);
  97 + return hSession->cbk.action(hSession,name);
101 98 }
102 99  
103 100 LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name)
104 101 {
105   - return lib3270_action_activate_by_name(name,hSession);
  102 + return lib3270_activate_by_name(name,hSession);
106 103 }
107 104  
108 105 LIB3270_EXPORT void lib3270_action_group_notify(H3270 *hSession, LIB3270_ACTION_GROUP group)
... ...
src/core/session.c
... ... @@ -257,6 +257,9 @@ static void default_update_url(H3270 GNUC_UNUSED(*session), const char GNUC_UNUS
257 257 {
258 258 }
259 259  
  260 +static int default_action(H3270 GNUC_UNUSED(*hSession), const char GNUC_UNUSED(*name)) {
  261 + return ENOENT;
  262 +}
260 263  
261 264 void lib3270_reset_callbacks(H3270 *hSession)
262 265 {
... ... @@ -286,6 +289,7 @@ void lib3270_reset_callbacks(H3270 *hSession)
286 289 hSession->cbk.load = load;
287 290 hSession->cbk.update_luname = default_update_luname;
288 291 hSession->cbk.update_url = default_update_url;
  292 + hSession->cbk.action = default_action;
289 293  
290 294 lib3270_set_popup_handler(hSession, NULL);
291 295  
... ...
src/include/internals.h
... ... @@ -478,18 +478,6 @@ struct _h3270
478 478 int backslashed;
479 479 char plu_name[LIB3270_BIND_PLU_NAME_MAX+1];
480 480  
481   - /*
482   - /// @brief Proxy
483   - struct
484   - {
485   - char * proxy; ///< Proxy server (type:host[:port])
486   - int type;
487   - char * host;
488   - char * portname;
489   - unsigned short port;
490   - } proxy;
491   - */
492   -
493 481 /// @brief LU
494 482 struct
495 483 {
... ...
src/include/lib3270/actions.h
... ... @@ -118,11 +118,12 @@
118 118 *
119 119 * @return The action return code.
120 120 *
  121 + * @retval ENOENT Can't find action with the supplied name.
121 122 * @retval EPERM Action is disabled.
122 123 * @retval ENOTSUP Action name is invalid.
123 124 *
124 125 */
125   - LIB3270_EXPORT int lib3270_action_activate_by_name(const char *name, H3270 *hSession);
  126 + LIB3270_EXPORT int lib3270_activate_by_name(H3270 *hSession, const char *name);
126 127  
127 128 /**
128 129 * @brief activate an action.
... ...
src/include/lib3270/session.h
... ... @@ -77,6 +77,8 @@
77 77  
78 78 int (*popup)(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char wait);
79 79  
  80 + int (*action)(H3270 *hSession, const char *name);
  81 +
80 82 };
81 83  
82 84 /**
... ...