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