17d1ffc32SGordon Ross /*
27d1ffc32SGordon Ross  * This file and its contents are supplied under the terms of the
37d1ffc32SGordon Ross  * Common Development and Distribution License ("CDDL"), version 1.0.
47d1ffc32SGordon Ross  * You may only use this file in accordance with the terms of version
57d1ffc32SGordon Ross  * 1.0 of the CDDL.
67d1ffc32SGordon Ross  *
77d1ffc32SGordon Ross  * A full copy of the text of the CDDL should have accompanied this
87d1ffc32SGordon Ross  * source.  A copy of the CDDL is also available via the Internet at
97d1ffc32SGordon Ross  * http://www.illumos.org/license/CDDL.
107d1ffc32SGordon Ross  */
117d1ffc32SGordon Ross 
127d1ffc32SGordon Ross /*
137d1ffc32SGordon Ross  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
14*da90d5b8SJohn Levon  * Copyright 2019 Joyent, Inc.
157d1ffc32SGordon Ross  */
167d1ffc32SGordon Ross 
177d1ffc32SGordon Ross /*
187d1ffc32SGordon Ross  * Test & debug program for smb_msgbuf.c and smb_mbuf_marshaling.c
197d1ffc32SGordon Ross  */
207d1ffc32SGordon Ross 
217d1ffc32SGordon Ross #include <sys/types.h>
227d1ffc32SGordon Ross #include <sys/debug.h>
237d1ffc32SGordon Ross 
247d1ffc32SGordon Ross #include <stdio.h>
257d1ffc32SGordon Ross #include <stdlib.h>
267d1ffc32SGordon Ross #include <string.h>
277d1ffc32SGordon Ross #include <strings.h>
287d1ffc32SGordon Ross #include <unistd.h>
297d1ffc32SGordon Ross 
307d1ffc32SGordon Ross #include "test_defs.h"
317d1ffc32SGordon Ross 
327d1ffc32SGordon Ross 
337d1ffc32SGordon Ross int
main(int argc,char * argv[])347d1ffc32SGordon Ross main(int argc, char *argv[])
357d1ffc32SGordon Ross {
367d1ffc32SGordon Ross 
377d1ffc32SGordon Ross 	test_conv();
387d1ffc32SGordon Ross 	test_mbmarshal();
397d1ffc32SGordon Ross 	test_msgbuf();
407d1ffc32SGordon Ross 
417d1ffc32SGordon Ross 	return (0);
427d1ffc32SGordon Ross }
437d1ffc32SGordon Ross 
447d1ffc32SGordon Ross void
hexdump(const uchar_t * buf,int len)457d1ffc32SGordon Ross hexdump(const uchar_t *buf, int len)
467d1ffc32SGordon Ross {
477d1ffc32SGordon Ross 	int idx;
487d1ffc32SGordon Ross 	char ascii[24];
497d1ffc32SGordon Ross 	char *pa = ascii;
507d1ffc32SGordon Ross 
517d1ffc32SGordon Ross 	memset(ascii, '\0', sizeof (ascii));
527d1ffc32SGordon Ross 
537d1ffc32SGordon Ross 	idx = 0;
547d1ffc32SGordon Ross 	while (len--) {
557d1ffc32SGordon Ross 		if ((idx & 15) == 0) {
567d1ffc32SGordon Ross 			printf("%04X: ", idx);
577d1ffc32SGordon Ross 			pa = ascii;
587d1ffc32SGordon Ross 		}
597d1ffc32SGordon Ross 		if (*buf > ' ' && *buf <= '~')
607d1ffc32SGordon Ross 			*pa++ = *buf;
617d1ffc32SGordon Ross 		else
627d1ffc32SGordon Ross 			*pa++ = '.';
637d1ffc32SGordon Ross 		printf("%02x ", *buf++);
647d1ffc32SGordon Ross 
657d1ffc32SGordon Ross 		idx++;
667d1ffc32SGordon Ross 		if ((idx & 3) == 0) {
677d1ffc32SGordon Ross 			*pa++ = ' ';
68*da90d5b8SJohn Levon 			(void) putchar(' ');
697d1ffc32SGordon Ross 		}
707d1ffc32SGordon Ross 		if ((idx & 15) == 0) {
717d1ffc32SGordon Ross 			*pa = '\0';
727d1ffc32SGordon Ross 			printf("%s\n", ascii);
737d1ffc32SGordon Ross 		}
747d1ffc32SGordon Ross 	}
757d1ffc32SGordon Ross 
767d1ffc32SGordon Ross 	if ((idx & 15) != 0) {
777d1ffc32SGordon Ross 		*pa = '\0';
787d1ffc32SGordon Ross 		/* column align the last ascii row */
797d1ffc32SGordon Ross 		while ((idx & 15) != 0) {
807d1ffc32SGordon Ross 			if ((idx & 3) == 0)
81*da90d5b8SJohn Levon 				(void) putchar(' ');
827d1ffc32SGordon Ross 			printf("   ");
837d1ffc32SGordon Ross 			idx++;
847d1ffc32SGordon Ross 		}
857d1ffc32SGordon Ross 		printf("%s\n", ascii);
867d1ffc32SGordon Ross 	}
877d1ffc32SGordon Ross }
88