diff --git a/src/core/actions/actions.c b/src/core/actions/actions.c index 3275dfa..bb59242 100644 --- a/src/core/actions/actions.c +++ b/src/core/actions/actions.c @@ -87,22 +87,19 @@ LIB3270_EXPORT int lib3270_action_activate(const LIB3270_ACTION *action, H3270 * } -LIB3270_EXPORT int lib3270_action_activate_by_name(const char *name, H3270 *hSession) +LIB3270_EXPORT int lib3270_activate_by_name(H3270 *hSession, const char *name) { const LIB3270_ACTION *action = lib3270_action_get_by_name(name); - if(!action) - { - lib3270_write_event_trace(hSession,"Can't find action \"%s\"\n",name); - return errno; - } + if(action) + return lib3270_action_activate(action, hSession); - return lib3270_action_activate(action, hSession); + return hSession->cbk.action(hSession,name); } LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name) { - return lib3270_action_activate_by_name(name,hSession); + return lib3270_activate_by_name(name,hSession); } LIB3270_EXPORT void lib3270_action_group_notify(H3270 *hSession, LIB3270_ACTION_GROUP group) diff --git a/src/core/session.c b/src/core/session.c index d90a5a7..3e38588 100644 --- a/src/core/session.c +++ b/src/core/session.c @@ -257,6 +257,9 @@ static void default_update_url(H3270 GNUC_UNUSED(*session), const char GNUC_UNUS { } +static int default_action(H3270 GNUC_UNUSED(*hSession), const char GNUC_UNUSED(*name)) { + return ENOENT; +} void lib3270_reset_callbacks(H3270 *hSession) { @@ -286,6 +289,7 @@ void lib3270_reset_callbacks(H3270 *hSession) hSession->cbk.load = load; hSession->cbk.update_luname = default_update_luname; hSession->cbk.update_url = default_update_url; + hSession->cbk.action = default_action; lib3270_set_popup_handler(hSession, NULL); diff --git a/src/include/internals.h b/src/include/internals.h index 3983343..61266e6 100644 --- a/src/include/internals.h +++ b/src/include/internals.h @@ -478,18 +478,6 @@ struct _h3270 int backslashed; char plu_name[LIB3270_BIND_PLU_NAME_MAX+1]; - /* - /// @brief Proxy - struct - { - char * proxy; ///< Proxy server (type:host[:port]) - int type; - char * host; - char * portname; - unsigned short port; - } proxy; - */ - /// @brief LU struct { diff --git a/src/include/lib3270/actions.h b/src/include/lib3270/actions.h index f199f9b..35a32ab 100644 --- a/src/include/lib3270/actions.h +++ b/src/include/lib3270/actions.h @@ -118,11 +118,12 @@ * * @return The action return code. * + * @retval ENOENT Can't find action with the supplied name. * @retval EPERM Action is disabled. * @retval ENOTSUP Action name is invalid. * */ - LIB3270_EXPORT int lib3270_action_activate_by_name(const char *name, H3270 *hSession); + LIB3270_EXPORT int lib3270_activate_by_name(H3270 *hSession, const char *name); /** * @brief activate an action. diff --git a/src/include/lib3270/session.h b/src/include/lib3270/session.h index b088f72..9013c97 100644 --- a/src/include/lib3270/session.h +++ b/src/include/lib3270/session.h @@ -77,6 +77,8 @@ int (*popup)(H3270 *hSession, const LIB3270_POPUP *popup, unsigned char wait); + int (*action)(H3270 *hSession, const char *name); + }; /** -- libgit2 0.21.2