From: Joey Hess Date: Sat, 11 Jul 2009 20:41:32 +0000 (-0400) Subject: packaging updates X-Git-Tag: 2.48~6 X-Git-Url: http://git.ieval.ro/?p=filters.git;a=commitdiff_plain;h=101d92afbb8a6d9992a9684f00b847742ec9cf4b packaging updates * scramble: New filter that scambles the inner letters of words. Contributed by Andrew J. Buehler. * Converted debian/copyright to machine parseable format. --- diff --git a/Makefile b/Makefile index 81a90fc..578678e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ LEX = flex -BUILD = jethro kraut cockney jive nyc ken ky00te newspeak nethackify +BUILD = jethro kraut cockney jive nyc ken ky00te newspeak nethackify scramble OTHER = eleet b1ff chef jibberish upside-down rasterman studly fudd \ censor spammer uniencode pirate kenny scottish fanboy CFLAGS = -O2 -lfl @@ -29,13 +29,14 @@ install: $(BUILD) $(OTHER) samples: $(BUILD) $(OTHER) -rm -f SAMPLES - PATH=.:$$PATH; export PATH; echo $(BUILD) $(OTHER) |grep -v fanboy |xargs -n 1 sh makesample.sh + PATH=.:$$PATH; export PATH; echo $(BUILD) $(OTHER) | xargs -n 1 sh makesample.sh clean: - $(RM) -f core *.o *~ $(BUILD) *.c SAMPLES + $(RM) -f core *.o *~ $(BUILD) SAMPLES cd ky00te.dir && make clean rm -f kraut.dir/lex.yy.c cd nethackify.dir && make clean + cd scramble.dir && make clean .SUFFIXES: .l @@ -59,3 +60,6 @@ kraut: nethackify: cd nethackify.dir && make + +scramble: + cd scramble.dir && make diff --git a/debian/changelog b/debian/changelog index df331be..8cbdc1e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,9 @@ filters (2.47) UNRELEASED; urgency=low * Patch from Anssi Hannula to avoid warnings when compiling with -Werror=format-security. + * scramble: New filter that scambles the inner letters of + words. Contributed by Andrew J. Buehler. + * Converted debian/copyright to machine parseable format. -- Joey Hess Thu, 09 Jul 2009 22:53:42 -0400 diff --git a/debian/copyright b/debian/copyright index b6b3927..30631e4 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,86 +1,102 @@ -This is the Debian filters package. +This is the filters package. -This package was put together and debianized by Joey Hess -, using sources from all over. +This package was put together by Joey Hess , using +sources from all over. -The jethro filter has this copyright: - ** Public domain. Use at your own risk. Y'all come back now, heah? +Files: * +Copyright: 1999-2009 Joey Hess +License: GPL-2+ + The full text of the GPL is distributed as GPL in filters's source, + and is distributed in /usr/share/common-licenses/GPL-2 on Debian systems. -The kraut filter has this copyright: - /* Kraut v0.9 */ - /* by */ - /* John Sparks */ - /* 5-5-1989 */ +Files: jethro.l +Copyright: 1993 Duane Paulson +License: other + ** Public domain. Use at your own risk. Y'all come back now, heah? +Files: kraut.dir/* +Copyright: 1989 John Sparks +License: other /* This is in the public domain. Do with it as you will. *\ -The cockney, jive, and nyc filters are copyright under the GPL by Daniel V -Klein. He confirmed the new copyright in this email: - +Files: cockney.l, jive.l, nyc.l +Copyright: 1986 Daniel V Klein +License: GPL + Daniel confirmed the copyright in this email: + . From: Daniel V Klein Date: Wed, 22 Nov 2000 22:00:50 -0500 To: Joey Hess Subject: Re: filters GPL'd - + . That is so. Have fun (FWIW, I have done some rewriting on them - they are now in Perl, but still need some work...) - + . -Dan - + . > I've been told that you have changed the copyright of the cockney, jive > and nyc filters to the GPL? Is that correct? I'd love to move them into > Debian proper. -The rasterman filter was pulled out of -http://www.xach.com/xachbot/xachbot-2000-07-15.tar.gz, which is as a whole -copyright (C) 1997 Zachary Beane and is GPL'd. - -The ken filter is now in the public domain. Its author, Stephen K Mulrine, -confirmed the new copyright in this email: +Files: rasterman +Copyright: 1997 Zachary Beane +License: GPL +Files: ken.l +Copyright: Stephen K Mulrine +License: other + The ken filter is now in the public domain. Its author confirmed the + new license in this email: + . From: Stephen Mulrine Date: Mon, 11 Jun 2001 01:06:52 +0100 (BST) To: edward@debian.org (Edward Betts) Subject: Re: Ken? - + . [...] - + . >We would like to include ken in the Debian GNU/Linux Operating System, but >we need permission to modify ken if we want to. Would you be willing to >relicense ken under the GNU GPL, a BSD like license, or public domain? - + . Certainly, it would be an honour to have it included in the Debian distribution so I hereby release ken into the public domain. -The ky00te filter is now relicensed under the GPL. Its author, Brent -Edwards, confirmed the new copyright in this email: - +Files: ky00te.dir/* +Copyright: 1994 Brent E. Edwards +License: GPL + The ky00te filter is now relicensed under the GPL. Its author + confirmed the new license in this email: + . From: Brent Edwards Date: Sat, 30 Jun 2001 09:37:53 -0700 To: Edward Betts Subject: Re: Is this the author of the ky00te filter? - + . Dear Edward, You have my permission to put the ky00te filter into the GNU GPL license. (Though the license will be far longer than the program itself!) - + . -- Brent Edwards -The newspeak filter is now relicensed under a BSD-like copyright. Its -author, Jamie Zawinski, established the new copyright in this email: - +Files: newspeak.l +Copyright: 1991 Jamie Zawinski +License: other + The newspeak filter is now relicensed under a BSD-like copyright. Its + author established the new copyright in this email: + . From: Jamie Zawinski Date: Mon, 06 Aug 2001 16:17:02 -0700 To: Joey Hess Subject: Re: copyright of newspeak filter - + . Hey there -- I'm cleaning out old mail, and don't remember if I replied to this or not. Anyway, in case I didn't -- feel free to slap this license atop the newspeak script (it's BSD-like, so that should work for you.) - + . Copyright (c) 1991 Jamie Zawinski - + . Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in @@ -90,27 +106,30 @@ author, Jamie Zawinski, established the new copyright in this email: for any purpose. It is provided "as is" without express or implied warranty. -The studly filter is copyright Nick Phillips and -has the following license statement: - -# just for reference, you may do whatever you like with this file. - -The nethackify filter is copyright 2004 by G�kan Seng� - and is released under the gpl. - -The pirate filter was converted from a php version in the funfilters, which -are Copyright 2003 by Dougal Campbell and are licensed under the GPL. - -The kenny filter is copyright (C) 2001,2002 by Christian Garbs -, Alan Eldridge , and is licensed -under the Artistic license. - -The scottish fileter is copyright 2007 by Adam Borowski -, and is licensed under the GPL. - -Everything else is copyright 1999-2007 by Joey Hess, under the terms of -GPL. - -On Debian systems, the full text of the GNU GPL can be found in -/usr/share/common-licenses/GPL and the Artistic license in -/usr/share/common-licenses/Artistic +Files: studly +Copyright: Nick Phillips +License: other + # just for reference, you may do whatever you like with this file. + +Files: nethackify +Copyright: 2004 G�kan Seng� +License: GPL + +Files: pirate +Copyright: 2003 Dougal Campbell +License: GPL + Converted from a php version in the funfilters. + +Files: kenny +Copyright: + 2001 Christian Garbs + 2002 Alan Eldridge +License: Artistic + On Debian systems, the full text of the Artistic license can be found in + /usr/share/common-licenses/Artistic + +Files: scottish +Copyright: 2007 Adam Borowski +License: GPL-3+ + The full text of the GPL version 3 can be found in + /usr/share/common-licenses/GPL-3 on Debian systems. diff --git a/filters.6 b/filters.6 index 55c0844..a9a2995 100644 --- a/filters.6 +++ b/filters.6 @@ -1,6 +1,6 @@ .TH FILTERS 6 .SH NAME -ken, b1ff, censor, chef, cockney, eleet, fanboy, fudd, jethro, jibberish, jive, kenny, kraut, ky00te, nethack, newspeak, nyc, pirate, rasterman, scottish, spammer, studly, uniencode, upside\-down \- assorted text filters +ken, b1ff, censor, chef, cockney, eleet, fanboy, fudd, jethro, jibberish, jive, kenny, kraut, ky00te, nethack, newspeak, nyc, pirate, rasterman, scottish, spammer, scramble, studly, uniencode, upside\-down \- assorted text filters .SH SYNOPSIS $SHELL | chef @@ -66,6 +66,9 @@ Fake scottish (dwarven) accent filter, inspired by the character "Durkon" from Order of the Stick. .IP spammer Turns honest text into something that is liable to be flagged as spam. +.IP scramble +Scramble the "inner" letters of each word in the input into a random order. +The resulting text is still strangely readable. .IP studly Studly caps. .IP uniencode @@ -95,4 +98,5 @@ Stephen K Mulrine , newspeak is by Jamie Zawinski , studly is by Nick Phillips , Gurkan Sengun wrote nethackify, Dougal Campbell wrote pirate, kraut is by John Sparks, scottish by -Adam Borowski, and Kenny is by Christian Garbs and Alan Eldridge. +Adam Borowski, Kenny is by Christian Garbs and Alan Eldridge, +and scramble by Andrew J. Buehler. diff --git a/makesample.sh b/makesample.sh index dc1f045..e7e5e16 100644 --- a/makesample.sh +++ b/makesample.sh @@ -2,6 +2,10 @@ chmod +x $1 echo $1 >>SAMPLES echo "-------------" >>SAMPLES -printf "Here's how this filter sounds, in everyday use.\nNow is the time for all good men to come to the aid of their country." | ./$1 >>SAMPLES +if [ "$1" != fanboy ]; then + printf "Here's how this filter sounds, in everyday use.\nNow is the time for all good men to come to the aid of their country." | ./$1 >>SAMPLES +else + printf "This filter has to be tried on real world text to be understood! Oh, and Ubuntu Rules!" >>SAMPLES +fi echo "" >>SAMPLES echo "" >>SAMPLES diff --git a/scramble.c b/scramble.c deleted file mode 100644 index 978e06e..0000000 --- a/scramble.c +++ /dev/null @@ -1,205 +0,0 @@ -/* Scramble the "inner" letters of each word in the input into a random order, and output the result. Non-word (that is, non-alphabetical) characters, and the first and last letters of each word, are left alone. - * Output to something other than stdout will append to the file instead of overwriting it - this may be undesirable, and can be changed if so. - */ - -/* Copyright 2009-07-11 Andrew J. Buehler. - */ - -/* This program 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 3 of the License, or - * (at your option) any later version. - * This program is distributed in the hope that it will be useful, - * 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 program. If not, see . - */ - -#include -#include // for isalpha() -#include // for malloc()/calloc()/realloc()/free() and rand()/srand() -#include // for strlen() -#include // for time() - -#define ALLOW_FILE_IO 1 - - -/* strips 'reduction' characters from the end of the input string and returns the result - * works only if strlen(string> >= reduction, which is the case in the only place it is presently called - */ -char *shorten_string(char *string, int reduction) { - int i; - - i = strlen(string); - - for (; reduction > 0; reduction--, i--) { - string[i-1] = '\0'; // would it work to use an 'i-reduction' approach instead, similar to what was later done in narrow_string()? - } - - return string; -} - -/* strips 'reduction' characters from the beginning and the end of the input string and returns the result - * works only if(strlen(string) >= 2*reduction), which is the case in the only place it is presently called - */ -char *narrow_string(char *string, int reduction) { - int i = reduction; - - while(string[i]) { - string[i-reduction] = string[i]; - i++; - } - string[i-reduction] = '\0'; - - return shorten_string(string, reduction); -} - -int all_one_letter(char *string) { - char c; - int i; - - c = string[0]; - for(i = 1; string[i] != '\0'; i++) { - if(c != string[i]) { - return 0; // a nonduplicate letter has been found - } - c = string[i]; - } - - return 1; // reached the end of the string having found only duplicate letters, so it's all one letter -} - -/* randomly reorders the contents of the string - * WARNING: frees the input string and returns a replacement - */ -char *scramble_string(char *string) { - char *ret, *tmpstr; - int len, i, j; - - len = strlen(string); - if(len < 2) return string; // can't scramble a 1-character string or an empty string! - if(all_one_letter(string)) return(string); // can't scramble a string which consists entirely of one letter! - - ret = strdup(string); - - while(strcmp(string, ret) == 0) { - j = 0; - tmpstr = strdup(string); - while(len > 0) { - i = rand() % len; - ret[j] = tmpstr[i]; - j++; - while(tmpstr[i] != '\0') { - tmpstr[i] = tmpstr[i+1]; - i++; - } - len--; - } - free(tmpstr); - len = strlen(string); - } - - - free(string); - return ret; -} - -char *clear_string(char *string) { - int i; - - i = strlen(string); - - for(; i >= 0 ; i--) { - string[i] = '\0'; - } - - return string; -} - -int main(int argc, char **argv) { - int word_length; - char c, tempchar, *word; - FILE *infile, *outfile; - -#if ALLOW_FILE_IO - /* open files, if any other than stdin and stdout */ - if(argc > 1) { - if(!strcmp(argv[1], "--help") || - !strcmp(argv[1], "-h")) { - printf("Usage: %s [INPUT_FILENAME] [OUTPUT_FILENAME]\n", argv[0]); - printf("If INPUT_FILENAME is omitted or is '-', read from standard input\nIf OUTPUT_FILENAME is omitted or is '-', print to standard output\n"); - return 0; - } - - if(strcmp(argv[1], "-")) { - infile = fopen(argv[1], "r"); - if(infile == NULL) { - fprintf(stderr, "Unable to open input file %s for reading\n", argv[1]); - return 1; - } - } else { - infile = stdin; - } - - if(argc > 2) { - if(strcmp(argv[2], "-")) { - outfile = fopen(argv[2], "a"); - if(outfile == NULL) { - fprintf(stderr, "Unable to open output file %s for writing\n", argv[2]); - return 2; - } - } else { - outfile = stdout; - } - } - } else { // no arguments specified - infile = stdin; - outfile = stdout; - } -#else - infile = stdin; - outfile = stdout; -#endif - - srand(time(NULL)); // needed for scramble_string() to actually be random - - word_length = 0; - word = malloc(sizeof(char)); - word[0] = '\0'; - c = fgetc(infile); - - if(feof(infile)) { - printf("Reached EOF while reading the first character of the input file!\n"); - return 4; - } - - while(!feof(infile)) { - if(isalpha(c)) { - word = realloc(word, word_length+2); // one for the new character, one for the null - word[word_length] = c; - word[word_length + 1] = '\0'; // duplicate addition with the next line, but possibly more readable - word_length++; - } else { - if(word_length) { - word_length--; - fputc(word[0], outfile); - if(word_length) { - tempchar = word[word_length]; - word = scramble_string(narrow_string(word, 1)); - fprintf(outfile, "%s", word); - fputc(tempchar, outfile); - } - word = clear_string(word); - word_length = 0; - } - fputc(c, outfile); - } - fflush(outfile); - c = fgetc(infile); - } - - free(word); - return 0; -} diff --git a/scramble.dir/Makefile b/scramble.dir/Makefile new file mode 100644 index 0000000..4b4e7cd --- /dev/null +++ b/scramble.dir/Makefile @@ -0,0 +1,5 @@ +../scramble: scramble.c + $(CC) -o $@ $< -O2 -g + +clean: + rm -f ../scramble diff --git a/scramble.dir/scramble.c b/scramble.dir/scramble.c new file mode 100644 index 0000000..978e06e --- /dev/null +++ b/scramble.dir/scramble.c @@ -0,0 +1,205 @@ +/* Scramble the "inner" letters of each word in the input into a random order, and output the result. Non-word (that is, non-alphabetical) characters, and the first and last letters of each word, are left alone. + * Output to something other than stdout will append to the file instead of overwriting it - this may be undesirable, and can be changed if so. + */ + +/* Copyright 2009-07-11 Andrew J. Buehler. + */ + +/* This program 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 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * 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 program. If not, see . + */ + +#include +#include // for isalpha() +#include // for malloc()/calloc()/realloc()/free() and rand()/srand() +#include // for strlen() +#include // for time() + +#define ALLOW_FILE_IO 1 + + +/* strips 'reduction' characters from the end of the input string and returns the result + * works only if strlen(string> >= reduction, which is the case in the only place it is presently called + */ +char *shorten_string(char *string, int reduction) { + int i; + + i = strlen(string); + + for (; reduction > 0; reduction--, i--) { + string[i-1] = '\0'; // would it work to use an 'i-reduction' approach instead, similar to what was later done in narrow_string()? + } + + return string; +} + +/* strips 'reduction' characters from the beginning and the end of the input string and returns the result + * works only if(strlen(string) >= 2*reduction), which is the case in the only place it is presently called + */ +char *narrow_string(char *string, int reduction) { + int i = reduction; + + while(string[i]) { + string[i-reduction] = string[i]; + i++; + } + string[i-reduction] = '\0'; + + return shorten_string(string, reduction); +} + +int all_one_letter(char *string) { + char c; + int i; + + c = string[0]; + for(i = 1; string[i] != '\0'; i++) { + if(c != string[i]) { + return 0; // a nonduplicate letter has been found + } + c = string[i]; + } + + return 1; // reached the end of the string having found only duplicate letters, so it's all one letter +} + +/* randomly reorders the contents of the string + * WARNING: frees the input string and returns a replacement + */ +char *scramble_string(char *string) { + char *ret, *tmpstr; + int len, i, j; + + len = strlen(string); + if(len < 2) return string; // can't scramble a 1-character string or an empty string! + if(all_one_letter(string)) return(string); // can't scramble a string which consists entirely of one letter! + + ret = strdup(string); + + while(strcmp(string, ret) == 0) { + j = 0; + tmpstr = strdup(string); + while(len > 0) { + i = rand() % len; + ret[j] = tmpstr[i]; + j++; + while(tmpstr[i] != '\0') { + tmpstr[i] = tmpstr[i+1]; + i++; + } + len--; + } + free(tmpstr); + len = strlen(string); + } + + + free(string); + return ret; +} + +char *clear_string(char *string) { + int i; + + i = strlen(string); + + for(; i >= 0 ; i--) { + string[i] = '\0'; + } + + return string; +} + +int main(int argc, char **argv) { + int word_length; + char c, tempchar, *word; + FILE *infile, *outfile; + +#if ALLOW_FILE_IO + /* open files, if any other than stdin and stdout */ + if(argc > 1) { + if(!strcmp(argv[1], "--help") || + !strcmp(argv[1], "-h")) { + printf("Usage: %s [INPUT_FILENAME] [OUTPUT_FILENAME]\n", argv[0]); + printf("If INPUT_FILENAME is omitted or is '-', read from standard input\nIf OUTPUT_FILENAME is omitted or is '-', print to standard output\n"); + return 0; + } + + if(strcmp(argv[1], "-")) { + infile = fopen(argv[1], "r"); + if(infile == NULL) { + fprintf(stderr, "Unable to open input file %s for reading\n", argv[1]); + return 1; + } + } else { + infile = stdin; + } + + if(argc > 2) { + if(strcmp(argv[2], "-")) { + outfile = fopen(argv[2], "a"); + if(outfile == NULL) { + fprintf(stderr, "Unable to open output file %s for writing\n", argv[2]); + return 2; + } + } else { + outfile = stdout; + } + } + } else { // no arguments specified + infile = stdin; + outfile = stdout; + } +#else + infile = stdin; + outfile = stdout; +#endif + + srand(time(NULL)); // needed for scramble_string() to actually be random + + word_length = 0; + word = malloc(sizeof(char)); + word[0] = '\0'; + c = fgetc(infile); + + if(feof(infile)) { + printf("Reached EOF while reading the first character of the input file!\n"); + return 4; + } + + while(!feof(infile)) { + if(isalpha(c)) { + word = realloc(word, word_length+2); // one for the new character, one for the null + word[word_length] = c; + word[word_length + 1] = '\0'; // duplicate addition with the next line, but possibly more readable + word_length++; + } else { + if(word_length) { + word_length--; + fputc(word[0], outfile); + if(word_length) { + tempchar = word[word_length]; + word = scramble_string(narrow_string(word, 1)); + fprintf(outfile, "%s", word); + fputc(tempchar, outfile); + } + word = clear_string(word); + word_length = 0; + } + fputc(c, outfile); + } + fflush(outfile); + c = fgetc(infile); + } + + free(word); + return 0; +}