X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fproto-p10.c;h=94f41debe61c7da89c8937b9413ac4992f099a52;hb=4a2c9aa9ab119a212d78c6a3a73261de56800251;hp=003bbe62999cf23eb3a7312a99dd9c1f145cba88;hpb=bc8461e95aafc26b36ee41ca66ff5aabfb6d728f;p=srvx.git diff --git a/src/proto-p10.c b/src/proto-p10.c index 003bbe6..94f41de 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -21,9 +21,9 @@ #include "proto-common.c" /* Full commands. */ -#define CMD_ACCOUNT "ACCOUNT" +#define CMD_ACCOUNT "ACCOUNT" #define CMD_ADMIN "ADMIN" -#define CMD_ASLL "ASLL" +#define CMD_ASLL "ASLL" #define CMD_AWAY "AWAY" #define CMD_BURST "BURST" #define CMD_CLEARMODE "CLEARMODE" @@ -40,7 +40,7 @@ #define CMD_EOB_ACK "EOB_ACK" #define CMD_ERROR "ERROR" #define CMD_FAKEHOST "FAKE" -#define CMD_GET "GET" +#define CMD_GET "GET" #define CMD_GLINE "GLINE" #define CMD_HASH "HASH" #define CMD_HELP "HELP" @@ -68,18 +68,18 @@ #define CMD_PONG "PONG" #define CMD_POST "POST" #define CMD_PRIVMSG "PRIVMSG" -#define CMD_PRIVS "PRIVS" +#define CMD_PRIVS "PRIVS" #define CMD_PROTO "PROTO" #define CMD_QUIT "QUIT" #define CMD_REHASH "REHASH" -#define CMD_RESET "RESET" +#define CMD_RESET "RESET" #define CMD_RESTART "RESTART" #define CMD_RPING "RPING" #define CMD_RPONG "RPONG" #define CMD_SERVER "SERVER" #define CMD_SERVLIST "SERVLIST" #define CMD_SERVSET "SERVSET" -#define CMD_SET "SET" +#define CMD_SET "SET" #define CMD_SETTIME "SETTIME" #define CMD_SILENCE "SILENCE" #define CMD_SQUERY "SQUERY" @@ -103,9 +103,9 @@ #define CMD_WHOWAS "WHOWAS" /* Tokenized commands. */ -#define TOK_ACCOUNT "AC" +#define TOK_ACCOUNT "AC" #define TOK_ADMIN "AD" -#define TOK_ASLL "LL" +#define TOK_ASLL "LL" #define TOK_AWAY "A" #define TOK_BURST "B" #define TOK_CLEARMODE "CM" @@ -122,7 +122,7 @@ #define TOK_EOB_ACK "EA" #define TOK_ERROR "Y" #define TOK_FAKEHOST "FA" -#define TOK_GET "GET" +#define TOK_GET "GET" #define TOK_GLINE "GL" #define TOK_HASH "HASH" #define TOK_HELP "HELP" @@ -150,18 +150,18 @@ #define TOK_PONG "Z" #define TOK_POST "POST" #define TOK_PRIVMSG "P" -#define TOK_PRIVS "PRIVS" +#define TOK_PRIVS "PRIVS" #define TOK_PROTO "PROTO" #define TOK_QUIT "Q" #define TOK_REHASH "REHASH" -#define TOK_RESET "RESET" +#define TOK_RESET "RESET" #define TOK_RESTART "RESTART" #define TOK_RPING "RI" #define TOK_RPONG "RO" #define TOK_SERVER "S" #define TOK_SERVLIST "SERVSET" #define TOK_SERVSET "SERVSET" -#define TOK_SET "SET" +#define TOK_SET "SET" #define TOK_SETTIME "SE" #define TOK_SILENCE "U" #define TOK_SQUERY "SQUERY" @@ -196,9 +196,9 @@ #define TYPE(NAME) CMD_ ## NAME #endif /* ENABLE_TOKENS */ -#define P10_ACCOUNT TYPE(ACCOUNT) +#define P10_ACCOUNT TYPE(ACCOUNT) #define P10_ADMIN TYPE(ADMIN) -#define P10_ASLL TYPE(ASLL) +#define P10_ASLL TYPE(ASLL) #define P10_AWAY TYPE(AWAY) #define P10_BURST TYPE(BURST) #define P10_CLEARMODE TYPE(CLEARMODE) @@ -215,7 +215,7 @@ #define P10_EOB_ACK TYPE(EOB_ACK) #define P10_ERROR TYPE(ERROR) #define P10_FAKEHOST TYPE(FAKEHOST) -#define P10_GET TYPE(GET) +#define P10_GET TYPE(GET) #define P10_GLINE TYPE(GLINE) #define P10_HASH TYPE(HASH) #define P10_HELP TYPE(HELP) @@ -243,18 +243,18 @@ #define P10_PONG TYPE(PONG) #define P10_POST TYPE(POST) #define P10_PRIVMSG TYPE(PRIVMSG) -#define P10_PRIVS TYPE(PRIVS) +#define P10_PRIVS TYPE(PRIVS) #define P10_PROTO TYPE(PROTO) #define P10_QUIT TYPE(QUIT) #define P10_REHASH TYPE(REHASH) -#define P10_RESET TYPE(RESET) +#define P10_RESET TYPE(RESET) #define P10_RESTART TYPE(RESTART) #define P10_RPING TYPE(RPING) #define P10_RPONG TYPE(RPONG) #define P10_SERVER CMD_SERVER #define P10_SERVLIST TYPE(SERVLIST) #define P10_SERVSET TYPE(SERVSET) -#define P10_SET TYPE(SET) +#define P10_SET TYPE(SET) #define P10_SETTIME TYPE(SETTIME) #define P10_SILENCE TYPE(SILENCE) #define P10_SQUERY TYPE(SQUERY) @@ -292,7 +292,7 @@ static struct dict *unbursted_channels; static char *his_servername; static char *his_servercomment; -static struct userNode *AddUser(struct server* uplink, const char *nick, const char *ident, const char *hostname, const char *modes, const char *numeric, const char *userinfo, time_t timestamp, const char *realip); +static struct userNode *AddUser(struct server* uplink, const char *nick, const char *ident, const char *hostname, const char *modes, const char *numeric, const char *userinfo, unsigned long timestamp, const char *realip); extern int off_channel; @@ -368,10 +368,10 @@ irc_server(struct server *srv) inttobase64(extranum, srv->num_mask, (srv->numeric[1] || (srv->num_mask >= 64*64)) ? 3 : 2); if (srv == self) { /* The +s, ignored by Run's ircu, means "service" to Undernet's ircu */ - putsock(P10_SERVER " %s %d %li %li J10 %s%s +s6 :%s", + putsock(P10_SERVER " %s %d %lu %lu J10 %s%s +s6 :%s", srv->name, srv->hops+1, srv->boot, srv->link, srv->numeric, extranum, srv->description); } else { - putsock("%s " P10_SERVER " %s %d %li %li %c10 %s%s +s6 :%s", + putsock("%s " P10_SERVER " %s %d %lu %lu %c10 %s%s +s6 :%s", self->numeric, srv->name, srv->hops+1, srv->boot, srv->link, (srv->self_burst ? 'J' : 'P'), srv->numeric, extranum, srv->description); } } @@ -484,11 +484,11 @@ irc_user(struct userNode *user) modes[modelen] = 0; /* we don't need to put the + in modes because it's in the format string. */ - putsock("%s " P10_NICK " %s %d %li %s %s +%s %s %s :%s", - user->uplink->numeric, user->nick, user->uplink->hops+1, user->timestamp, user->ident, user->hostname, modes, b64ip, user->numeric, user->info); + putsock("%s " P10_NICK " %s %d %lu %s %s +%s %s %s :%s", + user->uplink->numeric, user->nick, user->uplink->hops+1, (unsigned long)user->timestamp, user->ident, user->hostname, modes, b64ip, user->numeric, user->info); } else { - putsock("%s " P10_NICK " %s %d %li %s %s %s %s :%s", - user->uplink->numeric, user->nick, user->uplink->hops+1, user->timestamp, user->ident, user->hostname, b64ip, user->numeric, user->info); + putsock("%s " P10_NICK " %s %d %lu %s %s %s %s :%s", + user->uplink->numeric, user->nick, user->uplink->hops+1, (unsigned long)user->timestamp, user->ident, user->hostname, b64ip, user->numeric, user->info); } } @@ -513,7 +513,7 @@ irc_regnick(UNUSED_ARG(struct userNode *user)) void irc_nick(struct userNode *user, UNUSED_ARG(const char *old_nick)) { - putsock("%s " P10_NICK " %s "FMT_TIME_T, user->numeric, user->nick, now); + putsock("%s " P10_NICK " %s %lu", user->numeric, user->nick, (unsigned long)now); } void @@ -638,7 +638,7 @@ irc_pong_asll(const char *who, const char *orig_ts) orig.tv_usec = (*delim == '.') ? strtoul(delim + 1, NULL, 10) : 0; gettimeofday(&now, NULL); diff = (now.tv_sec - orig.tv_sec) * 1000 + (now.tv_usec - orig.tv_usec) / 1000; - putsock("%s " P10_PONG " %s %s %d " FMT_TIME_T ".%06u", self->numeric, who, orig_ts, diff, now.tv_sec, (unsigned)now.tv_usec); + putsock("%s " P10_PONG " %s %s %d %lu.%06lu", self->numeric, who, orig_ts, diff, (unsigned long)now.tv_sec, (unsigned long)now.tv_usec); } void @@ -663,20 +663,20 @@ void irc_gline(struct server *srv, struct gline *gline) { if (gline->lastmod) - putsock("%s " P10_GLINE " %s +%s %ld %ld :%s", - self->numeric, (srv ? srv->numeric : "*"), gline->target, gline->expires-now, gline->lastmod, gline->reason); + putsock("%s " P10_GLINE " %s +%s %lu %lu :%s", + self->numeric, (srv ? srv->numeric : "*"), gline->target, (unsigned long)(gline->expires-now), (unsigned long)gline->lastmod, gline->reason); else - putsock("%s " P10_GLINE " %s +%s %ld :%s", - self->numeric, (srv ? srv->numeric : "*"), gline->target, gline->expires-now, gline->reason); + putsock("%s " P10_GLINE " %s +%s %lu :%s", + self->numeric, (srv ? srv->numeric : "*"), gline->target, (unsigned long)(gline->expires-now), gline->reason); } void -irc_settime(const char *srv_name_mask, time_t new_time) +irc_settime(const char *srv_name_mask, unsigned long new_time) { ioset_set_time(new_time); if (!strcmp(srv_name_mask, "*")) srv_name_mask = ""; - putsock("%s " P10_SETTIME " " FMT_TIME_T " %s", self->numeric, new_time, srv_name_mask); + putsock("%s " P10_SETTIME " %lu %s", self->numeric, new_time, srv_name_mask); } void @@ -696,8 +696,9 @@ irc_burst(struct chanNode *chan) unsigned int first_ban; unsigned int n; - base_len = sprintf(burst_line, "%s " P10_BURST " %s " FMT_TIME_T " ", - self->numeric, chan->name, chan->timestamp); + base_len = sprintf(burst_line, "%s " P10_BURST " %s %lu ", + self->numeric, chan->name, + (unsigned long)chan->timestamp); len = irc_make_chanmode(chan, burst_line+base_len); pos = base_len + len; if (len > 0 && chan->members.used > 0) @@ -791,9 +792,9 @@ irc_kill(struct userNode *from, struct userNode *target, const char *message) void irc_mode(struct userNode *from, struct chanNode *target, const char *modes) { - putsock("%s " P10_MODE " %s %s "FMT_TIME_T, + putsock("%s " P10_MODE " %s %s %lu", (from ? from->numeric : self->numeric), - target->name, modes, target->timestamp); + target->name, modes, (unsigned long)target->timestamp); } void @@ -807,9 +808,10 @@ irc_join(struct userNode *who, struct chanNode *what) { if (what->members.used == 1) { putsock("%s " P10_CREATE " %s %lu", - who->numeric, what->name, what->timestamp); + who->numeric, what->name, (unsigned long)what->timestamp); } else { - putsock("%s " P10_JOIN " %s %lu", who->numeric, what->name, what->timestamp); + putsock("%s " P10_JOIN " %s %lu", who->numeric, what->name, + (unsigned long)what->timestamp); } } @@ -832,7 +834,7 @@ irc_stats(struct userNode *from, struct server *target, char type) void irc_svsnick(struct userNode *from, struct userNode *target, const char *newnick) { - putsock("%s " P10_SVSNICK " %s %s "FMT_TIME_T, from->uplink->numeric, target->numeric, newnick, now); + putsock("%s " P10_SVSNICK " %s %s %lu", from->uplink->numeric, target->numeric, newnick, (unsigned long)now); } void @@ -918,9 +920,9 @@ static CMD_FUNC(cmd_whois) mlen = strlen(self->name) + strlen(from->nick) + 12 + strlen(who->nick); len = 0; *buf = '\0'; - for (i = 0; i < who->channels.used; i++) + for (i = who->channels.used; i > 0; ) { - mn = who->channels.list[i]; + mn = who->channels.list[--i]; if (!IsOper(from) && (mn->channel->modes & (MODE_PRIVATE | MODE_SECRET)) && !GetUserMode(mn->channel, from)) continue; @@ -1003,7 +1005,7 @@ static CMD_FUNC(cmd_server) if (srv->boot <= PREHISTORY) { /* Server from the mists of time.. */ if (srv->hops == 1) { - log_module(MAIN_LOG, LOG_ERROR, "Server %s claims to have booted at time "FMT_TIME_T". This is absurd.", srv->name, srv->boot); + log_module(MAIN_LOG, LOG_ERROR, "Server %s claims to have booted at time %lu. This is absurd.", srv->name, (unsigned long)srv->boot); } } else if ((str = conf_get_data("server/reliable_clock", RECDB_QSTRING)) && enabled_string(str)) { @@ -1018,7 +1020,7 @@ static CMD_FUNC(cmd_server) } } if (srv == self->uplink) { - extern time_t burst_begin; + extern unsigned long burst_begin; burst_begin = now; } return 1; @@ -1050,7 +1052,7 @@ static CMD_FUNC(cmd_eob) static CMD_FUNC(cmd_eob_ack) { - extern time_t burst_begin; + extern unsigned long burst_begin; if (GetServerH(origin) == self->uplink) { burst_length = now - burst_begin; @@ -1091,7 +1093,7 @@ static CMD_FUNC(cmd_error_nick) struct create_desc { struct userNode *user; - time_t when; + unsigned long when; }; static void @@ -1217,7 +1219,7 @@ static CMD_FUNC(cmd_burst) long mode; int oplevel = -1; char *user, *end, sep; - time_t in_timestamp; + unsigned long in_timestamp; if (argc < 3) return 0; @@ -1376,7 +1378,7 @@ static CMD_FUNC(cmd_clearmode) static CMD_FUNC(cmd_topic) { struct chanNode *cn; - time_t chan_ts, topic_ts; + unsigned long chan_ts, topic_ts; if (argc < 3) return 0; @@ -1435,7 +1437,7 @@ static CMD_FUNC(cmd_num_topic) static CMD_FUNC(cmd_num_gline) { - time_t lastmod; + unsigned long lastmod; if (argc < 6) return 0; lastmod = (argc > 5) ? strtoul(argv[5], NULL, 0) : 0; @@ -1554,7 +1556,7 @@ static CMD_FUNC(cmd_away) static CMD_FUNC(cmd_gline) { - time_t lastmod; + unsigned long lastmod; if (argc < 3) return 0; @@ -1912,7 +1914,7 @@ make_numeric(struct server *svr, int local_num, char *outbuf) } struct server * -AddServer(struct server *uplink, const char *name, int hops, time_t boot, time_t link, const char *numeric, const char *description) +AddServer(struct server *uplink, const char *name, int hops, unsigned long boot, unsigned long link, const char *numeric, const char *description) { struct server* sNode; int slen, mlen; @@ -1999,7 +2001,7 @@ AddLocalUser(const char *nick, const char *ident, const char *hostname, const ch { char numeric[COMBO_NUMERIC_LEN+1]; int local_num = get_local_numeric(); - time_t timestamp = now; + unsigned long timestamp = now; struct userNode *old_user = GetUserH(nick); if (!modes) @@ -2024,7 +2026,7 @@ AddClone(const char *nick, const char *ident, const char *hostname, const char * { char numeric[COMBO_NUMERIC_LEN+1]; int local_num = get_local_numeric(); - time_t timestamp = now; + unsigned long timestamp = now; struct userNode *old_user = GetUserH(nick); if (old_user) { @@ -2056,7 +2058,7 @@ is_valid_nick(const char *nick) { } static struct userNode* -AddUser(struct server* uplink, const char *nick, const char *ident, const char *hostname, const char *modes, const char *numeric, const char *userinfo, time_t timestamp, const char *realip) +AddUser(struct server* uplink, const char *nick, const char *ident, const char *hostname, const char *modes, const char *numeric, const char *userinfo, unsigned long timestamp, const char *realip) { struct userNode *oldUser, *uNode; unsigned int n, ignore_user, dummy; @@ -2207,30 +2209,30 @@ void mod_usermode(struct userNode *user, const char *mode_change) { while (*word == ' ') word++; while (1) { #define do_user_mode(FLAG) do { if (add) user->modes |= FLAG; else user->modes &= ~FLAG; } while (0) - switch (*mode_change++) { - case 0: case ' ': return; - case '+': add = 1; break; - case '-': add = 0; break; - case 'o': - do_user_mode(FLAGS_OPER); - if (add) { - userList_append(&curr_opers, user); - call_oper_funcs(user); - } else { - userList_remove(&curr_opers, user); - } - break; - case 'i': do_user_mode(FLAGS_INVISIBLE); - if (add) + switch (*mode_change++) { + case 0: case ' ': return; + case '+': add = 1; break; + case '-': add = 0; break; + case 'o': + do_user_mode(FLAGS_OPER); + if (!add) { + userList_remove(&curr_opers, user); + } else if (!userList_contains(&curr_opers, user)) { + userList_append(&curr_opers, user); + call_oper_funcs(user); + } + break; + case 'i': do_user_mode(FLAGS_INVISIBLE); + if (add) invis_clients++; else invis_clients--; - break; - case 'w': do_user_mode(FLAGS_WALLOP); break; - case 'd': do_user_mode(FLAGS_DEAF); break; - case 'k': do_user_mode(FLAGS_SERVICE); break; - case 'g': do_user_mode(FLAGS_GLOBAL); break; - case 'n': do_user_mode(FLAGS_NOCHAN); break; + break; + case 'w': do_user_mode(FLAGS_WALLOP); break; + case 'd': do_user_mode(FLAGS_DEAF); break; + case 'k': do_user_mode(FLAGS_SERVICE); break; + case 'g': do_user_mode(FLAGS_GLOBAL); break; + case 'n': do_user_mode(FLAGS_NOCHAN); break; case 'I': do_user_mode(FLAGS_NOIDLE); break; case 'x': do_user_mode(FLAGS_HIDDEN_HOST); break; case 'r': @@ -2257,7 +2259,7 @@ void mod_usermode(struct userNode *user, const char *mode_change) { assign_fakehost(user, host, 0); } break; - } + } #undef do_user_mode } } @@ -2294,14 +2296,14 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un case 'r': do_chan_mode(MODE_REGONLY); break; case 's': do_chan_mode(MODE_SECRET); break; case 't': do_chan_mode(MODE_TOPICLIMIT); break; - case 'z': - if (!(flags & MCP_REGISTERED)) { - do_chan_mode(MODE_REGISTERED); - } else { - mod_chanmode_free(change); - return NULL; - } - break; + case 'z': + if (!(flags & MCP_REGISTERED)) { + do_chan_mode(MODE_REGISTERED); + } else { + mod_chanmode_free(change); + return NULL; + } + break; #undef do_chan_mode case 'l': if (add) { @@ -2804,13 +2806,13 @@ void reg_oper_func(oper_func_t handler) { if (of_used == of_size) { - if (of_size) { - of_size <<= 1; - of_list = realloc(of_list, of_size*sizeof(oper_func_t)); - } else { - of_size = 8; - of_list = malloc(of_size*sizeof(oper_func_t)); - } + if (of_size) { + of_size <<= 1; + of_list = realloc(of_list, of_size*sizeof(oper_func_t)); + } else { + of_size = 8; + of_list = malloc(of_size*sizeof(oper_func_t)); + } } of_list[of_used++] = handler; } @@ -2822,7 +2824,7 @@ call_oper_funcs(struct userNode *user) if (IsLocal(user)) return; for (n=0; n