addrutil: Re-indent.
[wk-misc.git] / rot13.c
1 /* rot13 - very sophisticated encryption system
2  *      Copyright (C) 2000 Werner Koch (dd9jn)
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
17  */
18
19 #include <stdio.h>
20 #include <stdlib.h>
21
22 static void
23 rot13 ( char *block )
24 {
25     int i, c; 
26
27     for (i = 0; i < 5; i++ ) {
28         c = (block[i] + 13) % 26;
29         putchar ( 'A'+c );
30     }
31 }
32
33
34 int
35 main (int argc, char **argv )
36 {
37     char block[5];
38     int n=0, c, idx=0;
39
40     if ( argc > 1 ) {
41         fprintf (stderr, "usage: rot13 < input\n");
42         return 1;
43     }
44     
45
46     while ( (c=getchar ()) != EOF ) {
47         if ( c >= 'a' && c <= 'z' )
48             block[idx++] = c - 'a';
49         else if ( c >= 'A' && c <= 'Z' ) 
50             block[idx++] = c - 'A';
51         else if ( c != ' ' && c != '\t' && c != '\n' )
52             fprintf (stderr, "rot13: ignoring character 0x%02X\n", c );
53         if ( idx >= 5 ) {
54             if ( n )
55                 putchar (' ');
56             rot13 (block);
57             idx = 0;
58             if ( ++n == 10 ) {
59                 putchar ('\n');
60                 n = 0;
61             }
62         }
63     }
64     if ( idx ) {
65         while ( idx < 5 )
66             block[idx++] = 'X' - 'A';
67         if ( n )
68             putchar (' ');
69         rot13 (block);
70         putchar ('\n');
71     }
72
73     return 0;
74 }
75
76
77