Revision history for Perl extension HTML::Embperl.

0.26-beta 16 Mar 98
   - Adapt include pass to compile with apache_1.3b5
   - Applied patch from Dan Walters to make Embperl compile with 
     apache_1.3b3 and mod_perl on Win 32
   - Changed the order of included c headers and undef some macros 
     inbetween (copied from mod_perl.c) to compile with apache on Win 32
   - Embperl works with apache_1.3b5 on win nt (make test does not yet)
     (You need the apache sources and must compile perl with the vc++)

   - Added the 'param' parameter to the Execute function to pass parameters
     from and to the Embperl document.
   - Added the 'fdat' and 'ffld' parameter to the Execute function to
     setup %fdat and @ffld   
   - Fix a problem which displays tables a second time after the end of 
     the document, if dbgEarly HttpHeaders is on, thanks to Ask Bjorn Hansen
     for spotting this.
   - Fix the return values of CheckFile, which was not correct after a change
     from 0.24 to 0.25. Thanks to Todd Eigenschrink for spotting this.
   - Fix an error causing Embperl to crash on an html input tag without
     the type parameter. Thanks to Todd Eigenschrink for the hint.
   - Fix a problem that causes Embperl to not correctly recognices an error
     when reading the sourcefile    

0.25-beta 17 Feb 1998
   - Included the "translation" of the Embperl POD to a human readable
     form done by Todd Eigenschink
   - Started a FAQ file form the questions I answered per email
   - Added a the function Execute, which can be call form perl programs
     (or Apache::Registry scripts) and can take input from and/or
     output to memory as suggested by Doug Bagley and Randy Harmon
     (Look at test/html/registry/Execute.htm for an example)
   - Changed the source that it will compile on aix, spotted by
     Patrick McAuliffe 
   - Access sys_errlist via perl macro Strerror to avoid errors with
     redeclaration, thanks for spotting this to Honza, Jirousek
   - Changed the tab size from 4 to 8 in my editor to be compatible with
     unix standard
   - Added warning if dbgLogLink is set and EMBPERL_VIRTLOG not
   - Change the delimter of metacommand from space to any non alpha char
     to allow writing [$while(a==b)$] as suggested by Michael D. Dowling
   - Added config variable EMBPERL_ESCMODE to set inital values of $escmode
     as suggested by Todd Eigenschink
   - Added [! ... !]. Does just the same as [- ... -] but will only executed
     on the first request for that document. This can be used to do one time
     initialisation and to define subroutines.
   - Change push_handlers to register_cleanup, so PERL_STACKED_HANDLERS and
     PREL_CLEANUP aren't necessary anymore, as suggested by Doug MacEachern
   - If exists, the function CLEANUP of the processed document will be called
     before variable cleanup, but after the connection to the client is closed
   - Added a closing </font> in logfile send to the browser, otherwise msie 4
     can't handle it     
   - Changed perl constants in perl part form subroutines to "real" constants
   - Does some rearangeing of code

   - Fixed a memory leak which has caused Embperl to loose one sv per perl
     block, when a document is reloaded
   - Fixed a bug which causes [+... +] within the Textarea tag to be ignored
     spotted by Todd Eigenschink
   - Fixed a bug in sorting hidden fields
   - Fixed an wrong argument to MakeMaker, which was the cause that Embperl
     couldn't build static, spotted by Belomestnov, Anatolii (and added a 
     decription to the Faq how to link static to mod_perl)
   - Fixed that the LOG filehandle was not imported in the documents package,
     so printing to LOG just has gone to nowhere
0.24-beta 13 Jan 1998 
   - Added the option optRawInput which causes Embperl not to preprocess the
     source for a perl expression (Only exceptions is that CR will be removed).
     This option should be set when you writing your code with an ascii editor. 
     If you using a WYSIWYG editor, which insert unwanted html tags in your
     perl expressions and escapes special charcaters automaticly (i.e.
     < will occur as &lt; in the source), you should not set this option, and
     Embperl will automaticly convert the html input back to the perl
     expression you written. (Thanks to Todd R. Eigenschink for a patch)
   - $0 is set to filename of html source
   - Change Current Working Directory to directory of html source
   - Warning messages now are also logged in logfile at the correct
     position next to the source line
   - Perl error and warning messages contains the filename and correct
     linenumber of the html source
   - Sourcelines in logfile contain linenumbers
   - Output via [+ ... +] of undefined values at the end of a dynamic table
     (which must be there to end the table) do not generate a warning anymore  
     NOTE: If you use them in a expression (such like $a = $arr[$row] or simply
     inside " ", you will still get a warning)  
   - Open html source in binary mode on Win32 to avoid overhead of crlf -> lf
   - Use aplog_error for apache_1.3 to avoid senseless os errors written to
     httpd error log

   - Removed some uninitializied value messages when running with
     -w / PerlWarn on spotted by Todd R. Eigenschink 
   - Fixed a bug which has caused nested while loop to exeute incorrect if
     the condition of the outer one if false 

