]> git.ozlabs.org Git - ccan/log
ccan
11 years agotal: bounds checking fixes.
Rusty Russell [Mon, 19 Nov 2012 00:13:29 +0000 (10:43 +1030)]
tal: bounds checking fixes.

First, we need to update the bounds for the group property allocated
with the children property, just in case it's at the end of the
allocations.

Second, we need to allow the tal_check() code to accept the pointer to
the null parent's group property.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotal: add benchmark based on Samba4's talloc usage.
Rusty Russell [Sun, 18 Nov 2012 03:45:53 +0000 (14:15 +1030)]
tal: add benchmark based on Samba4's talloc usage.

This is based on a very simple dump of S4's talloc tree, which we try
to duplicate using tal.  The benchmarks are simply to allocate all the
nodes, free all the nodes individually, and a top-level free.

Size results (32-bit x86):
$ ./samba-allocs talloc.dump --talloc-size
Read 25998 nodes
Virtual size = 10469376, RSS = 4759552
$ ./samba-allocs talloc.dump --tal-size
Read 25998 nodes
Virtual size = 9629696, RSS = 3948544

Speed results:
$ ./samba-allocs talloc.dump
Read 25998 nodes
Malloc time:             1912082ns
Free time:               1384892ns
Talloc time:             2851531ns
talloc_free time:        2133801ns
Single talloc_free time: 1696298ns
Tal time:                2686952ns
Tal_free time:           3316153ns
Single tal_free time:    1639407ns

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotal: add talloc's speed benchmark.
Rusty Russell [Sun, 18 Nov 2012 03:37:37 +0000 (14:07 +1030)]
tal: add talloc's speed benchmark.

We modify it a bit (to do more allocations before freeing).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotal: add typenames by default.
Rusty Russell [Sun, 18 Nov 2012 03:37:36 +0000 (14:07 +1030)]
tal: add typenames by default.

The really size-conscious can override them, but it's great for
debugging to have names on the nodes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotal: add TAL_TAKE.
Rusty Russell [Sun, 18 Nov 2012 03:37:35 +0000 (14:07 +1030)]
tal: add TAL_TAKE.

TAL_TAKE provides a magic context meaning "consume my args and return
a replacement".  This is useful for writing convenience functions,
though not so useful in the standard routines here.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotal: new module.
Rusty Russell [Sun, 18 Nov 2012 03:37:17 +0000 (14:07 +1030)]
tal: new module.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agolikely: relicense to CC0.
Rusty Russell [Thu, 15 Nov 2012 02:28:34 +0000 (12:58 +1030)]
likely: relicense to CC0.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotypesafe_cb: relicense to CC0.
Rusty Russell [Thu, 15 Nov 2012 02:28:25 +0000 (12:58 +1030)]
typesafe_cb: relicense to CC0.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agolikely: make dependencies correctly conditional on CCAN_LIKELY_DEBUG.
Rusty Russell [Thu, 15 Nov 2012 02:26:08 +0000 (12:56 +1030)]
likely: make dependencies correctly conditional on CCAN_LIKELY_DEBUG.

Without this, it's a trivial header.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agorfc822: Update rfc822 module to use testdepends
David Gibson [Mon, 12 Nov 2012 07:14:26 +0000 (18:14 +1100)]
rfc822: Update rfc822 module to use testdepends

