FOREACH_MOD(I_OnChangeHost,OnChangeHost(user,host));
}
strlcpy(user->dhost,host,160);
+ WriteServ(user->fd,"396 %s %s :is now your hidden host",user->nick,user->dhost);
}
/* verify that a user's ident and nickname is valid */
{
return 0;
}
- for (unsigned int i = 0; i < strlen(n); i++)
+ for (char* i = (char*)n; *i; i++)
{
- if ((n[i] < 33) || (n[i] > 125))
+ if ((*i >= 'A') && (*i <= '}'))
{
- return 0;
+ continue;
}
- /* can't occur ANYWHERE in an Ident! */
- if (strchr("<>,/?:;@'~#=+()*&%$£ \"!",n[i]))
+ if (strchr(".-0123456789",*i))
{
- return 0;
+ continue;
}
+ return 0;
}
return 1;
}
int isnick(const char* n)
{
- if (!n)
- {
- return 0;
- }
- if (!strcmp(n,""))
+ if (!n || !*n)
{
return 0;
}
{
return 0;
}
- for (unsigned int i = 0; i != strlen(n); i++)
+ for (char* i = (char*)n; *i; i++)
{
- if ((n[i] < 33) || (n[i] > 125))
+ /* can occur anywhere in a nickname */
+ if ((*i >= 'A') && (*i <= '}'))
{
- return 0;
+ continue;
}
- /* can't occur ANYWHERE in a nickname! */
- if (strchr("<>,./?:;@'~#=+()*&%$£ \"!",n[i]))
+ /* can occur anywhere BUT the first char of a nickname */
+ if ((strchr("-0123456789",*i)) && (i > n))
{
- return 0;
- }
- /* can't occur as the first char of a nickname... */
- if ((strchr("0123456789",n[i])) && (!i))
- {
- return 0;
+ continue;
}
+ /* invalid character! abort */
+ return 0;
}
return 1;
}