Index: ban.c
===================================================================
--- ban.c	(revision 65)
+++ ban.c	(working copy)
@@ -60,7 +60,6 @@
 
     *ban = ban_zero;
     VALIDATE( ban );
-    ban->name = &str_empty[0];
     return ban;
 }
 
@@ -69,7 +68,8 @@
     if ( !IS_VALID( ban ) )
         return;
 
-    free_string( ban->name );
+    ban->name.erase();
+    
     INVALIDATE( ban );
 
     ban->next = ban_free;
@@ -94,7 +94,7 @@
         if ( IS_SET( pban->ban_flags, BAN_PERMANENT ) )
         {
             found = true;
-            fprintf( fp, "%-20s %-2d %s\n", pban->name, pban->level,
+            fprintf( fp, "%-20s %-2d %s\n", pban->name.c_str(), pban->level,
                      print_flags( pban->ban_flags ) );
         }
     }
@@ -125,7 +125,7 @@
 
         pban = new_ban(  );
 
-        pban->name = str_dup( fread_word( fp ) );
+        pban->name = fread_word( fp );
         pban->level = fread_number( fp );
         pban->ban_flags = fread_flag( fp );
         fread_to_eol( fp );
@@ -153,13 +153,13 @@
 
         if ( IS_SET( pban->ban_flags, BAN_PREFIX )
              && IS_SET( pban->ban_flags, BAN_SUFFIX )
-             && strstr( pban->name, host ) != NULL )
+             && pban->name.find(host) != std::string::npos)
             return true;
 
-        if ( IS_SET( pban->ban_flags, BAN_PREFIX ) && !str_suffix( pban->name, host ) )
+        if ( IS_SET( pban->ban_flags, BAN_PREFIX ) && !str_suffix( pban->name.c_str(), host ) )
             return true;
 
-        if ( IS_SET( pban->ban_flags, BAN_SUFFIX ) && !str_prefix( pban->name, host ) )
+        if ( IS_SET( pban->ban_flags, BAN_SUFFIX ) && !str_prefix( pban->name.c_str(), host ) )
             return true;
     }
 
@@ -197,7 +197,7 @@
         {
             sprintf( buf2, "%s%s%s",
                      IS_SET( pban->ban_flags, BAN_PREFIX ) ? "*" : "",
-                     pban->name, IS_SET( pban->ban_flags, BAN_SUFFIX ) ? "*" : "" );
+                     pban->name.c_str(), IS_SET( pban->ban_flags, BAN_SUFFIX ) ? "*" : "" );
             sprintf( buf, "%-12s    %-3d  %-7s  %s\r\n",
                      buf2, pban->level,
                      IS_SET( pban->ban_flags, BAN_NEWBIES ) ? "newbies" :
@@ -250,7 +250,7 @@
     prev = NULL;
     for ( pban = ban_list; pban != NULL; prev = pban, pban = pban->next )
     {
-        if ( !str_cmp( name, pban->name ) )
+        if ( !str_cmp( name, pban->name.c_str() ) )
         {
             if ( pban->level > get_trust( ch ) )
             {
@@ -287,7 +287,7 @@
     pban->next = ban_list;
     ban_list = pban;
     save_bans(  );
-    ch_printf( ch, "%s has been banned.\r\n", pban->name );
+    ch_printf( ch, "%s has been banned.\r\n", pban->name.c_str() );
     return;
 }
 
@@ -318,7 +318,7 @@
     prev = NULL;
     for ( curr = ban_list; curr != NULL; prev = curr, curr = curr->next )
     {
-        if ( !str_cmp( arg, curr->name ) )
+        if ( !str_cmp( arg, curr->name.c_str() ) )
         {
             if ( curr->level > get_trust( ch ) )
             {
Index: strings.h
===================================================================
--- strings.h	(revision 65)
+++ strings.h	(working copy)
@@ -82,3 +82,5 @@
 bool                    add_buf( BUFFER *buffer, const char *string );
 void                    clear_buf( BUFFER *buffer );
 char                   *buf_string( BUFFER *buffer );
+
+// TODO - Need to create std::string compatible functions for case-insensitive comparison.
Index: merc.h
===================================================================
--- merc.h	(revision 65)
+++ merc.h	(working copy)
@@ -29,6 +29,12 @@
 *       ROM license, in the file Rom24/doc/rom.license                     *
 ***************************************************************************/
 
+#ifdef MACOSX
+#include <time.h>
+#endif
+
+#include <string>
+
 /*
  * LEGACY:
  * These things are here to make snippet integration easier.
@@ -153,7 +159,7 @@
     bool                    valid;
     int                     ban_flags;
     int                     level;
-    char                   *name;
+    std::string             name;
 };
 
 struct buf_type