Several modules were only listed as dependencies because they were used in
the testcases.  That in turn gave some bogus incompatible license warnings
which we partially suppressed from _info.  Now that ccanlint supports
testdepends, use that to clean it up.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agotalloc: move ccan/failtest to testdepends.
Rusty Russell [Mon, 12 Nov 2012 06:37:51 +0000 (17:07 +1030)]
talloc: move ccan/failtest to testdepends.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agostr_talloc: remove unused ccan/noerr dependency.
Rusty Russell [Mon, 12 Nov 2012 06:37:51 +0000 (17:07 +1030)]
str_talloc: remove unused ccan/noerr dependency.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agograb_file: move ccan/str_alloc to testdepends
Rusty Russell [Mon, 12 Nov 2012 06:37:50 +0000 (17:07 +1030)]
grab_file: move ccan/str_alloc to testdepends

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agocrcsync: move array_size to testdepends.
Rusty Russell [Mon, 12 Nov 2012 06:37:50 +0000 (17:07 +1030)]
crcsync: move array_size to testdepends.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoasort: move array_size to testdepends.
Rusty Russell [Mon, 12 Nov 2012 06:37:50 +0000 (17:07 +1030)]
asort: move array_size to testdepends.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoasearch: move array_size to testdepends.
Rusty Russell [Mon, 12 Nov 2012 06:37:24 +0000 (17:07 +1030)]
asearch: move array_size to testdepends.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoalignof: remove unnecessary ccan/build_assert dependency.
Rusty Russell [Mon, 12 Nov 2012 06:36:24 +0000 (17:06 +1030)]
alignof: remove unnecessary ccan/build_assert dependency.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoccanlint: detect unused dependencies, too.
Rusty Russell [Mon, 12 Nov 2012 06:35:24 +0000 (17:05 +1030)]
ccanlint: detect unused dependencies, too.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoccanlint: add testdepends support.
Rusty Russell [Mon, 12 Nov 2012 06:34:24 +0000 (17:04 +1030)]
ccanlint: add testdepends support.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotools: enhance get_libs to get libraries for tests, too.
Rusty Russell [Mon, 12 Nov 2012 06:33:24 +0000 (17:03 +1030)]
tools: enhance get_libs to get libraries for tests, too.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotools: add testdepends handling in _info.
Rusty Russell [Mon, 12 Nov 2012 04:23:40 +0000 (14:53 +1030)]
tools: add testdepends handling in _info.

This allows us to separate dependencies only needed for testing.
This matters: they don't have the same impact on licensing, nor necessarily
on end-users.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoREADME: update.
Rusty Russell [Sun, 11 Nov 2012 03:06:18 +0000 (13:36 +1030)]
README: update.

Especially important since it's so prominent on github.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agohash: switch to CC0 license.
Rusty Russell [Thu, 1 Nov 2012 23:17:28 +0000 (09:47 +1030)]
hash: switch to CC0 license.

As per email from Andreas (the only other contributor):
From: Andreas Schlick <schlick@lavabit.com>
Subject: Re: Changing from Public Domain to CC0
To: Rusty Russell <rusty@rustcorp.com.au>
Date: Thu, 01 Nov 2012 12:51:47 +0100

Hi!

> Since Public Domain is a slippery concept outside certain countries,
> it has been suggested that I formalize it to Creative Commons Zero.
>
> I want to change the License string (and add a symlink) to the
> following trivial modules.  Please Ack.

Sure, ack.

 Andreas

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoRelicense all public domain modules to CC0.
Rusty Russell [Thu, 1 Nov 2012 05:07:41 +0000 (15:37 +1030)]
Relicense all public domain modules to CC0.

I wrote all of most of them, for the others, here's the CCAN mailing
list thread authorizing it:

From: Timothy B. Terriberry <tterribe@xiph.org>
Subject: Re: [ccan] Changing from Public Domain to CC0
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: ccan@ozlabs.org
Date: Wed, 31 Oct 2012 02:53:50 -0400

Rusty Russell <rusty@rustcorp.com.au> wrote:

> I want to change the License string (and add a symlink) to the following
> trivial modules.  Please Ack.

> isaac

Ack.

From: Alessandro Guido <ag@alessandroguido.name>
Subject: Re: Changing from Public Domain to CC0
To: Rusty Russell <rusty@rustcorp.com.au>
Date: Wed, 31 Oct 2012 10:59:53 +0100

Acked-by: Alessandro Guido <ag@alessandroguido.name>
From: Brad Hards <bradh@frogmouth.net>
Subject: Re: Changing from Public Domain to CC0
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: Joey Adams <joeyadams3.14159@gmail.com>, Alessandro Guido <ag@alessandroguido.name>, Andreas Schlick <schlick@lavabit.com>, ccan@ozlabs.org
Date: Wed, 31 Oct 2012 23:43:24 +1100

On 31/10/12 17:43, Rusty Russell wrote:
> Damn lawyers!
>
> Since Public Domain is a slippery concept outside certain countries, it
> has been suggested that I formalize it to Creative Commons Zero.
>
> I want to change the License string (and add a symlink) to the following
> trivial modules.  Please Ack.

Ack.

More generally, anything I've put into CCAN is so trivial that you can
relicense it (to any Free / Open Source license) as part of any
relicensing you can otherwise get agreement to.

Brad

