]> mj.ucw.cz Git - libucw.git/log
libucw.git
13 years agoMerge branch 'master' of ssh://git.ucw.cz/projects/libucw/GIT/libucw
Martin Mares [Tue, 29 Mar 2011 10:53:37 +0000 (12:53 +0200)]
Merge branch 'master' of ssh://git.ucw.cz/projects/libucw/GIT/libucw

13 years agolibucw: OFFSETOF returns an unsigned int again
Pavel Charvat [Wed, 10 Sep 2008 09:56:19 +0000 (11:56 +0200)]
libucw: OFFSETOF returns an unsigned int again

13 years agoucwlib: -- use offsetof() from C99
Pavel Charvat [Wed, 10 Sep 2008 09:27:32 +0000 (11:27 +0200)]
ucwlib: -- use offsetof() from C99

13 years agoUse size_t in xmalloc_zero.
Pavel Charvat [Wed, 3 Sep 2008 13:10:38 +0000 (15:10 +0200)]
Use size_t in xmalloc_zero.

13 years agoUse size_t in xmalloc() and xrealloc().
Martin Mares [Tue, 2 Sep 2008 20:09:44 +0000 (22:09 +0200)]
Use size_t in xmalloc() and xrealloc().

13 years agoFixed a typo in guard macro name.
Martin Mares [Sun, 31 Aug 2008 16:59:57 +0000 (18:59 +0200)]
Fixed a typo in guard macro name.

13 years agoredblack: Improved customization of memory allocator
Pavel Charvat [Wed, 9 Mar 2011 21:29:46 +0000 (22:29 +0100)]
redblack: Improved customization of memory allocator

13 years agoMain: Add main_step()
Martin Mares [Tue, 1 Mar 2011 13:07:51 +0000 (14:07 +0100)]
Main: Add main_step()

13 years agoMain: Allow main_loop() to be re-entered after shutdown
Martin Mares [Tue, 1 Mar 2011 12:59:26 +0000 (13:59 +0100)]
Main: Allow main_loop() to be re-entered after shutdown

13 years agoMerge branch 'dev-mainloop'
Martin Mares [Sun, 27 Feb 2011 12:13:18 +0000 (13:13 +0100)]
Merge branch 'dev-mainloop'

13 years agoMain: One more relnote
Martin Mares [Sun, 27 Feb 2011 12:12:42 +0000 (13:12 +0100)]
Main: One more relnote

13 years agoPreliminary release notes for LibUCW 4.1
Martin Mares [Sun, 27 Feb 2011 12:11:47 +0000 (13:11 +0100)]
Preliminary release notes for LibUCW 4.1

13 years agoMain: Updated documentation
Martin Mares [Sun, 27 Feb 2011 11:30:18 +0000 (12:30 +0100)]
Main: Updated documentation

13 years agoMain: file_recalc_list need not be empty upon main_destroy()
Martin Mares [Sun, 27 Feb 2011 10:57:13 +0000 (11:57 +0100)]
Main: file_recalc_list need not be empty upon main_destroy()

13 years agoMain: Separate debug functions for all types of objects
Martin Mares [Sun, 27 Feb 2011 10:54:35 +0000 (11:54 +0100)]
Main: Separate debug functions for all types of objects

13 years agoMain: Proofreading docs
Martin Mares [Sat, 26 Feb 2011 23:09:13 +0000 (00:09 +0100)]
Main: Proofreading docs

13 years agoMain: Let main-block use HOOK_RETRY / HOOK_IDLE as suggested by the docs
Martin Mares [Sat, 26 Feb 2011 22:51:53 +0000 (23:51 +0100)]
Main: Let main-block use HOOK_RETRY / HOOK_IDLE as suggested by the docs

13 years agoMain: Add block_io_set_timeout() as promised in the docs
Martin Mares [Sat, 26 Feb 2011 22:50:16 +0000 (23:50 +0100)]
Main: Add block_io_set_timeout() as promised in the docs

13 years agoMain: Renamed MFERR_xxx to BIO_ERR_xxx
Martin Mares [Sat, 26 Feb 2011 22:45:18 +0000 (23:45 +0100)]
Main: Renamed MFERR_xxx to BIO_ERR_xxx

13 years agoMain: Update documentation
Martin Mares [Sat, 26 Feb 2011 22:44:06 +0000 (23:44 +0100)]
Main: Update documentation

