libc: implement glibc's glob_pattern_p

Currently, glob is implemented but glob_pattern_p is not. This function
can trivially be implemented with existing glob machinery, since all it
does is to tell whether or not the string contains special symbols. This
is basically the same logic as is_literal, but with inverted return value.

The value of the "quote" parameter should also be inverted, since the man
page states that when the quote parameter is *non*-zero, then backslashes
are ignored. is_literal ignores them when useesc is *zero*.

Signed-off-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
time functions: implement utime

utime is almost the same as time, but has second resolution, a different
signature, and uses current time automatically when the time argument is NULL

Signed-off-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
httpserver: Support POST requests with application/x-www-form-urlencoded

Add handling of POST requests with application/x-www-form-urlencoded
content type (which is actually the "normal" way to send parameters for
POSTs). Also propagate content data (if any) to request handler (needed
to handle json structured requests - i.e. prereq for jolokia).
 
Somewhat naive implementation that assumes non-multipart content will be
smallish, so its propagated in-memory. No stream management, through
this would be more proper.

Signed-off-by: Calle Wilund <calle@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
Re-add ".SECONDARY" to build.mk

Over a year ago, commit e6e2f4f51be571b27c37d6d4f7c87af71e9aee6c removed
the ".SECONDARY:" statement from build.mk. Unfortunately it turns out that
this removal caused issue #161.

Issue #161 describes the weird phenomenon where the first "make" after a
"make clean" removes all test/*.o, leaving behind only *.so (which in
itself, is fine), but then the second "make" compiles the same tests
again, this time leaving behind the .o. A third "make" will finally not
recompile the tests.

Turns out that this is a known bug^H^H^Hfeature of how "chained rules"
work in make (see https://www.gnu.org/software/make/manual/html_node/
Chained-Rules.html#Chained-Rules). To create a test.so, we follow two
implict rules: One for .c->.o, and a second for .o->.so. In this "chain"
of rules, the ".o" file is considered an "intermediate" file - it is
deleted as superflous when make completes (this is the deletion we're
seeing in the first make), and next time "make" is run, make considers
whether the .so is newer than the .c - without building the .o at all.

BUT, another thing that happens during the first build is that the
dependency files *.d are generated, and they are used in the second
make. These suddenly explicitly mention the test.o as targets in rules
(e.g., test.o: something.h), and at that point, make suddenly thinks
that test.o is not an "intermediate" file but a normal file we care
about - so it needs it to exist (hence the recompilation on the second
make), and doesn't delete it at the end (hence finally everything is
quite on the third make).

Adding an empty target ".SECONDARY:" tells make that intermediate files
should not be deleted when we're done, which makes behave on the second
run like it would on the second, solves the weird recompilation issue.

I don't understand why .SECONDARY was dropped in the first place in
commit e6e2f4f51be571b27c37d6d4f7c87af71e9aee6c. If we do need to always
remove or remake a specific file on every run, we can definitely do
this (with rm or .PHONY) and don't need to drop the .SECONDARY.

Fixes #161.

Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>