1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
/**
* PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
* license terms. Copyright © 2001 Sun Microsystems, Inc.
* Some preexisting portions Copyright © 2001 Netscape Communications Corp.
* All rights reserved.
*/
/*
* Generate a screen.
*/
#include "dsgw.h"
static int dsgw_genscreen_begin( char *fname, FILE **fpp,
char *stop_at_directive, int erropts );
static int dsgw_genscreen_continue( FILE **fpp, char *stop_at_directive,
int erropts );
static LDAP *ld = NULL;
main( argc, argv, env )
int argc;
char *argv[];
#ifdef DSGW_DEBUG
char *env[];
#endif
{
char *p, *tmplname, *buf;
context=dsgw_ch_strdup("pb");
/*CHANGE THIS*/
(void)dsgw_init( argc, argv, DSGW_METHOD_GET );
dsgw_send_header();
#ifdef DSGW_DEBUG
dsgw_logstringarray( "env", env );
#endif
/*
* If the QUERY_STRING is non-NULL, it looks like this:
*
* template &CONTEXT=context [ &INFO=infostring ]
*
* where:
* "template" is the name of the HTML template to render
* "infostring" is a message used to replace DS_LAST_OP_INFO directives
*
* If the QUERY_STRING is NULL, the name of this program is used as the
* template.
*/
if (( tmplname = getenv( "QUERY_STRING" )) == NULL ) {
tmplname = progname;
} else {
tmplname = dsgw_ch_strdup( tmplname );
if (( p = strrchr( tmplname, '&' )) != NULL ) {
*p++ = '\0';
if ( strncasecmp( p, "info=", 5 ) == 0 ) {
dsgw_last_op_info = dsgw_ch_strdup( p + 5 );
dsgw_form_unescape( dsgw_last_op_info );
}
}
}
buf = dsgw_ch_malloc( strlen( tmplname ) + 6 ); /* room for ".html\0" */
sprintf( buf, "%s.html", tmplname );
dsgw_genscreen_begin( buf, NULL, NULL, DSGW_ERROPT_EXIT );
exit( 0 );
}
static int
dsgw_genscreen_begin( char *fname, FILE **fpp, char *stop_at_directive,
int erropts )
{
FILE *html;
if ( fpp == NULL ) {
fpp = &html;
}
if (( *fpp = dsgw_open_html_file( fname, erropts )) == NULL ) {
*fpp = NULL;
return( -1 );
}
return( dsgw_genscreen_continue( fpp, stop_at_directive, erropts ));
}
static int
dsgw_genscreen_continue( FILE **fpp, char *stop_at_directive, int erropts )
{
char **argv, line[ BIG_LINE ];
int argc;
while ( dsgw_next_html_line( *fpp, line )) {
if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true,
NULL )) {
if ( stop_at_directive != NULL &&
dsgw_directive_is( line, stop_at_directive )) {
return( 0 );
}
if ( dsgw_directive_is( line, DRCT_DS_LOCATIONPOPUP )) {
dsgw_emit_location_popup( ld, argc, argv, erropts );
}
}
}
fclose( *fpp );
*fpp = NULL;
return( 0 );
}
|