This group of filters serves no utilitarian purpose but is nonetheless quite amusing and hence should be maintained for posterity.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
talkfilters/warez.l

234 lines
7.7 KiB

/* GNU Talkfilters
Copyright (C) 1998-2003 Free Software Foundation, Inc.
This file is part of GNU Talkfilters
GNU Talkfilters is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2, or (at
your option) any later version.
This software is distributed in the hope that it will be amusing, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this software; see the file COPYING. If not, write to the
Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* This is the w4r3z filter, written by Ian Johnston, reaper@muppetlabs.com.
*
* Copyright (C) 1998 Ian Johnston
*
* GNU Talkfilters is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This software is distributed in the hope that it will be amusing,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* or copies are available at the GNU website: http://www.gnu.org/
*
* Ian Johnston can be reached as reaper@speakeasy.org
*/
%option prefix="warez_yy"
%option outfile="lex.yy.c"
%option noyywrap
%option nounput
%e 2000
%p 5000
%n 1000
%k 500
%a 4000
%o 2000
BW [ \t]
EW [ \t.,;!?]
EOT \4
%{
#include "common.h"
#include "talkfilters.h"
#define YY_DECL int yylex(gtf_databuf_t *buf)
static const char *a_array[] = {"4", "4", "4", "a", "a", "A", "@"};
#define A_LEN (sizeof(a_array) / sizeof(a_array[0]))
static const char *b_array[] = {"8", "b", "b", "B"};
#define B_LEN (sizeof(b_array) / sizeof(b_array[0]))
static const char *c_array[] = {"c", "c", "C", "k", "k" /*, "<" */};
#define C_LEN (sizeof(c_array) / sizeof(c_array[0]))
static const char *d_array[] = {"d", "d", "D", "|)"};
#define D_LEN (sizeof(d_array) / sizeof(d_array[0]))
static const char *e_array[] = {"3", "3", "3", "e", "E"};
#define E_LEN (sizeof(e_array) / sizeof(e_array[0]))
static const char *f_array[] = {"f", "f", "F", "ph", "ph"};
#define F_LEN (sizeof(f_array) / sizeof(f_array[0]))
static const char *g_array[] = {"6", "g", "g", "G"};
#define G_LEN (sizeof(g_array) / sizeof(g_array[0]))
static const char *h_array[] = {"h", "h", "H", "]-["};
#define H_LEN (sizeof(h_array) / sizeof(h_array[0]))
static const char *i_array[] = {"1", "i", "I", "!", "Y", "|"};
#define I_LEN (sizeof(i_array) / sizeof(i_array[0]))
static const char *j_array[] = {"j", "j", "J", ";"};
#define J_LEN (sizeof(j_array) / sizeof(j_array[0]))
static const char *k_array[] = {"k", "K", "c", "C"};
#define K_LEN (sizeof(k_array) / sizeof(k_array[0]))
static const char *l_array[] = {"1", "l", "l", "L"};
#define L_LEN (sizeof(l_array) / sizeof(l_array[0]))
static const char *m_array[] = {"m", "m", "M", "]\\/["};
#define M_LEN (sizeof(m_array) / sizeof(m_array[0]))
static const char *n_array[] = {"n", "n", "n", "n", "N", "N", "|\\|", "]\\[", "gn"};
#define N_LEN (sizeof(n_array) / sizeof(n_array[0]))
static const char *o_array[] = {"0", "o", "O", "()", "0", "0"};
#define O_LEN (sizeof(o_array) / sizeof(o_array[0]))
static const char *p_array[] = {"p", "P"};
#define P_LEN (sizeof(p_array) / sizeof(p_array[0]))
static const char *q_array[] = {"q", "Q"};
#define Q_LEN (sizeof(q_array) / sizeof(q_array[0]))
static const char *r_array[] = {"r", "R"};
#define R_LEN (sizeof(r_array) / sizeof(r_array[0]))
static const char *s_array[] = {"5", "z", "Z", "s", "S"};
#define S_LEN (sizeof(s_array) / sizeof(s_array[0]))
static const char *t_array[] = {"7", "t", "T"};
#define T_LEN (sizeof(t_array) / sizeof(t_array[0]))
static const char *u_array[] = {"u", "U"};
#define U_LEN (sizeof(u_array) / sizeof(u_array[0]))
static const char *v_array[] = {"v", "v", "V", "\\/"};
#define V_LEN (sizeof(v_array) / sizeof(v_array[0]))
static const char *w_array[] = {"w", "w", "W", "W", "\\/\\/"};
#define W_LEN (sizeof(w_array) / sizeof(w_array[0]))
static const char *x_array[] = {"x", "X", /*"><",*/ "kz" };
#define X_LEN (sizeof(x_array) / sizeof(x_array[0]))
static const char *y_array[] = {"y", "Y"};
#define Y_LEN (sizeof(y_array) / sizeof(y_array[0]))
static const char *z_array[] = {"s", "S", "z", "z", "Z"};
#define Z_LEN (sizeof(z_array) / sizeof(z_array[0]))
static const char *__warez_rand(const char **array, int length)
{
int i = gtf_random(length);
return(array[i]);
}
%}
%%
\<(\/)?[A-Za-z][^\>]*\> gtf_echo(); // don't damage HTML tags
[aA] gtf_puts(__warez_rand(a_array, A_LEN));
[bB] gtf_puts(__warez_rand(b_array, B_LEN));
[cC] gtf_puts(__warez_rand(c_array, C_LEN));
[dD] gtf_puts(__warez_rand(d_array, D_LEN));
[eE] gtf_puts(__warez_rand(e_array, E_LEN));
[fF] gtf_puts(__warez_rand(f_array, F_LEN));
[gG] gtf_puts(__warez_rand(g_array, G_LEN));
[hH] gtf_puts(__warez_rand(h_array, H_LEN));
[iI] gtf_puts(__warez_rand(i_array, I_LEN));
[jJ] gtf_puts(__warez_rand(j_array, J_LEN));
[kK] gtf_puts(__warez_rand(k_array, K_LEN));
[lL] gtf_puts(__warez_rand(l_array, L_LEN));
[mM] gtf_puts(__warez_rand(m_array, M_LEN));
[nN] gtf_puts(__warez_rand(n_array, N_LEN));
[oO] gtf_puts(__warez_rand(o_array, O_LEN));
[pP] gtf_puts(__warez_rand(p_array, P_LEN));
[qQ] gtf_puts(__warez_rand(q_array, Q_LEN));
[rR] gtf_puts(__warez_rand(r_array, R_LEN));
[sS] gtf_puts(__warez_rand(s_array, S_LEN));
[tT] gtf_puts(__warez_rand(t_array, T_LEN));
[uU] gtf_puts(__warez_rand(u_array, U_LEN));
[vV] gtf_puts(__warez_rand(v_array, V_LEN));
[wW] gtf_puts(__warez_rand(w_array, W_LEN));
[xX] gtf_puts(__warez_rand(x_array, X_LEN));
[yY] gtf_puts(__warez_rand(y_array, Y_LEN));
[zZ] gtf_puts(__warez_rand(z_array, Z_LEN));
" the " gtf_puts(" d4 ");
"The " gtf_puts("D4 ");
" you" gtf_puts(" j00");
You gtf_puts("U");
" see" gtf_puts(" C");
See gtf_puts("c");
" are" gtf_puts(" r");
Are gtf_puts("R");
[Ss]mart |
[Gg]ood |
[Ee]xpert |
[Tt]alented |
[Ee]xperienced gtf_puts("1337");
[Yy]our gtf_puts_case("j00r");
[Hh]acker |
[Pp]rogrammer |
[Dd]eveloper gtf_puts_case("h4x0r");
[Ee]lite gtf_puts("31337");
[Pp]ornography gtf_puts_case("pr0n");
[Pp]orn(o)? gtf_puts_case("pr0n");
[Dd]ude |
[Pp]erson |
[Gg]uy gtf_puts_case("d00d");
[Ss]oftware gtf_puts_case("warez");
[Pp]irate gtf_puts_case("piR8");
[Aa]pplications gtf_puts_case("appz");
[Mm]usic gtf_puts_case("mp3z");
"broke." |
"crashed." gtf_puts("g0t fux0red.");
[Ff]ucked |
[Bb]roke(n)? |
[Mm]alfunctioning |
[Bb]uggy gtf_puts_case("fux0red");
[Ss]uckers gtf_puts_case("sux0rz");
{EOT} /* ignore trailing EOT character */
. gtf_echo();
\n gtf_puts("\n");
%%
#ifdef LIBRARY_MODE
int gtf_filter_warez(const char *input, char *buf, size_t bufsz)
{
gtf_databuf_t buffer;
YY_BUFFER_STATE _yybuf;
gtf_strbuf_init(&buffer, buf, bufsz);
_yybuf = yy_scan_string(input);
yylex(&buffer);
yy_delete_buffer(_yybuf);
gtf_reset();
return(buffer.overflow);
}
int __gtf_filter_warez(const char *input, char *buf, size_t bufsz)
{
return(gtf_filter_warez(input, buf, bufsz));
}
#else /* LIBRARY_MODE */
int main(int argc, char **argv)
{
gtf_parse_args();
gtf_random_seed();
yylex(NULL);
return(EXIT_SUCCESS);
}
#endif /* LIBRARY_MODE */
/* end of source file */