/* * WarGames - a WOPR emulator written in C * Copyright (C) 2014 Franklin Wei * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Contact the author at contact@fwei.tk */ #include "strings.h" #include "telnet.h" #include "util.h" #include #include #include #include int out_fd; extern int pipes[FD_SETSIZE][2]; void allLower(char* str) { for(int i=0;str[i];++i) { str[i]=tolower(str[i]); } } void print_string(const char* str) /* print string, slowly */ { int i=0; while(str[i]) { if(str[i]=='\n') write(out_fd, "\r\n", 2); else write(out_fd, &str[i], 1); fsync(out_fd); usleep(SLEEP_TIME); ++i; } } void remove_punct(char* buf) { for(int i=0;buf[i];++i) { for(int j=0;j=0) /* remove the newline */ buf[strlen(buf)-2]='\0'; } if(ret<0) return ERR; return OK; echo_off(); } void echo_off(void) { unsigned char echo_off[]={IAC, WILL, ECHO}; write(out_fd, echo_off, 3); echo_off[1]=DONT; write(out_fd, echo_off, 3); fsync(out_fd); } void echo_on(void) { unsigned char echo_on[]={IAC, DO, ECHO}; write(out_fd, echo_on, 3); fsync(out_fd); }