diff options
author | Adam <Adam@Anope.org> | 2010-05-25 13:50:17 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-06-18 21:04:08 -0400 |
commit | f0a44ba89471e006ab10e398e9635adbc73eb674 (patch) | |
tree | d7607fd1f8678660b0fba625850786e94dd940c1 | |
parent | 4a2b9ebcf38d6c0a2860b966421b3af125438488 (diff) |
Made NumberList take an arg to determin if it should pass numbers in descending order, fixes listing specific ranges being returned in descending order
-rw-r--r-- | include/services.h | 14 | ||||
-rw-r--r-- | src/core/bs_badwords.cpp | 4 | ||||
-rw-r--r-- | src/core/cs_access.cpp | 4 | ||||
-rw-r--r-- | src/core/cs_akick.cpp | 4 | ||||
-rw-r--r-- | src/core/cs_xop.cpp | 4 | ||||
-rw-r--r-- | src/core/ms_del.cpp | 2 | ||||
-rw-r--r-- | src/core/ms_list.cpp | 2 | ||||
-rw-r--r-- | src/core/ms_read.cpp | 2 | ||||
-rw-r--r-- | src/core/os_akill.cpp | 4 | ||||
-rw-r--r-- | src/core/os_session.cpp | 4 | ||||
-rw-r--r-- | src/core/os_snline.cpp | 8 | ||||
-rw-r--r-- | src/core/os_sqline.cpp | 8 | ||||
-rw-r--r-- | src/core/os_szline.cpp | 8 | ||||
-rw-r--r-- | src/misc.cpp | 16 |
14 files changed, 49 insertions, 35 deletions
diff --git a/include/services.h b/include/services.h index a84e6ae8c..9a7356bd2 100644 --- a/include/services.h +++ b/include/services.h @@ -1130,19 +1130,23 @@ class ChanServTimer : public Timer /** A class to process numbered lists (passed to most DEL/LIST/VIEW commands). * The function HandleNumber is called for every number in the list. Note that - * it *always* gets called in descending order. This is so deleting the index passed - * to the function from an array will not cause the other indexes passed to the function - * to be incorrect. This keeps us from having to have an 'in use' flag on everything. + * if descending is true it gets called in descending order. This is so deleting + * the index passed to the function from an array will not cause the other indexes + * passed to the function to be incorrect. This keeps us from having to have an + * 'in use' flag on everything. */ class NumberList { private: std::set<unsigned> numbers; + + bool desc; public: /** Processes a numbered list * @param list The list + * @param descending True to make HandleNumber get called with numbers in descending order */ - NumberList(const std::string &list); + NumberList(const std::string &list, bool descending); /** Destructor, does nothing */ @@ -1160,7 +1164,7 @@ class NumberList /** Called when there is an error with the numbered list * Return false to immediatly stop processing the list and return * This is all done before we start calling HandleNumber, so no numbers will have been processed yet - * @param The list + * @param list The list * @return false to stop processing */ virtual bool InvalidRange(const std::string &list); diff --git a/src/core/bs_badwords.cpp b/src/core/bs_badwords.cpp index ce026e9c4..d329aa8e0 100644 --- a/src/core/bs_badwords.cpp +++ b/src/core/bs_badwords.cpp @@ -20,7 +20,7 @@ class BadwordsListCallback : public NumberList ChannelInfo *ci; bool SentHeader; public: - BadwordsListCallback(User *_u, ChannelInfo *_ci, const std::string &list) : NumberList(list), u(_u), ci(_ci), SentHeader(false) + BadwordsListCallback(User *_u, ChannelInfo *_ci, const std::string &list) : NumberList(list, false), u(_u), ci(_ci), SentHeader(false) { } @@ -56,7 +56,7 @@ class BadwordsDelCallback : public NumberList ChannelInfo *ci; unsigned Deleted; public: - BadwordsDelCallback(User *_u, ChannelInfo *_ci, const std::string &list) : NumberList(list), u(_u), ci(_ci), Deleted(0) + BadwordsDelCallback(User *_u, ChannelInfo *_ci, const std::string &list) : NumberList(list, true), u(_u), ci(_ci), Deleted(0) { } diff --git a/src/core/cs_access.cpp b/src/core/cs_access.cpp index 6ef238b71..641ee8f93 100644 --- a/src/core/cs_access.cpp +++ b/src/core/cs_access.cpp @@ -21,7 +21,7 @@ class AccessListCallback : public NumberList ChannelInfo *ci; bool SentHeader; public: - AccessListCallback(User *_u, ChannelInfo *_ci, const std::string &numlist) : NumberList(numlist), u(_u), ci(_ci), SentHeader(false) + AccessListCallback(User *_u, ChannelInfo *_ci, const std::string &numlist) : NumberList(numlist, false), u(_u), ci(_ci), SentHeader(false) { } @@ -114,7 +114,7 @@ class AccessDelCallback : public NumberList std::string Nicks; bool Denied; public: - AccessDelCallback(User *_u, ChannelInfo *_ci, const std::string &numlist) : NumberList(numlist), u(_u), ci(_ci), Deleted(0), Denied(false) + AccessDelCallback(User *_u, ChannelInfo *_ci, const std::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), Deleted(0), Denied(false) { } diff --git a/src/core/cs_akick.cpp b/src/core/cs_akick.cpp index 3d56e4846..0333a5042 100644 --- a/src/core/cs_akick.cpp +++ b/src/core/cs_akick.cpp @@ -52,7 +52,7 @@ class AkickListCallback : public NumberList ChannelInfo *ci; bool SentHeader; public: - AkickListCallback(User *_u, ChannelInfo *_ci, const std::string &numlist) : NumberList(numlist), u(_u), ci(_ci), SentHeader(false) + AkickListCallback(User *_u, ChannelInfo *_ci, const std::string &numlist) : NumberList(numlist, false), u(_u), ci(_ci), SentHeader(false) { } @@ -141,7 +141,7 @@ class AkickDelCallback : public NumberList ChannelInfo *ci; unsigned Deleted; public: - AkickDelCallback(User *_u, ChannelInfo *_ci, const std::string &list) : NumberList(list), u(_u), ci(_ci), Deleted(0) + AkickDelCallback(User *_u, ChannelInfo *_ci, const std::string &list) : NumberList(list, true), u(_u), ci(_ci), Deleted(0) { } diff --git a/src/core/cs_xop.cpp b/src/core/cs_xop.cpp index c25bf02e2..a4556fdd9 100644 --- a/src/core/cs_xop.cpp +++ b/src/core/cs_xop.cpp @@ -118,7 +118,7 @@ class XOPListCallback : public NumberList int *messages; bool SentHeader; public: - XOPListCallback(User *_u, ChannelInfo *_ci, const std::string &numlist, int _level, int *_messages) : NumberList(numlist), u(_u), ci(_ci), level(_level), messages(_messages), SentHeader(false) + XOPListCallback(User *_u, ChannelInfo *_ci, const std::string &numlist, int _level, int *_messages) : NumberList(numlist, false), u(_u), ci(_ci), level(_level), messages(_messages), SentHeader(false) { } @@ -155,7 +155,7 @@ class XOPDelCallback : public NumberList unsigned Deleted; std::string Nicks; public: - XOPDelCallback(User *_u, ChannelInfo *_ci, int *_messages, const std::string &numlist) : NumberList(numlist), u(_u), ci(_ci), messages(_messages), Deleted(0) + XOPDelCallback(User *_u, ChannelInfo *_ci, int *_messages, const std::string &numlist) : NumberList(numlist, true), u(_u), ci(_ci), messages(_messages), Deleted(0) { } diff --git a/src/core/ms_del.cpp b/src/core/ms_del.cpp index 68c093f86..700df16b4 100644 --- a/src/core/ms_del.cpp +++ b/src/core/ms_del.cpp @@ -20,7 +20,7 @@ class MemoDelCallback : public NumberList ChannelInfo *ci; MemoInfo *mi; public: - MemoDelCallback(User *_u, ChannelInfo *_ci, MemoInfo *_mi, const std::string &list) : NumberList(list), u(_u), ci(_ci), mi(_mi) + MemoDelCallback(User *_u, ChannelInfo *_ci, MemoInfo *_mi, const std::string &list) : NumberList(list, true), u(_u), ci(_ci), mi(_mi) { } diff --git a/src/core/ms_list.cpp b/src/core/ms_list.cpp index c653f7708..066d69775 100644 --- a/src/core/ms_list.cpp +++ b/src/core/ms_list.cpp @@ -21,7 +21,7 @@ class MemoListCallback : public NumberList MemoInfo *mi; bool SentHeader; public: - MemoListCallback(User *_u, ChannelInfo *_ci, MemoInfo *_mi, const std::string &list) : NumberList(list), u(_u), ci(_ci), mi(_mi), SentHeader(false) + MemoListCallback(User *_u, ChannelInfo *_ci, MemoInfo *_mi, const std::string &list) : NumberList(list, false), u(_u), ci(_ci), mi(_mi), SentHeader(false) { } diff --git a/src/core/ms_read.cpp b/src/core/ms_read.cpp index 600e92cae..8368bf57f 100644 --- a/src/core/ms_read.cpp +++ b/src/core/ms_read.cpp @@ -19,7 +19,7 @@ class MemoListCallback : public NumberList User *u; MemoInfo *mi; public: - MemoListCallback(User *_u, MemoInfo *_mi, const std::string &numlist) : NumberList(numlist), u(_u), mi(_mi) + MemoListCallback(User *_u, MemoInfo *_mi, const std::string &numlist) : NumberList(numlist, false), u(_u), mi(_mi) { } diff --git a/src/core/os_akill.cpp b/src/core/os_akill.cpp index 47a2b9dd1..6d4e9ab46 100644 --- a/src/core/os_akill.cpp +++ b/src/core/os_akill.cpp @@ -19,7 +19,7 @@ class AkillDelCallback : public NumberList User *u; unsigned Deleted; public: - AkillDelCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), Deleted(0) + AkillDelCallback(User *_u, const std::string &numlist) : NumberList(numlist, true), u(_u), Deleted(0) { } @@ -56,7 +56,7 @@ class AkillListCallback : public NumberList User *u; bool SentHeader; public: - AkillListCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), SentHeader(false) + AkillListCallback(User *_u, const std::string &numlist) : NumberList(numlist, false), u(_u), SentHeader(false) { } diff --git a/src/core/os_session.cpp b/src/core/os_session.cpp index 06331eb79..8c019c537 100644 --- a/src/core/os_session.cpp +++ b/src/core/os_session.cpp @@ -20,7 +20,7 @@ class ExceptionDelCallback : public NumberList User *u; unsigned Deleted; public: - ExceptionDelCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), Deleted(0) + ExceptionDelCallback(User *_u, const std::string &numlist) : NumberList(numlist, true), u(_u), Deleted(0) { } @@ -62,7 +62,7 @@ class ExceptionListCallback : public NumberList User *u; bool SentHeader; public: - ExceptionListCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), SentHeader(false) + ExceptionListCallback(User *_u, const std::string &numlist) : NumberList(numlist, false), u(_u), SentHeader(false) { } diff --git a/src/core/os_snline.cpp b/src/core/os_snline.cpp index 503b63b5c..f792fd1ee 100644 --- a/src/core/os_snline.cpp +++ b/src/core/os_snline.cpp @@ -21,7 +21,7 @@ class SNLineDelCallback : public NumberList User *u; unsigned Deleted; public: - SNLineDelCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), Deleted(0) + SNLineDelCallback(User *_u, const std::string &numlist) : NumberList(numlist, true), u(_u), Deleted(0) { } @@ -58,7 +58,7 @@ class SNLineListCallback : public NumberList User *u; bool SentHeader; public: - SNLineListCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), SentHeader(false) + SNLineListCallback(User *_u, const std::string &numlist) : NumberList(numlist, false), u(_u), SentHeader(false) { } @@ -81,7 +81,7 @@ class SNLineListCallback : public NumberList notice_lang(Config.s_OperServ, u, OPER_SNLINE_LIST_HEADER); } - DoList(u, x, Number); + DoList(u, x, Number - 1); } static void DoList(User *u, XLine *x, unsigned Number) @@ -110,7 +110,7 @@ class SNLineViewCallback : public SNLineListCallback notice_lang(Config.s_OperServ, u, OPER_SNLINE_VIEW_HEADER); } - DoList(u, x, Number); + DoList(u, x, Number - 1); } static void DoList(User *u, XLine *x, unsigned Number) diff --git a/src/core/os_sqline.cpp b/src/core/os_sqline.cpp index 89864c69e..2d32bf507 100644 --- a/src/core/os_sqline.cpp +++ b/src/core/os_sqline.cpp @@ -19,7 +19,7 @@ class SQLineDelCallback : public NumberList User *u; unsigned Deleted; public: - SQLineDelCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), Deleted(0) + SQLineDelCallback(User *_u, const std::string &numlist) : NumberList(numlist, true), u(_u), Deleted(0) { } @@ -41,7 +41,7 @@ class SQLineDelCallback : public NumberList return; ++Deleted; - DoDel(u, x); + DoDel(u, x - 1); } static void DoDel(User *u, XLine *x) @@ -56,7 +56,7 @@ class SQLineListCallback : public NumberList User *u; bool SentHeader; public: - SQLineListCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), SentHeader(false) + SQLineListCallback(User *_u, const std::string &numlist) : NumberList(numlist, false), u(_u), SentHeader(false) { } @@ -79,7 +79,7 @@ class SQLineListCallback : public NumberList notice_lang(Config.s_OperServ, u, OPER_SQLINE_LIST_HEADER); } - DoList(u, x, Number); + DoList(u, x, Number - 1); } static void DoList(User *u, XLine *x, unsigned Number) diff --git a/src/core/os_szline.cpp b/src/core/os_szline.cpp index 674b8d7d5..a99f099c9 100644 --- a/src/core/os_szline.cpp +++ b/src/core/os_szline.cpp @@ -19,7 +19,7 @@ class SZLineDelCallback : public NumberList User *u; unsigned Deleted; public: - SZLineDelCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), Deleted(0) + SZLineDelCallback(User *_u, const std::string &numlist) : NumberList(numlist, true), u(_u), Deleted(0) { } @@ -56,7 +56,7 @@ class SZLineListCallback : public NumberList User *u; bool SentHeader; public: - SZLineListCallback(User *_u, const std::string &numlist) : NumberList(numlist), u(_u), SentHeader(false) + SZLineListCallback(User *_u, const std::string &numlist) : NumberList(numlist, false), u(_u), SentHeader(false) { } @@ -79,7 +79,7 @@ class SZLineListCallback : public NumberList notice_lang(Config.s_OperServ, u, OPER_SZLINE_LIST_HEADER); } - DoList(u, x, Number); + DoList(u, x, Number - 1); } static void DoList(User *u, XLine *x, unsigned Number) @@ -108,7 +108,7 @@ class SZLineViewCallback : public SZLineListCallback notice_lang(Config.s_OperServ, u, OPER_SZLINE_VIEW_HEADER); } - DoList(u, x, Number); + DoList(u, x, Number - 1); } static void DoList(User *u, XLine *x, unsigned Number) diff --git a/src/misc.cpp b/src/misc.cpp index 22ea81432..735fb619a 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -224,7 +224,7 @@ const char *merge_args(int argc, char **argv) /*************************************************************************/ -NumberList::NumberList(const std::string &list) +NumberList::NumberList(const std::string &list, bool descending) : desc(descending) { char *error; commasepstream sep(list); @@ -284,9 +284,19 @@ NumberList::~NumberList() void NumberList::Process() { - for (std::set<unsigned>::reverse_iterator it = numbers.rbegin(); it != numbers.rend(); ++it) + if (this->desc) { - this->HandleNumber(*it); + for (std::set<unsigned>::reverse_iterator it = numbers.rbegin(); it != numbers.rend(); ++it) + { + this->HandleNumber(*it); + } + } + else + { + for (std::set<unsigned>::iterator it = numbers.begin(); it != numbers.end(); ++it) + { + this->HandleNumber(*it); + } } delete this; |