diff --git a/src/SilverMUDClient.c b/src/SilverMUDClient.c index ea264fc..9972908 100644 --- a/src/SilverMUDClient.c +++ b/src/SilverMUDClient.c @@ -7,6 +7,7 @@ #include #include #include "misc/texteffects.h" +#include "misc/inputhandling.h" #define MAX 1024 #define PORT 5000 #define SA struct sockaddr @@ -20,11 +21,16 @@ void * messageSender(void * sockfd) { bzero(sendBuffer, MAX); printf("COMM-LINK> "); - fgets(sendBuffer, MAX, stdin); - if(sendBuffer[0] != '\n'); + if(fgets(sendBuffer, MAX, stdin) == NULL) { - write((long)sockfd, sendBuffer, MAX); + exit(0); } + userInputSanatize(sendBuffer, MAX); + if(sendBuffer[0] == '\n') + { + continue; + } + write((long)sockfd, sendBuffer, MAX); } } @@ -35,9 +41,9 @@ void * messageReceiver(void * sockfd) while (1) { read((long)sockfd, receiveBuffer, MAX); - slowprint("\nUSER-MESSAGE: ", 8000); - slowprint(receiveBuffer, 8000); - slowprint("\nCOMM-LINK (CONT.)> ", 8000); + slowPrint("\nUSER-MESSAGE: ", 8000); + slowPrint(receiveBuffer, 8000); + slowPrint("\nCOMM-LINK (CONT.)> ", 8000); bzero(receiveBuffer, MAX); } } @@ -57,7 +63,7 @@ int main(int argc, char **argv) } else { - slowprint("Socket successfully created.\n", 8000); + slowPrint("Socket successfully created.\n", 8000); } bzero(&servaddr, sizeof(servaddr)); @@ -76,12 +82,12 @@ int main(int argc, char **argv) // Connect the server and client sockets, Kronk: if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) != 0) { - slowprint("Connection with the Silverkin Industries Comm-Link Server Failed:\nPlease contact your service representative.\n", 8000); + slowPrint("Connection with the Silverkin Industries Comm-Link Server Failed:\nPlease contact your service representative.\n", 8000); exit(0); } else { - slowprint("Connected to the Silverkin Industries Comm-Link Server:\nHave a pleasant day.\n", 8000); + slowPrint("Connected to the Silverkin Industries Comm-Link Server:\nHave a pleasant day.\n", 8000); } // Run a thread to send messages, and use main to recieve. diff --git a/src/SilverMUDServer.c b/src/SilverMUDServer.c index df4783c..0fb1c33 100644 --- a/src/SilverMUDServer.c +++ b/src/SilverMUDServer.c @@ -27,8 +27,8 @@ int main() struct sockaddr_in serverAddress, clientAddress; // Give an intro: Display the Silverkin Industries logo and splash text. - slowprint(logostring, 3000); - slowprint("\n--==== \033[33;40mSILVERKIN INDUSTRIES\033[0m COMM-LINK SERVER ====--\nVersion Alpha 0.1\n", 5000); + slowPrint(logostring, 3000); + slowPrint("\n--==== \033[33;40mSILVERKIN INDUSTRIES\033[0m COMM-LINK SERVER ====--\nVersion Alpha 0.1\n", 5000); // Initialize the sockets to 0, so we don't crash. for (int index = 0; index < maxClients; index++) @@ -46,7 +46,7 @@ int main() else { - slowprint(" Socket creation is \033[32;40mGREEN.\033[0m\n", 5000); + slowPrint(" Socket creation is \033[32;40mGREEN.\033[0m\n", 5000); } bzero(&serverAddress, sizeof(serverAddress)); @@ -64,7 +64,7 @@ int main() } else { - slowprint(" Socket binding is \033[32;40mGREEN.\033[0m\n", 5000); + slowPrint(" Socket binding is \033[32;40mGREEN.\033[0m\n", 5000); } // Let's start listening: @@ -75,7 +75,7 @@ int main() } else { - slowprint(" Server listening is \033[32;40mGREEN.\033[0m\n", 5000); + slowPrint(" Server listening is \033[32;40mGREEN.\033[0m\n", 5000); } length = sizeof(clientAddress); diff --git a/src/misc/inputhandling.c b/src/misc/inputhandling.c new file mode 100644 index 0000000..0f4824b --- /dev/null +++ b/src/misc/inputhandling.c @@ -0,0 +1,16 @@ +// inputhandling.c: Implementation of input handling library for SilverMUD. +// Barry Kane, 2021. +#include + +void userInputSanatize(char * inputString, int length) +{ + for(int index = 0; index <= length; index++) + { + if(!isprint(inputString[index])) + { + inputString[index] = '\n'; + inputString[index + 1] = '\0'; + break; + } + } +} diff --git a/src/misc/inputhandling.h b/src/misc/inputhandling.h new file mode 100644 index 0000000..95c9bca --- /dev/null +++ b/src/misc/inputhandling.h @@ -0,0 +1,10 @@ +// inputhandling.h: Header file for the inputhandling library for SilverMUD. +// Barry Kane, 2021 +#ifndef INPUTHANDLING_H +#define INPUTHANDLING_H +#include + +// Sanatize user input to ensure it's okay to send to the server: +void userInputSanatize(char * inputString, int length); + +#endif diff --git a/src/misc/texteffects.c b/src/misc/texteffects.c index 23f03b8..a1b7afd 100644 --- a/src/misc/texteffects.c +++ b/src/misc/texteffects.c @@ -3,7 +3,7 @@ #include #include -void slowprint(char * stringToPrint, int delay) +void slowPrint(char * stringToPrint, int delay) { int characterIndex = 0; while(stringToPrint[characterIndex] != '\0') diff --git a/src/misc/texteffects.h b/src/misc/texteffects.h index b04a84b..daa4c7c 100644 --- a/src/misc/texteffects.h +++ b/src/misc/texteffects.h @@ -1,9 +1,11 @@ +// texteffects.h: Header file for the texteffects library for SilverMUD. +// Barry Kane, 2021. #ifndef TEXTEFFECTS_H_ #define TEXTEFFECTS_H_ #include // A fancy, character by character print. Similar to a serial terminal with lower baud rate. -void slowprint(char * stringToPrint, int delay); +void slowPrint(char * stringToPrint, int delay); // A string containing an ASCII art version of the Silverkin Industries logo. char * logostring = " ///////\n //////////////////////////////////////////\n ///////////////////////////////////////////////////////////\n ////////// ////////////////////////////\n ### # # # # ##### ### # # # # # /////////////////\n ### # # # # ## # # ## # ## # //////////////\n ## # # # # # ### # # # # # # /////////\n #### # ### # ##### # # # # # # ## ///////\n # ## # ##### # # ### ### ### # ##### ### ////// \n # # # # # # # # ## # # # # ## ## ////\n # # # # # # # # ## # ### # # ## //\n # # ### ##### ##### ### # # # # #### ### //\n";