                          [The qDecoder Project]
  ------------------------------------------------------------------------

qDecoder Changes

``FIX'', ``ADD'', ``REP'' and ``REM'' are stand on ``Fixed or Modified'',
``Added'', ``Replaced'' and ``Removed''.

   * Release 7.0
        o ADD) qSession...() - Session related functions
        o ADD) qMD5Str(), qMD5File() - Calculate a message-digest
          fingerprint (checksum)
        o ADD) qUniqueID() - Always returns unique 32 bytes string
        o ADD) qCookieRemove() - Remove cookie from client(browser)
        o ADD) qfValueFirst(), qfValueNext() - Used for patching the
          arguments having an identical variable name inregular sequence
        o ADD) qsValueFirst(), qsValueNext() - Used for patching the
          arguments having an identical variable name inregular sequence
        o ADD) qGetContentFlag() - qCheck execution of qContentType()
        o ADD) qFreeAll() - Deallocates the all allocated memories by
          qDecoder.
        o FIX) qDecoder() - qcDecoder() is merged
        o FIX) qSedStr(), qSedFile() - Changed parameters
        o FIX) qCatFile() - Support formatted arguments, Support Win32
          environment
        o FIX) qCheckFile() - Support formatted parameters
        o FIX) qURLencode - Does not encode '@', '.', '/', '\', '-', '_',
          ':' character
        o FIX) qRedirect - Regular code improvement
        o FIX) qPrint(), qArgPrint, qsPrint, qfPrint - Changed return type
        o FIX) qPuts() - Regular code improvement
        o REP) qcDecoder() - Merged by qDecoder()
        o REP) qAddCookie() - Merged by qValueAdd()
        o REP) qSetCookie() - Renamed to qCookieSet()
        o REP) qReadCounter(), qUpdateCounter(), qSaveCounter() - Renamed
          to qCountRead(), qCountSave(), qCountUpdate()

   * Release 6.0.5
        o FIX) qAddCookie() - Solves the problems in which qAddCookie()
          does not operate when there is no existing cookie (when
          _cookie_first_entry is NULL).

   * Release 6.0.4
        o ADD) qAddCookie() - Forcibly adds the cookie value to the cookie
          linked list.
        o ADD) qResetContentFlag() - Initializes the system for
          ContentType() to be forcibly displayed in dublicate.
        o FIX) qURLencode() - Adjusts the system so that "@./-?&=#\:_" will
          not be encoded.
        o FIX) qPrintf(), qPuts() - Modifies the token character into "
          `(){}[]<>\"',\r\n" so that the character strings after '&' will
          not be linked at the automatic link function.
        o FIX) qSetCookie(), qGetGMTime() - Solves the cookie
          settings-related problems occurring from the fact that, in
          connection with qGetGMTime() at Solaris machines, Time Zone is
          displayed not in GMT but in Local Time Zone such as KST while
          time is normally displayed in GMT.
        o FIX) qReadFile(), qFileSize() - Supports Win32.

   * Release 6.0.3
        o ADD) qValueReplace() - Transposes the tokens or specific
          character strings of query strings into given character strings.
        o ADD) qStrReplace() - Transposes the tokens or specific character
          strings of strings into given character strings.
        o ADD) qReset() - Initializes qDecoder. (Deallocates memory and
          initializes internal variables)
        o FIX) qAwkClose() - Modifies the system to have return values.

   * Release 6.0.2
        o ADD) Adds the static library creation project files for Microsoft
          Visual C++ use.
        o FIX) Converts those internally used functions (starting with '_')
          into "static".

   * Release 6.0.1
        o ADD) Applies Autoconf.

   * Release 6.0
        o REP) qCgienv() - Replacement function qCGIenv().
        o FIX) qDecoder() - Adds the security code for overflow attacks
          when multipart/form-data is interpreted.
        o FIX) qSaveStr() - Removes permission setup arguments for the
          compatibility with WIN32.
        o FIX) Changes the name of structure Entry into Q_Entry.
        o FIX) Changes the name of structure Cgienv into Q_CGIenv.
        o FIX) Adjusts the installation path into /usr/local/lib,
          /usr/local/include in case of "make install".
        o FIX) qDownload(), qDownloadMime() - Modifies the system for
          return values to have the number of transmitted bytes.
        o FIX) qPrintf() - Modifies the system so that the length of
          combined character strings can be supported up to 10K.
        o ADD) Supports the shared library (libqDecoder.so).
        o ADD) qCGIenv() - Extended edition of qCgienv() of old versions.

   * Release 5.0.8
        o FIX) qSetCookie() - Corrects the sequence of arguments according
          to the standard specification.
        o FIX) qURLdecode() - Changes the function prototype from void to
          char* so that the decoded string pointer can be returned.
        o FIX) qDownload() - Modifies the system so that the entire file
          size can be identified when downloading at clients.
        o ADD) qDownloadMime() - Transmits files to clients according to
          MIME.
        o ADD) qFileSize() - Notifies the file size by the unit of byte.

   * Release 5.0.7
        o REP) qStrBig() - Replacement function qStrupr().
        o ADD) qArgMake(), qArgPrint(), qArgMatch(), qArgEmprint(),
          qArgFree() - A group of functions that analyzes search queries,
          identifies the number of query hits inside strings, and displays
          the results making the matching parts in bold characters.
        o ADD) qValueDefault() - Same as qValue(). But hands over the basic
          string value when there is no corresponding query name.
        o ADD) qValueNotEmpty() - Same as qValue(). But displays error
          messages in case of NULL or blank character strings ("").
        o ADD) qStrincmp() - Plays the role of the strncmp() function plus
          the stricmp() function. Compares the first n bytes of character
          strings without distinguishing uppercase/lowercase letters.

   * Release 5.0.6
        o FIX) qitocomma() - Solves the problems in which negative numbers
          are displayed as '-,123,456'.
        o FIX) qURLencode() - Modifies the system so that a space ' ' can
          be encoded not into '+' but into '%20'.
        o FIX) qUpdateCounter() - Modifies the problem of returning the
          'existing value' into figures of 'existing value + update'.
        o FIX) qDownload() - Changes the function type from void to int so
          that it can have return values when there is no file.
        o FIX) qError(), qErrorContact() - Corrects the problems in which
          [Administrator: ...] is inserted before and after those messages
          set up as qErrorContact() (for original messages to be displayed
          without the insertion).

   * Release 5.0.5
        o REP) qStrStr() - Replacement function qStristr()
        o REP) qSed() - Replacement function qSedFile()
        o ADD) qStricmp() - Functionally the same as the strcmp() function.
          But does not distinguish uppercase/lowercase letters.
        o ADD) qSedStr() - Performs source input by strings.

   * Release 5.0.4
        o REP) qFileCat() - Replacement function qCatFile().
        o FIX) qUpdateCounter() - Modifies interfaces (so that the update
          increase/decrease can be numerically controlled).
        o FIX) qDecoder() - Processes the arguments handed over to the
          environment variable of QUERY-STRING in the multipart/form-data
          method.
        o ADD) qReadFile() - Reads files and stores them in memory.
        o ADD) qSaveStr() - Stores the contents of strings in files.

   * Release 5.0.3
        o FIX) qPrintf(), qPuts() - Adds '&' to tokens again.
        o ADD) qfGetLine() - Returns allocated memory pointers by reading a
          line of files regardless of the length.

   * Release 5.0.2
        o FIX) qSed() - Makes a modification so that NULL pointers can be
          inserted as the arg argumentation. Solves the problems in which
          the segmentation fault errors occur in case the first argument of
          arg is NULL (when the SSI function is to be used without
          conversion).
        o FIX) qPrintf(), qPuts() - Removes the '&' character from tokens.

   * Release 5.0.1
        o FIX) qValue(), qiValue(), qfValue(), qfiValue(), qsValue(),
          qsiValue(), qcValue(), qciValue() - Uses vsprintf() instead of
          the vsnprintf() function due to the compatibility problem.
        o ADD) qSed() - Displays specified symbols in files after changing
          them into defined character strings.

   * Release 5.0
        o REP) qSendFile() - Replacement function qFileCat().
        o FIX) qValue(), qiValue(), qfValue(), qfiValue(), qsValue(),
          qsiValue(), qcValue(), qciValue() - Performs patch works so that
          arguments can be transmitted by formats.
        o FIX) qPuts() - Removes '&' from the token list.
        o ADD) qValueFirst() - Acquires the variable value for the first
          argument among the arguments transmitted in an identical variable
          name.
        o ADD) qValueNext() - Acquires the next variable value.
        o ADD) qRedirect() - The page-jump function using the location:
          header of HTTP.
        o ADD) qFileCat() - Displays all the corresponding files in stdout.

   * Release 4.3.1
        o FIX) Modifies install/deinstall method of Makefile.

   * Release 4.3
        o FIX) qDecoder() - Performs patch works so that the queries handed
          over to SSI can be received.
        o ADD) qAwkOpen()
        o ADD) qAwkNext()
        o ADD) qAwkClose()
        o ADD) *qGetFirstEntry()
        o ADD) *qitocomma()

   * Release 4.2
        o FIX) qDecoder() - Patches related to Macintosh IE.
        o FIX) qGgienv() - Patches related to Apache 1.3.
        o FIX) qGetGMTime() - Performance improvement.
        o ADD) *qCGIname()
        o ADD) qDownload()
        o ADD) *qGetEnv()
        o ADD) *qStrBig()
        o ADD) *qStrStr()

   * Release 4.0.1
        o FIX) qfDecoder() - emoves the length restriction of one line in
          files.
        o FIX) qDecoder() - Modifies the internal algorithm of the
          multipart/form-data format.

   * Release 4.0
        o FIX) qDecoder() - Supports file uploading.
        o FIX) qfDecoder() - Processes those lines starting with # as
          explanatory notes.
        o FIX) qURLencode() - Makes a modification for '@' and '.' not to
          be encoded.
        o FIX) _decode_query() - Changes the function name into
          qURLdecode().
        o FIX) qCheckEmail() - Allows '.' in ID.
        o FIX) qPrintf(), qPuts() - Modes 10 through 16 are newly
          supported.

   * Release 3.5
        o FIX) _get_query() - Adds the confirmation that the environment
          variable is not set up.
        o FIX) qCgienv() - Optimizes using environment variables that are
          used in Netscape and Explore in common.
        o FIX) qSetCookie() - Changes the expiration-date designation from
          char* to the int type.
        o FIX) qError() - Adds logging functions.
        o FIX) qURLencode() - Makes a modification for numbers and English
          alphabets not to be encoded.
        o ADD) qErrLog()

   * Release 3.4.2
        o FIX) qDecoder(), qfDecoder(), qcDecoder() - Modifies Linked List
          algorithm.
        o FIX) qPuts() - Solves the problems in which warnings are given
          when compilation is performed at certain systems.

   * Release 3.4.1
        o FIX) qPrintf(), qPuts() - Removes the space displayed at the end
          of character strings.

   * Release 3.4
        o FIX) qCheckEmail() - Makes a modification for emails including
          '-' or '_' to be possible.
        o FIX) qPrintf(), qPuts() - Corrects the problems in which < and >
          of character-string contents are displayed as '<' and '>'
          (displays them as &lt and &gt). Only those character strings such
          as 'mailto:guest@hongik.ac.kr' were automatically linked, but the
          automatic link of such types as 'guest@hongik.ac.kr' can be
          performed.
        o ADD) qSetCookie()
        o ADD) *qURLencode()
        o ADD) qGetGMTime()

   * Release 3.3.1
        o FIX) qDecoder() - Corrects the problem in which the '&' character
          of the query value is recognized as a separator.

   * Release 3.3
        o ADD) qcDecoder()
        o ADD) *qcValue()
        o ADD) qcPrint()
        o ADD) qcFree()

   * Release 3.2.2
        o ADD) qUpdateCounter()
        o ADD) qPuts()
        o ADD) qCheckURL()

   * Release 3.2
        o ADD) qReadCounter()
        o ADD) qSaveCounter()
        o ADD) qStr09AZaz()

   * Release 3.1
        o ADD) qPrintf()
        o ADD) qCheckEmail()
        o ADD) qError()

   * Release 3.0
        o ADD) *qfDecoder()
        o ADD) *qfValue()
        o ADD) qfPrint()
        o ADD) qError()
        o ADD) *qRemoveSpace()

   * Release 2.2
        o ADD) qDecoder()
        o ADD) *qValue()
        o ADD) qPrint()
        o ADD) qFree()
        o ADD) qContentType()
        o ADD) qCgienv()
        o ADD) *qGetTime()
        o ADD) qCheckFile()
        o ADD) qSendFile()

  ------------------------------------------------------------------------
