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

Count 2.5

  • Some cleanup for NT. new config.guess should support Mac OS X.

  • The options parameter "cache" is meaningless. Just use expires. I think it was confusing to use cache and expires parameters together. Also there was a bug.

  • The wildcard routine for the sections [ignore IPs] and [authorized] sections config file had a bug.

  • LZW compression in GIF is OFF by default. If you want to make the counter with LZW compression, edit the file libs/combine/ and uncomment the line ##HAS_LZW= -DHAS_LZW=1. Please do so at your own risk as Unisys has the right to charge you $5000.00 for using compressed GIF files. Without the LZW compression, the GIF image the counter generates will be bigger.
    Read more about it:

  • For proxy servers, REMOTE_ADDR is always the same. So if count_reload=No in the config file, the counter would never inrement. Juha Ojaniemi, suggested that some proxy servers set a variable HTTP_X_FORWARDED_FOR. So I check for this var first before REMOTE_ADDR.
  • Added a new parameter cdf to specify a countdown from date. That is difference between two dates can be calculated if you specify the target date as well with the paramter cdt Requested by droid,

  • Documentation in Chinese (Thanks to Zhao YouBing)

  • 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 specifiy the width and height of the counter image in the <img src= tag while calling the counter. The implecation 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 upto 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