1 /* Recode strings between character sets, using iconv.
2 Copyright (C) 2004 Free Software Foundation, Inc.
3 Written by Simon Josefsson.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License along
16 with this program; if not, write to the Free Software Foundation,
17 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
25 main (int argc, char *argv[])
27 const char *in = "abcdefghijklmnop";
28 const char *b64in = "YWJjZGVmZw==";
34 memset (out, 0x42, sizeof (out));
35 base64_encode (in, 0, out, 0);
37 fprintf (stderr, "failure\n");
39 memset (out, 0x42, sizeof (out));
40 base64_encode (in, 1, out, 1);
41 if (memcmp (out, "YQ==", 1) != 0)
44 fprintf (stderr, "failure (%s)\n", out);
47 memset (out, 0x42, sizeof (out));
48 base64_encode (in, 1, out, 2);
49 if (memcmp (out, "YQ==", 2) != 0)
52 fprintf (stderr, "failure (%s)\n", out);
55 memset (out, 0x42, sizeof (out));
56 base64_encode (in, 1, out, 3);
57 if (memcmp (out, "YQ==", 3) != 0)
60 fprintf (stderr, "failure (%s)\n", out);
63 memset (out, 0x42, sizeof (out));
64 base64_encode (in, 1, out, 4);
65 if (memcmp (out, "YQ==", 4) != 0)
68 fprintf (stderr, "failure (%s)\n", out);
71 memset (out, 0x42, sizeof (out));
72 base64_encode (in, 1, out, 8);
73 if (memcmp (out, "YQ==", 4) != 0)
76 fprintf (stderr, "failure (%s)\n", out);
79 memset (out, 0x42, sizeof (out));
80 base64_encode (in, 2, out, 4);
81 if (memcmp (out, "YWI=", 4) != 0)
84 fprintf (stderr, "failure (%s)\n", out);
87 memset (out, 0x42, sizeof (out));
88 base64_encode (in, 3, out, 4);
89 if (memcmp (out, "YWJj", 4) != 0)
92 fprintf (stderr, "failure (%s)\n", out);
95 memset (out, 0x42, sizeof (out));
96 base64_encode (in, 4, out, 5);
97 if (memcmp (out, "YWJjZA==", 5) != 0)
100 fprintf (stderr, "failure (%s)\n", out);
103 memset (out, 0x42, sizeof (out));
104 base64_encode (in, 4, out, 100);
105 if (memcmp (out, "YWJjZA==", 6) != 0)
108 fprintf (stderr, "failure (%s)\n", out);
113 memset (out, 0x42, sizeof (out));
115 ok = base64_decode (b64in, 4, out, &len);
117 fprintf (stderr, "decode failed\n");
119 fprintf (stderr, "failure (%d)\n", len);
121 memset (out, 0x42, sizeof (out));
123 ok = base64_decode (b64in, 4, out, &len);
125 fprintf (stderr, "decode failed\n");
126 if (len != 1 || memcmp (out, "abcdefg", 1) != 0)
129 fprintf (stderr, "failure (%d: %s)\n", len, out);
132 memset (out, 0x42, sizeof (out));
134 ok = base64_decode (b64in, 4, out, &len);
136 fprintf (stderr, "decode failed\n");
137 if (len != 2 || memcmp (out, "abcdefg", 2) != 0)
140 fprintf (stderr, "failure (%d: %s)\n", len, out);
143 memset (out, 0x42, sizeof (out));
145 ok = base64_decode (b64in, 4, out, &len);
147 fprintf (stderr, "decode failed\n");
148 if (len != 3 || memcmp (out, "abcdefg", 3) != 0)
151 fprintf (stderr, "failure (%d: %s)\n", len, out);
154 memset (out, 0x42, sizeof (out));
156 ok = base64_decode (b64in, 4, out, &len);
158 fprintf (stderr, "decode failed\n");
159 if (len != 3 || memcmp (out, "abcdefg", 3) != 0)
162 fprintf (stderr, "failure (%d: %s)\n", len, out);
165 memset (out, 0x42, sizeof (out));
167 ok = base64_decode (b64in, strlen (b64in), out, &len);
169 fprintf (stderr, "decode failed\n");
170 if (len != 7 || memcmp (out, "abcdefg", 7) != 0)
173 fprintf (stderr, "failure (%d: %s)\n", len, out);