/********************************************************************** *rejoin a channel upon being kicked, * *the parameters are as follows, p is the input buffer from the socket * *p2 is the string to be built and compared with the buffer, and will * *be used to build the rejoin command. p3 is the channel name, p4 is * *the JOIN command, ni is hte nick, and i is the socket file descriptor* **********************************************************************/ void rejoinchan(char *p, char *p2, char *p3, char *p4, char *ni, int i){ if(strstr(p, "KICK " ) !='\0'){ printf("%s\n", "I have been kicked" ); if(strstr(p, strncat(strncat(strncat(p2, p3, strlen(p3)), " ", strlen(" ")), ni, strlen(ni))) != '\0'){ nullstring(p2); strncat(strncat(strncat(p2,p4,strlen(p4)),p3 ,strlen(p3)), "\r\n", strlen("\r\n")); if(send(i, p2, strlen(p2), 0) > 0) printf("%s%s\n","Rejoining channel: ", p3); else exit(1); nullstring(p2); } } }
int databody(int c) { if(c==1) return labeldata(); else if (c==2) return bytex(); else if (c==3) return byte(); else if (c==4) return pascalstring(); else if (c==5) return nullstring(); else if (c==6) return worddata(); else return 0; }
void startconnect(char *b, char *c, char *n, char *nick,char *user,char *jn, char *j, int *s,struct sockaddr_in *ta){ if ((*s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } if (connect(*s, (struct sockaddr *)ta,sizeof(struct sockaddr)) == -1) { perror("connect"); exit(1); } nullstring(c); strncat(strncat(strncat(c,n,strlen(n)),nick ,strlen(nick)), "\r\n", strlen("\r\n")); send(*s, c, strlen(c), 0); send(*s,user,strlen(user), 0); int i; for(i = 0; i < 10000; i++); nullstring(c); strncat(strncat(strncat(c,jn,strlen(jn)),j ,strlen(j)), "\r\n", strlen("\r\n")); send(*s, c, strlen(c), 0); nullstring(c); printf("%s\n", "Joined Channel\n");