stas 2002/06/05 03:25:06
Modified: src/docs/2.0/user/compat compat.pod
Log:
- documenting log functions changes and a few other recent compat changes
- polishing the doc
Revision Changes Path
1.23 +168 -76 modperl-docs/src/docs/2.0/user/compat/compat.pod
Index: compat.pod
===================================================================
RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/compat/compat.pod,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- compat.pod 4 Jun 2002 10:16:44 -0000 1.22
+++ compat.pod 5 Jun 2002 10:25:06 -0000 1.23
@@ -163,7 +163,7 @@
=back
See the manpages of the respective modules to figure out which
-constants they provide. (XXX: the manpages don't exist)
+constants they provide. (XXX: not all manpages exist yet.)
META: add the info how to perform the transition. XXX: may be write a
script, which can tell you how to port the constants to 2.0? Currently
@@ -175,13 +175,34 @@
-=head1 C<Apache::>
+=head1 C<Apache::> Methods
+=head2 C<Apache-E<gt>request>
+C<Apache-E<gt>request> is deprecated. It's error-prone and hurts
+performance when using threaded MPMs, since it has to use thread local
+storage.
-=head2 C<Apache-E<gt>define()>
+For any location that uses C<Apache-E<gt>request> and uses
+C<"modperl"> handler, you need to configure:
+
+ <Location ...>
+ SetHandler modperl
+ PerlOptions +GlobalRequest
+ ...
+ </Location>
+
+It's already enabled for:
-C<Apache-E<gt>define()> has been replaced with
+ <Location ...>
+ SetHandler perl-script
+ ...
+ </Location>
+
+
+=head2 C<Apache-E<gt>define>
+
+C<Apache-E<gt>define> has been replaced with
C<Apache::exists_config_define()> residing inside
C<Apache::ServerUtil>.
@@ -195,22 +216,52 @@
See the C<L<ModPerl::Util>> manpage.
-=head2 C<gensym()>
+=head2 C<Apache::gensym()>
Since Perl 5.6.1 filehandlers are autovivified and there is no need
for C<Apache::gensym()> function, since now it can be done with:
open my $fh, "foo" or die $!;
-Though the C function modperl_perl_gensym() is available for XS/C
+Though the C function C<modperl_perl_gensym()> is available for XS/C
extensions writers.
-=head2 C<module()>
+=head2 C<Apache::module()>
-C<Apache::module> has been replaced with the function
+C<Apache::module()> has been replaced with the function
C<Apache::Module::loaded()>, which now accepts a single argument: the
module name.
+=head2 C<Apache::log_error()>
+
+C<Apache::log_error()> is not available in mod_perl 2.0 API. You can
+use:
+
+ Apache->server->log_error
+
+instead. See the C<L<Apache::Log>> manpage.
+
+
+
+
+
+=head1 Server Object Methods
+
+=head2 C<$s-E<gt>register_cleanup>
+
+C<$s-E<gt>register_cleanup> has been replaced with
+C<APR::Pool::cleanup_register()> which accepts the pool object as the
+first argument instead of the server object. e.g.:
+
+ sub cleanup_callback { my $data = shift; ... }
+ $s->pool->cleanup_register(\&cleanup_callback, $data);
+
+where the last argument C<$data> is optional, and if supplied will be
+passed as the first argument to the callback function.
+
+See the C<L<APR::Pool>> manpage.
+
+
@@ -218,22 +269,30 @@
=head1 Request Object Methods
-=head2 C<$r-E<gt>lookup_file>, C<$r-E<gt>lookup_uri>,
+=head2 C<$r-E<gt>lookup_file>
+
+See the next item
+
+=head2 C<$r-E<gt>lookup_uri>
+
+C<$r-E<gt>lookup_file> and C<$r-E<gt>lookup_uri> didn't change their
+functionality but moved into C<L<Apache::SubRequest>>. Before using
+them, add:
+
+ use Apache::SubRequest;
-These functions have moved but didn't change their functionality. In
-order to use them load the module they belong to in mod_perl 2.0:
- $r->lookup_file Apache::SubRequest
- $r->lookup_uri Apache::SubRequest
+=head2 C<$r-E<gt>content>
+See the next item.
-=head2 C<$r-E<gt>content()> and C<$r-E<gt>args()> in an Array Context
+=head2 C<$r-E<gt>args> in an Array Context
-C<$r-E<gt>args()> in 2.0 returns the query string without parsing and
+C<$r-E<gt>args> in 2.0 returns the query string without parsing and
splitting it into an array. You can also set the query string by
passing a string to this method.
-C<$r-E<gt>content()> and C<$r-E<gt>args()> in an array context were
+C<$r-E<gt>content> and C<$r-E<gt>args> in an array context were
mistakes that never should have been part of the mod_perl 1.0
API. There multiple reason for that, among others:
@@ -270,30 +329,31 @@
=back
-Instead you should use C<Apache::Request>'s params() and similar
-methods to do the parsing for you. See the L<Apache::Request> manpage.
+Instead you should use C<Apache::Request>'s C<params()> and similar
+methods to do the parsing for you. See the C<L<Apache::Request>>
+manpage.
XXX: ...when Apache::Request will be ported to 2.0. For now you can
use the code in C<Apache::compat> that implements these methods in
Perl.
-=head2 C<chdir_file()>
+=head2 C<$r-E<gt>chdir_file>
-C<chdir()> is not a thread-safe function, therefore C<chdir_file()> is
-gone from the API.
+C<chdir()> is not a thread-safe function, therefore
+C<$r-E<gt>chdir_file> is gone from the API.
=head2 C<$r-E<gt>connection-E<gt>user>
-This method is deprecated in 1.0 and C<$r-E<gt>user> should be used
-instead for both versions of mod_perl. C<Apache::user()> method is
-available since mod_perl version 1.24_01.
+This method is deprecated in mod_perl 1.0 and C<$r-E<gt>user> should
+be used instead, for both versions of mod_perl. C<$r-E<gt>user()>
+method is available since mod_perl version 1.24_01.
-=head2 C<$r-E<gt>is_main()>
+=head2 C<$r-E<gt>is_main>
-C<$r-E<gt>is_main()> is not part of the mod_perl 2.0 API. Use
-C<!$r-E<gt>main()> instead.
+C<$r-E<gt>is_main> is not part of the mod_perl 2.0 API. Use
+C<!$r-E<gt>main> instead.
-=head2 C<$r-E<gt>finfo()>
+=head2 C<$r-E<gt>finfo>
XXX: not implemented yet. To be implemented. C<Apache::compat> handles
that for now with:
@@ -304,7 +364,15 @@
\*_;
}
-=head2 C<$r-E<gt>header_in()>, C<$r-E<gt>header_out()> and
C<$r-E<gt>err_header_out()>
+=head2 C<$r-E<gt>header_in>
+
+See the next item.
+
+=head2 C<$r-E<gt>header_out>
+
+See the next item.
+
+=head2 C<$r-E<gt>err_header_out>
C<header_in()>, C<header_out()> and C<err_header_out()> are not
available in 2.0. Use C<headers_in()>, C<headers_out()> and
@@ -320,56 +388,42 @@
See the L<Apache::RequestRec> manpage.
+=head2 C<$r-E<gt>log_reason>
+C<$r-E<gt>log_reason> is not available in mod_perl 2.0 API. Use the
+other standard logging functions provided by the C<L<Apache::Log>>
+module. For example:
-=head2 C<$r-E<gt>log_reason()>
-
-C<log_reason()> has been replaced with a set of dedicated functions:
-C<Apache::RequestRec::log_error()>, C<Apache::ServerRec::log_error()>,
-C<Apache::Log::info()> and others.
+ $r->log_error("it works!");
-See the L<Apache::RequestRec>, L<Apache::Server> and L<Apache::Log>
-manpages.
+See the C<L<Apache::Log>> manpage.
-=head2 C<$r-E<gt>register_cleanup()>
+=head2 C<$r-E<gt>register_cleanup>
-register_cleanup() has been replaced with
+C<$r-E<gt>register_cleanup> has been replaced with
C<APR::Pool::cleanup_register()> which accepts the pool object as the
first argument instead of the request object. e.g.:
- $r->pool->cleanup_register(\&cleanup, $data);
+ sub cleanup_callback { my $data = shift; ... }
+ $r->pool->cleanup_register(\&cleanup_callback, $data);
-where the last argument C<$data> is optional.
+where the last argument C<$data> is optional, and if supplied will be
+passed as the first argument to the callback function.
See the L<APR::Pool> manpage.
-=head2 C<$r-E<gt>request()>
+=head2 C<$r-E<gt>request>
-Use C<Apache::request()>.
+Use C<Apache-E<gt>request>.
-Notice that C<Apache-E<gt>request> is deprecated. It's error-prone
-and hurts performance when using threaded MPMs, since it has to use
-thread local storage.
-For any location that uses C<Apache-E<gt>request> and uses
-C<"modperl"> handler, you need to configure:
+=head2 C<$r-E<gt>send_fd>
- <Location ...>
- SetHandler modperl
- PerlOptions +GlobalRequest
- ...
- </Location>
-
-It's already enabled for:
-
- <Location ...>
- SetHandler perl-script
- ...
- </Location>
+See the next item.
-=head2 C<$r-E<gt>send_fd()> and C<$r-E<gt>send_fd_length()>
+=head2 C<$r-E<gt>send_fd_length>
currently available only in the 1.0 compatibility layer. The problem
is that Apache has changed the API and the its functionality. See the
@@ -385,10 +439,22 @@
See the L<Apache::ServerUtil> manpage.
-=head2 C<$r-E<gt>hard_timeout()>, C<$r-E<gt>reset_timeout()>,
C<$r-E<gt>soft_timeout()> and C<$r-E<gt>kill_timeout()>
+=head2 C<$r-E<gt>hard_timeout>
-The functions C<$r-E<gt>hard_timeout()>, C<$r-E<gt>reset_timeout()>,
-C<$r-E<gt>soft_timeout()> and C<$r-E<gt>kill_timeout()> aren't needed
+See the next item.
+
+=head2 C<$r-E<gt>reset_timeout>
+
+See the next item.
+
+=head2 C<$r-E<gt>soft_timeout>
+
+See the next item.
+
+=head2 C<$r-E<gt>kill_timeout>
+
+The functions C<$r-E<gt>hard_timeout>, C<$r-E<gt>reset_timeout>,
+C<$r-E<gt>soft_timeout> and C<$r-E<gt>kill_timeout> aren't needed
in mod_perl 2.0.
@@ -397,8 +463,8 @@
=head1 Apache::File
-The methods from module C<Apache::File> have been either moved to
-other packages or removed.
+The methods from mod_perl 1.0's module C<Apache::File> have been
+either moved to other packages or removed.
=head2 C<open()> and C<close()>
@@ -417,9 +483,29 @@
mtime() now belongs to the module L<Apache::RequestRec>.
-=head2 C<discard_request_body()>, C<meets_conditions()>,
C<set_content_length()>, C<set_etag()>, C<set_last_modified()> and
C<update_mtime()>
+=head2 C<discard_request_body()>
+
+This function now belongs to the module C<L<Apache::Response>>.
+
+=head2 C<meets_conditions()>
+
+This function now belongs to the module C<L<Apache::Response>>.
-These functions now belong to the module L<Apache::Response>.
+=head2 C<set_content_length()>
+
+This function now belongs to the module C<L<Apache::Response>>.
+
+=head2 C<set_etag()>
+
+This function now belongs to the module C<L<Apache::Response>>.
+
+=head2 C<set_last_modified()>
+
+This function now belongs to the module C<L<Apache::Response>>.
+
+=head2 C<update_mtime()>
+
+This function now belongs to the module C<L<Apache::Response>>.
@@ -430,11 +516,11 @@
A few C<Apache::Util> functions have changed their interface.
-=head2 C<Apache::Util::size_string>
+=head2 C<Apache::Util::size_string()>
-C<Apache::Util::size_string> has been replaced with
-C<APR::String::format_size>, which returns formatted strings of only 4
-characters long. See the C<L<APR::String>> manpage.
+C<Apache::Util::size_string()> has been replaced with
+C<APR::String::format_size()>, which returns formatted strings of only
+4 characters long. See the C<L<APR::String>> manpage.
=head2 C<Apache::Util::unescape_uri()>
@@ -480,11 +566,17 @@
See the I<attributes> manpage.
-mod_perl 2.0 doesn't support the C<($$)> prototypes, mainly because
-several callbacks in 2.0 have more arguments than C<$r>, so the
-C<($$)> prototype doesn't make sense anymore. Therefore if you want
-your code to work with both mod_perl generations, you should use the
-subroutine attributes.
+mod_perl 2.0 doesn't handles callbacks with C<($$)> prototypes
+differently than other callbacks (as it did in mod_perl 1.0), mainly
+because several callbacks in 2.0 have more arguments than just C<$r>,
+so the C<($$)> prototype doesn't make sense anymore. Therefore if you
+want your code to work with both mod_perl generations and you can
+allow the luxury of:
+
+ require 5.6.0;
+
+you should use the subroutine attributes. The subroutine attributes
+are supported in Perl only since version 5.6.0.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]