[Sorry if this comes out in HTML - I'm stuck with unsat tools while
travelling].

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotlist: remove unused var warning in example.
Rusty Russell [Wed, 31 Oct 2012 11:31:59 +0000 (22:01 +1030)]
tlist: remove unused var warning in example.

Compiler:
/home/rusty/devel/cvs/ccan/ccan/tlist/tlist.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/tlist/tlist.h:186:15: warning: variable ‘first’ set but not used [-Wunused-but-set-variable]

Compiler:
/home/rusty/devel/cvs/ccan/ccan/tlist/tlist.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/tlist/tlist.h:205:15: warning: variable ‘last’ set but not used [-Wunused-but-set-variable]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotime: remove unused var warning in example.
Rusty Russell [Wed, 31 Oct 2012 11:31:47 +0000 (22:01 +1030)]
time: remove unused var warning in example.

Compiler:
/home/rusty/devel/cvs/ccan/ccan/time/time.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/time/time.h:334:16: warning: variable ‘tv’ set but not used [-Wunused-but-set-variable]

Compiler:
/home/rusty/devel/cvs/ccan/ccan/time/time.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/time/time.h:353:17: warning: variable ‘ts’ set but not used [-Wunused-but-set-variable]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotalloc: remove const warning in _info example.
Rusty Russell [Wed, 31 Oct 2012 11:29:50 +0000 (21:59 +1030)]
talloc: remove const warning in _info example.

Compiler:
/home/rusty/devel/cvs/ccan/ccan/talloc/_info: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/talloc/_info:84:9: warning: passing argument 2 of ‘open_output_cmd’ discards ‘const’ qualifier from pointer target type [enabled by default]
/home/rusty/devel/cvs/ccan/ccan/talloc/_info:52:24: note: expected ‘char *’ but argument is of type ‘const char *’

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agolist: fix unused var warning.
Rusty Russell [Wed, 31 Oct 2012 11:23:17 +0000 (21:53 +1030)]
list: fix unused var warning.

/home/rusty/devel/cvs/ccan/ccan/list/list.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/list/list.h:280:15: warning: variable ‘first’ set but not used [-Wunused-but-set-variable]

/home/rusty/devel/cvs/ccan/ccan/list/list.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/list/list.h:304:15: warning: variable ‘last’ set but not used [-Wunused-but-set-variable]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agolbalance: fix unused var warning.
Rusty Russell [Wed, 31 Oct 2012 11:05:41 +0000 (21:35 +1030)]
lbalance: fix unused var warning.

/home/rusty/devel/cvs/ccan/ccan/lbalance/lbalance.c:Compiling object files gave warnings:
/home/rusty/devel/cvs/ccan/ccan/lbalance/lbalance.c: In function ‘best_target’:
/home/rusty/devel/cvs/ccan/ccan/lbalance/lbalance.c:245:18: warning: variable ‘best’ set but not used [-Wunused-but-set-variable]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoforeach: remove unused var warning.
Rusty Russell [Wed, 31 Oct 2012 11:05:27 +0000 (21:35 +1030)]
foreach: remove unused var warning.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agocrcsync: fix memory leak in tests.
Rusty Russell [Wed, 31 Oct 2012 11:04:20 +0000 (21:34 +1030)]
crcsync: fix memory leak in tests.

/home/rusty/devel/cvs/ccan/ccan/crcsync/test/run-crash.c:==6923== 112 bytes in 1 blocks are definitely lost in loss record 2 of 3
==6923==    at 0x402BA7A: malloc (vg_replace_malloc.c:261)
==6923==    by 0x80492EE: crcblocks (run-crash.c:20)
==6923==    by 0x8049448: main (run-crash.c:62)
==6923== 2,217 (2,212 direct, 5 indirect) bytes in 1 blocks are definitely lost in loss record 3 of 3
==6923==    at 0x402BA7A: malloc (vg_replace_malloc.c:261)
==6923==    by 0x8048AA0: crc_context_new (crcsync.c:85)
==6923==    by 0x8049476: main (run-crash.c:64)

/home/rusty/devel/cvs/ccan/ccan/crcsync/test/run.c:==11793== 512 bytes in 1 blocks are definitely lost in loss record 1 of 2
==11793==    at 0x402A52B: calloc (vg_replace_malloc.c:462)
==11793==    by 0x8049A3F: main (run.c:128)
==11793== 512 bytes in 1 blocks are definitely lost in loss record 2 of 2
==11793==    at 0x402A52B: calloc (vg_replace_malloc.c:462)
==11793==    by 0x8049A57: main (run.c:129)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agocrcsync: fix constness warning.
Rusty Russell [Wed, 31 Oct 2012 11:04:18 +0000 (21:34 +1030)]
crcsync: fix constness warning.

