diff --git a/src/syncterm/menu.c b/src/syncterm/menu.c index 7f403c8331576ebd52805d812b7ac7efa80c2d96..549c413dc8f2fb756ebddd574daed9c698c42e27 100644 --- a/src/syncterm/menu.c +++ b/src/syncterm/menu.c @@ -221,16 +221,7 @@ syncmenu(struct bbslist *bbs, int *speed) break; case 2: /* Login */ ret = 1; - conn_send(bbs->user, strlen(bbs->user), 0); - conn_send("\r", 1, 0); - SLEEP(10); - conn_send(bbs->password, strlen(bbs->password), 0); - conn_send("\r", 1, 0); - if (bbs->syspass[0]) { - SLEEP(10); - conn_send(bbs->syspass, strlen(bbs->syspass), 0); - conn_send("\r", 1, 0); - } + send_login(bbs); break; case 5: /* Output rate */ if ((bbs->conn_type == CONN_TYPE_MODEM) || (bbs->conn_type == CONN_TYPE_SERIAL) diff --git a/src/syncterm/term.c b/src/syncterm/term.c index a725f4825f70abccd882fffb04f74ec4a77e3e90..13206d6f4bb28de4c6d19f66dcbbf1f57edf7120 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -3649,6 +3649,38 @@ do_paste(void) } } +void +send_login(struct bbslist *bbs) { + if ((bbs->conn_type != CONN_TYPE_RLOGIN) + && (bbs->conn_type != CONN_TYPE_RLOGIN_REVERSED) + && (bbs->conn_type != CONN_TYPE_SSH)) { + if (bbs->conn_type != CONN_TYPE_SSHNA) { + if (bbs->user[0]) { + conn_send(bbs->user, strlen(bbs->user), 0); + conn_send( + cterm->emulation == CTERM_EMULATION_ATASCII ? "\x9b" : "\r", + 1, + 0); + SLEEP(10); + } + } + if (bbs->password[0]) { + conn_send(bbs->password, strlen(bbs->password), 0); + conn_send( + cterm->emulation == CTERM_EMULATION_ATASCII ? "\x9b" : "\r", + 1, + 0); + SLEEP(10); + } + } + if (bbs->syspass[0]) { + conn_send(bbs->syspass, strlen(bbs->syspass), 0); + conn_send(cterm->emulation == CTERM_EMULATION_ATASCII ? "\x9b" : "\r", + 1, + 0); + } +} + bool doterm(struct bbslist *bbs) { @@ -4069,34 +4101,7 @@ doterm(struct bbslist *bbs) key = 0; break; case 0x2600: /* ALT-L */ - if ((bbs->conn_type != CONN_TYPE_RLOGIN) - && (bbs->conn_type != CONN_TYPE_RLOGIN_REVERSED) - && (bbs->conn_type != CONN_TYPE_SSH)) { - if (bbs->conn_type != CONN_TYPE_SSHNA) { - if (bbs->user[0]) { - conn_send(bbs->user, strlen(bbs->user), 0); - conn_send( - cterm->emulation == CTERM_EMULATION_ATASCII ? "\x9b" : "\r", - 1, - 0); - SLEEP(10); - } - } - if (bbs->password[0]) { - conn_send(bbs->password, strlen(bbs->password), 0); - conn_send( - cterm->emulation == CTERM_EMULATION_ATASCII ? "\x9b" : "\r", - 1, - 0); - SLEEP(10); - } - } - if (bbs->syspass[0]) { - conn_send(bbs->syspass, strlen(bbs->syspass), 0); - conn_send(cterm->emulation == CTERM_EMULATION_ATASCII ? "\x9b" : "\r", - 1, - 0); - } + send_login(bbs); key = 0; break; case 0x3200: /* ALT-M */ diff --git a/src/syncterm/term.h b/src/syncterm/term.h index f9728a1891c1ed75689126c862156859059c3752..3074867cc84779000eb01d203ee98711ef5cdd04 100644 --- a/src/syncterm/term.h +++ b/src/syncterm/term.h @@ -32,5 +32,6 @@ void mousedrag(struct vmem_cell *scrollback); void get_cterm_size(int *cols, int *rows, int ns); int get_cache_fn_base(struct bbslist *bbs, char *fn, size_t fnsz); int get_cache_fn_subdir(struct bbslist *bbs, char *fn, size_t fnsz, const char *subdir); +void send_login(struct bbslist *bbs); #endif // ifndef _TERM_H_