107 lines
2.0 KiB
C
107 lines
2.0 KiB
C
/* @COMPILECMD ../unity.sh */
|
|
|
|
#define _GNU_SOURCE
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdarg.h>
|
|
|
|
#include <libircclient.h>
|
|
|
|
#define SERVER "irc.rizon.net"
|
|
#define PORT 6667
|
|
#define CHANNEL "#/g/chad"
|
|
#define USERNAME "probotic"
|
|
|
|
#define ERR(ret,msg) do { fputs(msg "\n", stderr); return ret; } while (0)
|
|
|
|
irc_session_t * session;
|
|
irc_callbacks_t callbacks;
|
|
|
|
char * get_username(const char * origin)
|
|
{
|
|
const char USERNAME_TERMINATOR = '!';
|
|
int i = 0;
|
|
char * r;
|
|
while (origin[i] != USERNAME_TERMINATOR)
|
|
{ i++; }
|
|
r = (char *) malloc(i + 1);
|
|
strncpy(r, origin, i);
|
|
r[i] = '\00';
|
|
return r;
|
|
}
|
|
|
|
void
|
|
msg_wrapper(const char* fmt,
|
|
...)
|
|
{
|
|
va_list args;
|
|
char * fmtdmsg;
|
|
|
|
va_start(args, fmt);
|
|
if(vasprintf(&fmtdmsg, fmt, args) == -1)
|
|
{ exit(1); }
|
|
|
|
puts(fmtdmsg);
|
|
irc_cmd_msg(session, CHANNEL, fmtdmsg);
|
|
|
|
free(fmtdmsg);
|
|
va_end(args);
|
|
}
|
|
|
|
void
|
|
event_connect(irc_session_t * session,
|
|
const char * event,
|
|
const char * origin,
|
|
const char ** params,
|
|
unsigned int count)
|
|
{
|
|
irc_cmd_join(session, CHANNEL, 0);
|
|
}
|
|
|
|
void
|
|
event_channel(irc_session_t * session,
|
|
const char * event,
|
|
const char * origin,
|
|
const char ** params,
|
|
unsigned int count)
|
|
{
|
|
const char * channel = params[0];
|
|
const char * message = params[1];
|
|
|
|
char * swp = get_username(origin);
|
|
msg_wrapper("%s, you are a faggot for this opinion.", swp);
|
|
free(swp);
|
|
}
|
|
|
|
int
|
|
init(void)
|
|
{
|
|
memset(&callbacks, 0, sizeof(callbacks));
|
|
callbacks.event_connect = event_connect;
|
|
callbacks.event_channel = event_channel;
|
|
|
|
session = irc_create_session(&callbacks);
|
|
if (!session)
|
|
{ ERR(1, "Error creating IRC session"); }
|
|
irc_connect(session, SERVER, PORT, 0, USERNAME, USERNAME, USERNAME);
|
|
if (irc_run(session) != 0)
|
|
{ ERR(1, "Error running IRC session\nNo net?"); }
|
|
return 0;
|
|
}
|
|
|
|
int
|
|
main(int argc,
|
|
char ** argv)
|
|
{
|
|
if(!init())
|
|
{
|
|
while(1)
|
|
{}
|
|
irc_destroy_session(session);
|
|
return 0;
|
|
}
|
|
else
|
|
{ return 1; }
|
|
}
|