Fix poll sturct, ISO C doesn't allow unnamed unions.
Этот коммит содержится в:
родитель
cfe5f83cf8
Коммит
324be0eabd
@ -41,7 +41,7 @@ struct ssh_poll {
|
|||||||
union {
|
union {
|
||||||
socket_t fd;
|
socket_t fd;
|
||||||
size_t idx;
|
size_t idx;
|
||||||
};
|
} x;
|
||||||
short events;
|
short events;
|
||||||
ssh_poll_callback cb;
|
ssh_poll_callback cb;
|
||||||
void *cb_data;
|
void *cb_data;
|
||||||
@ -250,7 +250,7 @@ SSH_POLL *ssh_poll_new(socket_t fd, short events, ssh_poll_callback cb,
|
|||||||
p = malloc(sizeof(SSH_POLL));
|
p = malloc(sizeof(SSH_POLL));
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
p->ctx = NULL;
|
p->ctx = NULL;
|
||||||
p->fd = fd;
|
p->x.fd = fd;
|
||||||
p->events = events;
|
p->events = events;
|
||||||
p->cb = cb;
|
p->cb = cb;
|
||||||
p->cb_data = userdata;
|
p->cb_data = userdata;
|
||||||
@ -302,7 +302,7 @@ short ssh_poll_get_events(SSH_POLL *p) {
|
|||||||
void ssh_poll_set_events(SSH_POLL *p, short events) {
|
void ssh_poll_set_events(SSH_POLL *p, short events) {
|
||||||
p->events = events;
|
p->events = events;
|
||||||
if (p->ctx != NULL) {
|
if (p->ctx != NULL) {
|
||||||
p->ctx->pollfds[p->idx].events = events;
|
p->ctx->pollfds[p->x.idx].events = events;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,10 +338,10 @@ void ssh_poll_remove_events(SSH_POLL *p, short events) {
|
|||||||
|
|
||||||
socket_t ssh_poll_get_fd(SSH_POLL *p) {
|
socket_t ssh_poll_get_fd(SSH_POLL *p) {
|
||||||
if (p->ctx != NULL) {
|
if (p->ctx != NULL) {
|
||||||
return p->ctx->pollfds[p->idx].fd;
|
return p->ctx->pollfds[p->x.idx].fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
return p->fd;
|
return p->x.fd;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief Set the callback of a poll object.
|
* @brief Set the callback of a poll object.
|
||||||
@ -460,12 +460,12 @@ int ssh_poll_ctx_add(SSH_POLL_CTX *ctx, SSH_POLL *p) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = p->fd;
|
fd = p->x.fd;
|
||||||
p->idx = ctx->polls_used++;
|
p->x.idx = ctx->polls_used++;
|
||||||
ctx->pollptrs[p->idx] = p;
|
ctx->pollptrs[p->x.idx] = p;
|
||||||
ctx->pollfds[p->idx].fd = fd;
|
ctx->pollfds[p->x.idx].fd = fd;
|
||||||
ctx->pollfds[p->idx].events = p->events;
|
ctx->pollfds[p->x.idx].events = p->events;
|
||||||
ctx->pollfds[p->idx].revents = 0;
|
ctx->pollfds[p->x.idx].revents = 0;
|
||||||
p->ctx = ctx;
|
p->ctx = ctx;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -480,8 +480,8 @@ int ssh_poll_ctx_add(SSH_POLL_CTX *ctx, SSH_POLL *p) {
|
|||||||
void ssh_poll_ctx_remove(SSH_POLL_CTX *ctx, SSH_POLL *p) {
|
void ssh_poll_ctx_remove(SSH_POLL_CTX *ctx, SSH_POLL *p) {
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
i = p->idx;
|
i = p->x.idx;
|
||||||
p->fd = ctx->pollfds[i].fd;
|
p->x.fd = ctx->pollfds[i].fd;
|
||||||
p->ctx = NULL;
|
p->ctx = NULL;
|
||||||
|
|
||||||
ctx->polls_used--;
|
ctx->polls_used--;
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user