letterize-1.3/COPYING0000644000002700000270000000261511457624753012575 0ustar esresr BSD LICENSE Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither name of the this project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. letterize-1.3/letterize.10000644000002700000270000000566011457633002013621 0ustar esresr'\" t .\" Title: letterize .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 10/20/2010 .\" Manual: Miscellanea .\" Source: letterize .\" Language: English .\" .TH "LETTERIZE" "1" "10/20/2010" "letterize" "Miscellanea" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" letterize_ \- phone\-number to letter\-mnemonic generator .SH "SYNOPSIS" .HP \w'\fBletterize\fR\ 'u \fBletterize\fR \fInnnnnnn\fR .SH "DESCRIPTION" .PP This program tries to help you find a letter mnemonic matching a given phone number\&. .PP It emits to standard output each possible pronounceable mnemonic, one per line, using the American standard mapping of dial letters to numbers (2 goes to ABC, 3 to DEF, 4 to GHI, 5 to JKL, 6 to MNO, 7 to PRS, 8 to TUV, 9 to XYZ)\&. .PP The program uses a table of pronounceable letter\-triples derived from a dictionary scan\&. Each potential mnemonic must be such that all of its letter\-triples are in the table to be emitted\&. About 30% of possible triples are considered pronounceable\&. .PP A typical 7\-digit phone number has 19,683 possible mnemonics, but this test usually cuts the list down to a few hundred or so, a reasonable number to eyeball\-check\&. For some numbers, the list will, sadly, be empty\&. .PP It\*(Aqs best to leave out punctuation such as dashes and parens\&. .SH "BUGS" .PP The filtering method doesn\*(Aqt know what plausible medial triples are not reasonable at the beginnings and ends of words\&. .PP I\*(Aqm not sure what table position 0 (which is what 0 and 1 are mapped to) means\&. If you figure it out, you tell me\&. I really should have generated my own table, but that would have been more work than this seemed worth \-\- if your number contains either, you probably need to generate your mnemonic in disjoint pieces around the digits anyway\&. .SH "AUTHOR" .PP Eric S\&. Raymond esr@snark\&.thyrsus\&.com\&. It\*(Aqs based on a table of plausible letter\-triples that had no name attached to it\&. Surf to \m[blue]\fBhttp://www\&.catb\&.org/~esr/\fR\m[] for updates and related resources\&. letterize-1.3/letterize.c0000644000002700000270000002673111457627127013720 0ustar esresr/* * letterize.c -- generate all mnemonics corresponding to a phone number * * by Eric S. Raymond , Oct 24 1994 * * Everything between the CUT HEREs was copied from a code fragment I found * on the net, unattributed. * * ------------------------------ CUT HERE ----------------------------------- */ /* Table of triple usage in text 24511 words were used to make this table. The words came from the files: /usr/dict/words obvpats.lp The table is 30 percent populated. */ long obvtab[27][27] = { { 0X00100001, 0X00040000, 0X00040000, 0X00009000, 0X00808020, 0X00140000, 0X00000000, 0X00080000, 0X00000002, 0X00000000, 0X00000000, 0X00000000, 0X00001020, 0X00000000, 0X00000010, 0X00000020, 0X00000000, 0X00000000, 0X00000030, 0X00300100, 0X00000100, 0X00000000, 0X00000020, 0X00000000, 0X00000000, 0X00000000, 0X00000000 }, { 0X00090000, 0X000c708a, 0X022cd73e, 0X023ffbbe, 0X02fffffe, 0X002cd0da, 0X023cdae2, 0X02adf3b6, 0X0024f222, 0X00dd7efa, 0X00008022, 0X02b5937a, 0X06fdfbfe, 0X02bdf37e, 0X07ffdfff, 0X003c3248, 0X023dfb76, 0X00200000, 0X07fffffe, 0X02bbfbbe, 0X06bcfb6f, 0X055f7dfc, 0X02609232, 0X021cfbf6, 0X02999222, 0X00bdf3ff, 0X06308232 }, { 0X00080000, 0X07fdfbfc, 0X022c9226, 0X00008012, 0X00248222, 0X07dffbfe, 0X00200000, 0X00000000, 0X00208020, 0X047ffdfe, 0X00000020, 0X00000000, 0X02208222, 0X00800220, 0X0000a022, 0X03fdfffe, 0X00048000, 0X00000000, 0X02208222, 0X00308228, 0X00049062, 0X071efefc, 0X00000220, 0X00000020, 0X00000000, 0X049d11a2, 0X00000000 }, { 0X00080080, 0X02fffffe, 0X000c0020, 0X0024932a, 0X0000802a, 0X06bdf3fe, 0X00000002, 0X00248220, 0X02bdf3fe, 0X007df0fe, 0X00000000, 0X02bdfffe, 0X02208222, 0X00200222, 0X00008222, 0X07fffffe, 0X00000102, 0X00200000, 0X02308222, 0X00188200, 0X02aca262, 0X003df27e, 0X00000004, 0X00000000, 0X00000000, 0X001dd08e, 0X00000022 }, { 0X00088022, 0X06fd7bfc, 0X02249222, 0X00209102, 0X02249332, 0X07fff7fe, 0X00249282, 0X02a43a22, 0X00008222, 0X05fdf3fe, 0X00208022, 0X00000220, 0X02208222, 0X00208222, 0X00008223, 0X07fdf3fe, 0X00049322, 0X00200000, 0X02208222, 0X0091bb2a, 0X00008302, 0X043dfafe, 0X00008222, 0X02048222, 0X00000000, 0X00987aef, 0X00200000 }, { 0X004c1030, 0X04ff79dc, 0X023c9226, 0X023c9b3a, 0X02bdf3fe, 0X04ddfbfe, 0X023c92fa, 0X0224f3e6, 0X0224a222, 0X045d7afa, 0X00208022, 0X0218ca36, 0X02fdfbfe, 0X02a9f22e, 0X06ffffff, 0X05fd73d8, 0X02bdb32e, 0X00200000, 0X07fffffe, 0X02fbfbbe, 0X06bdfb6e, 0X005d78bc, 0X066c8222, 0X029df37e, 0X0333832a, 0X008df97f, 0X06648222 }, { 0X00080000, 0X07bc7bfe, 0X00000222, 0X0000000a, 0X00008002, 0X02fc7abe, 0X022cb366, 0X00000102, 0X00000022, 0X055c70fe, 0X00008000, 0X00000002, 0X02208222, 0X0000000a, 0X00000200, 0X03edf2be, 0X00000008, 0X00000000, 0X02208222, 0X00118922, 0X028ca32e, 0X041c74b8, 0X00000000, 0X00000002, 0X00000000, 0X00000000, 0X00000000 }, { 0X00080000, 0X06fdf3fc, 0X00008222, 0X00000000, 0X00008022, 0X02fdf3fe, 0X00240220, 0X020d93a2, 0X02bddffe, 0X047df0fe, 0X00000002, 0X00008200, 0X02208222, 0X02300222, 0X00318226, 0X02fdf3fe, 0X00009220, 0X00000000, 0X02208222, 0X00919b06, 0X00048302, 0X061cf2ee, 0X00000000, 0X02048022, 0X00000000, 0X00056002, 0X00000002 }, { 0X00080000, 0X06fdfbfe, 0X02249222, 0X00048102, 0X00048202, 0X07fff2ff, 0X00208202, 0X00008022, 0X00008122, 0X047dfcfe, 0X00000800, 0X00008220, 0X02248222, 0X0008a222, 0X0028c222, 0X06fdfeff, 0X00209202, 0X00200000, 0X02249232, 0X00108302, 0X02bdf3fa, 0X071d71fe, 0X00000200, 0X00008322, 0X00000000, 0X011d32be, 0X00000000 }, { 0X00483010, 0X05dd7bbc, 0X022cf226, 0X023cdb2a, 0X02bdf6b6, 0X04fd79fc, 0X0234d262, 0X063df3a2, 0X00000222, 0X00000202, 0X00208002, 0X02208a22, 0X02fdbbfe, 0X022df36e, 0X07ffffff, 0X05fd70be, 0X02bdb766, 0X00200000, 0X02fdfafe, 0X02ffffff, 0X06bdfb6f, 0X000c7008, 0X02248222, 0X00008202, 0X023082e2, 0X00000002, 0X04608022 }, { 0X00080000, 0X07ed7bbc, 0X00000000, 0X00000000, 0X00000000, 0X009cd57a, 0X00000000, 0X00000000, 0X00000000, 0X005070c4, 0X00000400, 0X00001000, 0X00000000, 0X00000000, 0X00000000, 0X02fc5bae, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X015d7e96, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000 }, { 0X00080000, 0X07fdfff4, 0X00248222, 0X00040302, 0X00048022, 0X02fdf3f6, 0X00208222, 0X00048000, 0X0014a022, 0X00ddf8fe, 0X00000002, 0X0000ca22, 0X0220a222, 0X00000022, 0X00208222, 0X01fdfb7a, 0X00009202, 0X00000000, 0X02208222, 0X02b1abae, 0X00048302, 0X029d7110, 0X00000000, 0X00008322, 0X00000000, 0X00ac9522, 0X00000000 }, { 0X00088000, 0X07fffbfe, 0X02249222, 0X0234b322, 0X02bdf36e, 0X07fdfffe, 0X00bc93e6, 0X00048222, 0X00008222, 0X05fffdfe, 0X00008000, 0X0288d322, 0X02bdb7fe, 0X0228e332, 0X00208020, 0X07fffffe, 0X021ca362, 0X00000000, 0X02208022, 0X0299ab26, 0X06eca326, 0X055dfefe, 0X00008222, 0X02008322, 0X00000000, 0X00bdfbfe, 0X00000022 }, { 0X00080000, 0X07fdffbc, 0X002dd236, 0X0021fbfe, 0X00008020, 0X07ddfbfe, 0X00209220, 0X00000000, 0X00208020, 0X053efcfa, 0X00000000, 0X00000000, 0X00008222, 0X0220a222, 0X02208222, 0X07fdfbfe, 0X023c9be6, 0X00200000, 0X00088002, 0X0239a37c, 0X00048120, 0X041dfaf8, 0X00000020, 0X00008222, 0X00000000, 0X001cd0a8, 0X00000000 }, { 0X00180000, 0X06fdfbfe, 0X002c922a, 0X02349b22, 0X02bffffe, 0X07fff3ff, 0X00249222, 0X02bdbb76, 0X02208222, 0X057ffbfe, 0X00208022, 0X021d33ea, 0X02008222, 0X00008222, 0X0228c222, 0X07fdf2fe, 0X00209220, 0X00200000, 0X0220822a, 0X02fdfbfe, 0X06adf3ee, 0X043dfafe, 0X02208222, 0X00048322, 0X00100200, 0X01ffb11e, 0X02808222 }, { 0X0008113c, 0X017f79da, 0X02fcd77e, 0X02349b2a, 0X02adfbfe, 0X037ef35c, 0X0234b262, 0X02bcf7f6, 0X0204f222, 0X011c58fe, 0X00008222, 0X02a99b2e, 0X06fdfbfe, 0X02aff36e, 0X07ffffff, 0X045df9dc, 0X02bffbae, 0X00200000, 0X06fffbfe, 0X02fbbbae, 0X02bdf3ee, 0X055f73ff, 0X02008a22, 0X06bdfb7e, 0X02d043ea, 0X001dd37e, 0X06008222 }, { 0X00080000, 0X07fffabc, 0X002c9022, 0X00008100, 0X00040002, 0X07fdfefe, 0X00241220, 0X00040002, 0X023cd232, 0X057ff8fa, 0X00000002, 0X00000220, 0X02208222, 0X00208022, 0X00008020, 0X03fdfafa, 0X022db322, 0X00040000, 0X02208222, 0X02b0bb2a, 0X0224832a, 0X041d7afe, 0X00000008, 0X00048202, 0X00000000, 0X00949b86, 0X00000000 }, { 0X00080000, 0X00100000, 0X00000000, 0X00000000, 0X00000000, 0X00000010, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00000000, 0X00020000, 0X00080000, 0X00000000, 0X00000000, 0X02008222, 0X00000000, 0X00000020, 0X00000000, 0X00000000, 0X00000000 }, { 0X00080010, 0X07fffffc, 0X022c9222, 0X023c9b2a, 0X02bdd366, 0X07ffffff, 0X00249222, 0X022cb322, 0X02208222, 0X07fbfdfe, 0X00208020, 0X029df336, 0X02b98236, 0X0239936e, 0X02b9ab66, 0X07fffffe, 0X023cb322, 0X00200000, 0X02248322, 0X02f3fb7e, 0X06bcf3ee, 0X01ddf2fe, 0X02208222, 0X00008222, 0X00000020, 0X0099f0be, 0X00008222 }, { 0X00081000, 0X03fdfffe, 0X02248222, 0X0224b323, 0X00248242, 0X07fffbfe, 0X02208222, 0X002c8220, 0X02f5fa6e, 0X057ff8fe, 0X00200000, 0X0224a222, 0X02208222, 0X02208222, 0X02208223, 0X06f5f7fe, 0X022c9326, 0X00200000, 0X00288222, 0X02bdf36e, 0X02edf7ff, 0X041df2fe, 0X00010220, 0X00248222, 0X00000000, 0X001d78bc, 0X00000000 }, { 0X001c1010, 0X03fdfbfc, 0X00248222, 0X02249102, 0X00048000, 0X03fdfbfe, 0X00249222, 0X00248022, 0X02bffbfe, 0X047ff8fe, 0X00000000, 0X02000222, 0X02208222, 0X00208222, 0X00308223, 0X07fdfafe, 0X00049222, 0X00000000, 0X02a08222, 0X02f1ab7e, 0X027c9be2, 0X031df2fe, 0X00000202, 0X01208322, 0X00000000, 0X01ad328e, 0X000db2a2 }, { 0X004c1010, 0X02dd7bdc, 0X027db736, 0X023c9b2a, 0X06ac92b6, 0X063df5f6, 0X0030b042, 0X002cf3a2, 0X00004002, 0X057dd0be, 0X00208202, 0X00048a30, 0X06fdfafe, 0X007bf36e, 0X02bdfbfe, 0X023d5210, 0X02bdbbfe, 0X00200000, 0X06fffbfe, 0X023bdbbe, 0X06bcf3be, 0X00202000, 0X00840220, 0X00000002, 0X00309220, 0X00601022, 0X04208022 }, { 0X00080000, 0X003d7fbc, 0X00004000, 0X00000000, 0X00000002, 0X039dfbfe, 0X00000000, 0X00000000, 0X00000000, 0X057cdafe, 0X00000000, 0X00000100, 0X00008002, 0X00000000, 0X00000000, 0X02bcfa88, 0X00000000, 0X00000000, 0X00008020, 0X00000800, 0X00000000, 0X000c1000, 0X02400220, 0X01000000, 0X00000000, 0X00800200, 0X00008000 }, { 0X00080000, 0X077d7bde, 0X00248222, 0X00208102, 0X02248220, 0X025d53bf, 0X00209202, 0X00000200, 0X02208222, 0X055d70f8, 0X00000000, 0X02804200, 0X02180222, 0X00000222, 0X02bd03fc, 0X00fdf864, 0X00209222, 0X00000000, 0X02008222, 0X02bdbb2c, 0X00208322, 0X00057100, 0X00000000, 0X00808002, 0X02000000, 0X0000f022, 0X02000000 }, { 0X00080000, 0X005870d8, 0X00000000, 0X00649322, 0X00000000, 0X021c7298, 0X00008000, 0X00201000, 0X00208202, 0X0058f0fe, 0X00000000, 0X00000000, 0X00000020, 0X00000000, 0X00000002, 0X001d6090, 0X00249222, 0X00200000, 0X00000000, 0X00000020, 0X02248326, 0X00051016, 0X00000200, 0X00008020, 0X01008000, 0X04041080, 0X00000000 }, { 0X004c1010, 0X0097f998, 0X00248232, 0X00009322, 0X0004c226, 0X00ddf0f6, 0X00201222, 0X0224f230, 0X02048020, 0X00094030, 0X00000002, 0X00004420, 0X00699a22, 0X0221e22e, 0X0310c3ba, 0X04fd78d8, 0X023dd322, 0X00200000, 0X0234c272, 0X0039b32e, 0X02108322, 0X00095b88, 0X00000022, 0X0004832a, 0X00000200, 0X02000000, 0X00000002 }, { 0X00080000, 0X00557b8e, 0X00000000, 0X00000000, 0X00000002, 0X00bc5a3e, 0X00000000, 0X00000020, 0X00000000, 0X003df0ae, 0X00000000, 0X00000000, 0X02008020, 0X00000002, 0X00000000, 0X0065e2b2, 0X00000002, 0X00000000, 0X00008002, 0X00000008, 0X00000020, 0X00040820, 0X00008020, 0X00008020, 0X00000008, 0X00002084, 0X06809222 } }; /* Configuration parameters */ short unusual; /* count of unusual triples */ /* dotriple -- called by obvword If this triple is not used by any word used to build the table, we tally that fact. */ dotriple(m1,m2,m3) short m1,m2,m3; /* all in 0..26 */ { if (!(obvtab[m1][m2] & (1L << m3))) unusual++; /* check for triple */ } /* * ------------------------------ CUT HERE ----------------------------------- */ #include /* obvword -- do one word dotriple is called on each 3-character triple in the word, using a mapped value of the character into the range 0..26, where letters map into 1..26 regardless of case and everything else maps to zero. */ obvword(word) char word[]; /* word to do, max 20 chars */ { register int i; /* for loops */ register int patcnt = 0; /* count in word */ register char ch; /* working char */ short pat[21]; /* pattern of mapped values */ unusual = 0; for (i=0; word[i] && (i < sizeof(pat)); i++) /* scan until null */ { patcnt = i; /* max value */ ch = word[i]; /* get character */ if ((ch >= 'a') && (ch <= 'z')) pat[i] = ch + 1 - 'a'; else if ((ch >= 'A') && (ch <= 'Z')) pat[i] = ch + 1 - 'A'; else pat[i] = 0; /* map into 0..26 */ } for (i=0; i < patcnt - 1; i++) /* for all triples */ dotriple(pat[i], pat[i+1], pat[i+2]); /* do the triple */ return(unusual == 0); } void phone_gen(s, i) /* print out all trailing substrings of s that satify obvword() */ char *s; int i; { static char *digitrans[] = { "abc", "def", "ghi", "jkl", "mno", "prs", "tuv", "wxy" }; char c, *s2; c = s[i]; if (c == '\0') { if (obvword(s)) (void) printf("%s\n", s); } else if ('2' <= c && c <= '9') for (s2 = digitrans[c-'2']; s[i]= *s2++;) phone_gen(s, i+1); else phone_gen(s, i+1); s[i] = c; } main(argc, argv) int argc; char **argv; { for (; --argc > 0; printf("\n")) phone_gen(*++argv, 0); return(0); } /* letterize.c ends here */ letterize-1.3/letterize.spec0000644000002700000270000000232011457631024014403 0ustar esresrName: letterize Version: 1.3 Release: 1 Summary: generate pronounceable mnemonics from phone numbers URL: http://www.catb.org/~esr/letterize/ Source0: %{name}-%{version}.tar.gz License: BSD Group: Applications BuildRoot: %{_tmppath}/%{name}-root %description Generate all possible alphabetic mnemonics for a phone number, then filter them for phonetic plausibility in English. %prep %setup -q %build make %{?_smp_mflags} letterize letterize.1 %install [ "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT" mkdir -p "$RPM_BUILD_ROOT"%{_bindir} mkdir -p "$RPM_BUILD_ROOT"%{_mandir}/man1/ cp letterize "$RPM_BUILD_ROOT"%{_bindir} cp letterize.1 "$RPM_BUILD_ROOT"%{_mandir}/man1/ %clean [ "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT" %files %defattr(-,root,root,-) %{_mandir}/man1/letterize.1* %{_bindir}/letterize %doc README COPYING %changelog * Wed Oct 20 2010 Eric S. Raymond 1.3-1 - Polish to modern C, with like, #includes and everything. - Change license to BSD. * Mon Dec 29 2003 Eric S. Raymond 1.2-1 - RPM packaging fixes for freshmeat release. * Tue Jul 30 2002 Eric S. Raymond - Initial build. letterize-1.3/letterize.xml0000644000002700000270000000531311457631435014264 0ustar esresr letterize 1 October 24, 1994 letterize letterize Miscellanea letterize phone-number to letter-mnemonic generator letterize nnnnnnn DESCRIPTION This program tries to help you find a letter mnemonic matching a given phone number. It emits to standard output each possible pronounceable mnemonic, one per line, using the American standard mapping of dial letters to numbers (2 goes to ABC, 3 to DEF, 4 to GHI, 5 to JKL, 6 to MNO, 7 to PRS, 8 to TUV, 9 to XYZ). The program uses a table of pronounceable letter-triples derived from a dictionary scan. Each potential mnemonic must be such that all of its letter-triples are in the table to be emitted. About 30% of possible triples are considered pronounceable. A typical 7-digit phone number has 19,683 possible mnemonics, but this test usually cuts the list down to a few hundred or so, a reasonable number to eyeball-check. For some numbers, the list will, sadly, be empty. It's best to leave out punctuation such as dashes and parens. BUGS The filtering method doesn't know what plausible medial triples are not reasonable at the beginnings and ends of words. I'm not sure what table position 0 (which is what 0 and 1 are mapped to) means. If you figure it out, you tell me. I really should have generated my own table, but that would have been more work than this seemed worth -- if your number contains either, you probably need to generate your mnemonic in disjoint pieces around the digits anyway. AUTHOR Eric S. Raymond esr@snark.thyrsus.com. It's based on a table of plausible letter-triples that had no name attached to it. Surf to http://www.catb.org/~esr/ for updates and related resources. letterize-1.3/Makefile0000644000002700000270000000177111457631604013175 0ustar esresr# # Makefille for the phone-number letterizer # VERS=$(shell sed MANIFEST @(cd ..; ln -s letterize letterize-$(VERS)) (cd ..; tar -czf letterize/letterize-$(VERS).tar.gz `cat letterize/MANIFEST`) @(cd ..; rm letterize-$(VERS)) clean: rm -f letterize letterize.tar letterize*.gz letterize*.rpm rm -f *~ *.1 *.html MANIFEST SHIPPER.* install: uninstall letterize.1 cp letterize /usr/bin cp letterize.1 /usr/share/man/man1/letterize.1 uninstall: rm -f /usr/bin/letterize /usr/share/man/man1/letterize.1 dist: letterize-$(VERS).tar.gz release: letterize-$(VERS).tar.gz letterize.html shipper -u -m -t; make clean letterize-1.3/README0000644000002700000270000000105511455414462012407 0ustar esresr letterize -- phone digits to letter-mnemonics by Eric S. Raymond Oct 24 1994 I built this around some code for detecting pronounceable letter combinations that I picked up off the net. Not sure who wrote it. Files: README -- this file letterize.c -- the code Makefile -- A simple Makefile letterize.1 -- man page letterize.xml -- XML DocBook master for the man page Bugs. Don't talk to me about bugs. Email me at esr@thyrsus.com instead. You can surf to http://www.catb.org/~esr/ for updates and related resources.