/* Single purpose rifle for political assassination * not for general use or the faint of heart * Public Domain, per its divine quality */ /* @BAKE gcc @FILE -o @SHORT libircclient.a -Iinclude @ARGS -D_GNU_SOURCE @STOP */ #include #include #include #include #include #include #include "hate.h" #define report(msg) fprintf(stderr,"Session: %s\n",msg) #define reportva(msg,...) fprintf(stderr,"Session: "msg"\n",__VA_ARGS__) typedef const char*cc; typedef cc*/* glory to the */ccp; typedef unsigned int uint; typedef irc_session_t*session; cc botnick=BOTNICK; cc botreal=BOTREAL; #define randfloat() (((float)rand())/((float)RAND_MAX)) int word(cc haystack, cc needle) { cc offset = strcasestr(haystack, needle); if (!offset) return 0; char start = offset == haystack ? ' ' : offset[-1], end = offset[strlen(needle)]; end = end == '\0' ? ' ' : end; return !isalpha(start) && !isalpha(end); } void hate(session s,cc origin,ccp param){ static int chain=0,drop=0; if (drop %s\n",!strcmp(botnick,param[0])?"":param[0],nick,param[1]); strcpy(buffer[1],HAIL_XOLATILE); if(!strncmp(botnick,param[1],strlen(botnick))&¶m[1][strlen(botnick)]==':'){choose|=1;goto fulfill;} if(randfloat()SEND_BUFFER_SIZE-1){report("Cannot Buffer Message");return;} ((char*)mempcpy(mempcpy(mempcpy(buffer[0],nick,nicklen),": ",2),HATE,strlen(HATE)))[0]=0; /* I could not dream, nor wonder */ }else{ if (nicklen+2+strlen(HATEHATE)>SEND_BUFFER_SIZE-1){report("Cannot Buffer Message");return;} ((char*)mempcpy(mempcpy(mempcpy(buffer[0],nick,nicklen),": ",2),HATEHATE,strlen(HATEHATE)))[0]=0; } } if (randfloat()