0.23-beta 31 Dec 1997
   - Fixed a bug which causes $req_rec to be not defined anymore (Thanks to
     Todd R. Eigenschink for the hint and debugging)
   - Fixed a bug in escaping special html char to normal ascii (Thanks to
     Todd R. Eigenschink for the hint)  	
   - Makefile.PL now set the path to your perl binary in and, so it works regardless where your perl is located
     (Thanks to Randal Schwarz for the hint)
   - Added the SSLDisable to the test config when running an httpsd. (Thanks
     to David Scott for the hint and Ralf S. Engelschall for the Syntax)
   - Fixed a bug in <META> tag interpreation causing random errors when not
     compiled for mod_perl

0.22-beta 28 Dec 1997
    - Changed include path generated in Makefile.PL so Embperl also
      compiles with apache_1.3b3 (Thanks to Doug Bagley for the hint)  

0.21-beta 25 Dec 1997
    - Embperl offline mode now works under win 32 (mod_perl and cgi mode
      not tested under win 32 yet, but maybe it works too)
    - Totaly reworked safenamespace and operatormask handling. Works now
      without memory leak, is fully configurable and does also a p-code
      caching. If you use it, please look at the documentation, because
      configuration has changed.
    - Embperl now sends it's own error document if it detects an error.
      The page contains all the error messages and if you have the
      dbgLogLink enabled, all errors are links to the corresponding
      line in the logfile. (Could be disabled with optDisableEmbperlErrorPage)
    - Added new Metacommand [$VAR ... $], which can be used to declare
      variables and apply the strict pragma (same as use strict ; use vars )  
    - Added debug flag dbgHeadersIn which causes Embperl to log all http 
      headers which are received from the client
    - Don't change any unknown HTML Escapes (i.e. && has been translated
      to ? in versions < 0.21)
    - dbgShowCleanup logs all variables which are automatily undefed at the
      end of a request (for scalars also the value is shown)
    - Error messages will also be cached, so that the compiling of the code
      only takes place once, because errornous perl code, will cause memory
      leaks in perl itself, if it's compiled on and on.
    - Optimized the compiling of the embbeded perl code
    - Changed use Apache::Constants to be conform with new default exports
      introduced in mod_perl-1.07_01
    - Output of hidden metacommand is sorted in the same order as the input
      from the formfields or sorting order can be supplied as third argument  
    - <meta http-equiv= ... > will override the correspondig http header
      this avoids netscape from asking the user to reload the document
      when the content-type differs between the http header and the
      meta http-equiv
      This can also be used to set http headers
    - Fixed a problem that Embperl magicaly variables does not work when
      the package exists before the first call to Embperl
    - Fixed a problem that causes a SIGSEGV when retrieving a document,
      which contains a perl error, a second time from the same child
    - Fixed a problem that cause Embperl to terminate in offline/cgi-mode
      when file was not found or access was forbidden
    - Fixed a problem with the hidden metacommand when arguments supplied
      with surounding spaces
    - Fixed a problem that Embperl does not handle metacommand correctly
      when HTML tags (e.g. <br>) are embbeded
