676 |
|
return 1; |
677 |
|
} |
678 |
|
|
679 |
+ |
/* clean_nick_name() |
680 |
+ |
* |
681 |
+ |
* input - nickname |
682 |
+ |
* - whether it's a local nick (1) or remote (0) |
683 |
+ |
* output - none |
684 |
+ |
* side effects - walks through the nickname, returning 0 if erroneous |
685 |
+ |
*/ |
686 |
+ |
int |
687 |
+ |
valid_nickname(const char *nickname, const int local) |
688 |
+ |
{ |
689 |
+ |
const char *p = nickname; |
690 |
+ |
assert(nickname && *nickname); |
691 |
+ |
|
692 |
+ |
/* nicks can't start with a digit or - or be 0 length */ |
693 |
+ |
/* This closer duplicates behaviour of hybrid-6 */ |
694 |
+ |
if (*p == '-' || (IsDigit(*p) && local) || *p == '\0') |
695 |
+ |
return 0; |
696 |
+ |
|
697 |
+ |
for (; *p; ++p) |
698 |
+ |
if (!IsNickChar(*p)) |
699 |
+ |
return 0; |
700 |
+ |
|
701 |
+ |
return p - nickname <= (NICKLEN - 1); |
702 |
+ |
} |
703 |
+ |
|
704 |
|
/* report_and_set_user_flags() |
705 |
|
* |
706 |
|
* inputs - pointer to source_p |