xref: /freebsd/contrib/sendmail/libsm/t-str2prt.c (revision 2fb4f839f3fc72ce2bab12f9ba4760f97f73e97f)
1*2fb4f839SGregory Neil Shapiro /*
2*2fb4f839SGregory Neil Shapiro  * Copyright (c) 2006 Proofpoint, Inc. and its suppliers.
3*2fb4f839SGregory Neil Shapiro  *	All rights reserved.
4*2fb4f839SGregory Neil Shapiro  *
5*2fb4f839SGregory Neil Shapiro  * By using this file, you agree to the terms and conditions set
6*2fb4f839SGregory Neil Shapiro  * forth in the LICENSE file which can be found at the top level of
7*2fb4f839SGregory Neil Shapiro  * the sendmail distribution.
8*2fb4f839SGregory Neil Shapiro  */
9*2fb4f839SGregory Neil Shapiro 
10*2fb4f839SGregory Neil Shapiro #include <sm/gen.h>
11*2fb4f839SGregory Neil Shapiro SM_IDSTR(id, "@(#)$Id: t-qic.c,v 1.10 2013-11-22 20:51:43 ca Exp $")
12*2fb4f839SGregory Neil Shapiro 
13*2fb4f839SGregory Neil Shapiro #include <stdio.h>
14*2fb4f839SGregory Neil Shapiro #include <sm/sendmail.h>
15*2fb4f839SGregory Neil Shapiro #include <sm/assert.h>
16*2fb4f839SGregory Neil Shapiro #include <sm/heap.h>
17*2fb4f839SGregory Neil Shapiro #include <sm/string.h>
18*2fb4f839SGregory Neil Shapiro #include <sm/test.h>
19*2fb4f839SGregory Neil Shapiro 
20*2fb4f839SGregory Neil Shapiro extern bool SmTestVerbose;
21*2fb4f839SGregory Neil Shapiro 
22*2fb4f839SGregory Neil Shapiro struct sm_qic_S
23*2fb4f839SGregory Neil Shapiro {
24*2fb4f839SGregory Neil Shapiro 	char		*qic_in;
25*2fb4f839SGregory Neil Shapiro 	char		*qic_out;
26*2fb4f839SGregory Neil Shapiro 	int		 qic_exp;
27*2fb4f839SGregory Neil Shapiro };
28*2fb4f839SGregory Neil Shapiro typedef struct sm_qic_S sm_qic_T;
29*2fb4f839SGregory Neil Shapiro 
30*2fb4f839SGregory Neil Shapiro int
main(argc,argv)31*2fb4f839SGregory Neil Shapiro main(argc, argv)
32*2fb4f839SGregory Neil Shapiro 	int argc;
33*2fb4f839SGregory Neil Shapiro 	char *argv[];
34*2fb4f839SGregory Neil Shapiro {
35*2fb4f839SGregory Neil Shapiro 	char *obp;
36*2fb4f839SGregory Neil Shapiro 	int i, cmp;
37*2fb4f839SGregory Neil Shapiro 	sm_qic_T inout[] = {
38*2fb4f839SGregory Neil Shapiro 		  { "", "",	0 }
39*2fb4f839SGregory Neil Shapiro 		, { "abcdef", "abcdef",	0 }
40*2fb4f839SGregory Neil Shapiro 		, { "01234567890123456789", "01234567890123456789",	0 }
41*2fb4f839SGregory Neil Shapiro 		, { "\\", "\\\\",	0 }
42*2fb4f839SGregory Neil Shapiro 		, { "\\001", "\\\\001",	0 }
43*2fb4f839SGregory Neil Shapiro 		, { "01234567890123456789\\001", "01234567890123456789\\\\001",
44*2fb4f839SGregory Neil Shapiro 			0 }
45*2fb4f839SGregory Neil Shapiro 		, { NULL, NULL,	0 }
46*2fb4f839SGregory Neil Shapiro 	};
47*2fb4f839SGregory Neil Shapiro 
48*2fb4f839SGregory Neil Shapiro 	sm_test_begin(argc, argv, "test meta quoting");
49*2fb4f839SGregory Neil Shapiro 	for (i = 0; inout[i].qic_in != NULL; i++)
50*2fb4f839SGregory Neil Shapiro 	{
51*2fb4f839SGregory Neil Shapiro 		obp = str2prt(inout[i].qic_in);
52*2fb4f839SGregory Neil Shapiro 		cmp = strcmp(inout[i].qic_out, obp);
53*2fb4f839SGregory Neil Shapiro 		SM_TEST(inout[i].qic_exp == cmp);
54*2fb4f839SGregory Neil Shapiro 		if (inout[i].qic_exp != cmp && SmTestVerbose)
55*2fb4f839SGregory Neil Shapiro 		{
56*2fb4f839SGregory Neil Shapiro 			fprintf(stderr, "in: %s\n", inout[i].qic_in);
57*2fb4f839SGregory Neil Shapiro 			fprintf(stderr, "got: %s\n", obp);
58*2fb4f839SGregory Neil Shapiro 			fprintf(stderr, "exp: %s\n", inout[i].qic_out);
59*2fb4f839SGregory Neil Shapiro 			fprintf(stderr, "cmp=%d\n", cmp);
60*2fb4f839SGregory Neil Shapiro 		}
61*2fb4f839SGregory Neil Shapiro 	}
62*2fb4f839SGregory Neil Shapiro 
63*2fb4f839SGregory Neil Shapiro 	return sm_test_end();
64*2fb4f839SGregory Neil Shapiro }
65