0.20-beta 15 Nov 97
    - Every file is executed in a separate package (don't confuse this 
      with safe namespace) to reduce of unwanted effects for each other
    - Added configuration directive EMBPERL_PACKAGE which can be used to override
      the automatic genrated package name
    - The namespace (package) used by a request is cleanup afterwards.
      That means that every scalar, hash or array is undef'ed, after the 
      request to make sure nothing is lying arround an will the next request
      (maybe) make misbehave.
      This reqire mod_perl with PERL_CLEANUP=1 and PERL_STACKED_HANDLER=1!
      NOTE: To get persitent variables place them in another namespace i.e.
      write $persitent::x instead of $x 
    - Added configuration directive EMBPERL_OPTIONS to configure various runtime
      options. Now only the scalar cleanup can be disabled.
    - use log_error for writing to apache error log to get timestamp
    - Escaping inside a <A> tag is change from html escape to url escape
      i.e. space is translated to + and & is translated to %26 and so on
    - Escaping can now be turned on and off via $escmode
    - Concats ENV and cgi_env under mod_perl so the PerlSetEnv can be used
      instead of SetEnv for configuration. In contrast to SetEnv, PerlSetEnv
      allows differnet values per directory/virtual host
    - Added two links to show source-loglines and eval-loglines when dbgLogLink
      is enabled to have a quick jump to the logfile
    - Reget pid for every request, so the correct one will be written to the
      logfile, also when Embperl is loaded at server startup
    - Check error log in make test, added test for error output

    - Fixed a bug which causes Embperl to cause a SIGSEGV when an perl syntax
      error occured
    - Fixed a bug so that a '>' inside of [+/- ... -/+] is not detected as the end
      of an html tag (Thanks to Todd R. Eigenschink)

0.19-beta 29 Oct 97
    - rewritten the code for the LOG handle. Now the handle LOG is tied so every
      print/printf is written to embperl.log at the right position. Use this to 
      do logging from your embeded code or modules
    - Fixed a bug which causes garbage displayed in dynamic tables or make parts
      of the table lost at all  

0.18-beta 25 Oct 97
   - Added caching of p-code. Now all perl-code is compiled only once. On the
     second request the compiled p-code is used. This makes, for example, the 
     table.htm from the test about 4 times faster on the second run then it was in
     previous versions of Embperl. Also tables and loops are faster in the first
     request, because the code is only compiled in the first iteration.  
   - <Select>/<option> is now handeld like <input>, this means that if a value
     for the select exists in %fdat, the corresponding option is automaticly
   - Added support for table heading (<th> tag). If all cells in a row are surounded
     by <th>/</th> instead of <td>/</td> the row is interpreted as column headings and
     printed only once. row headings not support yet, but in one of the next versions... 
   - Added support for multipart/formdata to support fileupload. Embperl detects
     automaticly multipart/formdata and let handle it. The results are also
     present in @ffld and %fdat like for normal formdata. See for more docs.
     (Thanks to for the idea and material)
   - Now all the output is kept in memory and the http-header are send when the
     processing is finish. This gives the ability to set http-header (only under mod_perl)
     within the page. Also now the Content-Length could be send in the http-header.
     (Thanks to for the idea and material)
   - Added tests for mod_perl mode and running as cgi-script, if compilation
     for mod_perl is enabled (Thanks to Doug MacEachern for lots of ideas
     and code I have borrowed from his mod_perl)
   - Removed "= true" in MailFormTo which caused a warning and don't declare
     syserr_list in ep.h on FreeBSD (Thanks to Michael Fuhr for the hints)
   - Added SYSNOPSIS section to docs to avoid pod2man warning and changed
     apache/src/regx to apache/src/regex in Makefile.PL (Thanks to Bob Wilkinson)
   - Splitted C-sources in some more source files

   - Fix two minor memory leaks. Now the Embperl test suite can run 1000 times and
     more without makeing the httpd grow!

0.17-beta  30 Aug 97
   - Removed some Compiler Warnings (Thanks to Ian Kallen for reporting them)

0.16-beta  29 Aug 97
   - Added more restrictive access check when running under mod_perl 
     * Option ExecCGI must be set
     * must not a directory
   - Added a little bit more docs about how to view Embperl lofile with
     your browser
   - Added declaration for error dependend stuff to compile on solaris, check errno before
     accessing sys_errlist to avoid SIGSEVs, Fixed another warning from Sun Pro C Compiler
     (Thanks to Dan Peterson)
   - Switched I/O to PerlIO if supported by installed Perl version.
     Should now work with sfio (not tested yet)
   - Added possibilty to include Embperl commands in all html tags 
     (did not works for body, table and tr tags in previous versions)
   - Preserve case of HTML tags
   - Do not interpret unknown html tags anyhow, to handle "<" characters
     which do not start a html tag better 
   - Do not display the time needed for the request if CLOCKS_PER_SEC not
     defined (e.g. SunOS - Thanks to Dan Peterson)
   - Added apache_xx/src/regx to include path, to avoid problems when
     apache was build with it's own regx library
   - Show which tags mismatch in error message (table, dir, select etc.)
   - Fixed a bug which caused "[" character even printed when in a false
     if path   

