rendered paste bodyint irc_recv_data(socket_t *sock)
{
struct userdata *ptr = NULL;
char *buffer = (char *)malloc(BUF);
char tmp[30][BUF];
int i, j, k, len;
len = recv(*sock, buffer, BUF, 0);
if(len > 0 || len != SOCKET_ERROR)
{
buffer[len]='\0';
}
else if(len < 0)
{
printf("[-] Can't recieve Data\n");
return(-1);
}
for(i=0, j=0, k=0;i<=len;i++)
{
if(buffer[i] == ':')
{
while(buffer[j] != '!')
{
tmp[k][j] = buffer[i];
j++;
}
tmp[k][j]='\0';
j=0;
k++;
i += j;
}
else if(buffer[i] == '!')
{
while(buffer[j] != '@')
{
tmp[k][j] = buffer[i];
j++;
}
tmp[k][j]='\0';
j=0;
k++;
i += j;
}
else if(buffer[i] == '!')
{
while(buffer[j] != '@')
{
tmp[k][j] = buffer[i];
j++;
}
tmp[k][j]='\0';
j=0;
k++;
i += j;
}
else if(buffer[i] == ' ')
{
while(buffer[j] != ' ')
{
tmp[k][j] = buffer[i];
j++;
}
tmp[k][j]='\0';
j=0;
k++;
i += j;
}
else if(buffer[i] == ':' && i > 3)
{
while(buffer[j] != '\n')
{
tmp[k][j] = buffer[i];
j++;
}
tmp[k][j]='\0';
j=0;
k++;
i += j;
}
}
if(root == NULL)
{
if( ( root = (struct irc_userdata *)
malloc (sizeof(struct irc_userdata)) ) == NULL)
{
printf("[-] Not enough Memory capacity\n");
return(-1);
}
strcpy(root->nick, tmp[0]);
strcpy(root->ident, tmp[1]);
strcpy(root->host, tmp[2]);
strcpy(root->to, tmp[4]);
root->next=NULL;
}
else
{
ptr = root;
while(ptr->next != NULL)
{
ptr = ptr->next;
}
if( (zeiger->next = (struct irc_userdata *)
malloc (sizeof(struct irc_userdata)) ) == NULL)
{
printf("[-] Not enough Memory capacity\n");
return(-1);
}
strcpy(ptr->nick, tmp[0]);
strcpy(ptr->ident, tmp[1]);
strcpy(ptr->host, tmp[2]);
strcpy(ptr->to, tmp[4]);
ptr->next = NULL
}
if(ircopt.log == 1)
{
bot_log(*sock, *ptr);
}
return EXIT_SUCCESS;
}