Apache-WinBitHack

 view release on metacpan or  search on metacpan

WinBitHack.pm  view on Meta::CPAN

__END__

=head1 NAME

Apache::WinBitHack - An Apache module to emulate XBitHack on Win32

=head1 SYNOPSIS

In Apache's F<httpd.conf>:

   PerlModule Apache::WinBitHack

   <Directory "/Apache/htdocs/some_dir">
      SetHandler perl-script
      PerlFixupHandler Apache::WinBitHack
      XBitHack Full
      Options MultiViews Indexes Includes
   </Directory>

=head1 DESCRIPTION

Apache contains a very useful directive C<XBitHack>, whereby a file
that has the user-execute bit set will be treated as a server-parsed 
html document. As well, the group-execute bit can be used to set
the Last-modified time of the returned file to be the last modified 
time of the file, which is useful in determining if a document is
to be cached or not. On Win32 the directive works in principle, but
in an inconvenient fashion - the execute bit is set on Win32 by the
file extension, which means that documents that are to take advantage
of C<XBitHack> must have an extension like C<exe> or C<bat>.

This module emulates C<XBitHack> on Win32 by, rather than using the
user and group execute bits, using instead the attributes
of the file to determine if the file is to be server-parsed by mod_include.
Attributes of a file on Win32, which you can see by running

    C:\> attrib file_name

include C<archive>, C<hidden>, C<read-only>, and C<system>. Normal
user files have just the C<archive> attribute set, which some back-up
programs use to determine if the file should be included in the next 
incremental backup (most backup programs now instead use the 
last-modified-time of the file for this purpose). By setting certain
attributes of the file and specifying directives as in the SYNOPSIS,
particularly the C<Includes> option, 
C<XBitHack> can be emulated in the following ways.

=head2 XBitHack Off

With this directive, no server-side parsing of the file
will be performed.

=head2 XBitHack On

This directive emulates setting the user-execute bit. With this
directive, a file will parsed by mod_include if the C<archive> 
attribute is B<unset>, which you can do by

   C:\> attrib -a file_name

Note that when a user's file is first created or when it is edited 
the C<archive> attribute will normally be set (and all others unset),
so you must intentionally unset the C<archive> attribute to enable 
server-parsing of the file.

=head2 XBitHack Full

This directive emulates the action of also setting the group-execute 
bit. With this directive, as with C<XBitHack On>, a file will be 
parsed by mod_include if the C<archive> attribute is unset. As well, 
a Last-modified header will be sent, equal to the last-modified time 
of the file, I<unless> the C<read-only> attribute of the file is B<set>, 
which you can do by

   C:\> attrib +r file_name

=head1 SEE ALSO

L<mod_perl>

The description of the C<XBitHack> directive in the Apache
manual (http://httpd.apache.org/docs/mod/directives.html).

=head1 AUTHORS

Randy Kobes <randy@modperlcookbook.org>

Geoffrey Young <geoff@modperlcookbook.org>

Paul Lindner <paul@modperlcookbook.org>

=head1 COPYRIGHT

Copyright (c) 2001, Geoffrey Young, Paul Lindner, Randy Kobes.  
All rights reserved.

This module is free software.  It may be used, redistributed
and/or modified under the same terms as Perl itself.

=head1 HISTORY

This code is derived from the I<Cookbook::WinBitHack> module,
available as part of "The mod_perl Developer's Cookbook".

For more information, visit http://www.modperlcookbook.org/

=cut



( run in 0.338 second using v1.01-cache-2.11-cpan-71847e10f99 )