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