diff -upPr -x *.o ../stk/comm.c ./comm.c
--- ../stk/comm.c	Sat Aug 23 21:08:10 1997
+++ ./comm.c	Thu Oct  2 10:41:51 1997
@@ -10,10 +10,10 @@

 #define __COMM_C__

+#include <stdarg.h>
 #include "conf.h"
 #include "sysdep.h"

-
 #ifdef CIRCLE_WINDOWS		/* Includes for Win32 */
 #include <direct.h>
 #include <mmsystem.h>
@@ -1596,47 +1596,81 @@ void signal_setup(void)
 *       Public routines for system-to-player-communication        *
 **************************************************************** */

-void send_to_char(char *messg, struct char_data *ch)
+/*
+ * If missing vsnprintf(), remove the 'n' and remove MAX_STRING_LENGTH.
+ */
+void send_to_charf(struct char_data *ch, const char *messg, ...)
 {
-  if (ch->desc && messg)
-    SEND_TO_Q(messg, ch->desc);
+  va_list args;
+  char send_buf[MAX_STRING_LENGTH];
+
+  if (!ch->desc || !messg || !*messg)
+    return;
+
+  va_start(args, messg);
+  vsnprintf(send_buf, MAX_STRING_LENGTH, messg, args);
+  va_end(args);
+
+  SEND_TO_Q(send_buf, ch->desc);
 }


-void send_to_all(char *messg)
+void send_to_all(const char *messg, ...)
 {
   struct descriptor_data *i;
+  char send_buf[MAX_STRING_LENGTH];
+  va_list args;
+
+  if (!messg || !*messg)
+    return;

-  if (messg)
-    for (i = descriptor_list; i; i = i->next)
-      if (!i->connected)
-	SEND_TO_Q(messg, i);
+  va_start(args, messg);
+  vsnprintf(send_buf, MAX_STRING_LENGTH, messg, args);
+  va_end(args);
+
+  for (i = descriptor_list; i; i = i->next)
+    if (!i->connected)
+      SEND_TO_Q(send_buf, i);
 }


-void send_to_outdoor(char *messg)
+void send_to_outdoor(const char *messg, ...)
 {
   struct descriptor_data *i;
+  va_list args;
+  char send_buf[MAX_STRING_LENGTH];

   if (!messg || !*messg)
     return;

+  va_start(args, messg);
+  vsnprintf(send_buf, MAX_STRING_LENGTH, messg, args);
+  va_end(args);
+
   for (i = descriptor_list; i; i = i->next)
     if (!i->connected && i->character && AWAKE(i->character) &&
 	OUTSIDE(i->character))
-      SEND_TO_Q(messg, i);
+      SEND_TO_Q(send_buf, i);
 }



-void send_to_room(char *messg, int room)
+void send_to_roomf(int room, const char *messg, ...)
 {
   struct char_data *i;
+  va_list args;
+  char send_buf[MAX_STRING_LENGTH];
+
+  if (!messg || !*messg)
+    return;

-  if (messg)
-    for (i = world[room].people; i; i = i->next_in_room)
-      if (i->desc)
-	SEND_TO_Q(messg, i->desc);
+  va_start(args, messg);
+  vsnprintf(send_buf, MAX_STRING_LENGTH, messg, args);
+  va_end(args);
+
+  for (i = world[room].people; i; i = i->next_in_room)
+    if (i->desc)
+      SEND_TO_Q(send_buf, i->desc);
 }


diff -upPr -x *.o ../stk/comm.h ./comm.h
--- ../stk/comm.h	Thu Jun 19 00:58:36 1997
+++ ./comm.h	Thu Oct  2 10:41:35 1997
@@ -11,10 +11,29 @@
 #define NUM_RESERVED_DESCS	8

 /* comm.c */
-void	send_to_all(char *messg);
-void	send_to_char(char *messg, struct char_data *ch);
-void	send_to_room(char *messg, int room);
-void	send_to_outdoor(char *messg);
+
+/*
+ * Backward compatibility macros.
+ */
+#define send_to_char(txt, ch)	send_to_charf(ch, "%s", txt)
+#define send_to_room(txt, ch)	send_to_roomf(ch, "%s", txt)
+
+#if defined(__GNUC__)
+void	send_to_all(const char *messg, ...)
+	__attribute__ ((format (printf, 1, 2)));
+void	send_to_charf(struct char_data *ch, const char *messg, ...)
+	__attribute__ ((format (printf, 2, 3)));
+void	send_to_roomf(int room, const char *messg, ...)
+	__attribute__ ((format (printf, 2, 3)));
+void	send_to_outdoor(const char *messg, ...)
+	__attribute__ ((format (printf, 1, 2)));
+#else
+void	send_to_all(const char *messg, ...);
+void	send_to_charf(struct char_data *ch, const char *messg, ...);
+void	send_to_roomf(int room, const char *messg, ...);
+void	send_to_outdoor(const char *messg, ...);
+#endif
+
 void	perform_to_all(char *messg, struct char_data *ch);
 void	close_socket(struct descriptor_data *d);

diff -upPr -x *.o ../stk/modify.c ./modify.c
--- ../stk/modify.c	Thu Jun 19 00:58:38 1997
+++ ./modify.c	Wed Oct  1 23:42:05 1997
@@ -300,7 +300,7 @@ void page_string(struct descriptor_data
     return;

   if (!str || !*str) {
-    send_to_char("", d->character);
+/*    send_to_char("", d->character); - ?? */
     return;
   }
   CREATE(d->showstr_vector, char *, d->showstr_count = count_pages(str));

