Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / perl5 / lib / CGI / Apache.pm
1 package CGI::Apache;
2 use Apache ();
3 use vars qw(@ISA $VERSION);
4 require CGI;
5 @ISA = qw(CGI);
6
7 $VERSION = (qw$Revision: 1.1 $)[1];
8 $CGI::DefaultClass = 'CGI::Apache';
9 $CGI::Apache::AutoloadClass = 'CGI';
10
11 sub import {
12     my $self = shift;
13     my ($callpack, $callfile, $callline) = caller;
14     ${"${callpack}::AutoloadClass"} = 'CGI';
15 }
16
17 sub new {
18     my($class) = shift;
19     my($r) = Apache->request;
20     %ENV = $r->cgi_env unless defined $ENV{GATEWAY_INTERFACE}; #PerlSetupEnv On 
21     my $self = $class->SUPER::new(@_);
22     $self->{'.req'} = $r;
23     $self;
24 }
25
26 sub header {
27     my ($self,@rest) = CGI::self_or_default(@_);
28     my $r = $self->{'.req'};
29     $r->basic_http_header;
30     return CGI::header($self,@rest);
31 }                    
32
33 sub print {
34     my($self,@rest) = CGI::self_or_default(@_);
35     $self->{'.req'}->print(@rest);
36 }
37
38 sub read_from_client {
39     my($self, $fh, $buff, $len, $offset) = @_;
40     my $r = $self->{'.req'} || Apache->request;
41     return $r->read($$buff, $len, $offset);
42 }
43
44 sub new_MultipartBuffer {
45     my $self = shift;
46     my $new = CGI::Apache::MultipartBuffer->new($self, @_); 
47     $new->{'.req'} = $self->{'.req'} || Apache->request;
48     return $new;
49 }
50
51 package CGI::Apache::MultipartBuffer;
52 use vars qw(@ISA);
53 @ISA = qw(MultipartBuffer);
54
55 $CGI::Apache::MultipartBuffer::AutoloadClass = 'MultipartBuffer';
56 *CGI::Apache::MultipartBuffer::read_from_client = 
57     \&CGI::Apache::read_from_client;
58
59
60 1;
61
62 __END__
63
64 =head1 NAME
65
66 CGI::Apache - Make things work with CGI.pm against Perl-Apache API
67
68 =head1 SYNOPSIS
69
70  require CGI::Apache;
71
72  my $q = new Apache::CGI;
73
74  $q->print($q->header);
75
76  #do things just like you do with CGI.pm
77
78 =head1 DESCRIPTION
79
80 When using the Perl-Apache API, your applications are faster, but the
81 environment is different than CGI.
82 This module attempts to set-up that environment as best it can.
83
84 =head1 NOTE 1
85
86 This module used to be named Apache::CGI.  Sorry for the confusion.
87
88 =head1 NOTE 2
89
90 If you're going to inherit from this class, make sure to "use" it
91 after your package declaration rather than "require" it.  This is
92 because CGI.pm does a little magic during the import() step in order
93 to make autoloading work correctly.
94
95 =head1 SEE ALSO
96
97 perl(1), Apache(3), CGI(3)
98
99 =head1 AUTHOR
100
101 Doug MacEachern E<lt>dougm@osf.orgE<gt>, hacked over by Andreas KE<ouml>nig E<lt>a.koenig@mind.deE<gt>, modified by Lincoln Stein <lt>lstein@genome.wi.mit.edu<gt>
102
103 =cut