CHANGES for cgihtml $Id$ =================== 1.65 -> 1.66 ------------ o Finally replaced all \r\n with \n. To heck with standards. o Slightly modified Makefile to handle UPLOADDIR modifications properly. 1.6 -> 1.65 ----------- o Rewrote parse_CGI_encoded. Plugged some memory leaks, improved performance and robustness, and simply made it look better. Now returns -1 if the string is not properly encoded. Should be mostly transparent to most users. o Fixed Windows portability bug in parse_file_encoded. o Fixed parse_file_encoded support for Netscape's Windows browsers. o Changed functions in html-lib.c to use \n rather than \r\n if compiled under Windows. o Added HTTP_USER_AGENT macro to cgi-lib.h o Added lower_case() to string-lib.h. o Moved examples to a subdirectory. o Modified Makefiles. 1.51 -> 1.6 ----------- o Fixed newstr() to properly handle failed malloc. o Removed die() function and signal() calls in example programs. Was causing confusion amongst non-UNIX users. o Fixed print_cgi_env(). o Added is_field_exists() and is_field_empty(). o Fixed bug in mail.cgi.c so that it allocates correctly for destination string. o File upload now puts filename in linked list. o Fixed buffer problems in file upload. Now allocates buffers correctly, and handles non-file information correctly as well. o Fixed minor bug in file upload that would lose the first line of information. o Added set_cookie() in html-lib.c. o Modified parse_cgi_encoded() to ignore all input if there is no equals sign in the string. o Fixed bug in parse_cgi_encoded(); would not return proper value if input string had one field with no value. o Added parse_cookies() to cgi-lib.c. 1.5 -> 1.51 ----------- o Got rid of h() and img() from html-lib.h because var_arg was causing trouble. Specifically, I couldn't figure out a good, consistent way of determining when the end of the argument list was reached without the user specifying it. o Fixed stupid type in Makefile: gnore.cgi -> ignore.cgi. o Internal change: Changed all the (*var).structvar (a relic from my Pascal programming days) to var->structvar. 1.21 -> 1.5 ----------- o Added an interactive debugging mode for interactive form entry from the command line. o read_cgi_input() now supports file upload! o Renames llist.h -> cgi-llist.h. This is to prevent conflicts with other linked list packages you may be using. o Added cgi_name() and cgi_name_multi(), counterparts to cgi_val() and cgi_val_multi(). o Added var_arg functionality to some HTML functions in html-lib.h. See documentation for examples. o h1() .. h6() replaced by more general h(). See documentation for usage. o Added the following new functions: html-lib.h cgi-lib.h string-lib.h ---------- --------- ------------ img() cgi_name() substr() hidden() cgi_name_multi() is_form_empty() See documentation for more details. o Modularized read_cgi_input() and improved robustness. o Moved replace_ltg() from cgi-lib.c to string-lib.c. Made it available via string-lib.h. o should have been . Thanks to Dan Fetzer for pointing this out. o Got rid of extra \r in print_entries(). o Fixed minor bug in Makefile (nph-ignore becomes ignore). 1.2 -> 1.21 ----------- o Fixed bug that prevented die() from being compiled. Thanks to Rosemary Paquola for the bug fix. 1.1 -> 1.2 ---------- o Rewrote parsing functions for read_cgi_input(). No longer uses messy NCSA code (except for unescape_url()). Improved robustness. o Defined macros for the standard CGI environment variables. o Added cgi_val_multi to deal with multiple values with the same name. Contributed by Mitch Garnaat and modified by yours truly. o Strengthened escape_input(). Now escapes all non-alphanumeric characters. o Modified print_entries() to replace greater than (>) and less than (<) characters with the appropriate escaped HTML (> and < respectively). o Modified some functions for portability to NT. Thanks to Eliot Muir for patches. o Added test.cgi example application. o Replaced nph-ignore.cgi.c with ignore.cgi.c. Uses a status header rather than no-parse-header. o Added status(), pragma(), print_env_cgi() functions. o Removed no_parse_header() function. o Changed int die() to void die(). Thanks to Graham Potts for the report. o Removed carriage returns (\r) from HTML functions. Unnecessary; carriage returns are only required in the HTTP headers. o Fixed stupid bug in h2() .. h6(). Thanks to Andrea Cozzolino for reporting this. o Updated documentation. 1.0 -> 1.1 ---------- o Renamed functions to use a more standard naming scheme. This will break old programs; make sure you search and replace to rename the appropriate functions. Old function name New function name ----------------- ----------------- ReadParse read_cgi_input val cgi_val PrintHeader html_header MethodGet method_get PrintEntries print_entries o read_cgi_input now returns a 1 if input is received, and a 0 otherwise. ReadParse in version 1.0 did just the opposite. o Used dynamically allocated strings rather than arrays of characters. There is now no theoretical limit to the size of item.name or item.value. o Added string-lib library: - newstr() o New cgi-lib functions: - accept_images() -- determines whether the client browser will accept images. - escape_input() -- filter out shell metacharacters for security purposes o New html-lib functions: - mime_header() - no_parse_header() - show_html_page() - h1() ... h6() o Added two new example programs: index-sample.cgi and nph-ignore.cgi o Removed example: mailform.cgi o Included debug-cgi.sh, a shell script which runs CGI programs from the command line to help debug code.