1 [The qDecoder Project]
2 -------------------------------------------------------------------------------
3
4 qDecoder Changes
5
6 ``FIX'', ``NEW'', ``REP'' and ``REM'' are stand on ``Fixed or Modified'',
7 ``New'', ``Replaced'' and ``Removed''.
8
9 Release 10.1.6
10 ADD) qHexEncode(), qHexDecode()
11 FIX) qHashMd5Str(), qHashMd5File - fix to use qHexEncode()
12
13 Release 10.1.4
14 FIX) qCountRead(), qCountUpdate() - bug fix.
15 FIX) replace strerror() to thread-safe strerror_r().
16 FIX) AutoConf and Makefile adjustments.
17
18 Release 10.1.2
19 ADD) qBase64Encode(), qBase64Decode()
20 ADD) qStrIsIpv4Addr()
21 ADD) qStrTest()
22 REP) qStrIsAlnum() -> qStrTest()
23 REP) qEncodeUrl() -> qUrlEncode()
24 REP) qDecodeUrl() -> qUrlDecode()
25
26 Release 10.1.1
27 FIX) Q_HTTPCLIENT uses TCP_NODELAY socket to improve performance.
28 FIX) Q_HTTPCLIENT performance improvements.
29 ADD) Add qStrDupf() - duplicate a formatted string.
30 FIX) qSocketClose() - added timeoutms parameter.
31 ADD) Q_OBSTACK->writeFinal() - write out merged final data to the file descriptor.
32 FIX) Q_ENTRY->putStrf() - fix memory leak
33 FIX) merge qCount.c and qSed.c into qUtil.c
34 Release 10.1.0
35 ADD) qIo.c
36 REP) qSocketWaitReadable() => qIoWaitReadable()
37 REP) qSocketWaitWritable() => qIoWaitWritable()
38 REP) qSocketRead() => qIoRead()
39 REP) qSocketWrite() => qIoWrite()
40 REP) qSocketGets() => qIoGets()
41 REP) qSocketPuts() => qIoPuts()
42 REP) qSocketPrintf() => qIoPrintf()
43 REP) qSocketSendfile() => qIoSend()
44 REP) qSocketSaveIntoFile() => qIoSend()
45 REP) qSocketSaveIntoMemory() => qIoRead()
46 Release 10.0.0
47 ADD) Added "--enable-threadsafe" option to support multi-thread program
48 model.
49 ADD) Q_HTTPCLIENT (HTTP client)
50 FIX) Q_HASHTBL (Object of dynamic hash-table)
51 Add thread-safe feature.
52 Introduce Object-C style interface. ex) qHashtblGetStr() =>
53 Q_HASHTBL->getStr()
54 FIX) Q_HASHARR (Object of static hash-table)
55 Add thread-safe feature.
56 Introduce Object-C style interface. ex) qHasharrGetStr() =>
57 Q_HASHARR->getStr()
58 FIX) Q_ENTRY (Object of linked-list data structure)
59 Add thread-safe feature.
60 Introduce Object-C style interface. ex) qEntryGetStr() =>
61 Q_ENTRY->getStr()
62 FIX) Q_OBSTACK (Object of object stack data structure)
63 Add thread-safe feature.
64 Introduce Object-C style interface. ex) qObstackGrow() =>
65 Q_OBSTACK->grow()
66 FIX) Q_DATABASE (Object of object stack data structure)
67 Add thread-safe feature.
68 Introduce Object-C style interface. ex) qDbOpen() => Q_DB->open()
69 ADD) Added timeout parameter to qSocketOpen().
70 ADD) qMkdir() - attempts to create a directory recursively.
71 FIX) configure script supports --enable-fastcgi option.
72 FIX) Fixed bug about qCountUpdate(). It did not return updated counter
73 value.
74 FIX) Wrong MD5 checksum on a 64bit machine. (reported by SimenKing)
75 REM) qCgiResponseError() is removed.
76 REP) qHtmlIsEmail() => qStrIsEmail()
77 REP) qHtmlIsUrl() => qStrIsUrl()
78 ADD) qFileCheckPath() - validate file path.
79 ADD) qFileCorrectPath() - correct file path.
80 ADD) qFileGetAbsPath() - get absolute system path.
81 ADD) qSysGetIp() - get system IP address string.
82 ADD) Q_ENTRY->truncate()
83 Release 9.0.3
84 NEW) Modified autoconf script and source codes to support FastCGI.
85 Release 9.0.2
86 FIX) large file problems. (changing some size_t type to off_t type)
87 FIX) fixed up shared library building problem on FreeBSD AMD 64 machine.
88 Release 9.0.1
89 FIX) qCgiRequestParseQueries() - quoted boundary patch. (by Hidai Kenichi)
90 NEW) qStrUnchar() - remove character from head and tail of the string.
91 NEW) qDecoderVersion() - get the version string of qDecoder library.
92 FIX) minor fixes related packaging.
93 Release 9.0
94 This is new branch of qDecoder.
95 qDecoder 9.0 does not support lower version compatibility any more.
96 Distributed under BSD-like License.
97 Release 8.0
98 NEW) qDecoderSetUploadBase() - Initialize qDecoder() for progressive
99 uploading.
100 FIX) qDecoder() - Now qDecoder() supports progressive uploading and direct
101 file saving into disk.
102 NEW) qSedArgAddDirect() - For huge size(over 1024 - 1) value.
103 Release 7.1.1
104 FIX) qSedArgAdd() - Adjust miss typed variable length. (1024*64 => 1024)
105 Release 7.1
106 NEW) qGetTimeStr() - Generate date string formatted as 'YYYYMMDDhhmmss'.
107 NEW) qJavaScript() - Print out some JavaScript code.
108 NEW) qAwkStr() - Scanning pattern from string.
109 FIX) qAwkOpen() - Compatibility increment
110 FIX) qAwkNext() - Expand array size to 1024(before 256)
111 FIX) qCountRead() - Compatibility increment
112 FIX) qCountSave() - Compatibility increment
113 FIX) qCountUpdate() - Compatibility increment
114 FIX) qDecoder() - Now qdecoder uses more smaller memory
115 FIX) qCheckFile() - Utility increment
116 New socket functions(unix only). Please refer the reference for more
117 details.
118 NEW) qSocketOpen()
119 NEW) qSocketClose()
120 NEW) qSocketWaitReadable()
121 NEW) qSocketRead()
122 NEW) qSocketGets()
123 NEW) qSocketWrite()
124 NEW) qSocketPuts()
125 NEW) qSocketPrintf()
126 NEW) qSocketSendFile()
127 NEW) qSocketSaveIntoFile()
128 NEW) qSocketSetNonblock()
129 NEW) qSocketConv2file()
130 Release 7.0.1
131 NEW) qDecoder() - Added another argument, "variable_name.contenttype", when
132 file is uploaded.
133 NEW) qCookieValue() - Return only cookie data.
134 NEW) qValueType() - Return the type of query.
135 NEW) qfopen(), qfclose() - Open file stream with file lock.
136 FIX) qPrintf(), qPuts() - Added new modes.
137 FIX) qSession() - Changed return type.
138 Release 7.0
139 NEW) qSession...() - Session related functions
140 NEW) qMD5Str(), qMD5File() - Calculate a message-digest
141 fingerprint(checksum).
142 NEW) qUniqueID() - Always returns unique 32 bytes string.
143 NEW) qCookieRemove() - Remove cookie from client(browser).
144 NEW) qfValueFirst(), qfValueNext() - Used for patching the arguments having
145 an identical variable name inregular sequence.
146 NEW) qsValueFirst(), qsValueNext() - Used for patching the arguments having
147 an identical variable name inregular sequence.
148 NEW) qGetContentFlag() - qCheck execution of qContentType().
149 NEW) qFreeAll() - Deallocates the all allocated memories by qDecoder.
150 FIX) qDecoder() - qcDecoder() is merged
151 FIX) qSedStr(), qSedFile() - Changed parameters
152 FIX) qCatFile() - Support formatted arguments, Support Win32 environment
153 FIX) qCheckFile() - Support formatted parameters
154 FIX) qURLencode - Does not encode '@', '.', '/', '', '-', '_', ':'
155 character
156 FIX) qRedirect - Regular code improvement
157 FIX) qPrint(), qArgPrint, qsPrint, qfPrint - Changed return type
158 FIX) qPuts() - Regular code improvement
159 REP) qcDecoder() - Merged by qDecoder()
160 REP) qAddCookie() - Merged by qValueAdd()
161 REP) qSetCookie() - Renamed to qCookieSet()
162 REP) qReadCounter(), qUpdateCounter(), qSaveCounter() - Renamed to
163 qCountRead(), qCountSave(), qCountUpdate()
164 Release 6.0.5
165 FIX) qAddCookie() - Solves the problems in which qAddCookie() does not
166 operate when there is no existing cookie (when _cookie_first_entry is NULL).
167
168 Release 6.0.4
169 NEW) qAddCookie() - Forcibly adds the cookie value to the cookie linked
170 list.
171 NEW) qResetContentFlag() - Initializes the system for ContentType() to be
172 forcibly displayed in dublicate.
173 FIX) qURLencode() - Adjusts the system so that "@./-?&=#:_" will not be
174 encoded.
175 FIX) qPrintf(), qPuts() - Modifies the token character into "
176 `(){}[]<>"',rn" so that the character strings after '&' will not be
177 linked at the automatic link function.
178 FIX) qSetCookie(), qGetGMTime() - Solves the cookie settings-related
179 problems occurring from the fact that, in connection with qGetGMTime() at
180 Solaris machines, Time Zone is displayed not in GMT but in Local Time Zone
181 such as KST while time is normally displayed in GMT.
182 FIX) qReadFile(), qFileSize() - Supports Win32.
183 Release 6.0.3
184 NEW) qValueReplace() - Transposes the tokens or specific character strings
185 of query strings into given character strings.
186 NEW) qStrReplace() - Transposes the tokens or specific character strings of
187 strings into given character strings.
188 NEW) qReset() - Initializes qDecoder. (Deallocates memory and initializes
189 internal variables)
190 FIX) qAwkClose() - Modifies the system to have return values.
191 Release 6.0.2
192 NEW) Adds the static library creation project files for Microsoft Visual C++
193 use.
194 FIX) Converts those internally used functions (starting with '_') into
195 "static".
196 Release 6.0.1
197 NEW) Applies Autoconf.
198 Release 6.0
199 REP) qCgienv() - Replacement function qCGIenv().
200 FIX) qDecoder() - Adds the security code for overflow attacks when
201 multipart/form-data is interpreted.
202 FIX) qSaveStr() - Removes permission setup arguments for the compatibility
203 with WIN32.
204 FIX) Changes the name of structure Entry into Q_Entry.
205 FIX) Changes the name of structure Cgienv into Q_CGIenv.
206 FIX) Adjusts the installation path into /usr/local/lib, /usr/local/include
207 in case of "make install".
208 FIX) qDownload(), qDownloadMime() - Modifies the system for return values to
209 have the number of transmitted bytes.
210 FIX) qPrintf() - Modifies the system so that the length of combined
211 character strings can be supported up to 10K.
212 NEW) Supports the shared library (libqDecoder.so).
213 NEW) qCGIenv() - Extended edition of qCgienv() of old versions.
214 Release 5.0.8
215 FIX) qSetCookie() - Corrects the sequence of arguments according to the
216 standard specification.
217 FIX) qURLdecode() - Changes the function prototype from void to char* so
218 that the decoded string pointer can be returned.
219 FIX) qDownload() - Modifies the system so that the entire file size can be
220 identified when downloading at clients.
221 NEW) qDownloadMime() - Transmits files to clients according to MIME.
222 NEW) qFileSize() - Notifies the file size by the unit of byte.
223 Release 5.0.7
224 REP) qStrBig() - Replacement function qStrupr().
225 NEW) qArgMake(), qArgPrint(), qArgMatch(), qArgEmprint(), qArgFree() - A
226 group of functions that analyzes search queries, identifies the number of
227 query hits inside strings, and displays the results making the matching
228 parts in bold characters.
229 NEW) qValueDefault() - Same as qValue(). But hands over the basic string
230 value when there is no corresponding query name.
231 NEW) qValueNotEmpty() - Same as qValue(). But displays error messages in
232 case of NULL or blank character strings ("").
233 NEW) qStrincmp() - Plays the role of the strncmp() function plus the
234 stricmp() function. Compares the first n bytes of character strings without
235 distinguishing uppercase/lowercase letters.
236 Release 5.0.6
237 FIX) qitocomma() - Solves the problems in which negative numbers are
238 displayed as '-,123,456'.
239 FIX) qURLencode() - Modifies the system so that a space ' ' can be encoded
240 not into '+' but into '%20'.
241 FIX) qUpdateCounter() - Modifies the problem of returning the 'existing
242 value' into figures of 'existing value + update'.
243 FIX) qDownload() - Changes the function type from void to int so that it can
244 have return values when there is no file.
245 FIX) qError(), qErrorContact() - Corrects the problems in which
246 [Administrator: ...] is inserted before and after those messages set up as
247 qErrorContact() (for original messages to be displayed without the
248 insertion).
249 Release 5.0.5
250 REP) qStrStr() - Replacement function qStristr()
251 REP) qSed() - Replacement function qSedFile()
252 NEW) qStricmp() - Functionally the same as the strcmp() function. But does
253 not distinguish uppercase/lowercase letters.
254 NEW) qSedStr() - Performs source input by strings.
255 Release 5.0.4
256 REP) qFileCat() - Replacement function qCatFile().
257 FIX) qUpdateCounter() - Modifies interfaces (so that the update
258 increase/decrease can be numerically controlled).
259 FIX) qDecoder() - Processes the arguments handed over to the environment
260 variable of QUERY-STRING in the multipart/form-data method.
261 NEW) qReadFile() - Reads files and stores them in memory.
262 NEW) qSaveStr() - Stores the contents of strings in files.
263 Release 5.0.3
264 FIX) qPrintf(), qPuts() - Adds '&' to tokens again.
265 NEW) qfGetLine() - Returns allocated memory pointers by reading a line of
266 files regardless of the length.
267 Release 5.0.2
268 FIX) qSed() - Makes a modification so that NULL pointers can be inserted as
269 the arg argumentation. Solves the problems in which the segmentation fault
270 errors occur in case the first argument of arg is NULL (when the SSI
271 function is to be used without conversion).
272 FIX) qPrintf(), qPuts() - Removes the '&' character from tokens.
273 Release 5.0.1
274 FIX) qValue(), qiValue(), qfValue(), qfiValue(), qsValue(), qsiValue(),
275 qcValue(), qciValue() - Uses vsprintf() instead of the vsnprintf() function
276 due to the compatibility problem.
277 NEW) qSed() - Displays specified symbols in files after changing them into
278 defined character strings.
279 Release 5.0
280 REP) qSendFile() - Replacement function qFileCat().
281 FIX) qValue(), qiValue(), qfValue(), qfiValue(), qsValue(), qsiValue(),
282 qcValue(), qciValue() - Performs patch works so that arguments can be
283 transmitted by formats.
284 FIX) qPuts() - Removes '&' from the token list.
285 NEW) qValueFirst() - Acquires the variable value for the first argument
286 among the arguments transmitted in an identical variable name.
287 NEW) qValueNext() - Acquires the next variable value.
288 NEW) qRedirect() - The page-jump function using the location: header of
289 HTTP.
290 NEW) qFileCat() - Displays all the corresponding files in stdout.
291 Release 4.3.1
292 FIX) Modifies install/deinstall method of Makefile.
293 Release 4.3
294 FIX) qDecoder() - Performs patch works so that the queries handed over to
295 SSI can be received.
296 NEW) qAwkOpen()
297 NEW) qAwkNext()
298 NEW) qAwkClose()
299 NEW) *qGetFirstEntry()
300 NEW) *qitocomma()
301 Release 4.2
302 FIX) qDecoder() - Patches related to Macintosh IE.
303 FIX) qGgienv() - Patches related to Apache 1.3.
304 FIX) qGetGMTime() - Performance improvement.
305 NEW) *qCGIname()
306 NEW) qDownload()
307 NEW) *qGetEnv()
308 NEW) *qStrBig()
309 NEW) *qStrStr()
310 Release 4.0.1
311 FIX) qfDecoder() - emoves the length restriction of one line in files.
312 FIX) qDecoder() - Modifies the internal algorithm of the multipart/form-data
313 format.
314 Release 4.0
315 FIX) qDecoder() - Supports file uploading.
316 FIX) qfDecoder() - Processes those lines starting with # as explanatory
317 notes.
318 FIX) qURLencode() - Makes a modification for '@' and '.' not to be encoded.
319 FIX) _decode_query() - Changes the function name into qURLdecode().
320 FIX) qCheckEmail() - Allows '.' in ID.
321 FIX) qPrintf(), qPuts() - Modes 10 through 16 are newly supported.
322 Release 3.5
323 FIX) _get_query() - Adds the confirmation that the environment variable is
324 not set up.
325 FIX) qCgienv() - Optimizes using environment variables that are used in
326 Netscape and Explore in common.
327 FIX) qSetCookie() - Changes the expiration-date designation from char* to
328 the int type.
329 FIX) qError() - Adds logging functions.
330 FIX) qURLencode() - Makes a modification for numbers and English alphabets
331 not to be encoded.
332 NEW) qErrLog()
333 Release 3.4.2
334 FIX) qDecoder(), qfDecoder(), qcDecoder() - Modifies Linked List algorithm.
335 FIX) qPuts() - Solves the problems in which warnings are given when
336 compilation is performed at certain systems.
337 Release 3.4.1
338 FIX) qPrintf(), qPuts() - Removes the space displayed at the end of
339 character strings.
340 Release 3.4
341 FIX) qCheckEmail() - Makes a modification for emails including '-' or '_' to
342 be possible.
343 FIX) qPrintf(), qPuts() - Corrects the problems in which < and > of
344 character-string contents are displayed as '<' and '>' (displays them as <
345 and >). Only those character strings such as 'mailto:guest@hongik.ac.kr'
346 were automatically linked, but the automatic link of such types as
347 'guest@hongik.ac.kr' can be performed.
348 NEW) qSetCookie()
349 NEW) *qURLencode()
350 NEW) qGetGMTime()
351 Release 3.3.1
352 FIX) qDecoder() - Corrects the problem in which the '&' character of the
353 query value is recognized as a separator.
354 Release 3.3
355 NEW) qcDecoder()
356 NEW) *qcValue()
357 NEW) qcPrint()
358 NEW) qcFree()
359 Release 3.2.2
360 NEW) qUpdateCounter()
361 NEW) qPuts()
362 NEW) qCheckURL()
363 Release 3.2
364 NEW) qReadCounter()
365 NEW) qSaveCounter()
366 NEW) qStr09AZaz()
367 Release 3.1
368 NEW) qPrintf()
369 NEW) qCheckEmail()
370 NEW) qError()
371 Release 3.0
372 NEW) *qfDecoder()
373 NEW) *qfValue()
374 NEW) qfPrint()
375 NEW) qError()
376 NEW) *qRemoveSpace()
377 Release 2.2
378 NEW) qDecoder()
379 NEW) *qValue()
380 NEW) qPrint()
381 NEW) qFree()
382 NEW) qContentType()
383 NEW) qCgienv()
384 NEW) *qGetTime()
385 NEW) qCheckFile()
386 NEW) qSendFile()
387
388 -------------------------------------------------------------------------------
389 [The qDecoder Project]