page player= now pages with a blank line instead of paging the last-paged player...
authorAri Johnson <ari@cobramush.org>
Wed, 21 Feb 2007 14:38:36 +0000 (14:38 +0000)
committerAri Johnson <ari@cobramush.org>
Wed, 21 Feb 2007 14:38:36 +0000 (14:38 +0000)
hdrs/game.h
src/cmds.c
src/speech.c

index 6d7f4c48f0fc07f9bd45785d7a296365ebdc5f0b..f84a64e5b98d169aa225b648b310346b78920720 100644 (file)
@@ -132,7 +132,8 @@ enum wall_type { WALL_ALL };
 extern void do_wall(dbref player, const char *message, enum wall_type target,
                    int emit);
 extern void do_page(dbref player, const char *arg1, const char *arg2,
-                   dbref cause, int noeval, int multipage, int override);
+                   dbref cause, int noeval, int multipage, int override,
+                   int has_eq);
 extern void do_page_port(dbref player, const char *arg1, const char *arg2);
 extern void do_think(dbref player, const char *message);
 #define PEMIT_SILENT 0x1
index 96ab42c531814d1beb56dbe08ab3de8c87e573aa..5cf0ce34eb0a24f6b903e92f660afb1d2e6dd99f 100644 (file)
@@ -1093,18 +1093,21 @@ COMMAND (cmd_leave) {
 
 COMMAND (cmd_page) {
   char *t;
+  int has_eq = 0;
   if ((arg_right) && (*arg_right)) {
     t = arg_right;
   } else {
     t = NULL;
   }
+  if (args_raw && *args_raw && strchr(args_raw, '='))
+    has_eq = 1;
   if (SW_ISSET(sw, SWITCH_PORT))
     do_page_port(player, arg_left, t);
   else
     do_page(player, arg_left, t, cause, SW_ISSET(sw, SWITCH_NOEVAL),
            !(SW_ISSET(sw, SWITCH_BLIND) ||
              (!(SW_ISSET(sw, SWITCH_LIST)) && (BLIND_PAGE))),
-           SW_ISSET(sw, SWITCH_OVERRIDE));
+           SW_ISSET(sw, SWITCH_OVERRIDE), has_eq);
 }
 
 COMMAND (cmd_pose) {
index ad3ca0c89c2b255b5e9d9cc74f9711c8c2e98167..fac55a7c036d8003c43eb1c6fb56bf48cf28bb7a 100644 (file)
@@ -615,10 +615,11 @@ do_wall(dbref player, const char *message, enum wall_type target, int emit)
  * \param noeval if 1, page/noeval.
  * \param multipage if 1, a page/list; if 0, a page/blind.
  * \param override if 1, page/override.
+ * \param has_eq if 1, the command had an = in it.
  */
 void
 do_page(dbref player, const char *arg1, const char *arg2, dbref cause,
-       int noeval, int multipage, int override)
+       int noeval, int multipage, int override, int has_eq)
 {
   dbref target;
   const char *message;
@@ -644,8 +645,8 @@ do_page(dbref player, const char *arg1, const char *arg2, dbref cause,
   if (!tbuf2)
     mush_panic("Unable to allocate memory in do_page");
 
-  if (arg2 && *arg2 && *arg1) {
-    /* page to=msg. Always evaluate to, maybe evaluate msg */
+  if (*arg1 && has_eq) {
+    /* page to=[msg]. Always evaluate to, maybe evaluate msg */
     process_expression(tbuf2, &tp2, &arg1, player, cause, cause,
                       PE_DEFAULT, PT_DEFAULT, NULL);
     *tp2 = '\0';