- int modelen = 0;
- if (IsOper(user)) modes[modelen++] = 'o';
- if (IsInvisible(user)) modes[modelen++] = 'i';
- if (IsWallOp(user)) modes[modelen++] = 'w';
- if (IsService(user)) modes[modelen++] = 'k';
- if (IsDeaf(user)) modes[modelen++] = 'd';
- if (IsReggedNick(user)) modes[modelen++] = 'r';
- if (IsGlobal(user)) modes[modelen++] = 'g';
- modes[modelen] = 0;
- putsock("NICK %s %d "FMT_TIME_T" +%s %s %s %s %d %u :%s",
- user->nick, user->uplink->hops+2, user->timestamp, modes,
- user->ident, user->hostname, user->uplink->name, 0, ntohl(user->ip.in6_32[3]), user->info);
+ if (!user || user->nick[0] != ' ') return;
+ irc_user_modes(user, modes, sizeof(modes));
+ putsock("NICK %s %d %lu +%s %s %s %s %d %u :%s",
+ user->nick, user->uplink->hops+2, (unsigned long)user->timestamp,
+ modes, user->ident, user->hostname, user->uplink->name, 0,
+ ntohl(user->ip.in6_32[3]), user->info);