PennMUSH 1.8.3p11
authorRick L Bird <nveid@yahoo.com>
Thu, 5 May 2011 21:53:43 +0000 (17:53 -0400)
committerRick L Bird <nveid@yahoo.com>
Thu, 5 May 2011 21:55:10 +0000 (17:55 -0400)
Author: allthecoolkidshaveone
<allthecoolkidshaveone@ba372814-4f39-11de-9ad6-1127a62b9fcd>
Date:   Tue Oct 6 11:14:53 2009 +0000

    Issue 111: page/port not evaluating arguments.
Fixes #155

hdrs/game.h
src/bsd.c
src/cmds.c

index b153960b547298cc804734e17a6abc4580e36274..51466641d8dbecd1a89d2da632aa77f545b27b67 100644 (file)
@@ -134,7 +134,7 @@ extern void do_wall(dbref player, const char *message, enum wall_type target,
 extern void do_page(dbref player, const char *arg1, const char *arg2,
                     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_page_port(dbref player, const char *arg1, const char *arg2, bool noeval_msg);
 extern void do_think(dbref player, const char *message);
 #define PEMIT_SILENT 0x1
 #define PEMIT_LIST   0x2
index afe8ce5c210c4aa9c9f26ea4988da4370f64e73d..8dfe3ddac17092b115bae0b1db55e8be041e5ee0 100644 (file)
--- a/src/bsd.c
+++ b/src/bsd.c
@@ -2970,11 +2970,12 @@ player_desc(dbref player)
  * \param message message to send.
  */
 void
-do_page_port(dbref player, const char *pc, const char *message)
+do_page_port(dbref player, const char *pc, const char *message, bool eval_msg)
 {
   int p, key;
   DESC *d;
   const char *gap;
+  char mbuf[BUFFER_LEN], *mbp = mbuf;
   char tbuf[BUFFER_LEN], *tbp = tbuf;
   dbref target = NOTHING;
 
@@ -2982,17 +2983,33 @@ do_page_port(dbref player, const char *pc, const char *message)
     notify(player, T("Permission denied."));
     return;
   }
-  p = atoi(pc);
+
+  process_expression(tbuf, &tbp, &pc, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL);
+  *tbp = '\0';
+  p = atoi(tbuf);
+  tbp = tbuf;
+
   if (p <= 0) {
     notify(player, T("That's not a port number."));
     return;
   }
 
-  if (!message || !*message) {
+  if (!message) {
     notify(player, T("What do you want to page with?"));
     return;
   }
 
+  if (eval_msg) {
+    process_expression(mbuf, &mbp, &message, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL);
+    *mbp = '\0';
+    message = mbuf;
+  }
+
+  if (!*message) {
+  notify(player, T("What do you want to page with?"));
+    return;
+  }
+
   gap = " ";
   switch (*message) {
   case SEMI_POSE_TOKEN:
index 548818546454219ebeb5bbdd75d29a0064811d69..a674dfbdec6d433cf854bbaf1e420959b2c15da1 100644 (file)
@@ -1238,7 +1238,7 @@ COMMAND (cmd_leave) {
 
 COMMAND (cmd_page) {
   if (SW_ISSET(sw, SWITCH_PORT))
-    do_page_port(player, arg_left, arg_right);
+    do_page_port(player, cause, arg_left, arg_right, !SW_ISSET(sw, SWITCH_NOEVAL));
   else
     do_page(player, arg_left, arg_right, cause, SW_ISSET(sw, SWITCH_NOEVAL),
             !(SW_ISSET(sw, SWITCH_BLIND) ||