All pastes #74646 Raw Edit

Stuff

public text v1 · immutable
#74646 ·published 2006-06-29 08:16 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h> /*used for gethostbyname()*/
#include <string.h>
#include <fcntl.h>

void manda_irc(char *buffer,int sock)
{
        send(sock, buffer, strlen(buffer),0);
}

/* void print_motd (int out)
{
     FILE *f;
     char buffer[256];

     if ((f=fopen(cbot.motd,"r")))
     {
          while (fgets(buffer, sizeof(buffer), f))
               printf("%s", buffer);
          fclose(f);
     }
}
 */

int main(int argc,char *argv[])
{
        int sd, i=0;
        int fd;
        char c,b;
        struct hostent* hp;
        struct sockaddr_in server_addr;

        /* la blablabla */
        printf("\nzZBot - version 0.0001\n");

        if(argc!=3)
        {
                printf("Uso: %s <irc_server> <puerto> <nick> <canal>\n",argv[0]);
                exit(EXIT_FAILURE);
        }

        printf("...tratando %s:%s\n",argv[1],argv[2]);

        if((hp=gethostbyname(argv[1]))==NULL)
        {
                printf("ERROR: No pode conectar %s, abortando. \n",argv[1]);
                exit(EXIT_FAILURE);
        }

        server_addr.sin_family=AF_INET;
        server_addr.sin_port=htons((u_short)atoi(argv[2]));
        server_addr.sin_addr.s_addr=((struct in_addr *)hp->h_addr_list[0])->s_addr;
        //server_addr.sin_addr.s_addr=hp->h_addr_list[0]->s_addr;
        sd=socket(PF_INET,SOCK_STREAM,0);
        if(connect(sd,(struct sockaddr*)&server_addr,sizeof(server_addr))<0)
        {
                printf("Coneccion negada por servidor.\n");
                perror("connect()");
                exit(EXIT_FAILURE);
        }
        printf("Conectado.\n");

        manda_irc("NICK TresPatines\r\n",sd);
        manda_irc("USER zZBot 8 * :zZBot Ver 0.0001\r\n",sd); /* 0 normal 8 invisible */
        
        manda_irc("JOIN #debian-es\r\n",sd);
        manda_irc("PRIVMSG #debian-es :Debby: ping\r\n",sd);
        manda_irc("PRIVMSG #debian-es :Debby: ping\r\n",sd);
        manda_irc("PRIVMSG #debian-es :Debby: ping\r\n",sd);
        while (1) {

                recv(sd,&c,1,0);
                b=c;
                if (b) {
                        printf("%c",b);
                }
        
        };
        close(fd);
        send(sd,"QUIT :bye!\r\n",strlen("QUIT :bye!\r\n"),0);
        return 0;
}
$ gcc zZbot.c -o zZbot
             ... lol