qrexec-utils: add read_vchan_all and write_vchan_all
Similar to read_all and write_all.
This commit is contained in:
parent
591fb10a32
commit
020f341f98
@ -42,6 +42,8 @@ void *buffer_data(struct buffer *b);
|
|||||||
void do_fork_exec(const char *cmdline, int *pid, int *stdin_fd, int *stdout_fd,
|
void do_fork_exec(const char *cmdline, int *pid, int *stdin_fd, int *stdout_fd,
|
||||||
int *stderr_fd);
|
int *stderr_fd);
|
||||||
void wait_for_vchan_or_argfd(libvchan_t *vchan, int max, fd_set * rdset, fd_set * wrset);
|
void wait_for_vchan_or_argfd(libvchan_t *vchan, int max, fd_set * rdset, fd_set * wrset);
|
||||||
|
int read_vchan_all(libvchan_t *vchan, void *data, size_t size);
|
||||||
|
int write_vchan_all(libvchan_t *vchan, void *data, size_t size);
|
||||||
int read_all(int fd, void *buf, int size);
|
int read_all(int fd, void *buf, int size);
|
||||||
int write_all(int fd, const void *buf, int size);
|
int write_all(int fd, const void *buf, int size);
|
||||||
void fix_fds(int fdin, int fdout, int fderr);
|
void fix_fds(int fdin, int fdout, int fderr);
|
||||||
|
@ -74,3 +74,29 @@ void wait_for_vchan_or_argfd(libvchan_t *ctrl, int max, fd_set * rdset, fd_set *
|
|||||||
}
|
}
|
||||||
while (wait_for_vchan_or_argfd_once(ctrl, max, rdset, wrset) == 0);
|
while (wait_for_vchan_or_argfd_once(ctrl, max, rdset, wrset) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int write_vchan_all(libvchan_t *vchan, void *data, size_t size) {
|
||||||
|
int pos, ret;
|
||||||
|
|
||||||
|
pos = 0;
|
||||||
|
while (pos < size) {
|
||||||
|
ret = libvchan_write(vchan, data+pos, size-pos);
|
||||||
|
if (ret < 0)
|
||||||
|
return 0;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int read_vchan_all(libvchan_t *vchan, void *data, size_t size) {
|
||||||
|
int pos, ret;
|
||||||
|
|
||||||
|
pos = 0;
|
||||||
|
while (pos < size) {
|
||||||
|
ret = libvchan_read(vchan, data+pos, size-pos);
|
||||||
|
if (ret < 0)
|
||||||
|
return 0;
|
||||||
|
pos += ret;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user