acceptance/testall: support for inotifywait and inotifywatch
acceptance/testall: ensure $BASE_WORKDIR exists before executing inotify
Initialisation fix: cope with unrecognised binary operator.

If EvalClassExpression() got a Constraint whose ->lval wasn't one of
the known operations, it would have fallen through to the and/or/xor
and used an uninitialized value for logic, with potentially random
results.  If we were *lucky* it'd use an invalid value for it and
(after wasting a lot of time running round a loop computing values it
would subsequently not use) return false, like it should; but only if
we were lucky.
Break up EvalClassExpression() and fix some infelicities.

It was getting a bit long; and there were some minor glitches.
Also moved ValidClassName from bottom to top of the file.
Pass correct buffer size to snprintf().
Skip needless casts from void*.
Make variables more local.

The check for "anything after this wants a list" was after the
handling of select_class - which wants a list - so swapped their
order.  Broke out class selection, both deterministic and random,
into functions of their own - and made each a bit more robust.

The warning fix in the last commit could be better fixed by moving the
bool-combination code into a separate function; where it could be
simplified a bit, too.  Downside: the previously local enum is now at
file scope.
Improved Log()ging and fixed a leak in evalfunction's JSON wrappers.

Successful parse yielding a non-container was conflated with failed
parsing; separate the two.  In the process, fix the leak of the json
object when it's not a container; and report *what* failed when we
didn't even get that.  Use JsonParseFile() in the one place that we're
just duplicating it's workings.
Eliminate pointless intermediary in JsonParseFile()

We're going to write to the pointer we were passed in any case, so we
may as well pass that into the parser for it to write to, instead of
having our own local variable to passdown and then copy to the pointer
we received.
redmine6549: Tolerate unrecognised escape sequences.

We have no way to represent \u{hex digit} escapes for Unicode, which
are perfectly valid JSON; so we need to tolerate these in some form
rather than choking on them.  Given that the only sane way to do so is
to preserve them verbatim, we may as well do the same for any other
unrecognised escapes.  This eliminates the need for an error code to
represent unrecognised escape.

Log() a warning when handling an escape verbatim, though; which, in
turn, requires a #include <logging.h>
Add acceptance test for unicode escapes in JSON.
Add missing copyright blurbs
Clarify that files by default are GPLv3.
Fix wording in info message.

edit.maxfilesize is an internal detail that has no meaning to
the user, and it makes for broken grammar.
Merge pull request #2000 from dottedmag/master

Add missing copyright blurbs
Respect max_file_size set to 0 to mean "unlimited"

As documented, an explicitly set value of 0 should mean "any size".

Also, consistently initialize the value to 100K, as documented.

See Redmine 6588
Merge pull request #2001 from vohi/redmine/6588

Redmine/6588
Test case for Redmine 6589.

Trying to delete a region where a specific select_end doesn't match
should be noop.

This is different from insert_lines, which appends the line at the
end if there is no match for select_end (see existing test case
10_files/09_insert_lines/302.cf). While it would be best to make
this behavior consistent, I'm opting for not rocking the boat and
keep existing behavior of insert_lines in place.
Abort delete_lines promise if select_end doesn't match

If the policy specifies a select_end, then it expects
a 100% match of a region before deleting any lines. If
the region is only partially matched, abort.

To match a region until the end of the file, the policy
can omit select_end, as documented.

Fixes Redmine 6589
Refactoring and cleanup.

Since all callers of SelectRegion handle a false return value
by calling cfPS with INTERRUPTED and setting the promise result
accordingly, we can omit the duplication inside of SelectRegion.

Instead, use Log for verbose messages.
Refactoring and cleanup.

Purge CF_UNDEFINED_ITEM from this code. Null pointers are as
undefined as it gets.

Admitting to some inconsistency when testing for NULL (!prev vs
prev == NULL), but somewhat pre-existing condition and I tried to
keep it readable.
Merge pull request #2002 from vohi/redmine/6589

Redmine/6589
Make sure we get correct number (3) from wc by specifying line count.