diff -uNr ircservices-5.0.53/Changes ircservices-5.0.54/Changes --- ircservices-5.0.53/Changes 2005-05-12 23:33:08 +0900 +++ ircservices-5.0.54/Changes 2005-08-16 11:19:37 +0900 @@ -1,5 +1,18 @@ Version 5.0 ----------- +2005/08/16 .54 The ChanServ check_kick callback now passes the channel + name as a string instead of the Channel structure, so + the channel name can be known even if the channel is + empty. Reported by Olly +2005/08/13 The S-line commands (SGLINE, SQLINE, and SZLINE) now check + that "*" or similarly overbroad masks are not used. + Suggested by Dionisios K. +2005/08/13 Fixed minor bugs in the code to check whether a new + autokill is too broad (such as "*"). +2005/08/13 Fixed a compilation error (and many warnings) when + compiling with GCC 4. +2005/08/13 Added UNSET callbacks for NickServ and ChanServ. Suggested + by Craig McLure 2005/05/12 .53 Fixed bug causing server connection to fail. 2005/05/12 .52 Fixed occasional corruption of the NickServ REGISTER syntax string upon reconfiguration (OperServ REHASH). diff -uNr ircservices-5.0.53/docs/6.html ircservices-5.0.54/docs/6.html --- ircservices-5.0.53/docs/6.html 2004-08-25 16:25:59 +0900 +++ ircservices-5.0.54/docs/6.html 2005-08-16 11:16:13 +0900 @@ -229,8 +229,11 @@

