diff --git a/ddcd.cpp b/ddcd.cpp index d8e1f41..4d27ce4 100644 --- a/ddcd.cpp +++ b/ddcd.cpp @@ -386,6 +386,46 @@ void client_cleanup() close(this_client->pipefd[0]); } +#define CTL_BUFSIZE 1024 + +int read_socket_ctl(int fd, char* output, int max_size) +{ + //fprintf(stderr, "doing read_socket_ctl %d\n", fd); + //if(!fd) return 0; + static char buffer[CTL_BUFSIZE]; + static int buffer_index=0; + if(buffer_index==CTL_BUFSIZE) buffer_index=0; + int bytes_read=recv(fd,buffer+buffer_index,(CTL_BUFSIZE-buffer_index)*sizeof(char), MSG_DONTWAIT); + if(bytes_read<=0) return 0; + fprintf(stderr, "recv %d\n", bytes_read); + + int prev_newline_at=0; + int last_newline_at=0; + for(int i=0;isocket, recv_cmd, CTL_BUFSIZE)) + fprintf(stderr, "read_socket_ctl: %s\n", recv_cmd); read(input_fd,buf,bufsizeall); if(send(this_client->socket,buf,bufsizeall,0)==-1) {