Browse Source

attempting writing to buffer

master
Alexander Avery 3 years ago
parent
commit
e61c71b269
  1. 34
      popcorn.c

34
popcorn.c

@ -2,6 +2,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <string.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;
@ -19,11 +20,13 @@ int verify_host(ssh_session session) {
return 0; return 0;
} }
int get_movies(ssh_session session) { int get_movies(ssh_session session, char** buffer, size_t size) {
ssh_channel channel; ssh_channel channel;
int rc; int rc;
char read_buffer[256]; char read_buffer[256];
int nbytes; int nbytes;
size_t len = 0;
char* temp;
channel = ssh_channel_new(session); channel = ssh_channel_new(session);
if (channel == NULL) if (channel == NULL)
@ -36,7 +39,7 @@ int get_movies(ssh_session session) {
return rc; return rc;
} }
rc = ssh_channel_request_exec(channel, "ls -l /"); 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);
@ -46,12 +49,21 @@ int get_movies(ssh_session session) {
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) {
if (fwrite(read_buffer, 1, nbytes, stdout) != nbytes) { fprintf(stderr, "size: %li\tlen: %li\tnbytes: %d\n", size, len, nbytes);
fprintf(stderr, "Failed to write to stdout"); if ((len+=nbytes) > size) {
ssh_channel_close(channel); fprintf(stderr, "new len: %li\n", len);
ssh_channel_free(channel); char* temp = realloc(*buffer, len);
return SSH_ERROR; size = len;
} if (!temp) {
fprintf(stderr, "Failed to reallocate char buffer");
ssh_channel_close(channel);
ssh_channel_free(channel);
return -1;
}
*buffer = temp;
}
*buffer = strcat(*buffer, read_buffer);
nbytes = ssh_channel_read(channel, read_buffer, sizeof(read_buffer), 0); nbytes = ssh_channel_read(channel, read_buffer, sizeof(read_buffer), 0);
@ -114,11 +126,15 @@ int main(int argc, char *argv[]) {
exit(-1); exit(-1);
} }
if (get_movies(session) != SSH_OK) { int size = 16;
char* b = malloc(size);
memset(b, 0, size);
if (get_movies(session, &b, size) != SSH_OK) {
fprintf(stderr, "Unable to list movies: %s\n", ssh_get_error(session)); fprintf(stderr, "Unable to list movies: %s\n", ssh_get_error(session));
exit(-1); exit(-1);
} }
fprintf(stdout, "%s", b);
ssh_disconnect(session); ssh_disconnect(session);
ssh_free(session); ssh_free(session);

Loading…
Cancel
Save