//================================================================ void free_track_scene(int i) { if(!is_track_scene(i)) return; free_all_tracks(i); delete trackscenevec[i]; trackscenevec[i] = NULL; }
/* (1 s pause) +++ (1 s pause) ATH0 <LF> * ans Modem schicken und zweimal auf OK warten */ static int hayes_hangup(int lmodem) { /* returns: * 0: ok * 1: Fehler bei +++ * 2: Fehler bei ATH0 */ int t_nocarr; int t_ok; int t_error; int ok; free_all_tracks(); t_nocarr = init_track("NO CARRIER"); t_ok = init_track("OK"); t_error = init_track("ERROR"); alarm(10); sleep(1); write( lmodem, "+++", 3 ); sleep(1); ok = do_hayes("", lmodem); if(ok != t_ok) { return 1; } ok = do_hayes("ATH0", lmodem); if(ok != t_ok) { return 2; } return 0; }
static int login(int lmodem, int verfahren, const char *myname, const char *passwd) { int t_ogin, t_ame, t_wort, t_word, t_begin, found, t_esc, t_sysname, t_arc, t_verweigert, err; char z, pw[40]; if (verfahren == ZCONNECT) strcpy(pw, "0zconnec\r"); else sprintf(pw, "%s\r", passwd); free_all_tracks(); t_esc = init_track(EMSI_REQ); t_ogin = init_track("OGIN:"); if (verfahren == ZCONNECT) t_ame = init_track("AME"); else t_ame = init_track("USERNAME:"******"WORT"); t_word = init_track("WORD"); t_sysname = -1; t_begin = -1; t_arc = -1; t_verweigert = -1; alarm(2*60); while (1) { do { } while (read(lmodem, &z, 1) != 1); found = track_char(toupper(z)); if (!isascii(z) || !iscntrl(z)) { putc(z, stderr); fflush(stderr); } else if (z == '\r') putc('\n', stderr); if (found == -1) continue; if (found == t_esc) { write(lmodem, EMSI_CLI, sizeof(EMSI_CLI)); flush_modem(lmodem); } else if (found == t_ogin || found == t_ame) { #ifdef SLOW_MODEM sleep(2); /* fflush auf der Gegenseite? */ #endif write(lmodem, logstr[verfahren], strlen(logstr[verfahren])); flush_modem(lmodem); if (verfahren < ZCONNECT && t_sysname == -1) t_sysname = init_track("SYSTEMNAME:"); } else if (found == t_word || found == t_wort) { write(lmodem, pw, strlen(pw)); flush_modem(lmodem); if (verfahren == ZCONNECT && t_begin == -1) { t_begin = init_track("BEGIN"); }else { t_arc = init_track("ARC"); t_verweigert = init_track("VERWEIGER"); } } else if (found == t_sysname) { write(lmodem, myname, strlen(myname)); write(lmodem, "\r", 1); flush_modem(lmodem); } else if (found == t_begin) { err = 0; break; } else if (found == t_arc) { err = 0; break; } else if (found == t_verweigert) { err = 1; break; } } free_all_tracks(); alarm(0); return err; }