1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 */
25
26 #ifndef DEBUG_C
27 #define DEBUG_C
28
29 #ifdef DEBUG
30 #include <sys/fcntl.h>
31 #include <sys/stat.h>
main(int argc,char ** argv)32 int main(int argc, char ** argv) {
33 char *inbuf, *outbuf, *in_tmp, *out_tmp;
34 size_t inbytesleft, outbytesleft;
35 int fd;
36 int i;
37 struct stat s;
38 struct _icv_state *st;
39 if (argc < 2) {
40 fprintf(stderr, "Usage: %s input\n", argv[0]);
41 exit(-1);
42 }
43 if ((fd = open(argv[1], O_RDONLY)) == -1) {
44 perror("open");
45 exit(-2);
46 }
47 if (fstat(fd, &s) == -1) {
48 perror("stat");
49 exit(-3);
50 }
51 inbytesleft = outbytesleft = s.st_size;
52 in_tmp = inbuf = (char *)malloc(inbytesleft);
53 out_tmp = outbuf = (char *)malloc(outbytesleft);
54 if (!inbuf || !outbuf) {
55 perror("malloc");
56 exit(-1);
57 }
58 if (read(fd, inbuf, inbytesleft) != inbytesleft) {
59 perror("read");
60 exit(-4);
61 }
62 st = (struct _icv_state *)_icv_open();
63 if (st == (struct _icv_state *) -1) {
64 perror("_icv_open");
65 exit(-1);
66 }
67 if (_icv_iconv(st, &inbuf, &inbytesleft, \
68 &outbuf, &outbytesleft) == -1) {
69 perror("icv_iconv");
70 fprintf(stderr, "\ninbytesleft = %d\n", inbytesleft);
71 exit(-2);
72 }
73 /* Output tbl[] contents. */
74 for (i=0; i < s.st_size; i++)
75 i == s.st_size-1 ?
76 printf("/* 0x%02X */ { 0x%02X, %d }\n", i, (unsigned char) *(out_tmp+i), sizeof(*(out_tmp+i))) :
77 printf("/* 0x%02X */ { 0x%02X, %d },\n", i, (unsigned char) *(out_tmp+i), sizeof(*(out_tmp+i)));
78 free(in_tmp);
79 free(out_tmp);
80 close(fd);
81 _icv_close(st);
82 }
83 #endif /* DEBUG */
84 #endif /* DEBUG_C */
85