/home/rusty/devel/cvs/ccan/ccan/crcsync/test/run-crash.c:Compile gave warnings:
/home/rusty/devel/cvs/ccan/ccan/crcsync/test/run-crash.c: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/crcsync/test/run-crash.c:30:3: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default]
/home/rusty/devel/cvs/ccan/ccan/crcsync/test/run-crash.c:35:3: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agocrc: remove gratuitous trailing whitespace.
Rusty Russell [Wed, 31 Oct 2012 11:03:59 +0000 (21:33 +1030)]
crc: remove gratuitous trailing whitespace.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agocheck_type: remove gratuitous trailing whitespace.
Rusty Russell [Wed, 31 Oct 2012 11:03:47 +0000 (21:33 +1030)]
check_type: remove gratuitous trailing whitespace.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoalloc: remove valgrind warning from test.
Rusty Russell [Wed, 31 Oct 2012 11:03:18 +0000 (21:33 +1030)]
alloc: remove valgrind warning from test.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoalignof: fix unused var warning with gcc
Rusty Russell [Wed, 31 Oct 2012 11:02:54 +0000 (21:32 +1030)]
alignof: fix unused var warning with gcc

/home/rusty/devel/cvs/ccan/ccan/alignof/test/run.c:32:7: warning: variable ‘c2’ set but not used [-Wunused-but-set-variable]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agostr: fix unused var warning with gcc
Rusty Russell [Wed, 31 Oct 2012 11:02:37 +0000 (21:32 +1030)]
str: fix unused var warning with gcc

Compiler:
/home/rusty/devel/cvs/ccan/ccan/str/str.h: In function ‘main’:
/home/rusty/devel/cvs/ccan/ccan/str/str.h:69:5: warning: variable ‘i’ set but not used [-Wunused-but-set-variable]

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoccanlint: add #line directives to examples.
Rusty Russell [Wed, 31 Oct 2012 10:59:27 +0000 (21:29 +1030)]
ccanlint: add #line directives to examples.

This means error messages come out in the right place.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoccanlint: Understand Creative Commons Zero license.
Rusty Russell [Wed, 31 Oct 2012 07:11:43 +0000 (17:41 +1030)]
ccanlint: Understand Creative Commons Zero license.

Public domain for those who don't have it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agolicenses: Add Creative Commons Zero.
Rusty Russell [Wed, 31 Oct 2012 06:19:21 +0000 (16:49 +1030)]
licenses: Add Creative Commons Zero.

http://creativecommons.org/publicdomain/zero/1.0/legalcode

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoccanlint: remove unused variables.
Rusty Russell [Mon, 22 Oct 2012 10:16:33 +0000 (20:46 +1030)]
ccanlint: remove unused variables.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agorfc822: Index headers by name
David Gibson [Wed, 10 Oct 2012 14:19:10 +0000 (01:19 +1100)]
rfc822: Index headers by name

Replace the current brute force implementation of
rfc822_next_header_of_name() with one using a hash table to (lazily) index
the header fields by name.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: Retrieve header fields by name
David Gibson [Mon, 8 Oct 2012 07:53:56 +0000 (18:53 +1100)]
rfc822: Retrieve header fields by name

This patch adds functions to the rfc822 module to retrieve header fields
of a given name.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agobytestring: Allow bytestring_from_string to be called on NULL
David Gibson [Mon, 8 Oct 2012 08:05:48 +0000 (19:05 +1100)]
bytestring: Allow bytestring_from_string to be called on NULL

Currently, calling bytestring_from_string(NULL) will result in a SEGV
within strlen().  This patch makes this construct safe, returning
bytestring_NULL, which seems a less surprising result.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: Allow test infrastructure to handle headers with minor errors
David Gibson [Thu, 4 Oct 2012 14:35:11 +0000 (00:35 +1000)]
rfc822: Allow test infrastructure to handle headers with minor errors

