+ struct timeval tv;
+ fd_set readfds;
+
+ tv.tv_sec = (int)(timeout);
+ tv.tv_usec = (timeout - (double)((int)timeout)) * 1000000;
+
+ int fd = fileno(input);
+
+ FD_ZERO(&readfds);
+ FD_SET(fd, &readfds);
+
+ select(fd+1, &readfds, NULL, NULL, &tv);
+
+ if (!FD_ISSET(fd, &readfds))
+ return false; //Timed out
+ //fprintf(stderr, "Got message!\n");
+ for (char c = fgetc(input); c != '\n' && (int)(c) != EOF; c = fgetc(input))
+ {
+ //fprintf(stderr, "%c", c);
+ buffer += c;
+ }
+ //fprintf(stderr, "%s\n", buffer.c_str());
+ //fprintf(stderr,"DONE\n");
+ return true;
+
+ /* Old way, using threads, which apparently is terrible