xref: /aosp_15_r20/external/libcups/cgi-bin/testtemplate.c (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1*5e7646d2SAndroid Build Coastguard Worker /*
2*5e7646d2SAndroid Build Coastguard Worker  * CGI template test program for CUPS.
3*5e7646d2SAndroid Build Coastguard Worker  *
4*5e7646d2SAndroid Build Coastguard Worker  * Copyright 2007-2011 by Apple Inc.
5*5e7646d2SAndroid Build Coastguard Worker  * Copyright 2006 by Easy Software Products.
6*5e7646d2SAndroid Build Coastguard Worker  *
7*5e7646d2SAndroid Build Coastguard Worker  * Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
8*5e7646d2SAndroid Build Coastguard Worker  */
9*5e7646d2SAndroid Build Coastguard Worker 
10*5e7646d2SAndroid Build Coastguard Worker /*
11*5e7646d2SAndroid Build Coastguard Worker  * Include necessary headers...
12*5e7646d2SAndroid Build Coastguard Worker  */
13*5e7646d2SAndroid Build Coastguard Worker 
14*5e7646d2SAndroid Build Coastguard Worker #include "cgi.h"
15*5e7646d2SAndroid Build Coastguard Worker 
16*5e7646d2SAndroid Build Coastguard Worker 
17*5e7646d2SAndroid Build Coastguard Worker /*
18*5e7646d2SAndroid Build Coastguard Worker  * 'main()' - Test the template code.
19*5e7646d2SAndroid Build Coastguard Worker  */
20*5e7646d2SAndroid Build Coastguard Worker 
21*5e7646d2SAndroid Build Coastguard Worker int					/* O - Exit status */
main(int argc,char * argv[])22*5e7646d2SAndroid Build Coastguard Worker main(int  argc,				/* I - Number of command-line arguments */
23*5e7646d2SAndroid Build Coastguard Worker      char *argv[])			/* I - Command-line arguments */
24*5e7646d2SAndroid Build Coastguard Worker {
25*5e7646d2SAndroid Build Coastguard Worker   int	i;				/* Looping var */
26*5e7646d2SAndroid Build Coastguard Worker   char	*value;				/* Value in name=value */
27*5e7646d2SAndroid Build Coastguard Worker   FILE	*out;				/* Where to send output */
28*5e7646d2SAndroid Build Coastguard Worker 
29*5e7646d2SAndroid Build Coastguard Worker 
30*5e7646d2SAndroid Build Coastguard Worker  /*
31*5e7646d2SAndroid Build Coastguard Worker   * Don't buffer stdout or stderr so that the mixed output is sane...
32*5e7646d2SAndroid Build Coastguard Worker   */
33*5e7646d2SAndroid Build Coastguard Worker 
34*5e7646d2SAndroid Build Coastguard Worker   setbuf(stdout, NULL);
35*5e7646d2SAndroid Build Coastguard Worker   setbuf(stderr, NULL);
36*5e7646d2SAndroid Build Coastguard Worker 
37*5e7646d2SAndroid Build Coastguard Worker  /*
38*5e7646d2SAndroid Build Coastguard Worker   * Loop through the command-line, assigning variables for any args with
39*5e7646d2SAndroid Build Coastguard Worker   * "name=value"...
40*5e7646d2SAndroid Build Coastguard Worker   */
41*5e7646d2SAndroid Build Coastguard Worker 
42*5e7646d2SAndroid Build Coastguard Worker   out = stdout;
43*5e7646d2SAndroid Build Coastguard Worker 
44*5e7646d2SAndroid Build Coastguard Worker   for (i = 1; i < argc; i ++)
45*5e7646d2SAndroid Build Coastguard Worker   {
46*5e7646d2SAndroid Build Coastguard Worker     if (!strcmp(argv[i], "-o"))
47*5e7646d2SAndroid Build Coastguard Worker     {
48*5e7646d2SAndroid Build Coastguard Worker       i ++;
49*5e7646d2SAndroid Build Coastguard Worker       if (i < argc)
50*5e7646d2SAndroid Build Coastguard Worker       {
51*5e7646d2SAndroid Build Coastguard Worker         out = fopen(argv[i], "w");
52*5e7646d2SAndroid Build Coastguard Worker 	if (!out)
53*5e7646d2SAndroid Build Coastguard Worker 	{
54*5e7646d2SAndroid Build Coastguard Worker 	  perror(argv[i]);
55*5e7646d2SAndroid Build Coastguard Worker 	  return (1);
56*5e7646d2SAndroid Build Coastguard Worker 	}
57*5e7646d2SAndroid Build Coastguard Worker       }
58*5e7646d2SAndroid Build Coastguard Worker     }
59*5e7646d2SAndroid Build Coastguard Worker     else if (!strcmp(argv[i], "-e"))
60*5e7646d2SAndroid Build Coastguard Worker     {
61*5e7646d2SAndroid Build Coastguard Worker       i ++;
62*5e7646d2SAndroid Build Coastguard Worker 
63*5e7646d2SAndroid Build Coastguard Worker       if (i < argc)
64*5e7646d2SAndroid Build Coastguard Worker       {
65*5e7646d2SAndroid Build Coastguard Worker         if (!freopen(argv[i], "w", stderr))
66*5e7646d2SAndroid Build Coastguard Worker 	{
67*5e7646d2SAndroid Build Coastguard Worker 	  perror(argv[i]);
68*5e7646d2SAndroid Build Coastguard Worker 	  return (1);
69*5e7646d2SAndroid Build Coastguard Worker 	}
70*5e7646d2SAndroid Build Coastguard Worker       }
71*5e7646d2SAndroid Build Coastguard Worker     }
72*5e7646d2SAndroid Build Coastguard Worker     else if (!strcmp(argv[i], "-q"))
73*5e7646d2SAndroid Build Coastguard Worker       freopen("/dev/null", "w", stderr);
74*5e7646d2SAndroid Build Coastguard Worker     else if ((value = strchr(argv[i], '=')) != NULL)
75*5e7646d2SAndroid Build Coastguard Worker     {
76*5e7646d2SAndroid Build Coastguard Worker       *value++ = '\0';
77*5e7646d2SAndroid Build Coastguard Worker       cgiSetVariable(argv[i], value);
78*5e7646d2SAndroid Build Coastguard Worker     }
79*5e7646d2SAndroid Build Coastguard Worker     else
80*5e7646d2SAndroid Build Coastguard Worker       cgiCopyTemplateFile(out, argv[i]);
81*5e7646d2SAndroid Build Coastguard Worker   }
82*5e7646d2SAndroid Build Coastguard Worker 
83*5e7646d2SAndroid Build Coastguard Worker  /*
84*5e7646d2SAndroid Build Coastguard Worker   * Return with no errors...
85*5e7646d2SAndroid Build Coastguard Worker   */
86*5e7646d2SAndroid Build Coastguard Worker 
87*5e7646d2SAndroid Build Coastguard Worker   return (0);
88*5e7646d2SAndroid Build Coastguard Worker }
89