Currently the test infrastructure for constructing example messages then
parsing them assumes that constructed headers never have errors of any
kind.  That's true so far, but it limits the versatility of this test
apparatus.  This patch extends the infrastructure to allow minor errors
(that is things other than a missing colon) to be handled.  The existing
test data is also extended to include cases which use this.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agoccanlint: fix coverage display for gcov 4.7
Rusty Russell [Fri, 5 Oct 2012 02:15:24 +0000 (11:45 +0930)]
ccanlint: fix coverage display for gcov 4.7

David Gibson reports a new format, meaning we didn't show the gcov files
with -vv.

11 years agorfc822: Rename RFC822_HDR_BAD_NAME constant
David Gibson [Thu, 4 Oct 2012 14:17:10 +0000 (00:17 +1000)]
rfc822: Rename RFC822_HDR_BAD_NAME constant

This error constant is actually more specific than the name suggests - it
indicates that a header field name contains characters which are not
permitted in a header field name.  Rename the constant to better reflect
this, likewise rename the testcase based around it.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: Rename bad-header test
David Gibson [Thu, 4 Oct 2012 14:12:27 +0000 (00:12 +1000)]
rfc822: Rename bad-header test

The run-bad-header.c test in the rfc822 module is actually testing handling
of one specific sort of bad header - a header field which contains no
colon character.  Rename the test and its internal variables to better
reflect this.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: Move check_header into helper.c
David Gibson [Wed, 3 Oct 2012 13:20:46 +0000 (23:20 +1000)]
rfc822: Move check_header into helper.c

The check_header() test function will be useful to more than one testcase
so this patch moves it into the common helper.c file.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: Add an example program
David Gibson [Wed, 3 Oct 2012 13:02:39 +0000 (23:02 +1000)]
rfc822: Add an example program

Add a simple full-blown example program for the rfc822 module.
'headernames' simply dumps the header field name for every header field in
each message file given on the command line to stdout.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agostr: add STR_MAX_CHARS().
Rusty Russell [Mon, 24 Sep 2012 01:25:13 +0000 (10:55 +0930)]
str: add STR_MAX_CHARS().

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agolist: change license to BSD-MIT.
Rusty Russell [Wed, 19 Sep 2012 01:08:40 +0000 (10:38 +0930)]
list: change license to BSD-MIT.

Approved by all contributors:
https://lists.ozlabs.org/pipermail/ccan/2012-September/000490.html
https://lists.ozlabs.org/pipermail/ccan/2012-September/000488.html
https://lists.ozlabs.org/pipermail/ccan/2012-September/000489.html

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agotime: make trivial functions inline
Rusty Russell [Mon, 10 Sep 2012 06:43:15 +0000 (16:13 +0930)]
time: make trivial functions inline

And enhance the documentation a little.

11 years agotime: add time_check() call and test.
Rusty Russell [Mon, 10 Sep 2012 06:43:11 +0000 (16:13 +0930)]
time: add time_check() call and test.

Times can be invalid: non-normalized, or negative.

11 years agofailtest, tools: update for new timespec-using ccan/time module.
Rusty Russell [Mon, 10 Sep 2012 06:14:54 +0000 (15:44 +0930)]
failtest, tools: update for new timespec-using ccan/time module.

11 years agotime: use timespec instead of timeval.
Rusty Russell [Mon, 10 Sep 2012 06:14:52 +0000 (15:44 +0930)]
time: use timespec instead of timeval.

It's a superset of struct timeval.  It's also a bit trickier, since we
need -lrt on Linux to use clock_gettime(), and also we can't just cram the
time into a u64 for multiply and divide.

11 years agoccanlint: don't remove HAVE_STRUCT_TIMESPEC when testing without features.
Rusty Russell [Mon, 10 Sep 2012 06:14:45 +0000 (15:44 +0930)]
ccanlint: don't remove HAVE_STRUCT_TIMESPEC when testing without features.

If we do have it, and we redefine it, compilation breaks.

11 years agoconfigurator: add library testing
Rusty Russell [Mon, 10 Sep 2012 06:14:43 +0000 (15:44 +0930)]
configurator: add library testing

In particular, HAVE_CLOCK_GETTIME_IN_LIBRT.

11 years agoccanlint: make sure examples get correct -l options.
Rusty Russell [Mon, 10 Sep 2012 06:14:11 +0000 (15:44 +0930)]
ccanlint: make sure examples get correct -l options.

We intuit the dependencies of embedded examples by looking for #include.
But these extra dependencies may require extra libraries, so we need to
add those, too.

