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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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.
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.
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.
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>
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.
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>
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>
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>
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:
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.
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.