X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.c;h=611508d44f85a08405a393aee070b284f64bb6db;hb=4577dd26b3ecbf7ccc5ff55efa991334136866e1;hp=721cd9aa0b1167d897ef931ed16c52c704b3259f;hpb=2f4fb7c15c5017546238241ea318b16b9a032c52;p=oftp diff --git a/src/main.c b/src/main.c index 721cd9a..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; @@ -20,6 +29,8 @@ int main(void) init_input(); + tg_init(); + tg_bgchar(' '); tg_clear(); @@ -29,38 +40,82 @@ int main(void) tui_add_list_item(uilist, "another item"); tui_add_list_item(uilist, "foo"); - /* - tg_bgcolor(1); - tg_rect("Remote", 0, 0, 40, 23, TGFX_FRAME); - tg_rect("Local", 40, 0, 40, 23, TGFX_FRAME); - - tg_bgcolor(0); - tg_fgcolor(7); - tg_text(0, 23, ">"); - tg_setcursor(2, 23); - */ + 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