Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: log a message on allocation failure in tdb_check()
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: log an error when out of memory formatting message.
Log it at level ERROR and log the raw unformatted message at the requested
level.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: close memory leak in traverse.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: close memory leak in tdb_check()
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: use failtest for opening and checking database.
This is a fairly sophisticated use of failtest:
1) There are a few places where we can inject failures without revealing it
at the API level, eg. opening /dev/urandom, or allocation failure in logging.
2) We want to be sure that (almost) all failures cause a message to be logged.
3) We need to exit as soon as possible when a failure is injected, to avoid
combinatorial explosion.
4) We don't want to simply exit on any log message, since we want to be sure
that cleanup happens.
This test found four different bugs failure paths. Erk!
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: fix leak in tests.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: rename ->read and ->write functions.
Since failtest uses macros to override read and write, we need to avoid
those names, even inside our ops structure.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: remove looping for write
On normal files, pwrite and write should never return short except on error.
As we never create sparse files, so any short write is an I/O error.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
tdb2: remove looping for read on normal files.
Simply assume that any short read on a TDB in an I/O error.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
failtest: enhance tracing
Do it properly, with a printf-style interface.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
ccanlint: prepend module headers before standard ones.
Especially since they probably define _GNU_SOURCE.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
config.h: HAVE_ASPRINTF
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
config.h: define _GNU_SOURCE
Otherwise we don't get goodies like asprintf, and 64-bit offsets. Should
be a harmless-define on non-glibc systems.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
ccanlint: don't crash when given --target=hash_if and there's no _info file.
Rusty Russell [Tue, 1 Mar 2011 12:49:20 +0000 (23:19 +1030)]
noerr: don't use tempnam
We run in a temporary directory now. Also, avoids warning and memory leak.
Andreas Schlick [Thu, 24 Feb 2011 16:27:11 +0000 (17:27 +0100)]
failtest: Fix incorrect reuse of va_list in test/run-malloc.c.
Rusty Russell [Tue, 1 Mar 2011 07:21:22 +0000 (17:51 +1030)]
endian: use byteswap.h where available
And use those names, too.
Rusty Russell [Tue, 1 Mar 2011 07:20:07 +0000 (17:50 +1030)]
compiler, talloc, tap, tdb2: use #if instead of #ifdef.
Rusty Russell [Tue, 1 Mar 2011 07:20:32 +0000 (17:50 +1030)]
ccanlint: check for #ifdef
Old habits die hard; it's better to use #if <FEATURE> than #ifdef <FEATURE>;
they're similar, because undefined identifiers evaluate to zero, but with
GCC's -Wundef flag you can detect mis-spelled or missing features with
#if.
autoconf-style config.h leave unset features undefined, so this works for
those config.h too.
Rusty Russell [Tue, 1 Mar 2011 07:17:49 +0000 (17:47 +1030)]
ccanlint: run tests with reduced-feature config.h
Rusty Russell [Tue, 1 Mar 2011 07:17:24 +0000 (17:47 +1030)]
ccanlint: compile module with reduced-feature config.h
Rusty Russell [Tue, 1 Mar 2011 07:18:11 +0000 (17:48 +1030)]
ccanlint: create reduce-feature config.h
A common mistake is not to try compiling with features disabled in
config.h. The ideal case would determine how features interact and
test all combinations of them: this simply disables any features
mentioned in the code which were previously enabled.
Rusty Russell [Tue, 1 Mar 2011 05:34:49 +0000 (16:04 +1030)]
ccanlint: --compiler and --cflags options.
Rusty Russell [Tue, 1 Mar 2011 05:38:57 +0000 (16:08 +1030)]
ccanlint: read config.h to get compilation flags at runtime.
This means you don't have to recompile ccanlint to get the new flags;
it's a small step towards making ccanlint useful outside the ccan repo.
Rusty Russell [Tue, 1 Mar 2011 05:31:20 +0000 (16:01 +1030)]
ccanlint: handle weird directories.
David Gibson reports (and I confirmed) that running ccanlint in /tmp
causes an very uninformative segv. Fix that, and add a more useful message,
as well as delaying recursing until we're confident there's code around.
Rusty Russell [Tue, 1 Mar 2011 05:30:05 +0000 (16:00 +1030)]
config.h: idempotent-wrap the generated config.h
Rusty Russell [Tue, 1 Mar 2011 05:29:40 +0000 (15:59 +1030)]
asort: handle !HAVE_NESTED_FUNCTIONS
Andreas Schlick reports that PaX et. al. dislike trampolines, so open-code
qsort from glibc.
Interestingly, _quicksort from glibc seems to have a void * parameter, but
I can't find any information on it.
Rusty Russell [Tue, 1 Mar 2011 00:52:56 +0000 (11:22 +1030)]
failtest: fix locking code.
We need to get the locks back *after* the child runs.
Rusty Russell [Tue, 1 Mar 2011 00:52:39 +0000 (11:22 +1030)]
failtest: fix tracepath bug.
Aborts on a short write with --tracepath.
Rusty Russell [Thu, 24 Feb 2011 05:33:46 +0000 (16:03 +1030)]
tdb2: make tdb2 compile clean under -Wshadow.
This isn't a general requirement for CCAN modules, but Samba uses it, so
make sure tdb2 doesn't upset it.
Rusty Russell [Thu, 24 Feb 2011 05:09:32 +0000 (15:39 +1030)]
jmap,likely,tdb2: use CCAN_<MODNAME>_DEBUG instead of DEBUG.
Samba (for example) uses a DEBUG() macro, which triggers these heuristics.
Better to make it per-module anyway.
Rusty Russell [Thu, 24 Feb 2011 02:50:01 +0000 (13:20 +1030)]
ccanlint: fix more potential segvs when reporting ccanlint errors.
When I changed score_file_error() to printf-style, I didn't audit all
the callers who were handing string literals. I've finally done that;
I should have broken the compile by renaming it.
Rusty fails refactoring 101.
Reported-by: Andreas Schlick
Joey Adams [Sat, 19 Feb 2011 10:53:04 +0000 (05:53 -0500)]
ccan_tokenizer: update to be compatible with darray.
Joey Adams [Sat, 19 Feb 2011 10:36:14 +0000 (05:36 -0500)]
darray: Renamed array module to darray and made several improvements.
* Removed talloc support.
* Added a synopsis and rearranged macro definitions.
* Switched allocation strategy from increments of 64 to powers of 2.
* Replaced array_for and array_rof with the more useful
and portable macros array_foreach and array_foreach_reverse.
* Added typedefs array_* for common types.
Rusty Russell [Tue, 15 Feb 2011 13:02:13 +0000 (23:32 +1030)]
failtest: detect leaks in children.
If we need to clean up the children, they didn't exit cleanly.
This takes a bit more care when writing tests, but found a leak in tdb2.
Rusty Russell [Tue, 15 Feb 2011 13:01:29 +0000 (23:31 +1030)]
failtest: hook can return FAIL_PROBE
tdb2 has various places where it recovers from failure (eg. falling
back when it can't open /dev/urandom, or allocation for error
logging). We want to test those paths, but doing so thoroughly causes
cominatorial explosion.
Add FAIL_PROBE for such cases: in this case it goes only 3 more calls
deep.
Rusty Russell [Tue, 15 Feb 2011 12:59:13 +0000 (23:29 +1030)]
failtest: record close events
We trap them, might as well put them in history. This also makes tracking
open file descriptors more robust.
Rusty Russell [Tue, 15 Feb 2011 12:59:28 +0000 (23:29 +1030)]
failtest: call failtest_exit_check even in non-failing parent.
Rusty Russell [Tue, 15 Feb 2011 12:57:43 +0000 (23:27 +1030)]
failtest: be clearer when child times out.
ie. SIGUSR1 means it timed out.
Rusty Russell [Tue, 15 Feb 2011 12:57:15 +0000 (23:27 +1030)]
failtest: --debugpath= for really hard-to-find bugs.
If children and parents aren't isolated properly (ie. failtest is
buggy) we really want to run gdb on a failing child. This hack allows that.
Rusty Russell [Tue, 15 Feb 2011 12:55:40 +0000 (23:25 +1030)]
failtest: don't insert spurious failures if open would fail anyway.
open fails in fairly normal cases; don't double execution time for this!
Rusty Russell [Tue, 15 Feb 2011 12:55:03 +0000 (23:25 +1030)]
failtest: don't insist parents and children write the same thing to files.
We insist they write the same things to pipes, since we can't "undo" them,
but strictly speaking we don't care if they write different things into
files.
Note: it may indicate a bug if they do...
Rusty Russell [Tue, 15 Feb 2011 12:53:59 +0000 (23:23 +1030)]
failtest: rely on the save/restore of files, don't use write cleanup.
Rusty Russell [Tue, 15 Feb 2011 12:53:16 +0000 (23:23 +1030)]
failtest: save entire file contents.
The idea of saving files as we do writes doesn't work with mmap: this just
saves the entire contents of all open files before forking child, and
restores them afterwards.
Rusty Russell [Tue, 15 Feb 2011 12:52:17 +0000 (23:22 +1030)]
failtest: don't use special data structure for storing child writes.
Use the same structure we use in the history.
Rusty Russell [Tue, 15 Feb 2011 12:51:42 +0000 (23:21 +1030)]
failtest: generic cleanup hooks
Each function in the history stores a cleanup function, rather than storing
extra structures. In particular, we save writes and file offsets using
this.
Rusty Russell [Tue, 15 Feb 2011 12:49:00 +0000 (23:19 +1030)]
failtest: allow continuing after running a failpath.
Append a "+" if you want to start forking as normal.
Rusty Russell [Tue, 15 Feb 2011 12:48:31 +0000 (23:18 +1030)]
failtest: --tracepath
Useful for showing exactly where we inserted failures, and how long each
one took.
Rusty Russell [Tue, 15 Feb 2011 12:32:16 +0000 (23:02 +1030)]
failtest: fix history when --failpath used
Correctly mark which calls we failed.
Rusty Russell [Tue, 15 Feb 2011 12:33:35 +0000 (23:03 +1030)]
failtest: capture pread/pwrite
Rusty Russell [Tue, 15 Feb 2011 12:33:24 +0000 (23:03 +1030)]
failtest: handle 2-argument open()
Rusty Russell [Tue, 15 Feb 2011 12:33:06 +0000 (23:03 +1030)]
failtest: fcntl handling
Catch fcntl, particularly fcntl locks.
Rusty Russell [Thu, 17 Feb 2011 23:54:17 +0000 (10:24 +1030)]
ccanlint: print coverage amount when -vv
Rusty Russell [Thu, 17 Feb 2011 23:54:01 +0000 (10:24 +1030)]
ccanlint: fix format error when test output contains %
Rusty Russell [Tue, 22 Feb 2011 04:55:54 +0000 (15:25 +1030)]
net: reset slen properly in testing.
Sam Vilain [Tue, 22 Feb 2011 04:56:36 +0000 (15:26 +1030)]
net: fix tests on hosts where 'localhost' is v4 _and_ v6
If 'localhost' exists in /etc/hosts with a v4 and a v6 address, the hack
which joins two addrinfo entries together is not necessary. Detect to see
if 'localhost' returned a v6 address, and if so, just return the single
linked list result from getaddrinfo()
(Reworked by Rusty Russell)
Signed-off-by: Sam Vilain <sam@vilain.net>
Andreas Schlick [Thu, 17 Feb 2011 21:58:44 +0000 (22:58 +0100)]
opt: Add a function to free the internal memory.
Andreas Schlick [Thu, 17 Feb 2011 21:50:07 +0000 (22:50 +0100)]
opt: Correct the separator in _info's example.
Rusty Russell [Tue, 22 Feb 2011 03:35:51 +0000 (14:05 +1030)]
ccanlint: recognise new BSD 3-clause license.
Rusty Russell [Tue, 22 Feb 2011 03:33:15 +0000 (14:03 +1030)]
licenses: clarify which BSD license it is.
Rusty Russell [Tue, 22 Feb 2011 02:14:45 +0000 (12:44 +1030)]
Merge branch 'daemon-with-notify' of git://github.com/stewartsmith/ccan into daemon-with-notify
Rusty Russell [Fri, 18 Feb 2011 10:36:59 +0000 (21:06 +1030)]
web: delete unused tool binaries.
Stewart Smith [Fri, 11 Feb 2011 01:06:24 +0000 (12:06 +1100)]
move daemon-with-notify to daemon_with_notify as dashes aren't allowed in CCAN module names (and ccanlint segfaults on them)
Stewart Smith [Fri, 11 Feb 2011 01:00:25 +0000 (12:00 +1100)]
fix up daemon-with-notify test
Stewart Smith [Fri, 11 Feb 2011 00:25:25 +0000 (11:25 +1100)]
can't use C comments in C comments - DUH
Stewart Smith [Fri, 11 Feb 2011 00:23:04 +0000 (11:23 +1100)]
update include to match header name conforming to CCAN standard
Stewart Smith [Fri, 11 Feb 2011 00:22:25 +0000 (11:22 +1100)]
rename source to match CCAN standards
Stewart Smith [Fri, 11 Feb 2011 00:17:44 +0000 (11:17 +1100)]
update test case copied from daemonize to use some of daemon-with-notify features
Stewart Smith [Fri, 11 Feb 2011 00:17:08 +0000 (11:17 +1100)]
fix function declaration for daemon_is_ready()
Stewart Smith [Fri, 11 Feb 2011 00:13:37 +0000 (11:13 +1100)]
use proper include path for daemon.h
Stewart Smith [Fri, 11 Feb 2011 00:12:27 +0000 (11:12 +1100)]
add daemon.h and documentation on functions
Stewart Smith [Fri, 11 Feb 2011 00:03:07 +0000 (11:03 +1100)]
remove ident headers from daemon-with-notify/daemon.c
Stewart Smith [Thu, 10 Feb 2011 23:53:25 +0000 (10:53 +1100)]
add basic bit of daemon-with-notify (mostly just from the Drizzle tree)
Joel Stanley [Mon, 7 Feb 2011 04:06:16 +0000 (14:36 +1030)]
opt: Silence unsed param warning triggered by -Wextra
The type checking function does not use its parameter:
ccan/opt/opt.h: In function ‘_check_is_entry’:
ccan/opt/opt.h:328:53: warning: unused parameter ‘e’
Annotate the function using UNUSED from compiler.h. This commit also
adds compiler.h as a dependency for opt.
Joel Stanley [Mon, 7 Feb 2011 04:06:15 +0000 (14:36 +1030)]
opt: Fix -Wmissing-field-initializers warning
OPT_ENDTABLE does not initalise all the elements in stuct opt_table.
When compliling with -Wextra -Wmissing-field-initializers is enabled,
which produces the following warning:
iviewiir.c:299:9: error: missing field 'cb' initializer
[-Wmissing-field-initializers]
OPT_ENDTABLE
^
In file included from iviewiir.c:12:
./ccan/opt/opt.h:82:38: note: instantiated from:
#define OPT_ENDTABLE { NULL, OPT_END }
^
By changing the definition of OPT_ENDTABLE to initalise all 7 elements
of struct opt_table, the warning is silenced.
Brad Hards [Tue, 1 Feb 2011 01:11:30 +0000 (12:11 +1100)]
Add libccan.a to ignore list.
Rusty Russell [Sun, 30 Jan 2011 08:24:28 +0000 (18:54 +1030)]
net: remove noerr dependency.
It's cool, but making it standalone is slightly simpler and means license is
pure MIT.
Rusty Russell [Sat, 29 Jan 2011 07:42:20 +0000 (18:12 +1030)]
net: fix latent bug in _info example.
Ben Hutchings points out that struct sockaddr isn't large enough to hold
a struct sockaddr_in6. Our example works because we only access the family
field, but anyone extending it might be surprised; use a union instead.
Rusty Russell [Fri, 28 Jan 2011 06:41:06 +0000 (17:11 +1030)]
ccanlint: fix SEGV when example has format string.
Rusty Russell [Fri, 28 Jan 2011 06:40:23 +0000 (17:10 +1030)]
net: new module to help IPv4/IPv6 transition.
Brad Hards [Wed, 19 Jan 2011 06:03:32 +0000 (17:03 +1100)]
ccanlint: protect against the function element in the doc section being null
This can happen if the documentation doesn't have a properly formatted summary line,
and it causes the examples_relevant test to segfault.
Rusty Russell [Sat, 22 Jan 2011 02:02:54 +0000 (12:32 +1030)]
ccanlint: always print \n at end of error message.
Brad Hards fixed a two places where score->error was not \n-terminated,
and then I found a few more, so make it automatic.
Rusty Russell [Thu, 20 Jan 2011 01:01:11 +0000 (11:31 +1030)]
ccanlint: don't collect results from test children
This confuses the output, and makes us sometimes see spurious
failure. At least we will still catch valgrind errors in
children of failtest, thanks to --error-exitcode=101.
Rusty Russell [Tue, 18 Jan 2011 07:21:51 +0000 (17:51 +1030)]
opt: correct description, and neaten main header order.
Reordering header makes it more readable, and we don't rely on
getopt_long any more.
Rusty Russell [Tue, 18 Jan 2011 01:47:17 +0000 (12:17 +1030)]
ccanlint: fix _info option handling
Two places were using a bogus ccanlint struct: the side-effect was
that valgrind options didn't work, nor did license fixups.
Make REGISTER_TEST do the extern declaration, and remove the bogus
ones.
Rusty Russell [Tue, 18 Jan 2011 00:44:46 +0000 (11:14 +1030)]
strsplit: remove nump argument
You can use talloc_array_length() to get the length of a tallocated array.
Rusty Russell [Tue, 18 Jan 2011 00:36:23 +0000 (11:06 +1030)]
talloc: talloc_array_length()
I originally called this talloc_length(), but SAMBA upstream uses
talloc_array_length.
Rusty Russell [Sun, 9 Jan 2011 02:50:14 +0000 (13:20 +1030)]
ccanlint: -k all
Use this to preserve the entire working directory.
Rusty Russell [Sun, 9 Jan 2011 02:49:15 +0000 (13:19 +1030)]
ccanlint: -k should not pollute module directory.
It leads to numerous problems, such as the next ccanlint getting confused
trying to compile examples, and "-k examples_compile -k examples_exist"
giving bogus errors.
So instead we leave the temporary dir lying around and delete
individual files which aren't marked "keep".
Rusty Russell [Tue, 18 Jan 2011 00:35:37 +0000 (11:05 +1030)]
failtest: free up everything on exit.
Otherwise valgrind will report that tests leak memory.
Rusty Russell [Tue, 18 Jan 2011 00:38:34 +0000 (11:08 +1030)]
failtest: failtest_restore.h as an antidote to function overload.
This makes some cases simpler, where you no longer want malloc etc.
to fail.
Brad Hards [Sun, 16 Jan 2011 06:50:51 +0000 (17:50 +1100)]
wwviaudio: spelling fix
Brad Hards [Sun, 16 Jan 2011 06:50:24 +0000 (17:50 +1100)]
tdb2: spelling fix
Brad Hards [Sun, 16 Jan 2011 06:50:03 +0000 (17:50 +1100)]
tdb: spelling fixes
Brad Hards [Sun, 16 Jan 2011 06:49:20 +0000 (17:49 +1100)]
tap: spelling fix
Brad Hards [Sun, 16 Jan 2011 06:48:53 +0000 (17:48 +1100)]
talloc: spelling fix.
Brad Hards [Sun, 16 Jan 2011 06:48:20 +0000 (17:48 +1100)]
rbtree: spelling fixes
Brad Hards [Sun, 16 Jan 2011 06:22:39 +0000 (17:22 +1100)]
opt: spelling fixes.
Brad Hards [Sun, 16 Jan 2011 06:22:14 +0000 (17:22 +1100)]
nfs: spelling fixes.
Brad Hards [Sun, 16 Jan 2011 06:21:39 +0000 (17:21 +1100)]
list: spelling fixes