Browse Source

reading execution result into buffer

master
Alexander Avery 3 years ago
parent
commit
64ed240ddf
  1. 13
      popcorn.c

13
popcorn.c

@ -1,8 +1,8 @@
#include <libssh/libssh.h> #include <libssh/libssh.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#include <string.h> #include <string.h>
#include <unistd.h>
int verify_host(ssh_session session) { int verify_host(ssh_session session) {
enum ssh_known_hosts_e state; enum ssh_known_hosts_e state;
@ -39,7 +39,8 @@ int get_movies(ssh_session session, char** buffer, size_t size) {
return rc; return rc;
} }
rc = ssh_channel_request_exec(channel, "find /var/www/public/media -type f -name \"*mp4\""); rc = ssh_channel_request_exec(
channel, "find /var/www/public/media -type f -name \"*mp4\"");
if (rc != SSH_OK) { if (rc != SSH_OK) {
fprintf(stderr, "Failed to request exec"); fprintf(stderr, "Failed to request exec");
ssh_channel_close(channel); ssh_channel_close(channel);
@ -49,11 +50,9 @@ int get_movies(ssh_session session, char** buffer, size_t size) {
nbytes = ssh_channel_read(channel, read_buffer, sizeof(read_buffer), 0); nbytes = ssh_channel_read(channel, read_buffer, sizeof(read_buffer), 0);
while (nbytes > 0) { while (nbytes > 0) {
fprintf(stderr, "size: %li\tlen: %li\tnbytes: %d\n", size, len, nbytes);
if ((len += nbytes) > size) { if ((len += nbytes) > size) {
fprintf(stderr, "new len: %li\n", len);
char* temp = realloc(*buffer, len);
size = len; size = len;
temp = realloc(*buffer, len);
if (!temp) { if (!temp) {
fprintf(stderr, "Failed to reallocate char buffer"); fprintf(stderr, "Failed to reallocate char buffer");
ssh_channel_close(channel); ssh_channel_close(channel);
@ -63,7 +62,7 @@ int get_movies(ssh_session session, char** buffer, size_t size) {
*buffer = temp; *buffer = temp;
} }
*buffer = strcat(*buffer, read_buffer); memcpy(*buffer + len - nbytes, read_buffer, nbytes);
nbytes = ssh_channel_read(channel, read_buffer, sizeof(read_buffer), 0); nbytes = ssh_channel_read(channel, read_buffer, sizeof(read_buffer), 0);
@ -134,8 +133,6 @@ int main(int argc, char *argv[]) {
exit(-1); exit(-1);
} }
fprintf(stdout, "%s", b);
ssh_disconnect(session); ssh_disconnect(session);
ssh_free(session); ssh_free(session);
} }

Loading…
Cancel
Save