callbacks: Add support for MSVC
__typeof__ is GCC specific Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Этот коммит содержится в:
родитель
422271bd40
Коммит
5437deed1b
@ -487,14 +487,12 @@ typedef struct ssh_socket_callbacks_struct *ssh_socket_callbacks;
|
|||||||
do { \
|
do { \
|
||||||
struct ssh_iterator *_cb_i = ssh_list_get_iterator(_cb_list); \
|
struct ssh_iterator *_cb_i = ssh_list_get_iterator(_cb_list); \
|
||||||
_cb_type _cb; \
|
_cb_type _cb; \
|
||||||
__typeof__(_cb->_cb_name) _cb_p; \
|
|
||||||
for (; _cb_i != NULL; _cb_i = _cb_i->next) { \
|
for (; _cb_i != NULL; _cb_i = _cb_i->next) { \
|
||||||
_cb = ssh_iterator_value(_cb_type, _cb_i); \
|
_cb = ssh_iterator_value(_cb_type, _cb_i); \
|
||||||
if (ssh_callbacks_exists(_cb, _cb_name) && \
|
if (ssh_callbacks_exists(_cb, _cb_name))
|
||||||
(_cb_p = _cb->_cb_name))
|
|
||||||
|
|
||||||
#define ssh_callbacks_iterate_exec(...) \
|
#define ssh_callbacks_iterate_exec(_cb_name, ...) \
|
||||||
_cb_p(__VA_ARGS__, _cb->userdata)
|
_cb->_cb_name(__VA_ARGS__, _cb->userdata)
|
||||||
|
|
||||||
#define ssh_callbacks_iterate_end() \
|
#define ssh_callbacks_iterate_end() \
|
||||||
} \
|
} \
|
||||||
|
@ -550,7 +550,8 @@ SSH_PACKET_CALLBACK(channel_rcv_data){
|
|||||||
if (ssh_buffer_get(buf) == 0) {
|
if (ssh_buffer_get(buf) == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
rest = ssh_callbacks_iterate_exec(channel->session,
|
rest = ssh_callbacks_iterate_exec(channel_data_function,
|
||||||
|
channel->session,
|
||||||
channel,
|
channel,
|
||||||
ssh_buffer_get(buf),
|
ssh_buffer_get(buf),
|
||||||
ssh_buffer_get_len(buf),
|
ssh_buffer_get_len(buf),
|
||||||
|
@ -170,7 +170,8 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_pty_request_function) {
|
channel_pty_request_function) {
|
||||||
rc = ssh_callbacks_iterate_exec(session,
|
rc = ssh_callbacks_iterate_exec(channel_pty_request_function,
|
||||||
|
session,
|
||||||
channel,
|
channel,
|
||||||
msg->channel_request.TERM,
|
msg->channel_request.TERM,
|
||||||
msg->channel_request.width,
|
msg->channel_request.width,
|
||||||
@ -189,7 +190,9 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_shell_request_function) {
|
channel_shell_request_function) {
|
||||||
rc = ssh_callbacks_iterate_exec(session, channel);
|
rc = ssh_callbacks_iterate_exec(channel_shell_request_function,
|
||||||
|
session,
|
||||||
|
channel);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
ssh_message_channel_request_reply_success(msg);
|
ssh_message_channel_request_reply_success(msg);
|
||||||
} else {
|
} else {
|
||||||
@ -202,7 +205,8 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_x11_req_function) {
|
channel_x11_req_function) {
|
||||||
ssh_callbacks_iterate_exec(session,
|
ssh_callbacks_iterate_exec(channel_x11_req_function,
|
||||||
|
session,
|
||||||
channel,
|
channel,
|
||||||
msg->channel_request.x11_single_connection,
|
msg->channel_request.x11_single_connection,
|
||||||
msg->channel_request.x11_auth_protocol,
|
msg->channel_request.x11_auth_protocol,
|
||||||
@ -216,7 +220,8 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_pty_window_change_function) {
|
channel_pty_window_change_function) {
|
||||||
rc = ssh_callbacks_iterate_exec(session,
|
rc = ssh_callbacks_iterate_exec(channel_pty_window_change_function,
|
||||||
|
session,
|
||||||
channel,
|
channel,
|
||||||
msg->channel_request.width,
|
msg->channel_request.width,
|
||||||
msg->channel_request.height,
|
msg->channel_request.height,
|
||||||
@ -229,7 +234,8 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_exec_request_function) {
|
channel_exec_request_function) {
|
||||||
rc = ssh_callbacks_iterate_exec(session,
|
rc = ssh_callbacks_iterate_exec(channel_exec_request_function,
|
||||||
|
session,
|
||||||
channel,
|
channel,
|
||||||
msg->channel_request.command);
|
msg->channel_request.command);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
@ -245,7 +251,8 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_env_request_function) {
|
channel_env_request_function) {
|
||||||
rc = ssh_callbacks_iterate_exec(session,
|
rc = ssh_callbacks_iterate_exec(channel_env_request_function,
|
||||||
|
session,
|
||||||
channel,
|
channel,
|
||||||
msg->channel_request.var_name,
|
msg->channel_request.var_name,
|
||||||
msg->channel_request.var_value);
|
msg->channel_request.var_value);
|
||||||
@ -261,7 +268,8 @@ static int ssh_execute_server_request(ssh_session session, ssh_message msg)
|
|||||||
ssh_callbacks_iterate(channel->callbacks,
|
ssh_callbacks_iterate(channel->callbacks,
|
||||||
ssh_channel_callbacks,
|
ssh_channel_callbacks,
|
||||||
channel_subsystem_request_function) {
|
channel_subsystem_request_function) {
|
||||||
rc = ssh_callbacks_iterate_exec(session,
|
rc = ssh_callbacks_iterate_exec(channel_subsystem_request_function,
|
||||||
|
session,
|
||||||
channel,
|
channel,
|
||||||
msg->channel_request.subsystem);
|
msg->channel_request.subsystem);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
|
@ -218,7 +218,7 @@ static void torture_callbacks_iterate(void **state){
|
|||||||
ssh_list_append(list, &c2);
|
ssh_list_append(list, &c2);
|
||||||
|
|
||||||
ssh_callbacks_iterate(list, ssh_channel_callbacks, channel_eof_function){
|
ssh_callbacks_iterate(list, ssh_channel_callbacks, channel_eof_function){
|
||||||
ssh_callbacks_iterate_exec(NULL, NULL);
|
ssh_callbacks_iterate_exec(channel_eof_function, NULL, NULL);
|
||||||
}
|
}
|
||||||
ssh_callbacks_iterate_end();
|
ssh_callbacks_iterate_end();
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ static void torture_callbacks_iterate(void **state){
|
|||||||
|
|
||||||
v = 0;
|
v = 0;
|
||||||
ssh_callbacks_iterate(list, ssh_channel_callbacks, channel_shell_request_function){
|
ssh_callbacks_iterate(list, ssh_channel_callbacks, channel_shell_request_function){
|
||||||
w = ssh_callbacks_iterate_exec(NULL, NULL);
|
w = ssh_callbacks_iterate_exec(channel_shell_request_function, NULL, NULL);
|
||||||
if (w) {
|
if (w) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user