0.15-beta  11 July 1997
    - Added interpretation of SELECT Tag to generate dynamic listboxes
      from an arrary 
    - Fixed a problem with dynamic lists
    - Fixed some warnings displayed by the Sun Pro C Compiler (Thanks to Dan Peterson)
    - Fixed an error message about missing IO::Handle 
    - Changed all // comments to /* */ to be more compatiple with others
      than gnu-c compiler
    - Insert a missing return in oputc caused a SIGSEV on Solaris  (Thanks to Dan Peterson) 
    - Checked return code of Logfile open, to prevent a SIGSEV when cannot
      write to logfile and write an errormessage in servers errorlog  (Thanks to Dan Peterson)
    - Errors will also be logged to the servers error log (written to stderr)

0.14-beta 30 Juni 1997  
    - adding 8192 to EMBPERL_DEBUG and setting EMBPERL_VIRTLOG will add a link
      to Embperl output, so you can directly view the right part of the logfile
      with your browser
    - added the LOG filehandle to print to the embperl logfile
    - Add the possibility of handling multiple form fields with same name
    - chars which are result of a perl expression will not be escaped to html if
      they are prefixed with a backslash
    - Added support for scanning the parameters of input tag for perl code i.e.
      [- -] and [+ +] substituions takes place
    - Replace carridge return in perl expression with space to avoid perl 5.004 error
      about carridge return
    - added $req_rec to access the apache server api when running under mod_perl

    - Fixed a bug in Safe namespace handling causing always ERR: 17 Namespace unknown
    - Fixed a bug which caused dynamic tables to end, if a if, while etc. is included 
    - Fixed a bug that caused [$cmd$] executed only in the first iteration of while or table
    - Fixed some bugs in input tag interpretation
    - Fixed a bug occured when have a input tag with value="" and %ffld=""
    - Fixed a bug in that caused the options to be ignored when running offline

0.13-beta   April 26 1997	
    - Move EPENTRY (embperl_init) down to avoid crash when compiled with
    - Add #undefs for stdio function to compile with perl > 5.003
      Note: This is a quick hack, and will be changed to use PerlIO in
      one of the next releases, so we can tie stdout of Embperl
    - Add pids (to distinguish between muliplite requests) and time to
      logfile output
    - Make many functions static and names of externals more unique to
      avoid conflicts of symbolnames with other modules
    - If file not found return status 404 instead of 500
    - Add Apache::Embperl so the module shows at CPAN also under 
      module/by-module/Apache/ as suggested by Doug MacEachern

0.12-beta not publicly released
    - The mask has been removed from namespace option so it can be used
      with > 2
    - Embperl works with -T / PerlTaintCheck on
    - Add function MailFormTo to send form contents via email
    - the dbgSource option displays only one line for better overview
    - fixed a bug caused perl operator '<' interpreted as html tag
      in tables or while loop after the first iteration
    - add ffld array for mod_perl mode to get the order of form fields
    - removed vsnprintf, since it's not available on all platforms
    - Correct handling of empty dynamic tables
    - Fix Bug causes a Segmentaion Fault when first table is empty
    - Add script for make test
    - Fixed Error with nested if
    - Log compilation errors of embedded perl code
    - Avoid some warnings in

0.11-beta      March 25 1997
    - Name changed from Embperl to HTML::Embperl!!!!!!!!
    - FORM & ENV debug output now available in all modes
    - Ouput from [+  +] and INPUT fields are escaped
      (e.g. < is send as &lt; )
    - two dimensional tables
    - bug whiches causes an endless loop when using a \ fixed
    - fixed escaping special html chars above ascii code 128
    - added support for list tags (dir, menu, ol, ul, dl)
    - added support for textarea tag
    - fixed some errors

0.10b-beta	Jan 23 1997
    - fixed some errors

0.10beta 	Jan 18 1997
    - first public beta release