diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 074e82f8286b5ef9a91f58f60d6170bf25b262ad..29593830d68263be9cdb89a3bff10a42f61ae03c 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -199,6 +199,7 @@ static int lputs(int level, char *str)
 {
 	static pthread_mutex_t mutex;
 	static BOOL mutex_initialized;
+	char	*p;
 
 #ifdef __unix__
 
@@ -219,8 +220,15 @@ static int lputs(int level, char *str)
 	pthread_mutex_lock(&mutex);
 	/* erase prompt */
 	printf("\r%*s\r",prompt_len,"");
-	if(str!=NULL)
-		printf("%s\n",str);
+	if(str!=NULL) {
+		for(p=str; *p; p++) {
+			if(iscntrl(*p))
+				printf("^%c",'@'+*p);
+			else
+				printf("%c",*p);
+		}
+		puts("");
+	}
 	/* re-display prompt with current stats */
 	if(prompt!=NULL)
 		prompt_len = printf(prompt, thread_count, socket_count, client_count, served);