+ if(MyClient(source_p) && chptr->mode.mode & MODE_NOKICK)
+ {
+ sendto_one_numeric(source_p, ERR_NOKICK,
+ form_str(ERR_NOKICK),
+ chptr->chname);
+ return 0;
+ }
+
+ if(MyClient(source_p))
+ {
+ hook_data_channel_approval hookdata;
+
+ hookdata.client = source_p;
+ hookdata.chptr = chptr;
+ hookdata.target = who;
+ hookdata.approved = 1;
+
+ call_hook(h_can_kick, &hookdata);
+
+ if (!hookdata.approved)
+ return 0;
+ }
+
+ comment = LOCAL_COPY((EmptyString(parv[3])) ? who->name : parv[3]);
+ if(strlen(comment) > (size_t) REASONLEN)
+ comment[REASONLEN] = '\0';
+