11 years agoccanlint: recurse to get -l options.
Rusty Russell [Mon, 10 Sep 2012 06:14:00 +0000 (15:44 +0930)]
ccanlint: recurse to get -l options.

If a dependent module needs -l options, we don't notice.  Fix that, now
we have one.

11 years agotools: more intelligent caching for compile _info.
Rusty Russell [Mon, 10 Sep 2012 05:03:01 +0000 (14:33 +0930)]
tools: more intelligent caching for compile _info.

We let the get_deps() caller hand us the compiled _info filename, but what
about recursive dependencies?  These we re-generate every time.

So fix this: hand a generator callback to get_deps(), expose the one
which simply compiles it, and add a ccanlint one which looks up the
manifest to see if we have one already.

Before:
$ ccanlint -vvvv ccan/failtest | grep -c 'Creating.*_info'
31

After:
$ ccanlint -vvvv ccan/failtest | grep -c 'Creating.*_info'
17

11 years agoMerge branch 'master' of ozlabs.org:ccan
Rusty Russell [Mon, 10 Sep 2012 05:02:01 +0000 (14:32 +0930)]
Merge branch 'master' of ozlabs.org:ccan

11 years agorfc822: Fix test bugs on 64-bit platforms
David Gibson [Tue, 14 Aug 2012 03:55:53 +0000 (13:55 +1000)]
rfc822: Fix test bugs on 64-bit platforms

This fixes some format string related bugs that show up on 64-bit builds.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: Include RFC5322 text for reference
David Gibson [Sun, 12 Aug 2012 10:21:44 +0000 (20:21 +1000)]
rfc822: Include RFC5322 text for reference

For convenience, check in a copy of the full text of RFC5322 (the latest
revision of RFC822).

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agoccanlint: make depends_accurate test more accurate.
Rusty Russell [Wed, 18 Jul 2012 03:38:08 +0000 (13:08 +0930)]
ccanlint: make depends_accurate test more accurate.

In particular, don't complain on conditional lines.  That's less thorough,
but removes false negatives we have now.

11 years agorfc822: Fix bug parsing headers when body begins with linear whitespace
David Gibson [Sat, 30 Jun 2012 05:34:23 +0000 (15:34 +1000)]
rfc822: Fix bug parsing headers when body begins with linear whitespace

next_header_parse() had a bug which would mis-parse an extra header if the
body of the message began with a linear whitespace character (space or
tab).  This patch fixes it and adds a suitable testcase.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
11 years agorfc822: suppress license warning about failtest.
Rusty Russell [Tue, 26 Jun 2012 07:06:37 +0000 (16:36 +0930)]
rfc822: suppress license warning about failtest.

It's only used for testing, but it's LGPLv3 (vs LGPLv2).  But unless we
suppress it, ccanlint exits with status 1 and my sanity checks stop me from
uploading.

11 years agorfc822: new module.
Rusty Russell [Tue, 26 Jun 2012 06:59:31 +0000 (16:29 +0930)]
rfc822: new module.

11 years agoweb: fix umask on uploader so it's group readable.
Rusty Russell [Tue, 26 Jun 2012 06:58:08 +0000 (16:28 +0930)]
web: fix umask on uploader so it's group readable.

11 years agobytestring: new module.
Rusty Russell [Tue, 26 Jun 2012 06:46:18 +0000 (16:16 +0930)]
bytestring: new module.

11 years agoAvoid compiler errors if u32 is defined as a type
Alessandro Guido [Wed, 20 Jun 2012 08:46:19 +0000 (10:46 +0200)]
Avoid compiler errors if u32 is defined as a type

Fixes this error:
/hash.h:304:13: error: two or more data types in
declaration specifiers

11 years agoantithread, failtest: use ccan/err instead of err.h.
Rusty Russell [Sat, 9 Jun 2012 06:06:45 +0000 (15:36 +0930)]
antithread, failtest: use ccan/err instead of err.h.

11 years agoopt: avoid using err.h.
Rusty Russell [Sat, 9 Jun 2012 06:04:56 +0000 (15:34 +0930)]
opt: avoid using err.h.

Seems it's not available on Solaris.

11 years agoerr: actually implement replacement versions!
Rusty Russell [Fri, 8 Jun 2012 11:19:32 +0000 (20:49 +0930)]
err: actually implement replacement versions!

