Command and function names may now start with punctuation characters; better error...
authorAri Johnson <ari@cobramush.org>
Sat, 3 Mar 2007 00:37:35 +0000 (00:37 +0000)
committerAri Johnson <ari@theari.com>
Thu, 24 Mar 2011 15:58:45 +0000 (15:58 +0000)
(cherry picked from commit 3660ef70e332fd62f751ee339fa2a345520a485c)

src/function.c
src/predicat.c

index b231a95f6347dfcc46c34e0f32e252325a6b7b74..ce234c67f8d1aa62e8a98f2badbb102619a2cb56 100644 (file)
@@ -1074,11 +1074,14 @@ restrict_function(const char *name, const char *restriction)
 void
 do_function_restrict(dbref player, const char *name, const char *restriction)
 {
+  FUN *fp;
+  unsigned int flags;
+
   if (!Global_Funcs(player)) {
     notify(player, T("Permission denied."));
     return;
   }
-  if (!name) {
+  if (!name || !*name) {
     notify(player, T("Restrict what function?"));
     return;
   }
@@ -1089,7 +1092,7 @@ do_function_restrict(dbref player, const char *name, const char *restriction)
   if (restrict_function(name, restriction))
     notify(player, T("Restrictions modified."));
   else
-    notify(player, T("Restrict attempt failed."));
+    notify(player, T("Restrictions modified."));
 }
 
 
index be72f287d799e60efe72cf28cd0a1cb01ef9362a..87e43013a23d93df92ce1d6e0489499efa4ac98e 100644 (file)
@@ -911,7 +911,8 @@ ok_command_name(const char *name)
   case '&':
     return 0;
   default:
-    if (!isupper((unsigned char) *name) && !isdigit((unsigned char) *name))
+    if (!isupper((unsigned char) *name) && !isdigit((unsigned char) *name)
+       && !ispunct((unsigned char) *name))
       return 0;
   }
   /* Everything else must be printable and non-space, and we need
@@ -956,7 +957,7 @@ ok_function_name(const char *name)
   case '&':
     return 0;
   default:
-    if (!isupper((unsigned char) *name))
+    if (!isupper((unsigned char) *name) && !ispunct((unsigned char) *name))
       return 0;
   }
   /* Everything else must be printable and non-space, and we need