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