This is where you see the genius of the originals: you can't implement them
without horrible hacks to get the program name :(

11 years agoMerge branch 'master' of ozlabs.org:ccan
Rusty Russell [Fri, 8 Jun 2012 10:58:01 +0000 (20:28 +0930)]
Merge branch 'master' of ozlabs.org:ccan

11 years agoconfigurator: add HAVE_ERR_H test.
Rusty Russell [Fri, 8 Jun 2012 07:51:04 +0000 (17:21 +0930)]
configurator: add HAVE_ERR_H test.

11 years agoccan/err: new err.h-replacing module.
Rusty Russell [Fri, 8 Jun 2012 07:37:03 +0000 (17:07 +0930)]
ccan/err: new err.h-replacing module.

Seems like Solaris doesn't have err.h, as discovered by Samba.

11 years agotools/create-ccan-tree: Add basic waf support
Michael Ellerman [Fri, 25 May 2012 06:38:08 +0000 (16:38 +1000)]
tools/create-ccan-tree: Add basic waf support

This adds a "waf" buildtype to create-ccan-tree. When passed it
generates a basic wscript for building everything into a libccan.a

It doesn't support running the generator, so you need to provide
config.h

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
11 years agotools/create-ccan-tree: Add --build-type=automake
Jeremy Kerr [Thu, 24 May 2012 05:48:19 +0000 (13:48 +0800)]
tools/create-ccan-tree: Add --build-type=automake

Add a new build type to create an appropriate Makefile.am for the
newly-created ccan tree.

Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
11 years agotools/create-ccan-tree: Add --build-type=TYPE
Jeremy Kerr [Thu, 24 May 2012 01:48:00 +0000 (09:48 +0800)]
tools/create-ccan-tree: Add --build-type=TYPE

Replace the --exclude-configurator argument with a
single --build-type=TYPE argument, allowing future expansion of build
system types (and allowing source-tree-only creation). We currently
support:

 * 'make' (just the Makefile, equivalent to --exclude-configurator)
 * 'make+config' (current default)

Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
11 years agotools/create-ccan-tree: replace --exclude-tests with --copy-all option
Jeremy Kerr [Thu, 24 May 2012 03:49:10 +0000 (11:49 +0800)]
tools/create-ccan-tree: replace --exclude-tests with --copy-all option

Rather than explicitly excluding the tests, just copy the source files
by default. Add an option (--copy-all) to include all of the non-source
stuff in each module.

Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
11 years agotools: ccan_depends requires a config.h
Jeremy Kerr [Tue, 22 May 2012 09:19:24 +0000 (17:19 +0800)]
tools: ccan_depends requires a config.h

Commit a77cc282 causes tools/create-ccan-tree to fail, as it can't build
tools/ccan_depends (via `make tools/ccan_depends`) without a
configuration header present.

This change adds a dependency on config.h, so that the configurator
kicks-in prior to building ccan_depends.o.

Other tools don't need this dependency, as tools/ccan_depends is built
during the Makefile 'include' process.

Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
11 years agoconfig.h: don't include in git repository.
Rusty Russell [Thu, 17 May 2012 03:44:18 +0000 (13:14 +0930)]
config.h: don't include in git repository.

We create and upload an example for the web anyway, if people really need it.

11 years agotools: Add create-ccan-tree utility
Jeremy Kerr [Wed, 16 May 2012 03:02:56 +0000 (11:02 +0800)]
tools: Add create-ccan-tree utility

Add a script to create a ccan source tree for inclusion into projects'
distributed code.

create-ccan-tree takes a list of ccan modules and copies them, plus any
dependent modules, into a target directory. Enough build infrastructure
is added to build libccan.a from the ccan modules.

Typical usage for my project that uses talloc and read-write-all:

  lib/ccan.git/tools/create-ccan-tree --exclude-tests \
lib/ccan/ talloc read-write-all

- this uses a git submodule in $PWDlib/ccan.git to create a source tree
in $PWD/lib/ccan, containing code for talloc and read-write-all.

Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com>
12 years agoasort: fix test when typesafe_cb not supported. origin/suncc
Rusty Russell [Thu, 29 Mar 2012 04:28:33 +0000 (14:58 +1030)]
asort: fix test when typesafe_cb not supported.

Solaris CC seems to support typeof, but not __builtin_types_compatible_p.

12 years agocast: make sure suncc sees a constant.
Rusty Russell [Thu, 29 Mar 2012 04:28:33 +0000 (14:58 +1030)]
cast: make sure suncc sees a constant.

cast_const() et. al. are supposed to be a constant expression, so you can do things like:
static char *p = cast_const(char *, (const char *)"hello");

Unfortunately, a cast to intptr_t and arithmetic makes suncc reject it as
a constant expression.  We need the cast, because (1) the expression could be
a void *, so we can't just add to it, and (2) gcc complains with -Wcast-qual
without it.

So instead of adding BUILD_BUG_OR_ZERO, we use a ? :, which keeps everyone happy.

12 years agoccan_tokenizer: don't assume __VA_ARGS__ can be empty.
Rusty Russell [Thu, 29 Mar 2012 04:28:23 +0000 (14:58 +1030)]
ccan_tokenizer: don't assume __VA_ARGS__ can be empty.

That's a gcc extension.

12 years agocast: test/compile_fail-cast_static.c should fail without COMPOUND_LITERALS.
Rusty Russell [Tue, 27 Mar 2012 05:10:45 +0000 (15:40 +1030)]
cast: test/compile_fail-cast_static.c should fail without COMPOUND_LITERALS.

It still gave a warning on gcc, because casting a char to a char* gives a warning.  Not so on sun CC.

12 years agoccanlint: module_links test must link with module.
Rusty Russell [Tue, 27 Mar 2012 05:01:27 +0000 (15:31 +1030)]
ccanlint: module_links test must link with module.

Gcc doesn't include unused inline functions, even without -O, but Solaris CC
does, so fails to link block_pool where one inline function refers to a
non-inline function.

12 years agoasprintf: #include <stdarg.h> in test/run.c
Rusty Russell [Tue, 27 Mar 2012 04:37:50 +0000 (15:07 +1030)]
asprintf: #include <stdarg.h> in test/run.c

We get away with it on Linux, not on Solaris.

12 years agoccanlint: tests_compile_coverage needs GCC.
Rusty Russell [Tue, 27 Mar 2012 04:36:46 +0000 (15:06 +1030)]
ccanlint: tests_compile_coverage needs GCC.

We only support gcc/gcov so far.

12 years agoccanlint: add ilog dependency.
Rusty Russell [Tue, 27 Mar 2012 04:22:13 +0000 (14:52 +1030)]
ccanlint: add ilog dependency.

This only matters on non-gcc, where ilog functions are not just mapped to builtins.

12 years agotap: assume variadic macros.
Rusty Russell [Tue, 27 Mar 2012 04:08:13 +0000 (14:38 +1030)]
tap: assume variadic macros.

The Sun C compiler has them, but fails this overzealous check.

12 years agoopt: fix Solaris compile.
Rusty Russell [Tue, 27 Mar 2012 04:00:29 +0000 (14:30 +1030)]
opt: fix Solaris compile.

Need sys/termios.h for struct winsize.

12 years agoiscsi: use <sys/filio.h> on Solaris.
Rusty Russell [Tue, 27 Mar 2012 03:54:00 +0000 (14:24 +1030)]
iscsi: use <sys/filio.h> on Solaris.

Needed for FIONREAD.

12 years agoalloc: fix return of void.
Rusty Russell [Tue, 27 Mar 2012 03:45:19 +0000 (14:15 +1030)]
alloc: fix return of void.

Sun CC complains.

12 years agotools: don't use __attribute__
Rusty Russell [Tue, 27 Mar 2012 03:45:18 +0000 (14:15 +1030)]
tools: don't use __attribute__

We have compiler.h for that.

12 years agotools: fix bogus unreachable return.
Rusty Russell [Tue, 27 Mar 2012 03:45:18 +0000 (14:15 +1030)]
tools: fix bogus unreachable return.

12 years agotools/configurator: fix test for /proc/self/maps.
Rusty Russell [Tue, 27 Mar 2012 03:45:18 +0000 (14:15 +1030)]
tools/configurator: fix test for /proc/self/maps.

Header file was wrong, suncc gives warning about missing open prototype, causing configurator to fail.

12 years agoMakefile: generate config.h in two stages
Rusty Russell [Tue, 27 Mar 2012 03:45:16 +0000 (14:15 +1030)]
Makefile: generate config.h in two stages

This means we don't create an empty file if configurator fails.