X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.c;h=611508d44f85a08405a393aee070b284f64bb6db;hb=4577dd26b3ecbf7ccc5ff55efa991334136866e1;hp=d6ec65bc64fb4f542cfcd51724ed07408204c074;hpb=2ba6401e39bcfaaccaa45e6b7ef780a7a15b0c48;p=oftp diff --git a/src/main.c b/src/main.c index d6ec65b..611508d 100644 --- a/src/main.c +++ b/src/main.c @@ -1,14 +1,23 @@ +#include +#include +#include #include "tgfx.h" #include "input.h" #include "tui.h" #include "ftp.h" +int proc_input(void); +int keypress(int key); + struct ftp *ftp; struct tui_widget *uilist; int main(void) { - union event ev; + int i, numsock, maxfd; + int ftpsock[16]; + fd_set rdset; + struct timeval tv; if(!(ftp = ftp_alloc())) { return 1; @@ -31,26 +40,82 @@ int main(void) tui_add_list_item(uilist, "another item"); tui_add_list_item(uilist, "foo"); - tg_setcursor(0, 24); + tg_setcursor(0, 23); tui_draw(uilist); - while(wait_input(&ev)) { + for(;;) { + FD_ZERO(&rdset); + maxfd = 0; + + numsock = ftp_sockets(ftp, ftpsock, sizeof ftpsock); + for(i=0; i maxfd) maxfd = ftpsock[i]; + } + +#ifdef __unix__ + FD_SET(0, &rdset); + tv.tv_sec = 120; + tv.tv_usec = 0; +#else + tv.tv_sec = tv.tv_usec = 0; +#endif + + if(select(maxfd + 1, &rdset, 0, 0, &tv) == -1 && errno == EINTR) { + continue; + } + +#ifdef __unix__ + if(FD_ISSET(0, &rdset)) { + if(proc_input() == -1) { + break; + } + } +#endif + + for(i=0; i