Author: ai0867
Date: Sun Sep 21 01:22:19 2008
New Revision: 29596

URL: http://svn.gna.org/viewcvs/wesnoth?rev=29596&view=rev
Log:
* Made friends and ignores take wildcards.

Modified:
    trunk/src/game_preferences.cpp
    trunk/src/serialization/string_utils.cpp
    trunk/src/serialization/string_utils.hpp

Modified: trunk/src/game_preferences.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game_preferences.cpp?rev=29596&r1=29595&r2=29596&view=diff
==============================================================================
--- trunk/src/game_preferences.cpp (original)
+++ trunk/src/game_preferences.cpp Sun Sep 21 01:22:19 2008
@@ -169,13 +169,13 @@
 }
 
 bool add_friend(const std::string& nick) {
-       if (!utils::isvalid_username(nick)) return false;
+       if (!utils::isvalid_wildcard(nick)) return false;
        add_relation(nick, "friends");
        return true;
 }
 
 bool add_ignore(const std::string& nick) {
-       if (!utils::isvalid_username(nick)) return false;
+       if (!utils::isvalid_wildcard(nick)) return false;
        add_relation(nick, "ignores");
        return true;
 }
@@ -198,12 +198,20 @@
 
 bool is_friend(const std::string& nick) {
        const std::vector<std::string>& friends = utils::split(get_friends());
-       return (std::find(friends.begin(), friends.end(), nick) != 
friends.end());
+    foreach(const std::string& var, friends) {
+        if(utils::wildcard_string_match(nick, var))
+            return true;
+    }
+    return false;
 }
 
 bool is_ignored(const std::string& nick) {
        const std::vector<std::string>& ignores = utils::split(get_ignores());
-       return (std::find(ignores.begin(), ignores.end(), nick) != 
ignores.end());
+    foreach(const std::string& var, ignores) {
+        if(utils::wildcard_string_match(nick, var))
+            return true;
+    }
+    return false;
 }
 
 bool show_lobby_join(const std::string& sender, const std::string& message) {

Modified: trunk/src/serialization/string_utils.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/serialization/string_utils.cpp?rev=29596&r1=29595&r2=29596&view=diff
==============================================================================
--- trunk/src/serialization/string_utils.cpp (original)
+++ trunk/src/serialization/string_utils.cpp Sun Sep 21 01:22:19 2008
@@ -387,6 +387,10 @@
        return ((c == '_') || (c == '-'));
 }
 
+static bool is_wildcard_char(char c) {
+    return ((c == '?') || (c == '*'));
+}
+
 bool isvalid_username(const std::string& username) {
        const size_t alnum = std::count_if(username.begin(), username.end(), 
isalnum);
        const size_t valid_char =
@@ -398,6 +402,21 @@
        }
        return true;
 }
+
+bool isvalid_wildcard(const std::string& username) {
+    const size_t alnum = std::count_if(username.begin(), username.end(), 
isalnum);
+       const size_t valid_char =
+                       std::count_if(username.begin(), username.end(), 
is_username_char);
+    const size_t wild_char =
+            std::count_if(username.begin(), username.end(), is_wildcard_char);
+       if ((alnum + valid_char + wild_char != username.size())
+                       || valid_char == username.size() || username.empty() )
+       {
+               return false;
+       }
+       return true;
+}
+
 
 bool word_completion(std::string& text, std::vector<std::string>& wordlist) {
        std::vector<std::string> matches;

Modified: trunk/src/serialization/string_utils.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/serialization/string_utils.hpp?rev=29596&r1=29595&r2=29596&view=diff
==============================================================================
--- trunk/src/serialization/string_utils.hpp (original)
+++ trunk/src/serialization/string_utils.hpp Sun Sep 21 01:22:19 2008
@@ -145,6 +145,14 @@
  */
 bool isvalid_username(const std::string &login);
 
+/**
+ * Check if the username pattern contains only valid characters.
+ *
+ * (all alpha-numeric characters plus underscore, hyphen,
+ * question mark and asterisk)
+ */
+bool isvalid_wildcard(const std::string &login);
+
 typedef std::map< std::string, t_string > string_map;
 
 /**


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to