Modules are loaded through the load_module() function in -modules.c. load_module() takes one parameter, the name -of the module to load, and performs the following steps (assuming +modules.c, which is called for each module listed in +ircservices.conf at Services startup (and when an OperServ +REHASH command is given after adding a new module to +ircservices.conf). load_module() takes one parameter, +the name of the module to load, and performs the following steps (assuming dynamically-compiled modules on a system with the dlXXX() family of functions): @@ -1329,6 +1332,18 @@ a Services admin is making the change. The new address is stored in ngi->email. The callback routine should always return 0. + +

+UNSET +
Parameters: User *u, NickInfo *ni, + NickGroupInfo *ngi, + char *option +
Called when the UNSET command is used. All parameters are + guaranteed to be valid (non-NULL), and standard permission + checks will have been performed (so u either is + identified for ni/ngi or is a Services + admin). The callback routine should return 1 if it processes the + given option, 0 otherwise. @@ -1354,15 +1369,14 @@

check_kick -
Parameters: User *user, Channel *c, +
Parameters: User *user, const char *chan, ChannelInfo *ci, char **mask_ret, const char **reason_ret
Called when checking whether a user should be kicked from a - channel, before any standard checks are performed. - user will not be NULL, but either or both - of c and ci may be NULL if - the channel is currently empty or not registered, respectively. - The callback routine may return: + channel, before any standard checks are performed. All parameters + are guaranteed to be non-NULL, except for + ci, which will be NULL when the channel is + not registered. The callback routine may return:
  • 0, to allow normal processing to continue.
  • 1, to cause the user to be kicked from the channel. In this @@ -1474,6 +1488,17 @@ the user has permission to use UNBAN for the channel). The callback should return 0 to allow normal processing to continue or 1 to abort further processing. + +

    +UNSET +
    Parameters: User *u, ChannelInfo *ci, + char *option +
    Called when the UNSET command is used. All parameters are + guaranteed to be valid (non-NULL), and standard permission + checks will have been performed (so `u' either is + identified for ci or is a Services admin). The + callback routine should return 1 if it processes the given option, + 0 otherwise. diff -uNr ircservices-5.0.53/extern.h ircservices-5.0.54/extern.h --- ircservices-5.0.53/extern.h 2005-05-12 23:36:56 +0900 +++ ircservices-5.0.54/extern.h 2005-08-16 12:42:19 +0900 @@ -213,8 +213,8 @@ E unsigned char valid_nick_table[256]; E unsigned char valid_chan_table[256]; -E int valid_nick(const unsigned char *str); -E int valid_chan(const unsigned char *str); +E int valid_nick(const char *str); +E int valid_chan(const char *str); E int valid_domain(const char *str); E int valid_email(const char *str); E int valid_url(const char *str); diff -uNr ircservices-5.0.53/lang/de.l ircservices-5.0.54/lang/de.l --- ircservices-5.0.53/lang/de.l 2005-01-07 02:12:36 +0900 +++ ircservices-5.0.54/lang/de.l 2005-08-13 14:10:47 +0900 @@ -2012,6 +2012,8 @@ %s-Liste ist voll! OPER_SLINE_EXISTS %s gibt es bereits auf der %s-Liste. +OPER_SLINE_MASK_TOO_GENERAL + Die %s-Maske ist zu allgemein. OPER_SLINE_ADDED %s wurde in die %s-Liste eingetragen. OPER_SLINE_REMOVED diff -uNr ircservices-5.0.53/lang/en_us.l ircservices-5.0.54/lang/en_us.l --- ircservices-5.0.53/lang/en_us.l 2005-01-07 02:15:12 +0900 +++ ircservices-5.0.54/lang/en_us.l 2005-08-13 18:22:44 +0900 @@ -2048,6 +2048,8 @@ %s list is full! OPER_SLINE_EXISTS %s already exists on %s list. +OPER_SLINE_MASK_TOO_GENERAL + The %s mask is too general. OPER_SLINE_ADDED %s added to %s list. OPER_SLINE_REMOVED @@ -5086,4 +5088,4 @@ # version of the master (English) language file was used to create a # translated file. -# CVS: $Revision: 2.222.2.7 $ +# CVS: $Revision: 2.222.2.8 $ diff -uNr ircservices-5.0.53/lang/es.l ircservices-5.0.54/lang/es.l --- ircservices-5.0.53/lang/es.l 2005-01-07 02:12:36 +0900 +++ ircservices-5.0.54/lang/es.l 2005-08-13 14:11:09 +0900 @@ -2050,6 +2050,8 @@ La lista %s est llena! OPER_SLINE_EXISTS %s ya exixte en la lista %s. +OPER_SLINE_MASK_TOO_GENERAL + La mscara de %s es demasiado general. OPER_SLINE_ADDED %s agregado a la lista %s. OPER_SLINE_REMOVED diff -uNr ircservices-5.0.53/lang/index ircservices-5.0.54/lang/index --- ircservices-5.0.53/lang/index 2005-01-13 06:31:10 +0900 +++ ircservices-5.0.54/lang/index 2005-08-16 11:09:48 +0900 @@ -792,6 +792,7 @@ OPER_SLINE_DEL_SYNTAX OPER_TOO_MANY_SLINES OPER_SLINE_EXISTS +OPER_SLINE_MASK_TOO_GENERAL OPER_SLINE_ADDED OPER_SLINE_REMOVED OPER_SLINE_NOT_FOUND diff -uNr ircservices-5.0.53/lang/ja_euc.l ircservices-5.0.54/lang/ja_euc.l --- ircservices-5.0.53/lang/ja_euc.l 2005-01-07 02:12:37 +0900 +++ ircservices-5.0.54/lang/ja_euc.l 2005-08-13 14:13:24 +0900 @@ -1911,7 +1911,7 @@ OPER_AKILL_NO_NICK ưǥޥˤϥ˥åȤޤ󡣥ޥǧƲ OPER_AKILL_MASK_TOO_GENERAL - ޥŪޤ + ޥŬϰϤޤ OPER_AKILL_EXPIRY_LIMITED ͭ¤%sޤǤǤޤ OPER_AKILL_ADDED @@ -2008,6 +2008,8 @@ %sꥹȤϤäѤǤΤɲäǤޤ OPER_SLINE_EXISTS %sפϤǤ%sꥹȤ¸ߤޤ +OPER_SLINE_MASK_TOO_GENERAL + ޥŬϰϤޤ OPER_SLINE_ADDED %sפ%sꥹȤɲäޤ OPER_SLINE_REMOVED diff -uNr ircservices-5.0.53/lang/ja_sjis.l ircservices-5.0.54/lang/ja_sjis.l --- ircservices-5.0.53/lang/ja_sjis.l 2005-01-07 02:12:38 +0900 +++ ircservices-5.0.54/lang/ja_sjis.l 2005-08-13 18:18:58 +0900 @@ -1911,7 +1911,7 @@ OPER_AKILL_NO_NICK ؒf}XNɂ̓jbNg܂B}XNmFĉB OPER_AKILL_MASK_TOO_GENERAL - }XN͔ėpI܂B + }XN̓Kp͈͂L܂B OPER_AKILL_EXPIRY_LIMITED L%s܂łݒł܂B OPER_AKILL_ADDED @@ -2008,6 +2008,8 @@ %sXg͂ςł̂Œljł܂B OPER_SLINE_EXISTS u%sv͂ł%sXgɑ݂܂B +OPER_SLINE_MASK_TOO_GENERAL + }XN̓Kp͈͂L܂B OPER_SLINE_ADDED u%sv%sXgɒlj܂B OPER_SLINE_REMOVED diff -uNr ircservices-5.0.53/lang/langcomp.c ircservices-5.0.54/lang/langcomp.c --- ircservices-5.0.53/lang/langcomp.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/lang/langcomp.c 2005-08-16 12:42:20 +0900 @@ -156,7 +156,7 @@ int main(int ac, char **av) { - unsigned char *filename = NULL, *s; + char *filename = NULL, *s; char langname[254], outfile[256]; FILE *in, *out; int warn = 0; diff -uNr ircservices-5.0.53/lang/langstrs.h ircservices-5.0.54/lang/langstrs.h --- ircservices-5.0.53/lang/langstrs.h 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/lang/langstrs.h 2005-08-16 12:42:20 +0900 @@ -792,420 +792,421 @@ #define OPER_SLINE_DEL_SYNTAX 791 #define OPER_TOO_MANY_SLINES 792 #define OPER_SLINE_EXISTS 793 -#define OPER_SLINE_ADDED 794 -#define OPER_SLINE_REMOVED 795 -#define OPER_SLINE_NOT_FOUND 796 -#define OPER_SLINE_LIST_HEADER 797 -#define OPER_SLINE_LIST_FORMAT 798 -#define OPER_SLINE_VIEW_FORMAT 799 -#define OPER_SLINE_VIEW_UNUSED_FORMAT 800 -#define OPER_SLINE_COUNT 801 -#define OPER_SZLINE_NOT_AVAIL 802 -#define OPER_SU_SYNTAX 803 -#define OPER_SU_NO_PASSWORD 804 -#define OPER_SU_SUCCEEDED 805 -#define OPER_SU_FAILED 806 -#define OPER_SET_SYNTAX 807 -#define OPER_SET_IGNORE_ON 808 -#define OPER_SET_IGNORE_OFF 809 -#define OPER_SET_IGNORE_ERROR 810 -#define OPER_SET_READONLY_ON 811 -#define OPER_SET_READONLY_OFF 812 -#define OPER_SET_READONLY_ERROR 813 -#define OPER_SET_DEBUG_ON 814 -#define OPER_SET_DEBUG_OFF 815 -#define OPER_SET_DEBUG_LEVEL 816 -#define OPER_SET_DEBUG_ERROR 817 -#define OPER_SET_SUPASS_FAILED 818 -#define OPER_SET_SUPASS_OK 819 -#define OPER_SET_SUPASS_NONE 820 -#define OPER_SET_UNKNOWN_OPTION 821 -#define OPER_JUPE_SYNTAX 822 -#define OPER_JUPE_INVALID_NAME 823 -#define OPER_JUPE_ALREADY_JUPED 824 -#define OPER_RAW_SYNTAX 825 -#define OPER_UPDATE_SYNTAX 826 -#define OPER_UPDATE_FORCE_FAILED 827 -#define OPER_UPDATING 828 -#define OPER_UPDATE_COMPLETE 829 -#define OPER_UPDATE_FAILED 830 -#define OPER_REHASHING 831 -#define OPER_REHASHED 832 -#define OPER_REHASH_ERROR 833 -#define OPER_IGNORE_LIST 834 -#define OPER_IGNORE_LIST_EMPTY 835 -#define OPER_KILLCLONES_SYNTAX 836 -#define OPER_KILLCLONES_UNKNOWN_NICK 837 -#define OPER_KILLCLONES_KILLED 838 -#define OPER_KILLCLONES_KILLED_AKILL 839 -#define OPER_EXCEPTION_SYNTAX 840 -#define OPER_EXCEPTION_ADD_SYNTAX 841 -#define OPER_EXCEPTION_DEL_SYNTAX 842 -#define OPER_EXCEPTION_MOVE_SYNTAX 843 -#define OPER_EXCEPTION_ALREADY_PRESENT 844 -#define OPER_EXCEPTION_TOO_MANY 845 -#define OPER_EXCEPTION_ADDED 846 -#define OPER_EXCEPTION_MOVED 847 -#define OPER_EXCEPTION_NO_SUCH_ENTRY 848 -#define OPER_EXCEPTION_NOT_FOUND 849 -#define OPER_EXCEPTION_NO_MATCH 850 -#define OPER_EXCEPTION_EMPTY 851 -#define OPER_EXCEPTION_DELETED 852 -#define OPER_EXCEPTION_DELETED_ONE 853 -#define OPER_EXCEPTION_DELETED_SEVERAL 854 -#define OPER_EXCEPTION_LIST_HEADER 855 -#define OPER_EXCEPTION_LIST_COLHEAD 856 -#define OPER_EXCEPTION_LIST_FORMAT 857 -#define OPER_EXCEPTION_VIEW_FORMAT 858 -#define OPER_EXCEPTION_INVALID_LIMIT 859 -#define OPER_EXCEPTION_INVALID_HOSTMASK 860 -#define OPER_SESSION_SYNTAX 861 -#define OPER_SESSION_LIST_SYNTAX 862 -#define OPER_SESSION_VIEW_SYNTAX 863 -#define OPER_SESSION_INVALID_THRESHOLD 864 -#define OPER_SESSION_NOT_FOUND 865 -#define OPER_SESSION_LIST_HEADER 866 -#define OPER_SESSION_LIST_COLHEAD 867 -#define OPER_SESSION_LIST_FORMAT 868 -#define OPER_SESSION_VIEW_FORMAT 869 -#define NEWS_LOGON_TEXT 870 -#define NEWS_OPER_TEXT 871 -#define NEWS_LOGON_SYNTAX 872 -#define NEWS_LOGON_LIST_HEADER 873 -#define NEWS_LOGON_LIST_ENTRY 874 -#define NEWS_LOGON_LIST_NONE 875 -#define NEWS_LOGON_ADD_SYNTAX 876 -#define NEWS_LOGON_ADD_FULL 877 -#define NEWS_LOGON_ADDED 878 -#define NEWS_LOGON_DEL_SYNTAX 879 -#define NEWS_LOGON_DEL_NOT_FOUND 880 -#define NEWS_LOGON_DELETED 881 -#define NEWS_LOGON_DEL_NONE 882 -#define NEWS_LOGON_DELETED_ALL 883 -#define NEWS_OPER_SYNTAX 884 -#define NEWS_OPER_LIST_HEADER 885 -#define NEWS_OPER_LIST_ENTRY 886 -#define NEWS_OPER_LIST_NONE 887 -#define NEWS_OPER_ADD_SYNTAX 888 -#define NEWS_OPER_ADD_FULL 889 -#define NEWS_OPER_ADDED 890 -#define NEWS_OPER_DEL_SYNTAX 891 -#define NEWS_OPER_DEL_NOT_FOUND 892 -#define NEWS_OPER_DELETED 893 -#define NEWS_OPER_DEL_NONE 894 -#define NEWS_OPER_DELETED_ALL 895 -#define NEWS_HELP_LOGON 896 -#define NEWS_HELP_OPER 897 -#define STAT_SERVERS_REMOVE_SERV_FIRST 898 -#define STAT_SERVERS_SERVER_EXISTS 899 -#define STAT_SERVERS_SYNTAX 900 -#define STAT_SERVERS_STATS_TOTAL 901 -#define STAT_SERVERS_STATS_ON_OFFLINE 902 -#define STAT_SERVERS_LASTQUIT_WAS 903 -#define STAT_SERVERS_LIST_HEADER 904 -#define STAT_SERVERS_LIST_FORMAT 905 -#define STAT_SERVERS_LIST_RESULTS 906 -#define STAT_SERVERS_VIEW_HEADER_ONLINE 907 -#define STAT_SERVERS_VIEW_HEADER_OFFLINE 908 -#define STAT_SERVERS_VIEW_LASTJOIN 909 -#define STAT_SERVERS_VIEW_LASTQUIT 910 -#define STAT_SERVERS_VIEW_QUITMSG 911 -#define STAT_SERVERS_VIEW_USERS_OPERS 912 -#define STAT_SERVERS_VIEW_RESULTS 913 -#define STAT_SERVERS_DELETE_SYNTAX 914 -#define STAT_SERVERS_DELETE_DONE 915 -#define STAT_SERVERS_COPY_SYNTAX 916 -#define STAT_SERVERS_COPY_DONE 917 -#define STAT_SERVERS_RENAME_SYNTAX 918 -#define STAT_SERVERS_RENAME_DONE 919 -#define STAT_USERS_SYNTAX 920 -#define STAT_USERS_TOTUSERS 921 -#define STAT_USERS_TOTOPERS 922 -#define STAT_USERS_SERVUSERS 923 -#define STAT_USERS_SERVOPERS 924 -#define NICK_HELP 925 -#define NICK_HELP_EXPIRES 926 -#define NICK_HELP_WARNING 927 -#define NICK_HELP_COMMANDS 928 -#define NICK_HELP_COMMANDS_AUTH 929 -#define NICK_HELP_COMMANDS_IDENTIFY 930 -#define NICK_HELP_COMMANDS_SENDPASS 931 -#define NICK_HELP_COMMANDS_DROP 932 -#define NICK_HELP_COMMANDS_LINK 933 -#define NICK_HELP_COMMANDS_OLDLINK 934 -#define NICK_HELP_COMMANDS_ACCESS 935 -#define NICK_HELP_COMMANDS_AJOIN 936 -#define NICK_HELP_COMMANDS_SET 937 -#define NICK_HELP_COMMANDS_LIST 938 -#define NICK_HELP_COMMANDS_LISTCHANS 939 -#define NICK_HELP_REGISTER 940 -#define NICK_HELP_REGISTER_EMAIL 941 -#define NICK_HELP_REGISTER_EMAIL_REQ 942 -#define NICK_HELP_REGISTER_EMAIL_AUTH 943 -#define NICK_HELP_REGISTER_END 944 -#define NICK_HELP_AUTH 945 -#define NICK_HELP_SENDAUTH 946 -#define NICK_HELP_SENDPASS 947 -#define NICK_HELP_IDENTIFY 948 -#define NICK_HELP_DROP 949 -#define NICK_HELP_DROP_LINK 950 -#define NICK_HELP_DROP_END 951 -#define NICK_HELP_OLD_LINK 952 -#define NICK_HELP_LINK 953 -#define NICK_HELP_OLD_UNLINK 954 -#define NICK_HELP_UNLINK 955 -#define NICK_HELP_LISTLINKS 956 -#define NICK_HELP_ACCESS 957 -#define NICK_HELP_SET 958 -#define NICK_HELP_SET_OPTION_MAINNICK 959 -#define NICK_HELP_SET_END 960 -#define NICK_HELP_SET_PASSWORD 961 -#define NICK_HELP_SET_LANGUAGE 962 -#define NICK_HELP_SET_URL 963 -#define NICK_HELP_SET_EMAIL 964 -#define NICK_HELP_SET_INFO 965 -#define NICK_HELP_SET_KILL 966 -#define NICK_HELP_SET_SECURE 967 -#define NICK_HELP_SET_PRIVATE 968 -#define NICK_HELP_SET_HIDE 969 -#define NICK_HELP_SET_TIMEZONE 970 -#define NICK_HELP_SET_MAINNICK 971 -#define NICK_HELP_UNSET 972 -#define NICK_HELP_UNSET_REQ_EMAIL 973 -#define NICK_HELP_RECOVER 974 -#define NICK_HELP_RELEASE 975 -#define NICK_HELP_GHOST 976 -#define NICK_HELP_INFO 977 -#define NICK_HELP_INFO_AUTH 978 -#define NICK_HELP_LISTCHANS 979 -#define NICK_HELP_LIST 980 -#define NICK_HELP_LIST_OPERSONLY 981 -#define NICK_HELP_LISTEMAIL 982 -#define NICK_HELP_STATUS 983 -#define NICK_HELP_AJOIN 984 -#define NICK_HELP_AJOIN_END 985 -#define NICK_HELP_AJOIN_END_CHANSERV 986 -#define NICK_OPER_HELP_COMMANDS 987 -#define NICK_OPER_HELP_COMMANDS_DROPEMAIL 988 -#define NICK_OPER_HELP_COMMANDS_GETPASS 989 -#define NICK_OPER_HELP_COMMANDS_FORBID 990 -#define NICK_OPER_HELP_COMMANDS_LISTLINKS 991 -#define NICK_OPER_HELP_COMMANDS_SETAUTH 992 -#define NICK_OPER_HELP_COMMANDS_END 993 -#define NICK_OPER_HELP_DROPNICK 994 -#define NICK_OPER_HELP_DROPEMAIL 995 -#define NICK_OPER_HELP_SET 996 -#define NICK_OPER_HELP_SET_NOEXPIRE 997 -#define NICK_OPER_HELP_UNSET 998 -#define NICK_OPER_HELP_OLD_UNLINK 999 -#define NICK_OPER_HELP_UNLINK 1000 -#define NICK_OPER_HELP_OLD_LISTLINKS 1001 -#define NICK_OPER_HELP_LISTLINKS 1002 -#define NICK_OPER_HELP_ACCESS 1003 -#define NICK_OPER_HELP_INFO 1004 -#define NICK_OPER_HELP_LISTCHANS 1005 -#define NICK_OPER_HELP_LIST 1006 -#define NICK_OPER_HELP_LIST_AUTH 1007 -#define NICK_OPER_HELP_LISTEMAIL 1008 -#define NICK_OPER_HELP_LISTEMAIL_AUTH 1009 -#define NICK_OPER_HELP_GETPASS 1010 -#define NICK_OPER_HELP_FORBID 1011 -#define NICK_OPER_HELP_SUSPEND 1012 -#define NICK_OPER_HELP_UNSUSPEND 1013 -#define NICK_OPER_HELP_AJOIN 1014 -#define NICK_OPER_HELP_SETAUTH 1015 -#define NICK_OPER_HELP_GETAUTH 1016 -#define NICK_OPER_HELP_CLEARAUTH 1017 -#define CHAN_HELP_REQSOP_LEVXOP 1018 -#define CHAN_HELP_REQSOP_LEV 1019 -#define CHAN_HELP_REQSOP_XOP 1020 -#define CHAN_HELP_REQAOP_LEVXOP 1021 -#define CHAN_HELP_REQAOP_LEV 1022 -#define CHAN_HELP_REQAOP_XOP 1023 -#define CHAN_HELP_REQHOP_LEVXOP 1024 -#define CHAN_HELP_REQHOP_LEV 1025 -#define CHAN_HELP_REQHOP_XOP 1026 -#define CHAN_HELP_REQVOP_LEVXOP 1027 -#define CHAN_HELP_REQVOP_LEV 1028 -#define CHAN_HELP_REQVOP_XOP 1029 -#define CHAN_HELP 1030 -#define CHAN_HELP_EXPIRES 1031 -#define CHAN_HELP_COMMANDS 1032 -#define CHAN_HELP_COMMANDS_SENDPASS 1033 -#define CHAN_HELP_COMMANDS_DROP 1034 -#define CHAN_HELP_COMMANDS_LIST 1035 -#define CHAN_HELP_COMMANDS_AKICK 1036 -#define CHAN_HELP_COMMANDS_LEVELS 1037 -#define CHAN_HELP_COMMANDS_XOP 1038 -#define CHAN_HELP_COMMANDS_HOP 1039 -#define CHAN_HELP_COMMANDS_OPVOICE 1040 -#define CHAN_HELP_COMMANDS_HALFOP 1041 -#define CHAN_HELP_COMMANDS_PROTECT 1042 -#define CHAN_HELP_COMMANDS_INVITE 1043 -#define CHAN_HELP_REGISTER 1044 -#define CHAN_HELP_REGISTER_ADMINONLY 1045 -#define CHAN_HELP_SENDPASS 1046 -#define CHAN_HELP_IDENTIFY 1047 -#define CHAN_HELP_DROP 1048 -#define CHAN_HELP_SET 1049 -#define CHAN_HELP_SET_FOUNDER 1050 -#define CHAN_HELP_SET_SUCCESSOR 1051 -#define CHAN_HELP_SET_PASSWORD 1052 -#define CHAN_HELP_SET_DESC 1053 -#define CHAN_HELP_SET_URL 1054 -#define CHAN_HELP_SET_EMAIL 1055 -#define CHAN_HELP_SET_ENTRYMSG 1056 -#define CHAN_HELP_SET_KEEPTOPIC 1057 -#define CHAN_HELP_SET_TOPICLOCK 1058 -#define CHAN_HELP_SET_MLOCK 1059 -#define CHAN_HELP_SET_HIDE 1060 -#define CHAN_HELP_SET_PRIVATE 1061 -#define CHAN_HELP_SET_RESTRICTED 1062 -#define CHAN_HELP_SET_SECURE 1063 -#define CHAN_HELP_SET_SECUREOPS 1064 -#define CHAN_HELP_SET_LEAVEOPS 1065 -#define CHAN_HELP_SET_OPNOTICE 1066 -#define CHAN_HELP_SET_ENFORCE 1067 -#define CHAN_HELP_UNSET 1068 -#define CHAN_HELP_SOP 1069 -#define CHAN_HELP_SOP_MID1 1070 -#define CHAN_HELP_SOP_MID1_CHANPROT 1071 -#define CHAN_HELP_SOP_MID2 1072 -#define CHAN_HELP_SOP_MID2_HALFOP 1073 -#define CHAN_HELP_SOP_END 1074 -#define CHAN_HELP_AOP 1075 -#define CHAN_HELP_AOP_MID 1076 -#define CHAN_HELP_AOP_MID_HALFOP 1077 -#define CHAN_HELP_AOP_END 1078 -#define CHAN_HELP_HOP 1079 -#define CHAN_HELP_VOP 1080 -#define CHAN_HELP_ACCESS 1081 -#define CHAN_HELP_ACCESS_XOP 1082 -#define CHAN_HELP_ACCESS_XOP_HALFOP 1083 -#define CHAN_HELP_ACCESS_LEVELS 1084 -#define CHAN_HELP_ACCESS_LEVELS_HALFOP 1085 -#define CHAN_HELP_ACCESS_LEVELS_END 1086 -#define CHAN_HELP_LEVELS 1087 -#define CHAN_HELP_LEVELS_XOP 1088 -#define CHAN_HELP_LEVELS_XOP_HOP 1089 -#define CHAN_HELP_LEVELS_END 1090 -#define CHAN_HELP_LEVELS_DESC 1091 -#define CHAN_HELP_AKICK 1092 -#define CHAN_HELP_INFO 1093 -#define CHAN_HELP_LIST 1094 -#define CHAN_HELP_LIST_OPERSONLY 1095 -#define CHAN_HELP_OP 1096 -#define CHAN_HELP_DEOP 1097 -#define CHAN_HELP_VOICE 1098 -#define CHAN_HELP_DEVOICE 1099 -#define CHAN_HELP_HALFOP 1100 -#define CHAN_HELP_DEHALFOP 1101 -#define CHAN_HELP_PROTECT 1102 -#define CHAN_HELP_DEPROTECT 1103 -#define CHAN_HELP_INVITE 1104 -#define CHAN_HELP_UNBAN 1105 -#define CHAN_HELP_KICK 1106 -#define CHAN_HELP_KICK_PROTECTED 1107 -#define CHAN_HELP_TOPIC 1108 -#define CHAN_HELP_CLEAR 1109 -#define CHAN_HELP_CLEAR_EXCEPTIONS 1110 -#define CHAN_HELP_CLEAR_INVITES 1111 -#define CHAN_HELP_CLEAR_MID 1112 -#define CHAN_HELP_CLEAR_HALFOPS 1113 -#define CHAN_HELP_CLEAR_END 1114 -#define CHAN_HELP_STATUS 1115 -#define CHAN_OPER_HELP_COMMANDS 1116 -#define CHAN_OPER_HELP_COMMANDS_GETPASS 1117 -#define CHAN_OPER_HELP_COMMANDS_FORBID 1118 -#define CHAN_OPER_HELP_COMMANDS_END 1119 -#define CHAN_OPER_HELP_DROP 1120 -#define CHAN_OPER_HELP_SET 1121 -#define CHAN_OPER_HELP_SET_NOEXPIRE 1122 -#define CHAN_OPER_HELP_UNSET 1123 -#define CHAN_OPER_HELP_INFO 1124 -#define CHAN_OPER_HELP_LIST 1125 -#define CHAN_OPER_HELP_GETPASS 1126 -#define CHAN_OPER_HELP_FORBID 1127 -#define CHAN_OPER_HELP_SUSPEND 1128 -#define CHAN_OPER_HELP_UNSUSPEND 1129 -#define MEMO_HELP 1130 -#define MEMO_HELP_EXPIRES 1131 -#define MEMO_HELP_END_LEVELS 1132 -#define MEMO_HELP_END_XOP 1133 -#define MEMO_HELP_COMMANDS 1134 -#define MEMO_HELP_COMMANDS_FORWARD 1135 -#define MEMO_HELP_COMMANDS_SAVE 1136 -#define MEMO_HELP_COMMANDS_DEL 1137 -#define MEMO_HELP_COMMANDS_IGNORE 1138 -#define MEMO_HELP_SEND 1139 -#define MEMO_HELP_LIST 1140 -#define MEMO_HELP_LIST_EXPIRE 1141 -#define MEMO_HELP_READ 1142 -#define MEMO_HELP_SAVE 1143 -#define MEMO_HELP_DEL 1144 -#define MEMO_HELP_SET 1145 -#define MEMO_HELP_SET_OPTION_FORWARD 1146 -#define MEMO_HELP_SET_END 1147 -#define MEMO_HELP_SET_NOTIFY 1148 -#define MEMO_HELP_SET_LIMIT 1149 -#define MEMO_HELP_INFO 1150 -#define MEMO_OPER_HELP_COMMANDS 1151 -#define MEMO_OPER_HELP_SET_LIMIT 1152 -#define MEMO_OPER_HELP_INFO 1153 -#define MEMO_HELP_FORWARD 1154 -#define MEMO_HELP_SET_FORWARD 1155 -#define MEMO_HELP_IGNORE 1156 -#define OPER_HELP 1157 -#define OPER_HELP_COMMANDS 1158 -#define OPER_HELP_COMMANDS_SERVOPER 1159 -#define OPER_HELP_COMMANDS_AKILL 1160 -#define OPER_HELP_COMMANDS_EXCLUDE 1161 -#define OPER_HELP_COMMANDS_SLINE 1162 -#define OPER_HELP_COMMANDS_SESSION 1163 -#define OPER_HELP_COMMANDS_NEWS 1164 -#define OPER_HELP_COMMANDS_SERVADMIN 1165 -#define OPER_HELP_COMMANDS_SERVROOT 1166 -#define OPER_HELP_COMMANDS_RAW 1167 -#define OPER_HELP_GLOBAL 1168 -#define OPER_HELP_STATS 1169 -#define OPER_HELP_SERVERMAP 1170 -#define OPER_HELP_OPER 1171 -#define OPER_HELP_ADMIN 1172 -#define OPER_HELP_MODE 1173 -#define OPER_HELP_CLEARMODES 1174 -#define OPER_HELP_CLEARCHAN 1175 -#define OPER_HELP_KICK 1176 -#define OPER_HELP_AKILL 1177 -#define OPER_HELP_AKILL_OPERMAXEXPIRY 1178 -#define OPER_HELP_AKILL_END 1179 -#define OPER_HELP_AKILLCHAN 1180 -#define OPER_HELP_EXCLUDE 1181 -#define OPER_HELP_SGLINE 1182 -#define OPER_HELP_SQLINE 1183 -#define OPER_HELP_SQLINE_KILL 1184 -#define OPER_HELP_SQLINE_NOKILL 1185 -#define OPER_HELP_SQLINE_IGNOREOPERS 1186 -#define OPER_HELP_SQLINE_END 1187 -#define OPER_HELP_SZLINE 1188 -#define OPER_HELP_EXCEPTION 1189 -#define OPER_HELP_SESSION 1190 -#define OPER_HELP_SU 1191 -#define OPER_HELP_SET 1192 -#define OPER_HELP_SET_READONLY 1193 -#define OPER_HELP_SET_DEBUG 1194 -#define OPER_HELP_SET_SUPASS 1195 -#define OPER_HELP_JUPE 1196 -#define OPER_HELP_RAW 1197 -#define OPER_HELP_UPDATE 1198 -#define OPER_HELP_QUIT 1199 -#define OPER_HELP_SHUTDOWN 1200 -#define OPER_HELP_RESTART 1201 -#define OPER_HELP_REHASH 1202 -#define OPER_HELP_KILLCLONES 1203 -#define STAT_HELP 1204 -#define STAT_HELP_COMMANDS 1205 -#define STAT_HELP_SERVERS 1206 -#define STAT_HELP_USERS 1207 -#define STAT_OPER_HELP_SERVERS 1208 +#define OPER_SLINE_MASK_TOO_GENERAL 794 +#define OPER_SLINE_ADDED 795 +#define OPER_SLINE_REMOVED 796 +#define OPER_SLINE_NOT_FOUND 797 +#define OPER_SLINE_LIST_HEADER 798 +#define OPER_SLINE_LIST_FORMAT 799 +#define OPER_SLINE_VIEW_FORMAT 800 +#define OPER_SLINE_VIEW_UNUSED_FORMAT 801 +#define OPER_SLINE_COUNT 802 +#define OPER_SZLINE_NOT_AVAIL 803 +#define OPER_SU_SYNTAX 804 +#define OPER_SU_NO_PASSWORD 805 +#define OPER_SU_SUCCEEDED 806 +#define OPER_SU_FAILED 807 +#define OPER_SET_SYNTAX 808 +#define OPER_SET_IGNORE_ON 809 +#define OPER_SET_IGNORE_OFF 810 +#define OPER_SET_IGNORE_ERROR 811 +#define OPER_SET_READONLY_ON 812 +#define OPER_SET_READONLY_OFF 813 +#define OPER_SET_READONLY_ERROR 814 +#define OPER_SET_DEBUG_ON 815 +#define OPER_SET_DEBUG_OFF 816 +#define OPER_SET_DEBUG_LEVEL 817 +#define OPER_SET_DEBUG_ERROR 818 +#define OPER_SET_SUPASS_FAILED 819 +#define OPER_SET_SUPASS_OK 820 +#define OPER_SET_SUPASS_NONE 821 +#define OPER_SET_UNKNOWN_OPTION 822 +#define OPER_JUPE_SYNTAX 823 +#define OPER_JUPE_INVALID_NAME 824 +#define OPER_JUPE_ALREADY_JUPED 825 +#define OPER_RAW_SYNTAX 826 +#define OPER_UPDATE_SYNTAX 827 +#define OPER_UPDATE_FORCE_FAILED 828 +#define OPER_UPDATING 829 +#define OPER_UPDATE_COMPLETE 830 +#define OPER_UPDATE_FAILED 831 +#define OPER_REHASHING 832 +#define OPER_REHASHED 833 +#define OPER_REHASH_ERROR 834 +#define OPER_IGNORE_LIST 835 +#define OPER_IGNORE_LIST_EMPTY 836 +#define OPER_KILLCLONES_SYNTAX 837 +#define OPER_KILLCLONES_UNKNOWN_NICK 838 +#define OPER_KILLCLONES_KILLED 839 +#define OPER_KILLCLONES_KILLED_AKILL 840 +#define OPER_EXCEPTION_SYNTAX 841 +#define OPER_EXCEPTION_ADD_SYNTAX 842 +#define OPER_EXCEPTION_DEL_SYNTAX 843 +#define OPER_EXCEPTION_MOVE_SYNTAX 844 +#define OPER_EXCEPTION_ALREADY_PRESENT 845 +#define OPER_EXCEPTION_TOO_MANY 846 +#define OPER_EXCEPTION_ADDED 847 +#define OPER_EXCEPTION_MOVED 848 +#define OPER_EXCEPTION_NO_SUCH_ENTRY 849 +#define OPER_EXCEPTION_NOT_FOUND 850 +#define OPER_EXCEPTION_NO_MATCH 851 +#define OPER_EXCEPTION_EMPTY 852 +#define OPER_EXCEPTION_DELETED 853 +#define OPER_EXCEPTION_DELETED_ONE 854 +#define OPER_EXCEPTION_DELETED_SEVERAL 855 +#define OPER_EXCEPTION_LIST_HEADER 856 +#define OPER_EXCEPTION_LIST_COLHEAD 857 +#define OPER_EXCEPTION_LIST_FORMAT 858 +#define OPER_EXCEPTION_VIEW_FORMAT 859 +#define OPER_EXCEPTION_INVALID_LIMIT 860 +#define OPER_EXCEPTION_INVALID_HOSTMASK 861 +#define OPER_SESSION_SYNTAX 862 +#define OPER_SESSION_LIST_SYNTAX 863 +#define OPER_SESSION_VIEW_SYNTAX 864 +#define OPER_SESSION_INVALID_THRESHOLD 865 +#define OPER_SESSION_NOT_FOUND 866 +#define OPER_SESSION_LIST_HEADER 867 +#define OPER_SESSION_LIST_COLHEAD 868 +#define OPER_SESSION_LIST_FORMAT 869 +#define OPER_SESSION_VIEW_FORMAT 870 +#define NEWS_LOGON_TEXT 871 +#define NEWS_OPER_TEXT 872 +#define NEWS_LOGON_SYNTAX 873 +#define NEWS_LOGON_LIST_HEADER 874 +#define NEWS_LOGON_LIST_ENTRY 875 +#define NEWS_LOGON_LIST_NONE 876 +#define NEWS_LOGON_ADD_SYNTAX 877 +#define NEWS_LOGON_ADD_FULL 878 +#define NEWS_LOGON_ADDED 879 +#define NEWS_LOGON_DEL_SYNTAX 880 +#define NEWS_LOGON_DEL_NOT_FOUND 881 +#define NEWS_LOGON_DELETED 882 +#define NEWS_LOGON_DEL_NONE 883 +#define NEWS_LOGON_DELETED_ALL 884 +#define NEWS_OPER_SYNTAX 885 +#define NEWS_OPER_LIST_HEADER 886 +#define NEWS_OPER_LIST_ENTRY 887 +#define NEWS_OPER_LIST_NONE 888 +#define NEWS_OPER_ADD_SYNTAX 889 +#define NEWS_OPER_ADD_FULL 890 +#define NEWS_OPER_ADDED 891 +#define NEWS_OPER_DEL_SYNTAX 892 +#define NEWS_OPER_DEL_NOT_FOUND 893 +#define NEWS_OPER_DELETED 894 +#define NEWS_OPER_DEL_NONE 895 +#define NEWS_OPER_DELETED_ALL 896 +#define NEWS_HELP_LOGON 897 +#define NEWS_HELP_OPER 898 +#define STAT_SERVERS_REMOVE_SERV_FIRST 899 +#define STAT_SERVERS_SERVER_EXISTS 900 +#define STAT_SERVERS_SYNTAX 901 +#define STAT_SERVERS_STATS_TOTAL 902 +#define STAT_SERVERS_STATS_ON_OFFLINE 903 +#define STAT_SERVERS_LASTQUIT_WAS 904 +#define STAT_SERVERS_LIST_HEADER 905 +#define STAT_SERVERS_LIST_FORMAT 906 +#define STAT_SERVERS_LIST_RESULTS 907 +#define STAT_SERVERS_VIEW_HEADER_ONLINE 908 +#define STAT_SERVERS_VIEW_HEADER_OFFLINE 909 +#define STAT_SERVERS_VIEW_LASTJOIN 910 +#define STAT_SERVERS_VIEW_LASTQUIT 911 +#define STAT_SERVERS_VIEW_QUITMSG 912 +#define STAT_SERVERS_VIEW_USERS_OPERS 913 +#define STAT_SERVERS_VIEW_RESULTS 914 +#define STAT_SERVERS_DELETE_SYNTAX 915 +#define STAT_SERVERS_DELETE_DONE 916 +#define STAT_SERVERS_COPY_SYNTAX 917 +#define STAT_SERVERS_COPY_DONE 918 +#define STAT_SERVERS_RENAME_SYNTAX 919 +#define STAT_SERVERS_RENAME_DONE 920 +#define STAT_USERS_SYNTAX 921 +#define STAT_USERS_TOTUSERS 922 +#define STAT_USERS_TOTOPERS 923 +#define STAT_USERS_SERVUSERS 924 +#define STAT_USERS_SERVOPERS 925 +#define NICK_HELP 926 +#define NICK_HELP_EXPIRES 927 +#define NICK_HELP_WARNING 928 +#define NICK_HELP_COMMANDS 929 +#define NICK_HELP_COMMANDS_AUTH 930 +#define NICK_HELP_COMMANDS_IDENTIFY 931 +#define NICK_HELP_COMMANDS_SENDPASS 932 +#define NICK_HELP_COMMANDS_DROP 933 +#define NICK_HELP_COMMANDS_LINK 934 +#define NICK_HELP_COMMANDS_OLDLINK 935 +#define NICK_HELP_COMMANDS_ACCESS 936 +#define NICK_HELP_COMMANDS_AJOIN 937 +#define NICK_HELP_COMMANDS_SET 938 +#define NICK_HELP_COMMANDS_LIST 939 +#define NICK_HELP_COMMANDS_LISTCHANS 940 +#define NICK_HELP_REGISTER 941 +#define NICK_HELP_REGISTER_EMAIL 942 +#define NICK_HELP_REGISTER_EMAIL_REQ 943 +#define NICK_HELP_REGISTER_EMAIL_AUTH 944 +#define NICK_HELP_REGISTER_END 945 +#define NICK_HELP_AUTH 946 +#define NICK_HELP_SENDAUTH 947 +#define NICK_HELP_SENDPASS 948 +#define NICK_HELP_IDENTIFY 949 +#define NICK_HELP_DROP 950 +#define NICK_HELP_DROP_LINK 951 +#define NICK_HELP_DROP_END 952 +#define NICK_HELP_OLD_LINK 953 +#define NICK_HELP_LINK 954 +#define NICK_HELP_OLD_UNLINK 955 +#define NICK_HELP_UNLINK 956 +#define NICK_HELP_LISTLINKS 957 +#define NICK_HELP_ACCESS 958 +#define NICK_HELP_SET 959 +#define NICK_HELP_SET_OPTION_MAINNICK 960 +#define NICK_HELP_SET_END 961 +#define NICK_HELP_SET_PASSWORD 962 +#define NICK_HELP_SET_LANGUAGE 963 +#define NICK_HELP_SET_URL 964 +#define NICK_HELP_SET_EMAIL 965 +#define NICK_HELP_SET_INFO 966 +#define NICK_HELP_SET_KILL 967 +#define NICK_HELP_SET_SECURE 968 +#define NICK_HELP_SET_PRIVATE 969 +#define NICK_HELP_SET_HIDE 970 +#define NICK_HELP_SET_TIMEZONE 971 +#define NICK_HELP_SET_MAINNICK 972 +#define NICK_HELP_UNSET 973 +#define NICK_HELP_UNSET_REQ_EMAIL 974 +#define NICK_HELP_RECOVER 975 +#define NICK_HELP_RELEASE 976 +#define NICK_HELP_GHOST 977 +#define NICK_HELP_INFO 978 +#define NICK_HELP_INFO_AUTH 979 +#define NICK_HELP_LISTCHANS 980 +#define NICK_HELP_LIST 981 +#define NICK_HELP_LIST_OPERSONLY 982 +#define NICK_HELP_LISTEMAIL 983 +#define NICK_HELP_STATUS 984 +#define NICK_HELP_AJOIN 985 +#define NICK_HELP_AJOIN_END 986 +#define NICK_HELP_AJOIN_END_CHANSERV 987 +#define NICK_OPER_HELP_COMMANDS 988 +#define NICK_OPER_HELP_COMMANDS_DROPEMAIL 989 +#define NICK_OPER_HELP_COMMANDS_GETPASS 990 +#define NICK_OPER_HELP_COMMANDS_FORBID 991 +#define NICK_OPER_HELP_COMMANDS_LISTLINKS 992 +#define NICK_OPER_HELP_COMMANDS_SETAUTH 993 +#define NICK_OPER_HELP_COMMANDS_END 994 +#define NICK_OPER_HELP_DROPNICK 995 +#define NICK_OPER_HELP_DROPEMAIL 996 +#define NICK_OPER_HELP_SET 997 +#define NICK_OPER_HELP_SET_NOEXPIRE 998 +#define NICK_OPER_HELP_UNSET 999 +#define NICK_OPER_HELP_OLD_UNLINK 1000 +#define NICK_OPER_HELP_UNLINK 1001 +#define NICK_OPER_HELP_OLD_LISTLINKS 1002 +#define NICK_OPER_HELP_LISTLINKS 1003 +#define NICK_OPER_HELP_ACCESS 1004 +#define NICK_OPER_HELP_INFO 1005 +#define NICK_OPER_HELP_LISTCHANS 1006 +#define NICK_OPER_HELP_LIST 1007 +#define NICK_OPER_HELP_LIST_AUTH 1008 +#define NICK_OPER_HELP_LISTEMAIL 1009 +#define NICK_OPER_HELP_LISTEMAIL_AUTH 1010 +#define NICK_OPER_HELP_GETPASS 1011 +#define NICK_OPER_HELP_FORBID 1012 +#define NICK_OPER_HELP_SUSPEND 1013 +#define NICK_OPER_HELP_UNSUSPEND 1014 +#define NICK_OPER_HELP_AJOIN 1015 +#define NICK_OPER_HELP_SETAUTH 1016 +#define NICK_OPER_HELP_GETAUTH 1017 +#define NICK_OPER_HELP_CLEARAUTH 1018 +#define CHAN_HELP_REQSOP_LEVXOP 1019 +#define CHAN_HELP_REQSOP_LEV 1020 +#define CHAN_HELP_REQSOP_XOP 1021 +#define CHAN_HELP_REQAOP_LEVXOP 1022 +#define CHAN_HELP_REQAOP_LEV 1023 +#define CHAN_HELP_REQAOP_XOP 1024 +#define CHAN_HELP_REQHOP_LEVXOP 1025 +#define CHAN_HELP_REQHOP_LEV 1026 +#define CHAN_HELP_REQHOP_XOP 1027 +#define CHAN_HELP_REQVOP_LEVXOP 1028 +#define CHAN_HELP_REQVOP_LEV 1029 +#define CHAN_HELP_REQVOP_XOP 1030 +#define CHAN_HELP 1031 +#define CHAN_HELP_EXPIRES 1032 +#define CHAN_HELP_COMMANDS 1033 +#define CHAN_HELP_COMMANDS_SENDPASS 1034 +#define CHAN_HELP_COMMANDS_DROP 1035 +#define CHAN_HELP_COMMANDS_LIST 1036 +#define CHAN_HELP_COMMANDS_AKICK 1037 +#define CHAN_HELP_COMMANDS_LEVELS 1038 +#define CHAN_HELP_COMMANDS_XOP 1039 +#define CHAN_HELP_COMMANDS_HOP 1040 +#define CHAN_HELP_COMMANDS_OPVOICE 1041 +#define CHAN_HELP_COMMANDS_HALFOP 1042 +#define CHAN_HELP_COMMANDS_PROTECT 1043 +#define CHAN_HELP_COMMANDS_INVITE 1044 +#define CHAN_HELP_REGISTER 1045 +#define CHAN_HELP_REGISTER_ADMINONLY 1046 +#define CHAN_HELP_SENDPASS 1047 +#define CHAN_HELP_IDENTIFY 1048 +#define CHAN_HELP_DROP 1049 +#define CHAN_HELP_SET 1050 +#define CHAN_HELP_SET_FOUNDER 1051 +#define CHAN_HELP_SET_SUCCESSOR 1052 +#define CHAN_HELP_SET_PASSWORD 1053 +#define CHAN_HELP_SET_DESC 1054 +#define CHAN_HELP_SET_URL 1055 +#define CHAN_HELP_SET_EMAIL 1056 +#define CHAN_HELP_SET_ENTRYMSG 1057 +#define CHAN_HELP_SET_KEEPTOPIC 1058 +#define CHAN_HELP_SET_TOPICLOCK 1059 +#define CHAN_HELP_SET_MLOCK 1060 +#define CHAN_HELP_SET_HIDE 1061 +#define CHAN_HELP_SET_PRIVATE 1062 +#define CHAN_HELP_SET_RESTRICTED 1063 +#define CHAN_HELP_SET_SECURE 1064 +#define CHAN_HELP_SET_SECUREOPS 1065 +#define CHAN_HELP_SET_LEAVEOPS 1066 +#define CHAN_HELP_SET_OPNOTICE 1067 +#define CHAN_HELP_SET_ENFORCE 1068 +#define CHAN_HELP_UNSET 1069 +#define CHAN_HELP_SOP 1070 +#define CHAN_HELP_SOP_MID1 1071 +#define CHAN_HELP_SOP_MID1_CHANPROT 1072 +#define CHAN_HELP_SOP_MID2 1073 +#define CHAN_HELP_SOP_MID2_HALFOP 1074 +#define CHAN_HELP_SOP_END 1075 +#define CHAN_HELP_AOP 1076 +#define CHAN_HELP_AOP_MID 1077 +#define CHAN_HELP_AOP_MID_HALFOP 1078 +#define CHAN_HELP_AOP_END 1079 +#define CHAN_HELP_HOP 1080 +#define CHAN_HELP_VOP 1081 +#define CHAN_HELP_ACCESS 1082 +#define CHAN_HELP_ACCESS_XOP 1083 +#define CHAN_HELP_ACCESS_XOP_HALFOP 1084 +#define CHAN_HELP_ACCESS_LEVELS 1085 +#define CHAN_HELP_ACCESS_LEVELS_HALFOP 1086 +#define CHAN_HELP_ACCESS_LEVELS_END 1087 +#define CHAN_HELP_LEVELS 1088 +#define CHAN_HELP_LEVELS_XOP 1089 +#define CHAN_HELP_LEVELS_XOP_HOP 1090 +#define CHAN_HELP_LEVELS_END 1091 +#define CHAN_HELP_LEVELS_DESC 1092 +#define CHAN_HELP_AKICK 1093 +#define CHAN_HELP_INFO 1094 +#define CHAN_HELP_LIST 1095 +#define CHAN_HELP_LIST_OPERSONLY 1096 +#define CHAN_HELP_OP 1097 +#define CHAN_HELP_DEOP 1098 +#define CHAN_HELP_VOICE 1099 +#define CHAN_HELP_DEVOICE 1100 +#define CHAN_HELP_HALFOP 1101 +#define CHAN_HELP_DEHALFOP 1102 +#define CHAN_HELP_PROTECT 1103 +#define CHAN_HELP_DEPROTECT 1104 +#define CHAN_HELP_INVITE 1105 +#define CHAN_HELP_UNBAN 1106 +#define CHAN_HELP_KICK 1107 +#define CHAN_HELP_KICK_PROTECTED 1108 +#define CHAN_HELP_TOPIC 1109 +#define CHAN_HELP_CLEAR 1110 +#define CHAN_HELP_CLEAR_EXCEPTIONS 1111 +#define CHAN_HELP_CLEAR_INVITES 1112 +#define CHAN_HELP_CLEAR_MID 1113 +#define CHAN_HELP_CLEAR_HALFOPS 1114 +#define CHAN_HELP_CLEAR_END 1115 +#define CHAN_HELP_STATUS 1116 +#define CHAN_OPER_HELP_COMMANDS 1117 +#define CHAN_OPER_HELP_COMMANDS_GETPASS 1118 +#define CHAN_OPER_HELP_COMMANDS_FORBID 1119 +#define CHAN_OPER_HELP_COMMANDS_END 1120 +#define CHAN_OPER_HELP_DROP 1121 +#define CHAN_OPER_HELP_SET 1122 +#define CHAN_OPER_HELP_SET_NOEXPIRE 1123 +#define CHAN_OPER_HELP_UNSET 1124 +#define CHAN_OPER_HELP_INFO 1125 +#define CHAN_OPER_HELP_LIST 1126 +#define CHAN_OPER_HELP_GETPASS 1127 +#define CHAN_OPER_HELP_FORBID 1128 +#define CHAN_OPER_HELP_SUSPEND 1129 +#define CHAN_OPER_HELP_UNSUSPEND 1130 +#define MEMO_HELP 1131 +#define MEMO_HELP_EXPIRES 1132 +#define MEMO_HELP_END_LEVELS 1133 +#define MEMO_HELP_END_XOP 1134 +#define MEMO_HELP_COMMANDS 1135 +#define MEMO_HELP_COMMANDS_FORWARD 1136 +#define MEMO_HELP_COMMANDS_SAVE 1137 +#define MEMO_HELP_COMMANDS_DEL 1138 +#define MEMO_HELP_COMMANDS_IGNORE 1139 +#define MEMO_HELP_SEND 1140 +#define MEMO_HELP_LIST 1141 +#define MEMO_HELP_LIST_EXPIRE 1142 +#define MEMO_HELP_READ 1143 +#define MEMO_HELP_SAVE 1144 +#define MEMO_HELP_DEL 1145 +#define MEMO_HELP_SET 1146 +#define MEMO_HELP_SET_OPTION_FORWARD 1147 +#define MEMO_HELP_SET_END 1148 +#define MEMO_HELP_SET_NOTIFY 1149 +#define MEMO_HELP_SET_LIMIT 1150 +#define MEMO_HELP_INFO 1151 +#define MEMO_OPER_HELP_COMMANDS 1152 +#define MEMO_OPER_HELP_SET_LIMIT 1153 +#define MEMO_OPER_HELP_INFO 1154 +#define MEMO_HELP_FORWARD 1155 +#define MEMO_HELP_SET_FORWARD 1156 +#define MEMO_HELP_IGNORE 1157 +#define OPER_HELP 1158 +#define OPER_HELP_COMMANDS 1159 +#define OPER_HELP_COMMANDS_SERVOPER 1160 +#define OPER_HELP_COMMANDS_AKILL 1161 +#define OPER_HELP_COMMANDS_EXCLUDE 1162 +#define OPER_HELP_COMMANDS_SLINE 1163 +#define OPER_HELP_COMMANDS_SESSION 1164 +#define OPER_HELP_COMMANDS_NEWS 1165 +#define OPER_HELP_COMMANDS_SERVADMIN 1166 +#define OPER_HELP_COMMANDS_SERVROOT 1167 +#define OPER_HELP_COMMANDS_RAW 1168 +#define OPER_HELP_GLOBAL 1169 +#define OPER_HELP_STATS 1170 +#define OPER_HELP_SERVERMAP 1171 +#define OPER_HELP_OPER 1172 +#define OPER_HELP_ADMIN 1173 +#define OPER_HELP_MODE 1174 +#define OPER_HELP_CLEARMODES 1175 +#define OPER_HELP_CLEARCHAN 1176 +#define OPER_HELP_KICK 1177 +#define OPER_HELP_AKILL 1178 +#define OPER_HELP_AKILL_OPERMAXEXPIRY 1179 +#define OPER_HELP_AKILL_END 1180 +#define OPER_HELP_AKILLCHAN 1181 +#define OPER_HELP_EXCLUDE 1182 +#define OPER_HELP_SGLINE 1183 +#define OPER_HELP_SQLINE 1184 +#define OPER_HELP_SQLINE_KILL 1185 +#define OPER_HELP_SQLINE_NOKILL 1186 +#define OPER_HELP_SQLINE_IGNOREOPERS 1187 +#define OPER_HELP_SQLINE_END 1188 +#define OPER_HELP_SZLINE 1189 +#define OPER_HELP_EXCEPTION 1190 +#define OPER_HELP_SESSION 1191 +#define OPER_HELP_SU 1192 +#define OPER_HELP_SET 1193 +#define OPER_HELP_SET_READONLY 1194 +#define OPER_HELP_SET_DEBUG 1195 +#define OPER_HELP_SET_SUPASS 1196 +#define OPER_HELP_JUPE 1197 +#define OPER_HELP_RAW 1198 +#define OPER_HELP_UPDATE 1199 +#define OPER_HELP_QUIT 1200 +#define OPER_HELP_SHUTDOWN 1201 +#define OPER_HELP_RESTART 1202 +#define OPER_HELP_REHASH 1203 +#define OPER_HELP_KILLCLONES 1204 +#define STAT_HELP 1205 +#define STAT_HELP_COMMANDS 1206 +#define STAT_HELP_SERVERS 1207 +#define STAT_HELP_USERS 1208 +#define STAT_OPER_HELP_SERVERS 1209 -#define NUM_STRINGS 1209 +#define NUM_STRINGS 1210 diff -uNr ircservices-5.0.53/misc.c ircservices-5.0.54/misc.c --- ircservices-5.0.53/misc.c 2005-05-12 23:36:56 +0900 +++ ircservices-5.0.54/misc.c 2005-08-16 12:42:19 +0900 @@ -362,23 +362,23 @@ * Returns nonzero if valid, zero if not. */ -int valid_nick(const unsigned char *str) +int valid_nick(const char *str) { - if (!(valid_nick_table[*str] & 1)) + if (!(valid_nick_table[*(const unsigned char *)str] & 1)) return 0; while (*++str) { - if (!(valid_nick_table[*str] & 2)) + if (!(valid_nick_table[*(const unsigned char *)str] & 2)) return 0; } return 1; } -int valid_chan(const unsigned char *str) +int valid_chan(const char *str) { - if (!(valid_chan_table[*str] & 1)) + if (!(valid_chan_table[*(const unsigned char *)str] & 1)) return 0; while (*++str) { - if (!(valid_chan_table[*str] & 2)) + if (!(valid_chan_table[*(const unsigned char *)str] & 2)) return 0; } return 1; diff -uNr ircservices-5.0.53/modules/chanserv/access.c ircservices-5.0.54/modules/chanserv/access.c --- ircservices-5.0.53/modules/chanserv/access.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/chanserv/access.c 2005-08-16 12:42:20 +0900 @@ -24,7 +24,6 @@ /*************************************************************************/ /* Array of all access levels: */ -EXPORT_ARRAY(struct levelinfo_, levelinfo) LevelInfo levelinfo[] = { /* Dummy entry for channel owner; flags filled in by init_access */ { CA_AUTOOWNER, ACCLEV_FOUNDER, "", -1, @@ -241,6 +240,16 @@ } /*************************************************************************/ + +/* Return the levelinfo[] array. Used by the httpd/dbaccess module. */ + +EXPORT_FUNC(get_levelinfo) +LevelInfo *get_levelinfo(void) +{ + return levelinfo; +} + +/*************************************************************************/ /************************** Local-use routines ***************************/ /*************************************************************************/ diff -uNr ircservices-5.0.53/modules/chanserv/chanserv.h ircservices-5.0.54/modules/chanserv/chanserv.h --- ircservices-5.0.53/modules/chanserv/chanserv.h 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/chanserv/chanserv.h 2005-08-16 12:42:20 +0900 @@ -212,6 +212,7 @@ const char *subcommand); E int check_channel_limit(NickGroupInfo *ngi, int *max_ret); E void reset_levels(ChannelInfo *ci, int set); +E struct levelinfo_ *get_levelinfo(void); /*************************************************************************/ diff -uNr ircservices-5.0.53/modules/chanserv/check.c ircservices-5.0.54/modules/chanserv/check.c --- ircservices-5.0.53/modules/chanserv/check.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/chanserv/check.c 2005-08-16 12:42:20 +0900 @@ -285,7 +285,7 @@ if (is_services_admin(user)) return 0; - i = call_callback_5(module, cb_check_kick, user, c, ci, &mask, &reason); + i = call_callback_5(module, cb_check_kick, user, chan, ci, &mask, &reason); if (i == 2) return 0; else if (i == 1) diff -uNr ircservices-5.0.53/modules/chanserv/set.c ircservices-5.0.54/modules/chanserv/set.c --- ircservices-5.0.53/modules/chanserv/set.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/chanserv/set.c 2005-08-16 12:42:20 +0900 @@ -23,6 +23,7 @@ static int cb_set = -1; static int cb_set_mlock = -1; +static int cb_unset = -1; /*************************************************************************/ @@ -152,6 +153,8 @@ notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); } else if (!is_servadmin && !check_access_cmd(u, ci, "SET", cmd)) { notice_lang(s_ChanServ, u, ACCESS_DENIED); + } else if (call_callback_3(module, cb_unset, u, ci, cmd) > 0) { + return; } else if (stricmp(cmd, "SUCCESSOR") == 0) { if (!is_servadmin && !is_founder(u, ci)) { notice_lang(s_ChanServ, u, CHAN_IDENTIFY_REQUIRED,s_ChanServ,chan); @@ -570,7 +573,8 @@ module = my_module; cb_set = register_callback(module, "SET"); cb_set_mlock = register_callback(module, "SET MLOCK"); - if (cb_set < 0 || cb_set_mlock < 0) { + cb_unset = register_callback(module, "UNSET"); + if (cb_set < 0 || cb_set_mlock < 0 || cb_unset < 0) { module_log("set: Unable to register callbacks"); exit_set(); return 0; @@ -582,6 +586,7 @@ void exit_set() { + unregister_callback(module, cb_unset); unregister_callback(module, cb_set_mlock); unregister_callback(module, cb_set); } diff -uNr ircservices-5.0.53/modules/database/fileutil.c ircservices-5.0.54/modules/database/fileutil.c --- ircservices-5.0.53/modules/database/fileutil.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/database/fileutil.c 2005-08-16 12:42:20 +0900 @@ -245,7 +245,7 @@ /*************************************************************************/ -int read_int8(uint8 *ret, dbFILE *f) +int read_int8(int8 *ret, dbFILE *f) { int c = fgetc(f->fp); if (c == EOF) @@ -254,7 +254,13 @@ return 0; } -int write_int8(uint8 val, dbFILE *f) +/* Alternative version of read_int8() to avoid GCC's pointer signedness + * warnings when reading into an unsigned variable: */ +int read_uint8(uint8 *ret, dbFILE *f) { + return read_int8((int8 *)ret, f); +} + +int write_int8(int8 val, dbFILE *f) { if (fputc(val, f->fp) == EOF) return -1; @@ -263,9 +269,9 @@ /*************************************************************************/ -/* These two are inline to help out {read,write}_string. */ +/* These are inline to help out {read,write}_string. */ -inline int read_int16(uint16 *ret, dbFILE *f) +inline int read_int16(int16 *ret, dbFILE *f) { int c1, c2; @@ -277,7 +283,11 @@ return 0; } -inline int write_int16(uint16 val, dbFILE *f) +inline int read_uint16(uint16 *ret, dbFILE *f) { + return read_int16((int16 *)ret, f); +} + +inline int write_int16(int16 val, dbFILE *f) { fputc((val>>8), f->fp); if (fputc(val, f->fp) == EOF) @@ -287,7 +297,7 @@ /*************************************************************************/ -int read_int32(uint32 *ret, dbFILE *f) +int read_int32(int32 *ret, dbFILE *f) { int c1, c2, c3, c4; @@ -301,7 +311,11 @@ return 0; } -int write_int32(uint32 val, dbFILE *f) +int read_uint32(uint32 *ret, dbFILE *f) { + return read_int32((int32 *)ret, f); +} + +int write_int32(int32 val, dbFILE *f) { fputc((val>>24), f->fp); fputc((val>>16), f->fp); @@ -365,7 +379,7 @@ char *s; uint16 len; - if (read_int16(&len, f) < 0) + if (read_uint16(&len, f) < 0) return -1; if (len == 0) { *ret = NULL; diff -uNr ircservices-5.0.53/modules/database/fileutil.h ircservices-5.0.54/modules/database/fileutil.h --- ircservices-5.0.53/modules/database/fileutil.h 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/database/fileutil.h 2005-08-16 12:42:20 +0900 @@ -37,12 +37,15 @@ #define write_db(f,buf,len) (fwrite((buf),1,(len),(f)->fp)) #define getc_db(f) (fgetc((f)->fp)) -E int read_int8(uint8 *ret, dbFILE *f); -E int write_int8(uint8 val, dbFILE *f); -E int read_int16(uint16 *ret, dbFILE *f); -E int write_int16(uint16 val, dbFILE *f); -E int read_int32(uint32 *ret, dbFILE *f); -E int write_int32(uint32 val, dbFILE *f); +E int read_int8(int8 *ret, dbFILE *f); +E int read_uint8(uint8 *ret, dbFILE *f); /* to avoid type warnings */ +E int write_int8(int8 val, dbFILE *f); +E int read_int16(int16 *ret, dbFILE *f); +E int read_uint16(uint16 *ret, dbFILE *f); +E int write_int16(int16 val, dbFILE *f); +E int read_int32(int32 *ret, dbFILE *f); +E int read_uint32(uint32 *ret, dbFILE *f); +E int write_int32(int32 val, dbFILE *f); E int read_time(time_t *ret, dbFILE *f); E int write_time(time_t val, dbFILE *f); E int read_ptr(void **ret, dbFILE *f); diff -uNr ircservices-5.0.53/modules/database/version4.c ircservices-5.0.54/modules/database/version4.c --- ircservices-5.0.53/modules/database/version4.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/database/version4.c 2005-08-16 12:42:20 +0900 @@ -288,7 +288,7 @@ memos = smalloc(sizeof(Memo) * ngi->memos.memos_count); ngi->memos.memos = memos; ARRAY_FOREACH (i, ngi->memos.memos) { - SAFE(read_int32(&ngi->memos.memos[i].number, f)); + SAFE(read_uint32(&ngi->memos.memos[i].number, f)); SAFE(read_int16(&ngi->memos.memos[i].flags, f)); SAFE(read_int32(&tmp32, f)); ngi->memos.memos[i].time = tmp32; @@ -362,7 +362,7 @@ free(ni->last_realmask); /* copied from last_usermask */ SAFE(read_string(&ni->last_realmask, f)); if (ver >= 19) - SAFE(read_int32(&ni->id_stamp, f)); + SAFE(read_uint32(&ni->id_stamp, f)); if (ni == &dummy_ni) free(ni->last_realmask); return 0; @@ -383,7 +383,7 @@ NickGroupInfo dummy_ngi; /* for nonexisting nick groups */ int i; - SAFE(read_int32(&group, f)); + SAFE(read_uint32(&group, f)); if (debug >= 2) module_log("debug: loading nickgroup extension %u", group); if (!group) { @@ -1013,7 +1013,7 @@ memos = smalloc(sizeof(Memo) * ci->memos.memos_count); ci->memos.memos = memos; ARRAY_FOREACH (i, ci->memos.memos) { - SAFE(read_int32(&ci->memos.memos[i].number, f)); + SAFE(read_uint32(&ci->memos.memos[i].number, f)); SAFE(read_int16(&ci->memos.memos[i].flags, f)); SAFE(read_int32(&tmp32, f)); ci->memos.memos[i].time = tmp32; @@ -1415,10 +1415,10 @@ /* Local copies of OperServ data. */ -static int maxusercnt; -static time_t maxusertime; -static int8 no_supass; -static char supass[PASSMAX]; +static int local_maxusercnt; +static time_t local_maxusertime; +static int8 local_no_supass; +static char local_supass[PASSMAX]; /*************************************************************************/ @@ -1426,16 +1426,16 @@ { switch (what) { case OSDATA_MAXUSERCNT: - *((int *)ret) = maxusercnt; + *((int *)ret) = local_maxusercnt; return 1; case OSDATA_MAXUSERTIME: - *((time_t *)ret) = maxusertime; + *((time_t *)ret) = local_maxusertime; return 1; case OSDATA_SUPASS: - if (no_supass) + if (local_no_supass) *((char **)ret) = NULL; else - *((char **)ret) = supass; + *((char **)ret) = local_supass; return 1; } return 0; @@ -1447,18 +1447,18 @@ { switch (what) { case OSDATA_MAXUSERCNT: - maxusercnt = *((int *)ptr); + local_maxusercnt = *((int *)ptr); return 1; case OSDATA_MAXUSERTIME: - maxusertime = *((time_t *)ptr); + local_maxusertime = *((time_t *)ptr); return 1; case OSDATA_SUPASS: if (ptr) { - no_supass = 0; - memcpy(supass, ptr, PASSMAX); + local_no_supass = 0; + memcpy(local_supass, ptr, PASSMAX); } else { - no_supass = 1; - memset(supass, 0, PASSMAX); + local_no_supass = 1; + memset(local_supass, 0, PASSMAX); } return 1; } @@ -1481,10 +1481,10 @@ services_admins = services_opers = NULL; services_admins_count = services_opers_count = 0; - maxusercnt = 0; - maxusertime = 0; - no_supass = 1; - memset(supass, 0, sizeof(supass)); + local_maxusercnt = 0; + local_maxusertime = 0; + local_no_supass = 1; + memset(local_supass, 0, sizeof(local_supass)); SAFE(read_int16(&n, f)); for (i = 0; i < n; i++) { @@ -1506,14 +1506,14 @@ } if (ver >= 7) { int32 tmp32; - SAFE(read_int32(&maxusercnt, f)); + SAFE(read_int32(&local_maxusercnt, f)); SAFE(read_int32(&tmp32, f)); - maxusertime = tmp32; + local_maxusertime = tmp32; } if (ver >= 9) { - SAFE(read_int8(&no_supass, f)); - if (!no_supass) - SAFE(read_buffer(supass, f)); + SAFE(read_int8(&local_no_supass, f)); + if (!local_no_supass) + SAFE(read_buffer(local_supass, f)); } close_db(f); @@ -1562,11 +1562,11 @@ ARRAY_FOREACH (i, services_opers) SAFE(write_string(services_opers[i], f)); - SAFE(write_int32(maxusercnt, f)); - SAFE(write_int32(maxusertime, f)); - SAFE(write_int8(no_supass, f)); - if (!no_supass) - SAFE(write_buffer(supass, f)); + SAFE(write_int32(local_maxusercnt, f)); + SAFE(write_int32(local_maxusertime, f)); + SAFE(write_int8(local_no_supass, f)); + if (!local_no_supass) + SAFE(write_buffer(local_supass, f)); SAFE(close_db(f)); return 0; diff -uNr ircservices-5.0.53/modules/encryption/md5.c ircservices-5.0.54/modules/encryption/md5.c --- ircservices-5.0.53/modules/encryption/md5.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/encryption/md5.c 2005-08-16 12:42:20 +0900 @@ -346,7 +346,7 @@ MD5Init(&context); MD5Update(&context, (unsigned char *)src, len); - MD5Final(dest, &context); + MD5Final((unsigned char *)dest, &context); return 0; } diff -uNr ircservices-5.0.53/modules/httpd/auth-ip.c ircservices-5.0.54/modules/httpd/auth-ip.c --- ircservices-5.0.53/modules/httpd/auth-ip.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/httpd/auth-ip.c 2005-08-16 12:42:20 +0900 @@ -160,7 +160,7 @@ if (strcmp(param, "*") == 0) { /* All-hosts wildcard -> equivalent to 0.0.0.0/0 */ - ip = "\0\0\0\0"; + ip = (const uint8 *)"\0\0\0\0"; mask = 0; } else if ((ip = pack_ip(param)) != NULL) { /* IP address -> okay as is */ @@ -181,7 +181,7 @@ if (hp->h_addrtype == AF_INET) { for (i = 0; hp->h_addr_list[i]; i++) { char ipbuf[16]; - ip = hp->h_addr_list[i]; + ip = (const uint8 *)hp->h_addr_list[i]; snprintf(ipbuf, sizeof(ipbuf), "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]); if (strlen(ipbuf) > 15) { diff -uNr ircservices-5.0.53/modules/httpd/dbaccess.c ircservices-5.0.54/modules/httpd/dbaccess.c --- ircservices-5.0.53/modules/httpd/dbaccess.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/httpd/dbaccess.c 2005-08-16 12:42:20 +0900 @@ -934,16 +934,15 @@ chanhtml); } else if (mode == MODE_LEVELS) { - LevelInfo *levelinfo; /* imported from ChanServ */ + LevelInfo *(*get_levelinfo)(void), *levelinfo; /* from ChanServ */ - levelinfo = get_module_symbol(module_chanserv, "levelinfo"); + get_levelinfo = get_module_symbol(module_chanserv, "get_levelinfo"); sockprintf(c->socket, "Access levels for channel \"%s\"" "

    Access levels" " for channel \"%s\"

    ", chanhtml, chanhtml); - if (!levelinfo) { - module_log("Unable to resolve symbol `levelinfo' in module" - " `chanserv/main'"); + if (!get_levelinfo || !(levelinfo = get_levelinfo())) { + module_log("Unable to retrieve ChanServ level data"); sockprintf(c->socket, "

    Error accessing" " level data!"); } else { diff -uNr ircservices-5.0.53/modules/httpd/main.c ircservices-5.0.54/modules/httpd/main.c --- ircservices-5.0.53/modules/httpd/main.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/modules/httpd/main.c 2005-08-16 12:42:20 +0900 @@ -760,7 +760,8 @@ char *s, *t; long port; uint8 *ip; - char ipbuf[15+6+1]; /* aaa.bbb.ccc.ddd:ppppp\0 */ + char *ipstr; + char ipbuf[15+1]; /* aaa.bbb.ccc.ddd\0 */ int recursing = 0, i; static struct listento_ *new_ListenTo; static int new_ListenTo_count; @@ -819,16 +820,17 @@ if (strcmp(param, "*") == 0) { /* "*" -> all addresses (NULL string) */ - ip = NULL; + ipstr = NULL; } else if ((ip = pack_ip(param)) != NULL) { /* IP address -> normalize (no leading zeros, etc.) */ - snprintf(ipbuf, sizeof(ipbuf), "%u.%u.%u.%u", ip[0],ip[1],ip[2],ip[3]); + snprintf(ipbuf, sizeof(ipbuf), "%u.%u.%u.%u", + ip[0], ip[1], ip[2], ip[3]); if (strlen(ipbuf) > 15) { config_error(filename, linenum, "BUG: strlen(ipbuf) > 15 [%s]", ipbuf); return 0; } - ip = ipbuf; + ipstr = ipbuf; } else { /* hostname -> check for double recursion, then look up and * recursively add addresses */ @@ -844,7 +846,7 @@ if ((hp = gethostbyname(param)) != NULL) { if (hp->h_addrtype == AF_INET) { for (i = 0; hp->h_addr_list[i]; i++) { - ip = hp->h_addr_list[i]; + ip = (uint8 *)hp->h_addr_list[i]; snprintf(ipbuf, sizeof(ipbuf), "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]); if (strlen(ipbuf) > 15) { @@ -874,8 +876,8 @@ i = new_ListenTo_count; ARRAY_EXTEND(new_ListenTo); - if (ip) - strcpy(new_ListenTo[i].ip, ip); /* safe: strlen(ip)<16 checked above */ + if (ipstr) + strcpy(new_ListenTo[i].ip, ipstr);/*safe: strlen(ip)<16 checked above*/ else memset(new_ListenTo[i].ip, 0, sizeof(new_ListenTo[i].ip)); new_ListenTo[i].port = port; diff -uNr ircservices-5.0.53/modules/misc/xml-export.c ircservices-5.0.54/modules/misc/xml-export.c --- ircservices-5.0.53/modules/misc/xml-export.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/misc/xml-export.c 2005-08-16 12:42:21 +0900 @@ -65,8 +65,9 @@ * in a static buffer. Trailing null characters are removed. */ -static char *xml_quotebuf(const unsigned char *buf, int size) +static char *xml_quotebuf(const char *buf_, int size) { + const unsigned char *buf = (unsigned char *)buf_; static char retbuf[BUFSIZE*6+1]; uint32 i; char *d; diff -uNr ircservices-5.0.53/modules/nickserv/oldlink.c ircservices-5.0.54/modules/nickserv/oldlink.c --- ircservices-5.0.53/modules/nickserv/oldlink.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/nickserv/oldlink.c 2005-08-16 12:42:21 +0900 @@ -215,7 +215,7 @@ char *nick = strtok(NULL, " "); char *pass = strtok_remaining(); int msg = -1; /* -1 = flag meaning "error, abort" */ - char *msgparam[2]; + char *msgparam[2] = {NULL, NULL}; int i; if (readonly && !is_services_admin(u)) { diff -uNr ircservices-5.0.53/modules/nickserv/set.c ircservices-5.0.54/modules/nickserv/set.c --- ircservices-5.0.53/modules/nickserv/set.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/nickserv/set.c 2005-08-16 12:42:21 +0900 @@ -21,6 +21,7 @@ static Module *module; static int cb_set = -1; static int cb_set_email = -1; +static int cb_unset = -1; /*************************************************************************/ @@ -146,6 +147,8 @@ notice_lang(s_NickServ, u, INTERNAL_ERROR); } else if (!is_servadmin && !user_identified(u)) { notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); + } else if (call_callback_4(module, cb_unset, u, ni, ngi, cmd) > 0) { + return; } else if (stricmp(cmd, "URL") == 0) { do_set_url(u, ngi, NULL); } else if (stricmp(cmd, "EMAIL") == 0) { @@ -571,7 +574,8 @@ module = my_module; cb_set = register_callback(module, "SET"); cb_set_email = register_callback(module, "SET EMAIL"); - if (cb_set < 0 || cb_set_email < 0) { + cb_unset = register_callback(module, "UNSET"); + if (cb_set < 0 || cb_set_email < 0 || cb_unset < 0) { module_log("set: Unable to register callbacks"); exit_set(); return 0; @@ -583,6 +587,7 @@ void exit_set() { + unregister_callback(module, cb_unset); unregister_callback(module, cb_set_email); unregister_callback(module, cb_set); } diff -uNr ircservices-5.0.53/modules/operserv/akill.c ircservices-5.0.54/modules/operserv/akill.c --- ircservices-5.0.53/modules/operserv/akill.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/operserv/akill.c 2005-08-16 12:42:21 +0900 @@ -232,7 +232,8 @@ /*************************************************************************/ -static int check_add_akill(User *u, char *mask, time_t *expiry_ptr); +static int check_add_akill(User *u, uint8 type, char *mask, + time_t *expiry_ptr); static void do_add_akill(User *u, uint8 type, MaskData *md); static void do_del_akill(User *u, uint8 type, MaskData *md); @@ -275,11 +276,14 @@ /*************************************************************************/ -static int check_add_akill(User *u, char *mask, time_t *expiry_ptr) +static int check_add_akill(User *u, uint8 type, char *mask, time_t *expiry_ptr) { char *s, *t; time_t len; +#ifdef CLEAN_COMPILE + type = type; +#endif if (strchr(mask, '!')) { notice_lang(s_OperServ, u, OPER_AKILL_NO_NICK); notice_lang(s_OperServ, u, BAD_USERHOST_MASK); @@ -294,11 +298,11 @@ /* Make sure mask is not too general. */ *s++ = 0; if (strchr(mask,'*') != NULL && mask[strspn(mask,"*?")] == 0 - && ((t = strchr(mask,'?')) == NULL || strchr(t,'?') == NULL) + && ((t = strchr(mask,'?')) == NULL || strchr(t+1,'?') == NULL) ) { /* Username part matches anything; check host part */ if (strchr(s,'*') != NULL && s[strspn(s,"*?.")] == 0 - && ((t = strchr(mask,'.')) == NULL || strchr(t,'.') == NULL) + && ((t = strchr(mask,'.')) == NULL || strchr(t+1,'.') == NULL) ) { /* Hostname mask matches anything or nearly anything, so * disallow mask. */ @@ -452,7 +456,8 @@ /*************************************************************************/ -static int check_add_exclude(User *u, char *mask, time_t *expiry_ptr); +static int check_add_exclude(User *u, uint8 type, char *mask, + time_t *expiry_ptr); static void do_add_exclude(User *u, uint8 type, MaskData *md); static void do_del_exclude(User *u, uint8 type, MaskData *md); @@ -495,10 +500,14 @@ /*************************************************************************/ -static int check_add_exclude(User *u, char *mask, time_t *expiry_ptr) +static int check_add_exclude(User *u, uint8 type, char *mask, + time_t *expiry_ptr) { char *s; +#ifdef CLEAN_COMPILE + type = type; +#endif s = strchr(mask, '@'); if (!s || s == mask || s[1] == 0) { notice_lang(s_OperServ, u, BAD_USERHOST_MASK); diff -uNr ircservices-5.0.53/modules/operserv/maskdata.c ircservices-5.0.54/modules/operserv/maskdata.c --- ircservices-5.0.53/modules/operserv/maskdata.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/operserv/maskdata.c 2005-08-16 12:42:21 +0900 @@ -83,7 +83,7 @@ /* Run command-specific checks. */ if (info->check_add_mask - && !info->check_add_mask(u, mask, &expires) + && !info->check_add_mask(u, info->md_type, mask, &expires) ) { return; } diff -uNr ircservices-5.0.53/modules/operserv/maskdata.h ircservices-5.0.54/modules/operserv/maskdata.h --- ircservices-5.0.53/modules/operserv/maskdata.h 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/operserv/maskdata.h 2005-08-16 12:42:21 +0900 @@ -112,7 +112,7 @@ /* Check whether the mask is appropriate; return 1 if OK, else 0. * The mask and expiry time may be modified. If NULL, any mask and * expiry time are accepted. */ - int (*check_add_mask)(User *u, char *mask, time_t *expiry_ptr); + int (*check_add_mask)(User *u, uint8 type, char *mask, time_t *expiry_ptr); /* Operations to perform on mask addition. If NULL, nothing is done. */ void (*do_add_mask)(User *u, uint8 type, MaskData *md); /* Operations to perform on mask deletion. If NULL, nothing is done. */ diff -uNr ircservices-5.0.53/modules/operserv/sline.c ircservices-5.0.54/modules/operserv/sline.c --- ircservices-5.0.53/modules/operserv/sline.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/operserv/sline.c 2005-08-16 12:42:21 +0900 @@ -310,6 +310,8 @@ do_sline(MD_SZLINE, u); } +static int check_add_sline(User *u, uint8 type, char *mask, + time_t *expiry_ptr); static void do_add_sline(User *u, uint8 type, MaskData *md); static void do_del_sline(User *u, uint8 type, MaskData *md); @@ -333,7 +335,7 @@ OPER_SLINE_COUNT, NULL, /* function to mangle masks for add/delete */ - NULL, /* function to check validity of mask on add */ + check_add_sline, /* function to check validity of mask on add */ do_add_sline, /* function to call on mask addition */ do_del_sline, /* function to call on mask removal */ NULL, /* function to call for unknown commands */ @@ -366,6 +368,28 @@ /*************************************************************************/ +static int check_add_sline(User *u, uint8 type, char *mask, time_t *expiry_ptr) +{ + char *t; + +#ifdef CLEAN_COMPILE + expiry_ptr = expiry_ptr; +#endif + /* Make sure mask is not too general. */ + if (strchr(mask,'*') != NULL && mask[strspn(mask,"*?")] == 0 + && ((t = strchr(mask,'?')) == NULL || strchr(t+1,'?') == NULL) + ) { + char cmdname[7]; + snprintf(cmdname, sizeof(cmdname), "S%cLINE", (char)type); + notice_lang(s_OperServ, u, OPER_SLINE_MASK_TOO_GENERAL, cmdname); + return 0; + } + + return 1; +} + +/*************************************************************************/ + static void do_add_sline(User *u, uint8 type, MaskData *md) { if (WallOSSline) { diff -uNr ircservices-5.0.53/modules/protocol/ptlink.c ircservices-5.0.54/modules/protocol/ptlink.c --- ircservices-5.0.53/modules/protocol/ptlink.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/protocol/ptlink.c 2005-08-16 12:42:21 +0900 @@ -516,9 +516,11 @@ /*************************************************************************/ -static int do_check_kick(User *user, Channel *c, ChannelInfo *ci, +static int do_check_kick(User *user, const char *chan, ChannelInfo *ci, char **mask_ret, const char **reason_ret) { + Channel *c = get_channel(chan); + /* Don't let plain opers into +A (admin only) channels */ if ((((c?c->mode:0) | (ci?ci->mlock_on:0)) & chanmode_admins_only) && !(user->mode & usermode_admin) diff -uNr ircservices-5.0.53/modules/protocol/trircd.c ircservices-5.0.54/modules/protocol/trircd.c --- ircservices-5.0.53/modules/protocol/trircd.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/protocol/trircd.c 2005-08-16 12:42:22 +0900 @@ -159,7 +159,7 @@ static int langhash[NUM_LANGS]; static struct { int lang; - const unsigned char *str; + const char *str; } langhash_init[] = { { LANG_EN_US, "English" }, { LANG_JA_EUC, "Japanese-EUC" }, @@ -181,7 +181,7 @@ memset(langhash, 0, sizeof(langhash)); for (i = 0; i < lenof(langhash_init); i++) { int hashval = 0; - const unsigned char *s = langhash_init[i].str; + const unsigned char *s = (const unsigned char *)langhash_init[i].str; while (*s) hashval += *s++ & 0xDF; langhash[langhash_init[i].lang] = hashval % HASH_MODULUS; diff -uNr ircservices-5.0.53/modules/protocol/unreal.c ircservices-5.0.54/modules/protocol/unreal.c --- ircservices-5.0.53/modules/protocol/unreal.c 2005-05-12 23:36:58 +0900 +++ ircservices-5.0.54/modules/protocol/unreal.c 2005-08-16 12:42:22 +0900 @@ -1354,9 +1354,12 @@ * secure-only, and no-hiding channel modes here. */ -static int do_check_kick(User *user, Channel *c, ChannelInfo *ci, +static int do_check_kick(User *user, const char *chan, ChannelInfo *ci, char **mask_ret, const char **reason_ret) { + /* Retrieve the channel's Channel record, if present */ + Channel *c = get_channel(chan); + /* Don't do anything to service pseudoclients */ if (user->mode & mode_char_to_flag('S', MODE_USER)) return 2; @@ -1386,6 +1389,7 @@ return 1; } + /* Let other processing continue as usual */ return 0; } diff -uNr ircservices-5.0.53/sockets.c ircservices-5.0.54/sockets.c --- ircservices-5.0.53/sockets.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/sockets.c 2005-08-16 12:42:20 +0900 @@ -577,7 +577,7 @@ #if HAVE_GETHOSTBYNAME struct hostent *hp; #endif - char *addr; + uint8 *addr; struct sockaddr_in sa, lsa; int fd, i; @@ -720,7 +720,7 @@ #if HAVE_GETHOSTBYNAME struct hostent *hp; #endif - char *addr; + uint8 *addr; struct sockaddr_in sa; int fd, i; diff -uNr ircservices-5.0.53/tools/convert-epona.c ircservices-5.0.54/tools/convert-epona.c --- ircservices-5.0.53/tools/convert-epona.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/tools/convert-epona.c 2005-08-16 12:42:20 +0900 @@ -107,7 +107,7 @@ memos = scalloc(sizeof(Memo), ngi->memos.memos_count); ngi->memos.memos = memos; for (j = 0; j < ngi->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&tmp16, f)); if (tmp16 & 1) memos->flags |= MF_UNREAD; @@ -401,7 +401,7 @@ memos = scalloc(sizeof(Memo), ci->memos.memos_count); ci->memos.memos = memos; for (j = 0; j < ci->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&tmp16, f)); if (tmp16 & 1) memos->flags |= MF_UNREAD; @@ -539,7 +539,7 @@ if (ver >= 13) { /* proxy (open-relay) host cache */ for (i = 0; i < 1024; i++) { - char c; + int8 c; SAFE(read_int8(&c, f)); while (c) { SAFE(read_string(&s, f)); /* host */ diff -uNr ircservices-5.0.53/tools/convert-ptlink.c ircservices-5.0.54/tools/convert-ptlink.c --- ircservices-5.0.53/tools/convert-ptlink.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/tools/convert-ptlink.c 2005-08-16 12:42:20 +0900 @@ -176,7 +176,7 @@ memos = scalloc(sizeof(*memos), ngi->memos.memos_count); ngi->memos.memos = memos; for (j = 0; j < ngi->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&tmp16, f)); if (tmp16 & 1) memos->flags |= MF_UNREAD; @@ -356,7 +356,7 @@ memcpy(ci->founderpass, passbuf, sizeof(passbuf)); SAFE(read_string(&ci->desc, f)); if (!ci->desc) - (char *)ci->desc = (char *)""; + ci->desc = (char *)""; SAFE(read_string(&ci->url, f)); SAFE(read_string(&ci->email, f)); SAFE(read_int32(&tmp32, f)); @@ -478,7 +478,7 @@ memos = scalloc(sizeof(Memo), ci->memos.memos_count); ci->memos.memos = memos; for (j = 0; j < ci->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&tmp16, f)); if (tmp16 & 1) memos->flags |= MF_UNREAD; diff -uNr ircservices-5.0.53/tools/convert-trircd.c ircservices-5.0.54/tools/convert-trircd.c --- ircservices-5.0.53/tools/convert-trircd.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/tools/convert-trircd.c 2005-08-16 12:42:20 +0900 @@ -125,7 +125,7 @@ memos = scalloc(sizeof(Memo), ngi->memos.memos_count); ngi->memos.memos = memos; for (j = 0; j < ngi->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&tmp16, f)); if (tmp16 & 1) memos->flags |= MF_UNREAD; @@ -475,7 +475,7 @@ memos = scalloc(sizeof(Memo), ci->memos.memos_count); ci->memos.memos = memos; for (j = 0; j < ci->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&memos->flags, f)); SAFE(read_int32(&tmp32, f)); memos->time = tmp32; diff -uNr ircservices-5.0.53/tools/convert-ver8.c ircservices-5.0.54/tools/convert-ver8.c --- ircservices-5.0.53/tools/convert-ver8.c 2005-05-12 23:36:57 +0900 +++ ircservices-5.0.54/tools/convert-ver8.c 2005-08-16 12:42:20 +0900 @@ -123,7 +123,7 @@ memos = scalloc(sizeof(Memo), ngi->memos.memos_count); ngi->memos.memos = memos; for (j = 0; j < ngi->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&tmp16, f)); if (tmp16 & 1) memos->flags |= MF_UNREAD; @@ -423,7 +423,7 @@ memos = scalloc(sizeof(Memo), ci->memos.memos_count); ci->memos.memos = memos; for (j = 0; j < ci->memos.memos_count; j++, memos++) { - SAFE(read_int32(&memos->number, f)); + SAFE(read_uint32(&memos->number, f)); SAFE(read_int16(&memos->flags, f)); SAFE(read_int32(&tmp32, f)); memos->time = tmp32; diff -uNr ircservices-5.0.53/version.sh ircservices-5.0.54/version.sh --- ircservices-5.0.53/version.sh 2005-05-12 23:33:21 +0900 +++ ircservices-5.0.54/version.sh 2005-08-16 11:19:58 +0900 @@ -6,7 +6,7 @@ # $PROGRAM is the string returned as the first part of a /VERSION reply, # and must not contain spaces. It is not used anywhere else. PROGRAM=ircservices -VERSION=5.0.53 +VERSION=5.0.54 # Increment Services build number if [ -f version.c ] ; then