Fix compilation with i686-w64-mingw32-gcc.
Based upon https://github.com/vim-jp/ctags
Merge pull request #1 from fishman/master

Get latest fishman changes
Support multi-line Perl package declarations

Some authors split package declarations across two lines like this:

  package
      Local::Null::Logger; # hide from PAUSE

This PAUSE-blinding trick should not hide it from ctags, however.
Merge pull request #99 from dtikhonov/master

Support multi-line Perl package declarations
vhdl: Manage objects using TrashBox
SQL: generalize support for SQL Server square brackets quoting

This fixes test case Units/bug1944150.sql.
SQL: report scope as such, not as part of the tag name
Merge pull request #100 from b4n/sql/geany-changes

Import Geany changes to the SQL parser
Merge pull request #97 from ffes/fix-mingw-w64

Fix compilation with i686-w64-mingw32-gcc
accpet only posix-regex and use bundled gnu_regex if regcomp isp not available or it broken

This patch does two things.

1. Remove --with-posix-regex option

   Now ctags command line using --regex-<LANG> can be part of a
   optlib, we should use single regex syntax. So I removed the code
   utilizing other than posix-regex(regcomp).

2. Utilize bundled gnu_regex library if regcomp is not available on
   the target platform or it is available but is borken.

   Assumed target of this modification is mingw32 and mingw64.
   I guess regcomp is not available on these platforms.

TODO:

	* update f-windows.rst, and
	* dont' print --<LANG>-regex option if "regex" feature is not available

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
move -I${srcdir}/gnu_regex to configure.ac from Makefile.in

-I${srcdir}/gnu_regex should be added to CPPFLAGS in configure.ac.
So <regex.h> can be included in all *.c.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
prepare parser running context in upper layer than each parser

In older parse.c and parser interface, the parser itself prepares
setjmp and trashBox. However, many parsers do the same.

This patch prepares experimental new interface; parse.c prepares both
setjmp and trashBox before calling actual parser. Both of the are
passed to the parser as arguments.

This new interface is applied to vhdl.c for evaluating its usefulness.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
use rescanParserWithExceptionAndTrash interface in sql.c

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Added Perl to list of languages with extra-qualified tags
check multiple parser methods are not defined in a parser

This fixes a bug introduced in be4a2117494ce73750cec3fd3c7cb4a60e722bcf.

The old commit(be4a21) checked only the case that allparser, parser2 and parser_with_gc
were not set but didn't check more than one were set. This patch checks this case, too.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
refactor: rename TrashBoxDestroy to TrashBoxDelete

made the name align to convention used in other APIs.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
add trashBoxFree

trashBoxFree does trashBoxTakeBack for an item given
as an argument and free the item with its destrctor
specified when doing trashPut the item.

This API is suggested by @b4n in #90.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
make trashBoxPut return item given as an argument

trashBoxPut returned nothing.
With this fix you can write allocating an object and putting
it to trash in single statement like:

   item = trashBoxPut(trash, object_new(), object_free);

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
break the loop if a parser returns normally

In commit be4a2117494ce73750cec3fd3c7cb4a60e722bcf, setjmp
invocation is lifted up to parser common code. In the commit
I introduced two bugs. This patch fixes the first of two.

Bug: though a parser doesn't invoke longjmp and returns normally, the
parser is called repeatedly in a loop.

This patch adds "break" keyword after returning from a parser.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
run parser main function of vhdl and sql in infinite loop

In commit be4a2117494ce73750cec3fd3c7cb4a60e722bcf I introduced two
bugs. This patch fixes the second of two.

In the commit, I lifted up the loop arond setjmp in each parser to
parser common part. To handling setjmp/longjmp, this loop is needed in
the parser common part. However, the loop is still needed in each
parser, too. I missed this necessity.

In this commit, infinite loops are put to vhdl and sql parsers.
Both parser uses longjmp to break the loop.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>