Needs proof-reading.

13 years agoMain: Added main_teardown() and main_destroy()
Martin Mares [Sat, 26 Feb 2011 11:11:16 +0000 (12:11 +0100)]
Main: Added main_teardown() and main_destroy()

There are now two possibilities how to get rid of a main loop
context. Either you call main_delete(), which is gentle and fails
whenever there are any active files/hooks/etc. Or you call main_destroy(),
which forcibly removes all such objects; it also closes all files.

main_teardown() just calls main_destroy() on the current context,
just as main_cleanup() calls main_delete().

Also, file_close_all() is no longer available -- the only known use
cases are after fork(), but closing files is no longer sufficient
there. All calls to file_close_all() should be therefore replaced
by main_teardown().

13 years agoMain: Internal operations on non-current contexts
Martin Mares [Sat, 26 Feb 2011 10:26:19 +0000 (11:26 +0100)]
Main: Internal operations on non-current contexts

Introduced an (internal) *_ctx() variant of several functions, working
on an explicit context which need not be current.

Changed main_delete(), so that it does not make the context temporarily
current.

13 years agoMain: Tests now include main_cleanup()
Martin Mares [Fri, 25 Feb 2011 23:32:21 +0000 (00:32 +0100)]
Main: Tests now include main_cleanup()

13 years agoMain: Plugged memory leaks of internal structures
Martin Mares [Fri, 25 Feb 2011 23:26:22 +0000 (00:26 +0100)]
Main: Plugged memory leaks of internal structures

13 years agoMain: main_delete() must make the soon-to-be-deleted context current
Martin Mares [Fri, 25 Feb 2011 23:23:25 +0000 (00:23 +0100)]
Main: main_delete() must make the soon-to-be-deleted context current

Otherwise, it might call signal_del() and file_del() on another
(or even undefined) context.

13 years agoMain: Moved testing code to a separate file
Martin Mares [Fri, 25 Feb 2011 18:33:59 +0000 (19:33 +0100)]
Main: Moved testing code to a separate file

13 years agoMain: Fixed a bug in looping over files that need not exist any longer
Martin Mares [Fri, 25 Feb 2011 18:14:15 +0000 (19:14 +0100)]
Main: Fixed a bug in looping over files that need not exist any longer

13 years agoMain: Update copyrights and remove debug dumps
Martin Mares [Fri, 25 Feb 2011 18:07:43 +0000 (19:07 +0100)]
Main: Update copyrights and remove debug dumps

14 years agolibcharset: Added missing picsuffix to libcharset.pc.
Pavel Charvat [Sun, 7 Nov 2010 23:04:06 +0000 (00:04 +0100)]
libcharset: Added missing picsuffix to libcharset.pc.

14 years agohashtable: Bugfix.
Pavel Charvat [Sun, 7 Nov 2010 18:41:03 +0000 (19:41 +0100)]
hashtable: Bugfix.

14 years agoSimplified stdupping of NULL strings.
Pavel Charvat [Sun, 7 Nov 2010 14:08:01 +0000 (15:08 +0100)]
Simplified stdupping of NULL strings.

14 years agohashtable: Updated docs.
Pavel Charvat [Sun, 7 Nov 2010 13:39:46 +0000 (14:39 +0100)]
hashtable: Updated docs.

14 years agohashtable: Corrections.
Pavel Charvat [Sun, 7 Nov 2010 12:10:58 +0000 (13:10 +0100)]
hashtable: Corrections.

14 years agohashtable: More options about memory management.
Pavel Charvat [Sun, 7 Nov 2010 12:00:50 +0000 (13:00 +0100)]
hashtable: More options about memory management.

14 years agohashtable: Documented HASH_TABLE_VARS.
Pavel Charvat [Sun, 7 Nov 2010 10:45:19 +0000 (11:45 +0100)]
hashtable: Documented HASH_TABLE_VARS.

14 years agohashtable: Implemented new HASH_TABLE_VARS parameter.
Pavel Charvat [Sun, 7 Nov 2010 10:42:25 +0000 (11:42 +0100)]
hashtable: Implemented new HASH_TABLE_VARS parameter.

14 years agohashtable: Only fixed whitespace.
Pavel Charvat [Sun, 7 Nov 2010 10:36:36 +0000 (11:36 +0100)]
hashtable: Only fixed whitespace.

