Changes in v3.50 ------------------------- 1. Fixed a bug which caused the recno database variable to be clobbered by an loop. 2. Fixed a bug which caused Miva to enter an infinite loop when reading some xBase memo files. 3. Fixed a bug which caused an MvDELETE or MvUNDELETE to update the current database record, which made indexes get out of sync, and caused "Record not in index" errors. 4. Fixed a bug which caused the documenturl system variable to contain the port number when used via an SSL connection on the standard SSL port (443). 5. Added support for the CyberCash Cash Register API. 6. Added support for HTTP file upload. 7. A new configuration option, validextensions, has been added. validextensions=.mv,.hts When defined, Miva will only execute scripts with one of the extensions listed. 8. A new configuration variable, contentbuffersize has been added. contentbuffersize configures the buffer size used when reading POST'ed FORM data. The default value is 8192. 9. The CGI version of Miva will now exit with a timeout error when the following signals are received: SIGHUP SIGINT SIGQUIT SIGPIPE SIGTERM 10. Variable names posted from an HTML FORM or passed on the URL command line are no longer checked for invalid characters. If a variable name contains a character that may not be used in an expression (i.e. -, +, *, %, etc..) it can be escaped by prepending a backslash. 11. Added builtin functions to manipulate files in the script directory. The following functions are functional equivalents the "f" functions, except that they manipulate files in the script directory: sexists( path ) smkdir( path ) sdelete( path ) scopy( source, dest ) srename( source, dest ) schmod( path, mode ) ssize( path ) smode( path ) The following functions transfer files from the script directory to the data directory (functions starting in "sf") or from the data directory to the script directory (functions starting in "fs"): fscopy( source, dest ) sfcopy( source, dest ) fsrename( source, dest ) sfrename( source, dest ) 12. Two new system variables have been added to allow scripts to deal with globaltimeout: globaltimeout Contains the maximum number of seconds that the current script may execute dyn_time_remaining Contains the number of seconds that may elapse before the current script is terminated 13. The following builtin functions have been added: isalpha( string ) isupper( string ) islower( string ) isdigit( string ) isxdigit( string ) isalnum( string ) isspace( string ) ispunct( string ) isprint( string ) isgraph( string ) iscntrl( string ) isascii( string ) 14. The following builtin functions have been added: abs( number ) acos( number ) asin( number ) atan( number ) atan2( x, y ) ceil( number ) cos( number ) cosh( number ) exp( number ) floor( number ) fmod( x, y ) int( number ) log( number ) log10( number ) sin( number ) sinh( number ) sqrt( number ) tan( number ) tanh( number ) 15. Two new system variables have been added: tm_usec dyn_tm_usec The variables contain the current microsecond relative to tm_sec/ dyn_tm_sec. Note that under Windows, the operating system only allows Miva to receive this value in 50-0 increments. 16. MvDO is now subject to the maxfunctiondepth configuration limit. This prevents MvDO loops from causing a stack overflow. 17. A new builtin function, miva_getvarlist, has been added. miva_getvarlist( scope ) Returns a comma separated list of variables in the specified scope 18. Runtime errors may now be controlled on a per-tag basis. For example: Would cause all runtime errors generated by MvOPEN to be fatal (script execution stops) and displayed (Miva outputs the error message). Would cause all runtime errors generated by MvOPEN to be non-fatal (script execution continues) and not to be displayed by Miva.