X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmain.c;h=358fde0f29f411a418b558fe95a85ac20edd758d;hb=ddf0e24c7f600826b88571391a8a294499a14865;hp=fa7dbb1cf15037a2315e380ebbce44ab708a0016;hpb=85b4b3f42fd47fbc9baff6f0aa988037f1b73bc1;p=oftp diff --git a/src/main.c b/src/main.c index fa7dbb1..358fde0 100644 --- a/src/main.c +++ b/src/main.c @@ -99,47 +99,34 @@ int main(int argc, char **argv) return 0; } -static int cmpnames(const void *a, const void *b) -{ - const char *sa = *(const char**)a; - const char *sb = *(const char**)b; - int isdir_a, isdir_b; - - isdir_a = sa[strlen(sa) - 1] == '/'; - isdir_b = sb[strlen(sb) - 1] == '/'; - - if(isdir_a == isdir_b) { - return strcmp(sa, sb); - } - return isdir_a ? -1 : 1; -} - void updateui(void) { + int i, num; struct ftp_dirent *ent; unsigned int upd = 0; char buf[128]; + const char *remdir; - if(ftp->curdir_rem && strcmp(tui_get_title(uilist), ftp->curdir_rem) != 0) { - tui_set_title(uilist, ftp->curdir_rem); + remdir = ftp_curdir(ftp, FTP_REMOTE); + if(remdir && strcmp(tui_get_title(uilist), remdir) != 0) { + tui_set_title(uilist, remdir); upd |= 1; } if(ftp->modified & FTP_MOD_REMDIR) { tui_clear_list(uilist); - ent = ftp->dent_rem; - while(ent) { + num = ftp_num_dirent(ftp, FTP_REMOTE); + for(i=0; itype == FTP_DIR) { sprintf(buf, "%s/", ent->name); tui_add_list_item(uilist, buf); } else { tui_add_list_item(uilist, ent->name); } - ent = ent->next; } - tui_sort_list(uilist, cmpnames); tui_list_select(uilist, 0); ftp->modified &= ~FTP_MOD_REMDIR; @@ -172,6 +159,9 @@ int proc_input(void) int keypress(int key) { + int sel; + const char *name; + switch(key) { case 27: case 'q': @@ -190,6 +180,17 @@ int keypress(int key) tui_list_sel_end(uilist); break; + case '\n': + sel = tui_get_list_sel(uilist); + name = ftp_dirent(ftp, FTP_REMOTE, sel)->name; + ftp_queue(ftp, FTP_CHDIR, name); + break; + + case '\b': + infomsg("CDUP\n"); + ftp_queue(ftp, FTP_CDUP, 0); + break; + default: break; }