ack.html Contents copyright.html


If you contributed or suggested something and if your name is not here, please drop me a line and get the credit.

Count 2.6 beta10

  • Release beta 10 for NT.

  • Default coutndown target time is changed to Today. New keyword cformat can be used for countdown string format. Thanks to Dana W. Johnson for implementing it.

  • New keyword dbkey can be used to display a current count of page without inrementing. This can be used to monitor (hidden) counters from a different page. Thanks to Dana W. Johnson for implementing it.

  • Compiles and works with Berkeley DB 3.3.11.

    Count 2.6 beta9

  • Cleanup for MS NT/2000 (nothing new for Unix people). Compiled NT version with Berkeley DB 3.1, supplied the compiled DB_File Perl module with Berkeley DB 3.1 for MS NT/2000.

  • Datums for database was not getting initialized in some situations. You may get error like host is not in the Autdb, even though it was. Thanks to Stefan Becuwe for reporting and helping in solving the problem.

    Count 2.6 beta8

  • Some compiler warnings in solaris cleaned. utils.c had CR LFs in it.

  • beta-7 was totally broken. wildmat.c was missing. use of mutilsSafeStrcat() was wrong. Count-install was putting wrong key in the Auth database. wrong template was used. now shows version info. Thanks to Stefan Becuwe for pointing it out.

  • Config file reading routines are re-done, should be little faster now.

  • Database library was working only for Berkeley DB.

  • cache option is gone. Just use expires. It was confusing to use cache and expires together.

  • New wildcarding routine for cfg file. The old one was buggy.

    Count 2.6 beta7

  • The options cache and expires were not working if cache was true and expires has a value other greater than 0. Thanks to Alexandr Nikolayev,

  • editdb can take input from stdin. Suggested by Andrew Hill,

  • Added support for Berkeley DB 2.x and 3.x (Used to support 1.85 only).

  • If the second field in count_admin.txt was 0, it was coplaining that the value is not a boolean. Also if the lock file does not exist, CGI was not locking. Thanks to

  • mutilsDotUnlock() takes an argument now, but forgot to test it. Thanks to Daniel Mahoney,

  • In the auth database, the key is the URL and the value is a unique key string (Usually the MD5 digest of the URL). This solves the problem of accessing a site via different URL and counting the hits of a page. For example, my site can be accessed via the URL or or So a unique string can be used as value in auth datbase for all of the above URL and the unique and the unique string is used as key in the counter database. The idea was suggested by someone I forgot (Hopefully I'll find out later).

  • If df parameter is specified, the counter acts like the older versions even if compiled with USE_DATABASE. It was done so that this version can be used with datafiles used by older versions.

  • build script was broken. It was not taking any arguments. Thanks to Drew Skinner,

  • configure script was badly broken. I think it's fixed now. Added all_nottf, all_nodb_nottf options in Makefile.

  • Core dumping at startup on DEC alphas as it should. It's possible when database support is on, we don't have any QUERY_STRING. Mistakenly it was assumed there's a QUERY_STING.

  • For proxy servers, REMOTE_ADDR is always the same. So if count_reload=No in the config file, the counter would never increment. Juha Ojaniemi, suggested that some proxy servers set a variable HTTP_X_FORWARDED_FOR. So I check for this var first before REMOTE_ADDR.

  • If database support is on and a database specified by RGB_DATABASE in config.h exists, it will be used rather than the rgb.txt file specified by RGB_MAPPING_DICT in config.h. It will make color lookup much faster.

  • Database support

  • Count 2.6 beta released.

    Count 2.5

  • Compositing the counter on a base image had many bugs. All are fixed I think. Now you can composite counter, clock or countdown image on a base image (previously only counter image could be composited). Left padding the counter while compositing was not working either. The align keyword had more values now, namely topleft, topcenter, topright, midleft, midcenter, midright, bottomleft, bottomcenter and bottomright. A new keyword offset can be used with align to specify the offset (in pixels) of the counter image from the edge of the base image.

  • The meaning of image parameter is changed. Now this parameter is used for compositing the counter, clock, date or countdown image. If no display parameter is used, the default is to composite the counter image.

  • A new boolean keyword sdhms (show day hr min sec) is added, so that only days in countdown can be displayed.

  • A new parameter display=version is introduced to show the version of the counter. A command line flag -version also can be used to find out the version of the counter.

  • mystrncasecmp() function was mistakenly had ANSI definition.

  • Count 2.5 final release on Mar-01-1999.

  • If configuration file was not readable or if there's an error found while reading the config file, no error message was displayed telling that. Thanks to for reporting it. (Feb-08-1999)

  • There was a bug in assertSegarray(). If the image strip had only digits (0-9), and if display=clock was specified, the program was core dumping due to accessing an un-initialized array for the colon image segment. Reported by Daisuke Aoyama, and Andy Machan, (almost at the same time, very interesting!).

  • If hour in clock is < 10, left pad it with zero. This is the default behavior now. To turn off zero padding use pad=F. Suggested by Kira Anastasia.

  • There was a bug in implied Year 2000 countdown code. Thanks to Craig Brockmeier,

  • strict_mode was getting ignored from the count.cfg file. It was always ON. Thanks to Sergey Drazhnikov, swd

  • some "make" commands were not working on systems with no "." in path. Thanks to Kevin J. Walsh.

  • added a new digit style cdr (countdown red). Contributed by Mike Casper.

  • Date format was not working, fixed. Thanks to Peter Worboys
    (Jan-27-1999, 5:30 PM)

  • To show full year in the date, in addition to the option fy, you can specify YYYY with the option dformat. For example, dformat=MMDDYYYY is equivalent to dformat=MMDDYY&fy=T. Suggested by Peter Worboys

  • Countdown can be calculated in reference to any timezone with the parameter timezone. It will allow you to show the countdown to Year 2000 from GMT instead of local web server time for example. Suggested by Eileen Wharmby,

  • Wrote a new mystrncasecmp() routine, using in parsing the QUERY_STRING parsing.

  • I specified some dates as 1998 instead of 1999. Thanks to Pete Tedder,

  • Added a new option align to align the counter image on the base image. This option can be used to composite the counter on a base image with known width and height (may be with align=right). This way, you will be able specify the width and height of the counter image in the <img src= tag while calling the counter. The implication is, if the counter is the first thing in a large table, the browser will not have to wait to calculate the width and height of the counter image before loading the rest. Suggested by Sarwat Khan.

  • some security fix.

  • Binary release for NT is done. There was no need for a single line of source code change. So, if you are on Unix, do not need to update.

  • The counter option show_error_messages_to_browsers in count.cfg was not working, fixed.
    (Jan-06-1999, 7:11 PM)

  • A debug routine which prints the contents of count.cfg to stderr was not taken out, by accident. So if you ran the counter on an apache web server, you would have seen the content of the count.cfg file in the error_log with each invocation of the counter. If you ran a netscape web server, you would have seen a broken image as netscape server merges stderr with stdout resulting invalid MIME header. Thanks to Andrew Chung.

  • Compilation instruction was wrong. Thanks to Andrew Chung.

  • Released on Jan-03-1999.

  • The format of the configuration file is changed. The file format is similar to MS INI files.

  • The site admin can decide if she/he wants to show the counter error messages to the visitors by specifying a keyword and value (show_error_messages_to_browsers=Yes or No) in the configuration file in the [options] section.

  • Full year can displayed in date if the parameter fy is used. This feature was requested by Dave Low, By the way, the program was year 2000 safe even before that.

  • Option to show the "from" date and time of the countdown.

  • The counter can be composited to a image to a specific x,y location.

  • Reload ignore/count is a configurable option in count.cfg file.

  • Data file format is changed. Now the data ends with $ and the data is significant up to the first $ sign. No need to use ftruncate() anymore. It was kind of risky, if the system was out of diskspace, data file was zero'd out. It will also help with systems where ftruncate() is not available. Please read FAQ Question# 11 for details.

  • Added more information to the documentation. (Dec-13-1998)

  • Countdown to a specific date from current time.

    Count 2.4

  • Thanks to Daniel Klein for correcting lots of mistakes in the documentation.

  • wwwcount mailing list created. Send a request message to with 'SUBSCRIBE' in the body of your message (no subject is needed). Thanks to Ashley M. Kirchner,

  • Count-install is changed. If you're installing as root and specify the user and group the web server runs as, the install program will change the ownership and group of the datafile and the log directory to that user and group only. Before everything was owned by the user, which is not necessary.

  • bigplus library was called without initializing properly. I got some reports that on certain platforms, counter increments by 1000 sometimes. This should fix it.

  • Thanks to Robert Edmonds and Muhammad Riza for explaining the mystery of IE 4.01 and gzip compressed files with .gz extension.

  • Added valign=top to the options table, it looks nicer now. Suggested by m.c.

  • Added the FAQ about virtual servers.

  • The source distribution has VMS support now, that means, the source can be compiled on Unix, NT and VMS. VMS port is done by Phil Ottewell

  • People running virtual hosts can list only there IP addresses instead of having to add each virtual domain name to cfg file. Can be activated the code at compile time with the flag -DUSE_DNS at src/ Patch sent by Sean Reifschneider,

  • Count-config was not working properly. Thanks to Ashley M. Kirchner,

  • It was reported that counter sometime leaves zero size datafiles. Now, before calling ftrucate(), check if there's anything to write. truncate only if there's something to write. Thanks to, Brian S. Wallace.

  • mkstrip directory is moved from utils to utils/mkstrip.

  • The colon digit in digit style D was not black. Thanks to Engler, Eric,

  • A bug in Count-install script showed up due to the change in source directory structure. The location of Count.cgi was hard coded at the current working directory. Thanks to Chris Bowlby

  • to_str in safeStrcpy() was not getting NULL terminated all the time.

  • More security patches by Matt Power, It was possible to overflow some static buffers used in sprintf.

  • Changes in source code structure. The main source has been moved to src directory. A toplevel Makefile is provided.

  • The users who are getting "Source buffer is NULL in safeStrcat()" should be fixed now. Thanks to Wincom Administrator,
    (Nov-07-1997, 11:25 PM EST)

  • Some security patches by Matt Power, It was possible to overflow some static buffers.

  • There were some typos in Gen-conf and parse.c. Thanks to Craig Brockmeier,

  • A malloc bug was in utils.c. Thanks to Steven D. Chen,

  • Implementation of safeStrcat() was incorrect. patch sent by Matt Power,

  • If "image" parameter is used and no datafile is specified, ignore counting silently.

  • "Reload Ignore" feature can be turned off at compile time by defining the directive COUNT_IGNORE in src/Makefile.

  • If the content of the datafile was 0, IP as not getting added to the content at all.

  • If QUERY_STRING is empty, it was not showing the proper error message. Thanks to Mark Gilmore,

  • Hostnames in auth block were case sensitive. Patch sent by Takeshi OKURA,

  • There was a bug in date display in 24 hr format with "tformat=24". I don't remember who reported it.

  • Some unnecessary include headers were left in bigplus.c. Compilation was failing on FreeBSD. Thanks to Greg King ,

  • It was possible to go up directories with dd= parameter. Thanks to Pauli Ojanpera,

  • Gen-conf was creating wrong count.cfg file about rgb.txt. Thanks to Bill O'Neill,

  • in utils directory was wrong. Thanks to Heicher,

  • comma=T used to core dump on Solaris 2.5. patch sent by James Burton,

  • Meaning of BLOCK 3 of the count.cfg file differers with that of Count 2.3. So if you're using an older config file, change the boolean in this block.

    Count 2.3

  • Buffer overflow vulnerabilities are fixed. They are very quick fix and I might have overlooked something. Please let me know. There was a bug with image= parameter related to relative path. It's fixed as well . These fixes only apply to the source distribution. The binary distributions of other platforms still have these bugs. (Oct-17-1997)

    Count 2.2 (January 16, 1996)

  • There was a logic problem in determining AM and PM. Thanks to ( 01/18/96

  • Strict mode (detect if browser returns HTTP_REFERER) is a configurable option.

  • An error was in the code related to ACCESS_AUTH directive. Reported by c2dhanle@CompApp.DCU.IE

    Count 2.1 (January 15, 1996)

  • The bug related to st parameter is fixed.

  • The same program an be used to display time or date.

    Count 2.0 (December 27, 1995)

  • Configuration scripts. You should not to need to hand edit any file in order to compile and install the counter.

  • Reasonable defaults for all QUERY_STRING parameters. Implemented by Kevin J. Walsh

  • QUERY_STRING parameters can be in any order and not case sensitive. Implemented by Kevin J. Walsh

  • Counter can be displayed without incrementing. Implemented by Kevin J. Walsh

  • A literal digit string can be displayed. Implemented by Kevin J. Walsh

  • A random digit string can be displayed as counter. Implemented by Kevin J. Walsh

  • Colors can be negated, that is counter can be displayed as a negative copy.

  • The counter can be rotated (integral of 90 degrees, 90,180,270 degrees).

  • No need to specify width and height of digit images.

  • The frame and transparent color can be a name (e.g. red, violet etc), a hex string (e.g. ffffff, ff00ff, dddddd etc.) as well as RGB triplets (e.g. 160;255;0, 0;0;0 etc) as before. Implemented by Kevin J. Walsh

  • The counter can be called as simply as:
        <img src="/cgi-bin/Count.cgi?df=count.dat">
    or as complex as before. or any attribute can be set independently.

    Count 2.0b

  • Log directory was not created by the Count-install script. (Thanks to (12/07/95).
    Thanks to John Anthony Ruchak for beta testing Count 1.5.

    Count 1.5
    (September 11, 1995, 9:00 PM EDT)

  • can be compiled with -DALLOW_FILE_CREATION option. if compiled with this option, the data file will be created if it does not exist in the directory defined with DataDir and the value defined with st in QUERY_STRING will be written to it. (suggested by John Anthony Ruchak.
    (September 10, 1995)

  • Advisory data file locking. Datafile will not get messed up by simultaneous Count.cgi processes.

  • Error messages are converted directly from string to image. No included GIF images are needed, will be beneficial for system with low memory. I borrowed the font array and some code from gd library. Thanks to Tom Boutell

  • Authorized host names can be in configuration file.

  • The hits on the web page can be counted without displaying the digits. suggested by Andres Sepulveda.

    Count 1.4 (August 27, 1995)

  • suggested to use HTTP_REFERER for checking remote access to the counter.

  • sent some code segment to account for port numbers at the end of a referrer URL.

  • Ornamental frame with user defined color and thickness on the fly.

  • maximum number of digits can be >= 5 or <= 10 (if you use md) (on the fly).

  • if pad=0, the exact number of digits will be displayed without left padding with zeros (on the fly).

  • Any color of the digits can be made transparent on the fly.

  • Digit style can be provided on the fly.

  • suggested to keep configuration file, data file, digits, log file in separate directories. It will fix a security hole.

  • datafile can be edited.

    Count 1.3

  • Hardcoded the base directory of the counter data files. This will fix a security hole. Thanks to

    ack.html Contents copyright.html