14 years agoThreads: The master mutex was not initialized in some cases
Martin Mares [Mon, 1 Nov 2010 19:18:27 +0000 (20:18 +0100)]
Threads: The master mutex was not initialized in some cases

14 years agoMain: No more calls to GARY_SIZE on an empty timer array
Martin Mares [Fri, 8 Oct 2010 13:01:12 +0000 (15:01 +0200)]
Main: No more calls to GARY_SIZE on an empty timer array

14 years agoUCW::Configure::C: de-reference CPU_ARCH in COPT
Martin Mares [Thu, 7 Oct 2010 14:58:43 +0000 (16:58 +0200)]
UCW::Configure::C: de-reference CPU_ARCH in COPT

Originally, when CONFIG_EXACT_CPU was enabled, COPT contained `-march=$(CPU_ARCH)',
which worked when it was used in a Makefile, but not when doing a test
compile in the configure script.

I changed it to dereference the variable immediately.

14 years agoAdded a clean way for building of static PIC libraries
Martin Mares [Fri, 1 Oct 2010 18:57:25 +0000 (20:57 +0200)]
Added a clean way for building of static PIC libraries

Defining CONFIG_STATIC_PIC adds a dependency on *-pic.a
to every pkg-config file. In addition to that, the .pc
files now contain a "picsuffix" variable which can be
overridden by the user to enable the PIC mode.

14 years agoUCW::CGI: Fixed a regression in processing of multiple controls with the same name
Martin Mares [Tue, 31 Aug 2010 14:39:18 +0000 (16:39 +0200)]
UCW::CGI: Fixed a regression in processing of multiple controls with the same name

14 years agoAdded a script for checking different configurations of LibUCW
Martin Mares [Fri, 30 Jul 2010 18:53:53 +0000 (20:53 +0200)]
Added a script for checking different configurations of LibUCW

Adapted from Sherlock's check-customs.

14 years agoUCW: Document CONFIG_UCW_EPOLL
Martin Mares [Fri, 30 Jul 2010 18:52:48 +0000 (20:52 +0200)]
UCW: Document CONFIG_UCW_EPOLL

14 years agoMain: Optimize calls to epoll_ctl()
Martin Mares [Fri, 30 Jul 2010 18:42:57 +0000 (20:42 +0200)]
Main: Optimize calls to epoll_ctl()

It often happens that a file callback is removed and then reinstated
again before the next main loop iteration (e.g., on a boundary between
two blocks if block_io is used). This caused lots of unnecessary
calls to epoll_ctl().

We now put all files on which file_chg() was called to a separate list
and just before we call epoll_wait(), we process this list and check
which files have changed their event mask since the last iteration.

14 years agoMain: Unified support for poll and epoll
Martin Mares [Fri, 30 Jul 2010 18:24:56 +0000 (20:24 +0200)]
Main: Unified support for poll and epoll

When the epoll mechanism is available in the system library, use it.

Rewritten processing of file events: when (e)poll completes, all pending
events are scanned and the corresponding files are relinked to another
list. Then this list is processed entry by entry and callbacks are
performed. When file_add() or file_del() is requested from the callback
function, the file is just relinked to the main file_list and the worst
thing which can happen is that an event will be postponed to the next
iteration of the main loop.

To achieve this, I had to decouple the order of entries in the poll_table
from the order of files in the file_list by introducing an auxiliary
array of pointers mapping poll_table entries to file structs.

All tricks with stopping the event scanning loop when poll_table_obsolete
becomes set are gone.

14 years agoMain: Poll table turned into a growing array
Martin Mares [Fri, 30 Jul 2010 17:06:42 +0000 (19:06 +0200)]
Main: Poll table turned into a growing array

14 years agoMain: Use a placeholder item to make the signal handler list safe
Martin Mares [Fri, 30 Jul 2010 11:17:15 +0000 (13:17 +0200)]
Main: Use a placeholder item to make the signal handler list safe

14 years agoMain: Single out processing of timers and hooks
Martin Mares [Fri, 30 Jul 2010 11:04:42 +0000 (13:04 +0200)]
Main: Single out processing of timers and hooks

14 years agoMain: Use clist_is_linked() and friends
Martin Mares [Fri, 30 Jul 2010 10:49:53 +0000 (12:49 +0200)]
Main: Use clist_is_linked() and friends

14 years agoClists have gained ability to recognize unlinked nodes
Martin Mares [Fri, 30 Jul 2010 10:43:05 +0000 (12:43 +0200)]
Clists have gained ability to recognize unlinked nodes

14 years agoMain: Split off block I/O
Martin Mares [Wed, 28 Jul 2010 22:30:10 +0000 (00:30 +0200)]
Main: Split off block I/O

Block-based I/O is no longer hard-wired in the mainloop itself,
it became a separate module built on the top of main_file. While the
timer embedded in main_block_io is somewhat illogical, I have decided
to keep it to make porting of old code easier.

I plan to add another I/O layer in the future, which will handle
more complex buffering capable of reading lines and other variable-size
data structures.

14 years agoMain: Implemented safe delivery of signals
Martin Mares [Wed, 28 Jul 2010 21:56:29 +0000 (23:56 +0200)]
Main: Implemented safe delivery of signals

The current implementation passes the signals through a pipe,
I plan to add signalfd() later.

SIGCHLD handling became the first user of the new signal mechanism.
However, situations in which multiple threads spawn processes using
separate main loops are not supported (we must have a single SIGCHLD
handler for the whole process).

14 years agoMain: Test re-adding of timers
Martin Mares [Wed, 28 Jul 2010 20:31:09 +0000 (22:31 +0200)]
Main: Test re-adding of timers

14 years agoMain: Added timer_add_rel()
Martin Mares [Wed, 28 Jul 2010 20:28:54 +0000 (22:28 +0200)]
Main: Added timer_add_rel()

14 years agoMain: Remember to free the poll table
Martin Mares [Wed, 28 Jul 2010 20:26:38 +0000 (22:26 +0200)]
Main: Remember to free the poll table

14 years agoMain: The main loop now keeps per-thread context
Martin Mares [Wed, 28 Jul 2010 20:19:44 +0000 (22:19 +0200)]
Main: The main loop now keeps per-thread context

Receiving of SIGCHLD is not thread-safe yet, but it will be replaced
by a more general mechanism for receiving signals soon anyway.

14 years agoAdded a test configuration for debugging
Martin Mares [Wed, 28 Jul 2010 20:17:55 +0000 (22:17 +0200)]
Added a test configuration for debugging

14 years agoUCW::CGI: No deescaping should be applied to multipart/www-data
Martin Mares [Wed, 18 Aug 2010 16:09:10 +0000 (18:09 +0200)]
UCW::CGI: No deescaping should be applied to multipart/www-data

14 years agoUCW::CGI: Bug fixes
Martin Mares [Mon, 19 Jul 2010 18:48:27 +0000 (20:48 +0200)]
UCW::CGI: Bug fixes

14 years agoUCW::CGI: html_escape() should escape single quotes, too
Martin Mares [Mon, 19 Jul 2010 18:48:11 +0000 (20:48 +0200)]
UCW::CGI: html_escape() should escape single quotes, too

14 years agoUCW::CGI: Support multiple argument tables
Martin Mares [Mon, 19 Jul 2010 15:27:12 +0000 (17:27 +0200)]
UCW::CGI: Support multiple argument tables

(1) parse_args() can be called multiple times with different
    argument tables, so that different parts of a single script
    can fetch their own arguments without cluttering the main
    argument table. The only catch is that uploaded files must
    be defined in the main argument table (i.e., the first one used).

(2) self_ref() and self_form() accepts optional argument tables
    which are merged to the main one.

14 years agoGrowing arrays: GARY_RESIZE and GARY_INIT_OR_RESIZE
Martin Mares [Fri, 30 Jul 2010 17:05:13 +0000 (19:05 +0200)]
Growing arrays: GARY_RESIZE and GARY_INIT_OR_RESIZE

GARY_SET_SIZE renamed to GARY_RESIZE, added GARY_INIT_OR_RESIZE.

14 years agoGrowing arrays: GARY_FREE(NULL) does nothing
Martin Mares [Fri, 30 Jul 2010 17:00:49 +0000 (19:00 +0200)]
Growing arrays: GARY_FREE(NULL) does nothing

14 years ago.gitignore: ignore Vim swap files, too
Martin Mares [Thu, 22 Jul 2010 14:57:11 +0000 (16:57 +0200)]
.gitignore: ignore Vim swap files, too

14 years agoImplemented a new growing array module
Martin Mares [Thu, 22 Jul 2010 14:56:12 +0000 (16:56 +0200)]
Implemented a new growing array module

Instead of gbuf/bbuf, it supports arbitrary types without having
to instantiate the data structure for every type.

Will add some documentation later.

14 years agoMinor fixes to strtonum.
Daniel Fiala [Mon, 2 Aug 2010 17:54:13 +0000 (19:54 +0200)]
Minor fixes to strtonum.
  * Removed nested function from strtonum-gen.h .
  * Error messages are not saved in separate static variables.
  * Octal numbers can be detected by prefix '0[0-7]...' (this feature is enabled by STN_OCT0).
  * One-command blocks are not enclosed by { ... } .
  * STN_ZCHAR renamed to STN_WHOLE.

14 years agoConfigure: Improved TestCompile, so that the temporary files can be kept
Martin Mares [Thu, 22 Jul 2010 13:39:44 +0000 (15:39 +0200)]
Configure: Improved TestCompile, so that the temporary files can be kept

14 years agoUCW: Adapted to use ucw_thread_id()
Martin Mares [Thu, 22 Jul 2010 13:34:46 +0000 (15:34 +0200)]
UCW: Adapted to use ucw_thread_id()

14 years agoUse thread-local storage of GCC 4.x
Martin Mares [Thu, 22 Jul 2010 13:32:49 +0000 (15:32 +0200)]
Use thread-local storage of GCC 4.x

ucw/threads.c can now work in three different modes:

   o  non-threaded
   o  threaded with context in pthread per-thread storage
   o  threaded with context stored as __thread

I had to make a backward-incompatible change: ucwlib_context->thread_id
is no longer accessible directly (because I do not know of any way how
to initialize it in the __thread mode) and a wrapper function should
be used.

14 years agoConfigure: Implemented running of test programs
Martin Mares [Thu, 22 Jul 2010 13:31:12 +0000 (15:31 +0200)]
Configure: Implemented running of test programs

14 years agoConfigure: Better reporting of test results
Martin Mares [Thu, 22 Jul 2010 13:30:07 +0000 (15:30 +0200)]
Configure: Better reporting of test results

Test() now reports preset values differently from auto-detected ones.

Added TestBool() which translates 1->yes and 0->no in log messages.

14 years agostrtonum: GCC roared that a prototype is missing, hmm...
Martin Mares [Tue, 13 Jul 2010 15:37:20 +0000 (17:37 +0200)]
strtonum: GCC roared that a prototype is missing, hmm...

14 years agoLogger: Shut up re-initialization warning of GCC 4.3
Martin Mares [Tue, 13 Jul 2010 15:37:10 +0000 (17:37 +0200)]
Logger: Shut up re-initialization warning of GCC 4.3

14 years agoBuild: libshxml compiles
Martin Mares [Tue, 13 Jul 2010 12:48:27 +0000 (14:48 +0200)]
Build: libshxml compiles

14 years agoRemoved doc/conf*, they have been superseded by ucw/doc/conf*.
Martin Mares [Tue, 13 Jul 2010 12:43:40 +0000 (14:43 +0200)]
Removed doc/conf*, they have been superseded by ucw/doc/conf*.

14 years agoA partial build system
Martin Mares [Tue, 13 Jul 2010 12:43:06 +0000 (14:43 +0200)]
A partial build system

Compiles everything except for libshxml.

14 years agoGet rid of SHERLOCK_VERSION and use UCW_VERSION everywhere
Martin Mares [Tue, 13 Jul 2010 12:35:28 +0000 (14:35 +0200)]
Get rid of SHERLOCK_VERSION and use UCW_VERSION everywhere

14 years agoCleanup: Moved config files to etc/
Martin Mares [Tue, 13 Jul 2010 12:34:56 +0000 (14:34 +0200)]
Cleanup: Moved config files to etc/

14 years agoAdded .gitignore
Martin Mares [Tue, 13 Jul 2010 12:02:35 +0000 (14:02 +0200)]
Added .gitignore

14 years agoCharset: imported cs2cs from Sherlock, does not compile yet
Martin Mares [Tue, 13 Jul 2010 12:02:05 +0000 (14:02 +0200)]
Charset: imported cs2cs from Sherlock, does not compile yet

14 years agoImported doc/config{,ure} from Sherlock
Martin Mares [Tue, 13 Jul 2010 12:01:13 +0000 (14:01 +0200)]
Imported doc/config{,ure} from Sherlock

14 years agoCleanup: Moved libshxml to shxml/
Martin Mares [Tue, 13 Jul 2010 11:45:30 +0000 (13:45 +0200)]
Cleanup: Moved libshxml to shxml/

14 years agoCleanup: Moved sorter debugging tools to ucw/sorter/debug/
Martin Mares [Tue, 13 Jul 2010 11:44:35 +0000 (13:44 +0200)]
Cleanup: Moved sorter debugging tools to ucw/sorter/debug/

14 years agoCleanup: Fixed comment
Martin Mares [Tue, 13 Jul 2010 11:43:32 +0000 (13:43 +0200)]
Cleanup: Fixed comment

14 years agoCleanup: Fixed comments in config files
Martin Mares [Tue, 13 Jul 2010 11:42:53 +0000 (13:42 +0200)]
Cleanup: Fixed comments in config files

14 years agoCleanup: Removed build/installer
Martin Mares [Tue, 13 Jul 2010 11:39:41 +0000 (13:39 +0200)]
Cleanup: Removed build/installer

It was specific for Sherlock.

14 years agoUCW: Cosmetic cleanups of strtonum holmes-import
Martin Mares [Fri, 18 Jun 2010 20:48:14 +0000 (22:48 +0200)]
UCW: Cosmetic cleanups of strtonum

14 years agolibucw: Fixed infinite recursion in str_to_int().
Pavel Charvat [Fri, 18 Jun 2010 06:17:10 +0000 (08:17 +0200)]
libucw: Fixed infinite recursion in str_to_int().

14 years agomainloop: Small fixes in hooks.
Pavel Charvat [Wed, 16 Jun 2010 20:18:21 +0000 (22:18 +0200)]
mainloop: Small fixes in hooks.

14 years agomainloop: Optimized heaps in timers.
Pavel Charvat [Wed, 16 Jun 2010 19:16:01 +0000 (21:16 +0200)]
mainloop: Optimized heaps in timers.

14 years agomainloop: Rewritten timers from clist to heap.
Pavel Charvat [Wed, 16 Jun 2010 19:02:05 +0000 (21:02 +0200)]
mainloop: Rewritten timers from clist to heap.

14 years agomainloop: Improved deletion and insertion of hooks.
Pavel Charvat [Wed, 16 Jun 2010 18:10:25 +0000 (20:10 +0200)]
mainloop: Improved deletion and insertion of hooks.

It is now guaranted that:
* You can safely remove hook anytime, even from other hook.
* Newly inserted hook will be called at least once before next sleep.

14 years agomainloop: Fixed possible infinite timeouts.
Pavel Charvat [Wed, 16 Jun 2010 18:03:35 +0000 (20:03 +0200)]
mainloop: Fixed possible infinite timeouts.

14 years agoFixed a typo in the list of includes. Has anybody compiled the full tree recently? ;)
Martin Mares [Wed, 2 Jun 2010 08:23:37 +0000 (10:23 +0200)]
Fixed a typo in the list of includes. Has anybody compiled the full tree recently? ;)

14 years agoTypo.
Daniel Fiala [Fri, 14 May 2010 15:29:20 +0000 (17:29 +0200)]
Typo.

14 years agostrtonum: Fixed minor errors.
Daniel Fiala [Fri, 14 May 2010 15:11:23 +0000 (17:11 +0200)]
strtonum: Fixed minor errors.
  * Removed declarations of undefined conversion functions.
  * Added inline conversion functions for signed integers.
  * Moved branche for checking whether number is terminated by 0 character.

14 years agoAdded functions for conversions from string to uns or uintmax_t .
Daniel Fiala [Tue, 11 May 2010 02:38:49 +0000 (04:38 +0200)]
Added functions for conversions from string to uns or uintmax_t .

14 years agolibucw: Implemented Loging.Stream.FileDesc.
Pavel Charvat [Thu, 18 Feb 2010 15:12:15 +0000 (16:12 +0100)]
libucw: Implemented Loging.Stream.FileDesc.

14 years agoUCW::CGI -- fixed a bug in parsing of boundaries
Martin Mares [Mon, 23 Nov 2009 19:40:49 +0000 (20:40 +0100)]
UCW::CGI -- fixed a bug in parsing of boundaries

Interpolating user-supplied strings inside regular expressions in unsafe, even
if /\Q...\E/ were used.

In this case, it fails when Webkit-based browsers send boundary strings
containing "+" characters.