summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/tools/eggencode.c
blob: f1339c206be1a17c5d48a203cf27ca6e4bc5ec2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/** BEGIN COPYRIGHT BLOCK
 * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
 * Copyright (C) 2005 Red Hat, Inc.
 * All rights reserved.
 * END COPYRIGHT BLOCK **/

/*
 * Easter egg encoder.  See ../fedse.c:egg_decode() for the mirror image.
 */
#include <stdio.h>

static unsigned char egg_nibble2char( int nibble );

int
main( int argc, char *argv[] )
{
	int		c, colcount;
	char	outc;

	if ( argc > 1 ) {
		fprintf( stderr, "usage: %s < in > out\n", argv[0] );
		return 2;
	}

	colcount = 0;
	while (( c = getchar()) != EOF ) {
		if ( 0 == colcount ) {
			putchar( '"' );
		}
		c ^= 122;
		outc = egg_nibble2char( (c & 0xF0) >> 4 );
		putchar( outc );
		++colcount;
		outc = egg_nibble2char( c & 0x0F );
		putchar( outc );
		++colcount;
		if ( colcount > 72 ) {
			colcount = 0;
			putchar( '"' );
			putchar( '\n' );
		}
	}

	if ( colcount > 0 ) {
		putchar( '"' );
		putchar( '\n' );
	}

	return 0;
}


static unsigned char
egg_nibble2char( int nibble )
{
	return ( nibble < 10 ) ? nibble + '0' : ( nibble - 10 ) + 'A';
}