arclog change log 2020-02-06 version 3.05 1. Replaced the messy GNU-styled, multi-lingual documents with a single Markdown README.md. 2. Added the GitHub repository to the document, and removed the SourceForge website, my web page, and the SourceForge mailing list from the document. 3. Removed the document license, and my PGP key from the package. Removed the signature file from the repository. 4. Various fixes to avoid JetBrains IDE problem detection. 2020-02-04 Changed the license from GPLv3 to APLv2. 2020-02-01 arclog is hosted on GitHub now. 2008-11-18 1. INSTALL and arclog.en.html: Fixed the grammar on installation with the CPAN or CPANPLUS shell, changed "install with the CPAN shell using" and "install with the CPANPLUS shell using" to "install it with the CPAN shell by running" and "install it with the CPANPLUS shell by running". 2. INSTALL* and reslog.*.html: Changed "Fedora/Red Hat" to "Red Hat/Fedora/CentOS". 3. INSTALL.zh-tw and INSTALL.zh-cn: Added the missing Date::Parse to the required modules section. 2008-11-17 1. INSTALL and arclog.en.html: Fixed the grammar on required and optional module installation, changed "install using" and "install this using" to "install it by running". 2008-11-15 1. arclog.*.html: Clean-up some blank lines. 2. arclog.en.html: Removed the message about CPAN source in required modules. It is stated in the module description in detail now. 3. arclog.*.html: Fixed so that installation from source and with shells are joint into one sentence. 2008-11-12 1. INSTALL, arclog.en.html: Updated "don't" and "won't" to "do not" and "will not". 2. INSTALL, arclog.en.html: Updated "ActivePerl MS-Windows users" to "ActivePerl users". ActivePerl use ppm on all platforms, not limiting to MS-Windows. 3. INSTALL: Updated "ActivePerl MS-Windows users" to "ActivePerl users". ActivePerl use ppm on all platforms, not limiting to MS-Windows. 4. INSTALL*, arclog.*.html: Added the command lines to install modules with the CPANPLUS shell. 2008-11-11 1. INSTALL*, arclog.*.html: Updated information on optional Perl modules, to describe different installation commands for different operating systems. 2. arclog: Fixed the _private::ProgressBar class so that it does not use() Term::ReadKey, but require() it at object initialization. This enables it to work when Term::ReadKey is missing. 3. arclog: Fixed the update() method of the _private::ProgressBar class, to accept a dynamic label. 2008-09-30 1. arclog: Update the update() method of the the _private::ProgressBar class too use the bracket characters instead of the pipe character for a better visual outlook. 2008-09-29 1. arclog: Use the _private::ProgressBar class in replace of the show_progress() function to display the progress bar. This makes the progress bar easier and more pretty. 2008-04-21 1. INSTALL and arclog.en.html: Fixed typo: "instalation" to "installation". 2007-12-05 1. arclog: Initialize the static variables within BEGIN {...} blocks for all _private::* classes. 2. NEWS: Added. The NEWS file is quite useful in addition to the Changes change log. 3. arclog.*.html: Added GPLv3 license update to the 3.00 release notes. 4. arclog.*.html: Refer to NEWS instead of Changes for release notes. 2007-12-04 1. Makefile.PL: Fixed to prevent importing symbols when checking optional prerequisites. 2. arclog: Fixed the check_type() method of the _private::LogFile class, so that empty files are checked with the file name suffix, too. This solve the issue that Compress::Bzip2 2 creates empty files which confuse further processing on file name suffix stripping. 3. arclog: Removed unused $GZIP_IO and $BZIP2_IO from the _private::LogFile class. 2007-12-03 1. arclog.zh-tw.html, arclog.zh-cn.html: "不需要安裝新版" was revised to "不需要昇級新版". 2. Build.PL: Fixed the comment. This file is "Build.PL", not "Makefile.PL". 3. Build.PL: Added "use warnings;". 2007-12-03 version 3.04 Documentation fix. 1. arclog, arclog.*.html, README*: Added the information on the usability of arclog with log files from many software that log with an Apache-like log format. 2. arclog.zh-cn.html: Fixed the version number. 3. arclog.*.html: Added ... to the description. 2007-12-03 version 3.03 1. t/*.t: Fixed so that send frread($fs) instead of $cs is sent to arclog STDIN when reading from STDIN, so that compressed content is sent to arclog but not the original content. 2. arclog.zh-tw.html, arclog.zh-cn.html: Revised the Chinese text on "3-argument open()" so that it is more readable. 3. t/_helper.pm: Updated the way we generate the time with time zones in the mkrndlog_apache() and mkrndlog_modfiso() subroutines, using "gmtime($t + $tz)", so that we can obtain a reliable time text with time zone without using time2str() from Date::Format 4. t/04-errors.t: Added a test on "a same log file is specified more than once". 2007-12-02 1. t/02-several.t, t/03-fallback.t, t/04-errors.t: Use "do { ... } until !... " instead of "do { ... } while ..." so that the code is more readable. 2. t/02-several.t, t/03-fallback.t, t/04-errors.t: Initialize @cs and @cem before using them. 2007-12-01 1. arclog: Use "use 5.008" instead of "use 5.8.0", for compatibility with older Perl, and get ride of the warning of Perl 5.10. 2007-11-30 1. t/_helper.pm: Updated the version number to 0.02. 2. arclog, arclog.*.html: Added NTP in addition to Syslog to the note with log file formats without years. 3. arclog.zh-tw.html, arclog.zh-cn.html: Fixed the text on the note with log file formats without years. 4. t/_helper.pm: Reorder the subroutines. 5. t/_helper.pm: Reset the %WHEREIS hash in the beginning. 6. t/01-exhaust.t: Fixed to set %cof to "" instead of 1 when not creating existing files. 7. t/_helper.pm: Removed unused "ce" from @KEEPTYPES. 2007-11-30 version 3.02 1. t/_helper.pm: Use time2str() from Date::Format to generate the time text instead of doing this my self. The way I generate the time text cannot deal with daylight saving time. It should be safe to use Date::Format, since Date::Format is in the same TimeDate distribution as Date::Parse, at least till now. 2. t/_helper.pm: Increased time zone range from -1200 to +1400 in the mkrandlog_apache() and mkrandlog_modfiso() subroutines. 2007-11-29 1. arclog.zh-tw.html, TODO.zh-tw, TODO.zh-cn: Changed '繁體中文' to '正體中文'. 2007-11-28 version 3.01 Test suite improvement. 1. arclog, TODO.*: Clean up to-do list. 2. Makefile.PL: Use "use 5.008" instead of "use 5.8.0" for compatibility with older Perl. 3. t/01-exhaust.t: Added $vardump to error output, to catch CPAN testers test failures. 4. Return to build distribution with ExtUtils::MakeMaker, since Module::Build did not preserve the original file date. 2007-11-28 version 3.00 1. t/01-exhaust.t: Fixed so that a zero-sized result file is valid as application/x-bzip2. This is to fix the issue that Compress::Bzip2 does not write anything if no data is sent to the compression handler. 2007-11-27 1. Makefile.PL, Build.PL: Clean-up old file found message. 2. Makefile.PL: Added message for optional prerequisites. 3. arclog.zh-tw.html, arclog.zh-cn.html: Tag the languages. 4. t/02-several.t: Added the missing "several source files all listed as arguments" tests. 5. t/01-exhaust.t: Moved @OVERTYPES to t/_helper.t. 6. t/02-several.t: Use random log format instead of Apache access log. 7. t/03-fallback.t: Added, to test the fall back behavior. 2007-11-26 1. t/03-errors.t: Renamed to t/04-errors.t. 2. t/01-exhaust.t: Moved @KEEPTYPES to t/_helper.t. 3. t/04-errors.t: Fixed to set $num with rand(). 4. t/_helper.pm, t/*.t: Updated the license to GPLv3. 5. arclog.*.html: Added stylesheets and access guide. 6. README, README.zh-tw, README.zh-cn: Updated. 7. fdl.txt: Added. 8. MSWin32 and MS-Win32 is now written as MS-Windows in the documentation. 9. arclog: Reorder the debug message in the check_gzip() and check_bzip2() methods of the _private::IO class. 10. Makefile.PL, Build.PL: Fixed comment typo. ("any old files") 11. Build.PL: Added "recommends" and "build_requires". 2007-11-25 1. t/03-errors.t: Fixed while loop to do...while loop when obtaining output prefix, so that we obtain a random word first. 2. t/03-errors.t: Renamed $output to $opref. Added $oprefb as the base name of the output prefix. 3. t/_helper.t: Fixed the errors in the mkrndlog_apache() and mkrndlog_modfiso() subroutines that dump $tzoff as $zoff. 4. t/_helper.t: Fixed the time zone representation that mistakenly output -0030 as +0030 in the mkrndlog_apache() and mkrndlog_modfiso() subroutines. This test suite bug is hard to track, since it only appears with log formats with time zones, in the time zone -0300 and log records in that one-hour boundary. This chance is too small. I saw one or two every now and then, and am pretty sure there is a bug, but spent numerous time testing in vain. I finally got this bug. Yes! 5. t/_helper.t: Fixed the $tzoff calculation from timegm(@_[0...5]) - timelocal(@_[0...5]) to timelocal(localtime) - timelocal(gmtime) in the mkrndlog_apache() and mkrndlog_modfiso() subroutines. 6. t/_helper.t: Set time to 00:00:00 in the monrng_rand() subroutine. 7. t/02-several.t: Added, to test archiving several log files at once. 8. arclog, arclog.en.html, INSTALL: Fixed the typo "archieve" as "archive". 9. t/01-exhaust.t: Moved @SRCTYPES to t/_helper.pm so that it can be shared among tests. 10. arclog: Fixed to return ref($GZIP_IO)->new instead of $GZIP_IO in the check_gzip() method, ref($BZIP2_IO)->new instead of $BZIP2_IO in the check_bzip2() method of the _private::IO class, so that a same I/O handler will not be returned to different log files. 2007-11-24 1. arclog: Moved output prefix "-" check to the front in the parse_args() subroutine. 2. arclog: Fixed the new() method of the _private::LogFile::STDIN class to unlink0() after checking the file type with the file executable. 3. t/_helper.pm: Fixed the mkrndlog_existing() subroutine to obtain the content with anonymous array index but not @_. 4. t/_helper.pm: Fixed the mkrndlog_*() subroutines to return @logs and time zone variable dumps for easier debugging. 5. t/*.t: Added a debug file to save dumped variables for easier debugging. 6. t/02-errors.t: Renamed to t/03-errors.t. 7. t/*.t: Renamed the debug file "debug" to "$logfile.debug", so that each log file can have its own variable dump. 8. t/03-errors.t: Added "$logfile.debug" to mixing formats tests. 9. t/_helper.pm, t/*.t: Renaming $debug to $vardump, and "$logfile.debug" to "$logfile.vardump". 2007-11-23 1. t/02-errors.t: Added tests on mixing log formats and STDOUT output prefix. 2. t/01-exhaust.t: Moved @LOGFMTS to t/_helper.pm so that it can be shared among tests. 2007-11-22 1. arclog: Fixed $SIG{__WARN__} to $SIG{"__WARN__"} in the parse_args() subroutine. 2. t/01-exhaust.t: Fixed to loop the override mode in the keep mode. 2. t/01-exhaust.t: Removed unused $ce and %fm. 3. t/01-exhaust.t: Added the override mode "default". 4. t/02-errors.t: Added. 2007-11-20 1. t/01-format.t: Removed. t/03-exhaust.t should do the work. 2. t/03-exhaust.t: Renamed to t/01-exhaust.t. 3. t/_helper.pm: Removed the logfmts(), srctypes(), restypes(), overtypes() subroutines, and replaced with the @LOGFMTS, @SRCTYPES, @RESTYPES, @OVERTYPES arrays. These information are only used once in one test. This makes it simpler. 4. t/01-exhaust.t: Finished. Using loop to test 1800 combinations of options, arguments, file types and file formats. 5. t/02-apache.t: Removed. t/01-exhaust.t has replaced it. 6. arclog: Rewrote the new() method of the _private::Format package so that it simply returns the blessed object. Test the match at in the check_format() method, so that it reports matching tests at $VERBOSE > 2. 7. t/01-exhaust.t: Removed the $nofile, $nogzip and $nobzip2 variables. The nofile(), nogzip() and nobzip2() subroutines have replaced them. 2007-11-19 1. t/_helper.pm: Removed the mkrndlog_random() subroutine. It does not look like I'll be using it. 2. t/_helper.pm: Fixed the flist() subroutine to exclude non-files. 3. t/_helper.pm: Renamed the preserve_source() subroutine to prsrvsrc(). 4. t/*.t: Removed the strange escaping of double-quotation character of arclog path. 5. t/_helper.pm: Fixed the cleanup() subroutine to skip clean-up if the log directory does not exist. 6. t/03-exhaust.t: Added to test all the option/argument combinations. 2007-11-18 1. arclog: Move the TYPE_PLAIN, TYPE_GZIP and TYPE_BZIP2 constants from the _private::LogFile package to the main package, so that other packages can use it, too. 2. arclog: Added $one_arg in the parse_arg() subroutine to deal with only one argument, and check if the only one argument is STDIN in advance. If a compressed source log file is the only one argument, remove the compression suffix (.gz or .bz2) from the output prefix. 3. _helper.pm: Added the cleanup() subroutine to clean up after a test. 4. _helper.pm: Added the TYPE_PLAIN, TYPE_GZIP and TYPE_BZIP2 constants for easier use. 5. arclog: Clean up File::Spec::Functions references. 6. Makefile.PL and Build.PL: Changed the clean-up list from "t/log/*" to "t/log*". 7. t/_helper.pm: Added the preserve_source() subroutine to preserve the source log file for reference. 2007-11-17 1. arclog: Fixed the remove_temp() method of the _private::LogFile package, so that it does not try to delete an anonymous temporarily working file. 2. t/01-format.t: Fixed the test so that it only remove the working directory on success, and leave the directory on fail. 2007-11-16 1. t/_helper, t/01-format.t: Added. This is the first real test suite that test the functionality of arclog, though it does not cover many of the arclog functionality yet. 2007-11-15 1. UPGRADE, UPGRADE.zh-tw, UPGRADE.zh-cn: Added. 2. arclog: Rename the add_record() method to add() in the _private::Archive package. 3. arclog: Reformatted the POD document. 4. arclog: Added the sort() method to the _private::Archive package, and implement the sorting ability. The new way (sort the record index but not record themselves) seems to have lesser memory impact than the original implementation. 5. arclog: Added time zone to the bracketed ISO 8601 format. 6. Upgrade notes changed from 2.1.1dev3 to 2.1.1dev4. 6. arclog: Rename the _private::Format::BracketISO package to _private::Format::ModfISO. It is not really ISO 8601. 2007-11-14 1. Changes.zh-tw, Changes.zh-cn: Removed. It is too troublesome to maintain 3 copies of the change log. 2. arclog: Fixed the rel2abs() subroutine and method so that it use getpwuid() instead of getlogin(), and respect the HOME environment variable for the current user. 3. arclog: Renamed the new_read() method as open_read(), the new_write() method as open_write(), the new_append() method as open_append(). Replaced the strange architect that start a new instance with $ioclass, with reusing the same $io object. 4. arclog: Removed the Chinese GPL copyright message. There should only be one version of the copyright message, and should not be any Chinese comment. 5. Moved from GPLv2 to GPLv3. 6. COPYING.zh-tw, COPYING.zh-cn: Removed. The Chinese translation of GPLv3 is not available yet. 7. arclog: Removed subroutines arc_log(), open_src(), sort_arcs(), save_arcs(), check_file_type(), check_gzip(), check_bzip2(), format_number(). They are not used anymore. 8. arclog: Fixed the read_source() method to save the record count for later use (like progress bar). 9. arclog: Added show_progress() to show the progress bar. 10. Makefile.PL: Fixed to follow the Perl installation location, but not making our own. 11. Build.PL: Added. 12. NEW, NEWS.zh-tw, NEWS.zh-cn: Removed, to follow the CPAN release style. 13. arclog: Disallow archiving a same log file more than once. 14. arclog: Fixed parse_args() and removed the duplicated short help on Getopt::Long::GetOptions errors. 15. arclog: Remove the _private::Format->to_yyyymm() method. The main utility to_yyyymm() subroutine can be used. There shouldn't be 2 to_yyyymm() that do the same thing. 16. arclog: Adding statistics report to the _private::LogFile->restore_this_month() method and the _private::Archive->store_archive() method. 17. arclog: Removed the _private::LogFile->rel2abs() method. The main utility rel2abs() subroutine can be used. There shouldn't be 2 rel2abs() that do the same thing. 18. arclog: Fixed show_progress() to reset the clean-up the start time when progress is finished. 19. arclog: Fixed the close() method of the _private::IO::* packages so that KEEP_THISMONTH restart the log file, too. 19. arclog: Added the prepend_records() method to the _private::IO::* packages, and use prepend_records() to return the records of this month, so that we can take the advantage of open() only once on plain text I/O. 2007-11-13 1. arclog, arclog.en.html: Changed "don't" to "do not", "can't" to "cannot", "there's" to "there is", "it's" to "it is", "we'll" to "we will", "I'd" to "I had", "that's" to "that is", "this month's temporary file" to "the temporary file of this month", to help editor syntax highlighting. 2. arclog: Add commented single quotation mark to the end of regular expressions that has a single quotation mark, to help editor syntax highlighting. 3. arclog: Changed "Deal the ~ home directories under UNIX" to "Deal with the ~ user home directories under UNIX", "If start from user's home directory" to "If it starts from the user home directory". 4. arclog: Changed "$VERBOSE >= 2" to "$VERBOSE > 1", $VERBOSE >= 1" to "$VERBOSE > 0". 5. arclog: Finished the _private::LogFile->check_format() method. Fixed the parse_args() subroutine to skip empty files, and exit if no non-empty files left. 6. arclog: Fixed parse_args() to treat "/dev/stdin" as STDIN on UNIX-like systems. 7. arclog: Changed " -- " to " - " in comment. 8. arclog: Add the new() methods of the _private::Format::* packages so that it judges if the log record belong to its format and return accordingly, in order to judge and initialize at a time, to simplify the code. 9. arclog: Add the name() methods to the _private::Format::* packages to return the format name. 10. arclog: Moved the check_gzip() method and the check_bzip2() method from the _private::LogFile package to the _private::IO package, so that other packages can access them too. Remove the $self in the check_gzip() method and the check_bzip2() method. They are not used at all, and these 2 methods are run as static method now. 11. arclog: Changed $OUTPUT to $CONF{"OUTPUT"}. 12. arclog: Added the suffix() method to the _private::IO::* packages. 13. arclog: Added the _private::Archive package. 2006-06-08 1. arclog: Revised the code with my own coding standard. 2. Changes: ChangeLog renamed to Changes, in order to follow Perl's convention. 2006-06-05 1. arclog.pl changed to arclog. 2. Removed Chinese text in comments. 3. Added prototype declaration. 4. Version number changed from x.x.x to x.xx, as Perl preferred. 5. Replaced GNU autoconf with ExtUtils::MakeMaker. 6. SIGNATURE: Added. 7. arclog: changed constants from "use vars" to "use constant". 2004-01-27 1. Reading loop changed from do {...} while() to for(;;;) {...}, to fix the problem "Exiting subroutine via next at ..." when encountering and skipping a bad record. 2003-01-04 1. File handler EOF read checks were fixed with defined(). 2002-11-13 1. NTP log date-time format support was added. 2002-11-13 1. ISO number was added (ISO 8601) when displaying the ISO date-time format detection. 2. Long statistic lines are split for easy reading. 2002-11-12 1. The line of $| was moved to be grouped together with the autoflush setting. 2. ISO date-time format support was added (as [yyyy-mm-dd hh:nn:ss].) 3. UNIX mailbox Received: date-time format regular expression was added. (sendmail style. Support not added yet.) 4. Fixed several places where $WORKING_SRC was not locked when created with tempfile, and not unlocked when closed. 5. Fixed several places where spaces are between function name and its opening parenthesis, according to perlstyle(1). 6. Unnecessary parenthesis after slice and catfile were removed. 2002-09-26 1. README was rewritten for the autoconf and bzip2 new features. 2. INSTALL was rewritten for the autoconf. 3. HTML documents were rewritten for the autoconf and bzip2 new features. 4. PGP public key file pgpkey.asc was added. 5. Released as version 2.1.0 2002-09-25 1. GNU autoconf and automake are now used as the configuration script, in stead of Install.PL. Install.PL is now retired. 2. autoconf m4 macros IM_CHECK_PERLVER and IM_CHECK_PM were written. 3. RELEASE_NOTES was renamed as ChangeLog. 4. NEWS was added. 5. AUTHORS was added. 6. THANKS was added. 7. TODO was added. 2002-09-24 1. Compression with gzip binary is added. 2. Compress::Zlib module is now optional but not required. 3. bzip2 compression is added. 4. File::MMagic and file are now used to check the file type, in addition to the file name suffix, with a more preferred order. 5. Keep this month's records is now available for compressed source log files. 6. check_file_type() was added to check the file types by either File::MMa 7. check_gzip() was added to check the gzip method to use. 8. check_bzip2() was added to check the bzip2 method to use. 2002-09-18 version 2.1.0dev2 SourceForge Memorial Release. It's my first time to apply a project from SourceForge. Mostly are corrections to the documentation. SourceForge's project page is added to the available download source here. 1. arclog.pl's official home page at Tavern IMACAT's was restored. 2. The previous version was renamed from 2.1.0-dev1 to 2.1.0dev1, in order to unify the version number theme. 3. The project space at SourceForge was applied. Package files are uploaded to SourceForge now. 4. Project virtual host at SourceForge was set up. 5. SourceForge was added into the documentation as an official website and download source. 6. Documentation were corrected. Too many places were corrected. Ignored. 7. HTML document was rewritten to accommodate XHTML 1.1 recommendation. 2002-08-31 version 2.1.0dev1 Rewrite after almost 1 year, to be run on the newly-released Perl 5.8.0. 1. File handles are now saved and passed in global named variables. This is the way it should be. The old way (initialize the file handles by duplicate the STDIN and assign them) was just not natural. It works in Perl 5.6.1, but not in perl 5.8.0. The duplicated file handles are constants, which cannot be assigned new values. 2. Indents are changed from 1 tab to 4 columns, to accommodate the Perl style guide documented in perlstyle(1). This increases the code readability. 3. File operation error handlers are now using the low-precedence logical "or", instead of "||", which is recommended in perlop(1). Excessive parentheses in file operation functions are removed for this. 4. Traditional Chinese files are now named with suffix ".zh-tw" instead of ".b5". Simplified Chinese files are now named with suffix ".zh-cn" instead of ".gb". This is to accommodate RFC-3066, ISO 639:1988, ISO 3166-1 for language names. 5. PGP signatures of distribution files are added. 6. bzip2 distribution files are added. 2001-07-18 version 2.0.6 1. A bug that regular expression cannot recognize apache log format when a user logged in with a username containing spaces, was solved. 2. A bug that a hyper reference in the English document was not specified as an absolute URL, was fixed. 2001-07-18 version 2.0.5 1. A bug that record counter $total was not initialized at all, was fixed. 2001-07-16 version 2.0.4 1. open_src() was added, as reslog.pl, to read the source log file by complex rules. 2. Support to reading the gzipped log file was added. 3. Program execution message was turned from STDOUT to STDERR. 4. Processing with Compress::Zlib was modified. gzopen() was modified to open file handles if possible. Return values was checked more strictly. Source of error messages was corrected. 2001-06-29 version 2.0.3 1. The default keep mode was changed to "this-month". 2. The default keep mode "all" when "--keep" is specified without mode, was added. 3. The single-letter abbreviations of the override and keep modes were added 2001-06-29 version 2.0.2 1. A bug that won't delete the source empty file under keep-delete mode, was fixed 2001-06-28 version 2.0.1 1. A bug that will stop executing when an empty file is met, was fixed. 2. "none" keep mode was removed. "restart" and "delete" keep modes were added. 3. Pre-check on empty files was added. It bounces directly when an empty file is found in the first sight. 4. A bug that there's no documentation on --keep option in the HTML documents, was fixed. :p 5. The suffix of the temporary working file was changed to ".tmp-arclog". 6. A typo of "-dhqv" instead of "options" in the help message was fixed 2001-06-28 version 2.0.0 Temporary working file was introduced to reduce the time working on the source log file. 1. Temporary working file was introduced. The source log file was copied to the temporary working file and restart first, to maximum reduce the time occupying it, avoiding usage of other scripts to restart the log file first. 2. A bug that, when keep status falls back to all, wrong variable was modified, was fixed. :p 2001-06-28 version 1.6.1 1. Reuse of monthly temporary working file to reduce the read time for multiple files. 2001-06-27 version 1.6.0 Multiple log files was added. 1. Main program codes were moved to arc_log(), to loop multiple log files. 2001-06-11 version 1.5.1 1. A serious bug was fixed. :p I was planning to set the memory limit dynamically but failed. And I forgot to return the original codes, which prevents the program from running. 2. The argument checking was modified to report error if more than necessary arguments are supplied. 2001-06-10 version 1.5.0 Read from STDIN was supported. 1. Read the log file from STDIN as "-" was added. 2. "--prefix" option was removed. The output prefix was specified in the second argument. 2001-06-10 version 1.4.2dev 1. A bug while displaying log file format checking message, was fixed. 2. Checking on log file format was moved to when the first entry was read. 3. Checking on empty log file was moved to after the whole file was processed. 4. rel2abs() was modified. catdir was replaced with catfile to fixed the problem with the current directory ".". 5. The default behavior of --override was modified. When STDIN is linked with a tty, the default is ask; else, the default is fail. 2001-06-09 version 1.4.1 1. English HTML document was added. 2. HTML errors in documents were fixed. 3. Some terms were modified in the documents. 4. Irrelevant languages were removed in the HTML documents. 5. HTML document links between different languages was added. 6. Web page was modified so that each language has its own pages, and was linked with each other. 2001-06-08 version 1.4.0 First public release. 1. "ask" override mode was added. When the target archived file exists, it asks the user what to do individually. 2. "ignore" override mode wad added. When the target archived file exists, it ignores the records for that month, avoid overwriting the target file. 3. "append" override mode was added. When the target archived file exists, it appends the records for that month to that file, for easy merging on separated log files. 4. --sort option was added, to sort the records in a log file by time. 5. syslog log file format was supported. 6. HTML documents in both Traditional and Simplified Chinese were added. 7. A web page was added. 2001-06-07 version 1.3.0 Solved the long problem that old log files will be overwrite. 1. Program flow was rewritten. The file open routine when open an archived file at the first time was separated, to insert handlers for existing old archived files. 2. --override option was added, to set the override behavior when old archived files exist. 3. Records were now saved to temporary working files before compressing (if they would be compressed). The compressing is done later on the temporary working files. 4. --compress option was added to set if we should compress the archived files. 5. Checking on write privilege of the output directory was added. 6. A bug that rel2abs will wrongly ignore the last part of a path when it is the current or parent directory, was fixed. 7. File::Basename was introduced to obtain the short basename to report on. 8. Anonymous subroutines was introduced to handle simple options, like help messages or message levels. 9. Compressing ratio message was added. 10. Install.PL was added in the distribution. 11. Installation guide was added. 2001-06-06 version 1.2.2 1. autoflush from IO::Handle was introduced, to autoflush STDOUT solely under debugging mode. 2. Temporary working file method was removed. Works are done on the source file, to avoid the garbage when program stopped in the middle. 3. File::Temp was introduced to handle the temporary working file. Records of this month was outputs to temporary file at first. 4. $IS_ZIP was added to control the zipping. 5. "wb9" was introduced to zip with highest ratio. 6. Zipping size message was added. 7. format_number() was added to format the numbers. 8. GNU copyright information was added. 9. Chinese annotations was added. 10. POD documents was added. 11. Release notes was added. 12. Readme file was added. 2001-06-06 version 1.2.1 1. A serious bug that forgot to return the records of current month, was fixed. :p 2001-06-05 version 1.2.0 1. Program flow was rewritten. Now it outputs to the target file without gzipping first. Gzip will be done next after finishing all outputs. 2. Message level was changed to $VERBOSE. 3. The default message level was changed to 1. The debugging message level was changed to 2. 4. "quiet" option was added, with message level 0. 2001-06-04 version 1.1.1 1. Some typos was fixed. 2001-06-04 version 1.1.0 A serious bug of the previous version, which reads the whole log file into memory and cause system crash, was fixed. ^^; 1. Program flow was rewritten. Writing was done with reading, to minimize the unnecessary memory burden. 2. Record sorting was removed, to reduce the memory usage. 3. %gz object hash was introduced to open multiple gzipped file altogether. 4. Getopt::Long was introduced to parse the arguments, in replace of my own argument-parsing routine. 5. File::Spec::Functions was introduced to handle the pathname, with my own rel2abs. 6. Cwd was introduced to obtain the current working directory. 2001-01-05 version 1.0.1 Fixed some typos. 2001-01-05 version 1.0.0 First version, rewritten from reslog. Using arguments-parsing and help/version message methods from reslog.