puf developement history (old versions by Anders Gavare): --------------------------------------------------------- 0.0.0 (14 Jan 1999) * Test 0.0.1 (14 Jan 1999) * Adding bytes/second counter... * Adding file reopen if we are short on free file handles 0.0.2 (15 Jan 1999) * Trying to add automatic directory download. * If a socket doesn't receive data within a specific time (60 seconds typically), the socket is closed and the url status is set to "Error". 0.0.3 (20 Jan 1999) * Internal cache for hostname lookups added. * Fixed bug: file timeout doesn't cause segmentation fault anymore. * Reniced output when running in verbose==0 mode. 0.0.4 (23 Jan 1999) * Better "per pass" statistics. 0.0.5 (20 Feb 1999) * Adding -Wall compilation option, removing the MACHINE_ID stuff. * Adding -w option. 0.0.6 (27 Feb 1999) * Added agent.h (HTTP_AGENT define). 0.0.7 (9 Mar 1999) * Beginning on what will be the 0.1.x-series * Added -M option. Added -T option. * Added -f and -F options. * Works quite ok. Directory creation. 0.0.8 (11 Mar 1999) * Added caching for url-chain information. * Fixed minor "bugs". 0.0.9 (16 Mar 1999) * Freshed up README. * Freshed up dns_cache.c * Freshed up gaforzia.c. * Increased DEFAULT_MAX_CONNECT_RETRIES from 3 to 5. * Refusing to add urls with questionmarks or @-signs. * Finnished the add_relative_url() stuff (buggy?). * Ignoring urls with #-signs. * Adding SECURE_GAFORZIA flag (to avoid seg. faults in some places). * Added hash-codes for quicker searches in the url chain. * Found out what the bug can be about... * Changed .fetched_index to .fetched_index.html 0.0.10 (20 Mar 1999) * Refreshed dns_cache.c. * Added HTTP_CONNECTION and HTTP_ACCEPT define strings to agent.h. * Trying to fix the seg faults in handle_databuf(). * Added trivial handling of http result codes (200 & 4xx) * Hopefully fixed the seg faults... * Added "top speed" information after all fetches are completed. 0.0.11 (21 Mar 1999) * Corrected the "current" and "top" kcps meters using gettimeofday() instead of time(). * Uses a string variable http_agent instead of HTTP_AGENT for runtime modification. Added "uname" to http_agent. * Follows error #3xx "Location: " urls... (unlimited depth... this should be fixed) * Put HISTORY in a separate file, not in README anymore. 0.0.12 (24 Mar 1999) * Adding "src=" stuff to the recursion routine. 0.0.13 (26 Mar 1999) * Recurses into "htm" documents as well as "html". * Recurses into anything with "Content-Type: text/html". * Adding -g and -G flags to allow urls with ? and @ signs (but they might not work as they should???) * Freshened up the syntax (-h text). 0.0.14 (1 Apr 1999) * Adding the LICENSE file. 0.0.15 (12 Apr 1999) * Removed a bug which caused www.microsoft.com (among others) to bug out because of very long URLs. 0.0.16 (22 Apr 1999) * Adding "Referer: " stuff. * Prepared for adding "Range: " and "Content-Range: " stuff... 0.0.17 (4 May 1999) * Fixing freopen() segfaults. * Adding -K option for "fake" hostnames. * Adding -a and -A options for userdefined User-Agent stuff 0.0.18 (19 Sep 1999) * Wrote a lots of stuff into the TODO file, in preparation for the 0.1.x series. * Agent-string is now "OS/hardware version" instead of "OS version hardware". 0.0.19 (24 Sep 1999) * Changing // comments into /* */. Trying to port to SunOS by using cc instead of gcc. * Created a homepage on the web for gaforzia. 0.1.0 (25 Sep 1999) * Beginning total code audit. Not rewriting, just going through everything I've written so far. * Refreshing LICENSE. * Refreshing main.c (previously gaforzia.c). * Fixing bugs in getopts.c. * Shows warning if run as uid 0 (root). * Created a man page, gaforzia(1). * Shows advanced help if -ha is specified on command line. * Added "connection reactance", the -k option. 0.1.1 (26 Sep 1999) * Renamed the program to 'puf' (old name was 'gaforzia', which no one probably knows what it means anyway). 0.1.2 (1 Apr 2000) * Applying patches for http user authentication and some other things from Oswald Buddenhagen * Translated TODO from Swedish to English. 0.1.4 (16 Jul 2000) * Two large patches (0.1.2 -> 0.1.3, and then -> 0.1.4) by Oswald Buddenhagen. Here are his comments (0.1.2 -> 0.1.3): - done some items from the todo list - optimized some string handling code - converted the whole getopts.c to use getopt(). it makes the code much more readable. the help screen concept changed a bit, too. - fixed/enhanced url handling/comparison - cleaned up the debugging messages concept. now a debug() function with a variable parameter list is called everywhere. same for critical error exits (function die()). And the 0.1.3 -> 0.1.4 changes: - implemented the "recurse while fetching" feature -> partly rewritten recurse.c - completely rewritten handle_databuf.c - changed method of byte counter statistics computation - added -i option to specify the name of anonymous index files. default is not .fetched_index.html anymore, but index.html - removed unnecessary stuff from agtcp; replaced calls to trivial functions with native calls - again improved the debugging message handling. with gnu compilers debug() is a macro. this is faster than a function call. - with -v the normal output is disabled, as it only makes the debug messages even harder to read. - moved all "extern" declarations from the c-files to global.h * Finnished the "continue download" mechanism.