eggencode.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /** BEGIN COPYRIGHT BLOCK
  2. * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  3. * Copyright (C) 2005 Red Hat, Inc.
  4. * All rights reserved.
  5. *
  6. * License: GPL (version 3 or any later version).
  7. * See LICENSE for details.
  8. * END COPYRIGHT BLOCK **/
  9. #ifdef HAVE_CONFIG_H
  10. # include <config.h>
  11. #endif
  12. /*
  13. * Easter egg encoder. See ../fedse.c:egg_decode() for the mirror image.
  14. */
  15. #include <stdio.h>
  16. static unsigned char egg_nibble2char( int nibble );
  17. int
  18. main( int argc, char *argv[] )
  19. {
  20. int c, colcount;
  21. char outc;
  22. if ( argc > 1 ) {
  23. fprintf( stderr, "usage: %s < in > out\n", argv[0] );
  24. return 2;
  25. }
  26. colcount = 0;
  27. while (( c = getchar()) != EOF ) {
  28. if ( 0 == colcount ) {
  29. putchar( '"' );
  30. }
  31. c ^= 122;
  32. outc = egg_nibble2char( (c & 0xF0) >> 4 );
  33. putchar( outc );
  34. ++colcount;
  35. outc = egg_nibble2char( c & 0x0F );
  36. putchar( outc );
  37. ++colcount;
  38. if ( colcount > 72 ) {
  39. colcount = 0;
  40. putchar( '"' );
  41. putchar( '\n' );
  42. }
  43. }
  44. if ( colcount > 0 ) {
  45. putchar( '"' );
  46. putchar( '\n' );
  47. }
  48. return 0;
  49. }
  50. static unsigned char
  51. egg_nibble2char( int nibble )
  52. {
  53. return ( nibble < 10 ) ? nibble + '0' : ( nibble - 10 ) + 'A';
  54. }