Rusty Russell [Mon, 25 May 2015 05:41:56 +0000 (15:11 +0930)]
crypto/shachain: detect if we're inserting a bogus hash.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 25 May 2015 05:24:28 +0000 (14:54 +0930)]
crypto/shachain: a bit more common code.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 25 May 2015 05:04:15 +0000 (14:34 +0930)]
crypto/shachain: add design document.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 25 May 2015 04:19:41 +0000 (13:49 +0930)]
crypto/shachain: new module
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 25 May 2015 02:08:46 +0000 (11:38 +0930)]
crypto/sha256: new module.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Sun, 24 May 2015 10:03:05 +0000 (19:33 +0930)]
tools: add HAVE_UNALIGNED_ACCESS test.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 20 May 2015 07:54:22 +0000 (17:24 +0930)]
timer: simple optimization for large number of timers.
This is still pretty stupid, but greatly reduces my routing-sim time.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 20 May 2015 01:21:31 +0000 (10:51 +0930)]
timer: brute force corruption fix.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 19 May 2015 20:51:43 +0000 (06:21 +0930)]
timer: put level-0 optimization directly into find_first.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 19 May 2015 06:59:54 +0000 (16:29 +0930)]
timer: fix two corruption bugs.
We fill the upper buckets after we've moved on from the first bucket
in this layer. This means two things:
1) If we have to look at an upper layer, we need to look at the next bucket,
unless offset is 0.
2) We need to keep looking up layers in the corner case, too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 19 May 2015 04:52:13 +0000 (14:22 +0930)]
timer: better dump code.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 19 May 2015 02:36:37 +0000 (12:06 +0930)]
timer: fix timer_check() to iterate all levels.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Thu, 14 May 2015 06:55:52 +0000 (23:55 -0700)]
str/hex: to-from hexstring conversion routines.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 12 May 2015 22:22:29 +0000 (15:22 -0700)]
htable: add pre-sized option.
I thought this was slowing down my program; it turned out they were
all hashing to the same value. But it might be useful.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Joel Stanley [Tue, 5 May 2015 11:53:30 +0000 (21:23 +0930)]
Add Travis continuous integration
This enables building of the CCAN and running of all the tests on
https://travis-ci.org/
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Rusty Russell [Sat, 25 Apr 2015 06:41:55 +0000 (16:11 +0930)]
doc: english fixup.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 24 Apr 2015 06:20:54 +0000 (15:50 +0930)]
web: remove unused db dir
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 24 Apr 2015 06:16:21 +0000 (15:46 +0930)]
web: remove unused directory.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 24 Apr 2015 05:42:43 +0000 (15:12 +0930)]
Delete unused file.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 24 Apr 2015 05:30:54 +0000 (15:00 +0930)]
web: Create webpages-unchecked target for running on server.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Delio Brignoli [Sun, 12 Apr 2015 13:27:25 +0000 (15:27 +0200)]
tal_stack
Hi Rusty,
Thanks for reviewing the patch. V2 is attached, see my comments below.
> On 31 Mar 2015, at 02:36, Rusty Russell <rusty@rustcorp.com.au> wrote:
>
> Delio Brignoli <brignoli.delio@gmail.com> writes:
>> Hi All,
>>
>> tal_stack implements a (trivial) stack of tal contexts. Would this be a worthy addition to CCAN? (not necessarily in its current form).
[…]
> This is cute; I’ve seen similar used in Samba. It's
Indeed, it was inspired by talloc_stack.h ;-)
[…]
> You are missing a _info file: I would create that, and put your example
> in an Example: section there.
I moved the module and tests under can/tal/stack and added a LICENSE and _info.
> Other random advice:
> 1) You should also document the tal_newframe function (particularly note
> that you're expected to tal_free the result, and that it will free
> any future unfreed frames). And note that it’s not threadsafe.
Done.
> 2) You probably want tal_newframe to be a macro, and hand file and line
> thought to the tal_alloc_ call. That makes debugging nicer when
> you iterate the tree.
Done. The macro is calling a tal_newframe_() function because I’d rather not make the module’s stack variable ‘public’.
> 3) Consider whether you want to declare a dummy type 'struct tal_stack'.
> Probably pretty unnecessary since it’s quite clear.
Skipped this one. We can declare it later if we change our minds.
Thanks
—
Delio
From
c2ceb9258d97b0dcb72e7b6986cfd2bd394b254e Mon Sep 17 00:00:00 2001
From: Delio Brignoli <dbrignoli@audioscience.com>
Date: Sun, 15 Mar 2015 13:26:40 +0100
Subject: [PATCH] tal_stack: new module - V2
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Peter Barker [Fri, 10 Apr 2015 01:26:23 +0000 (11:26 +1000)]
ccanlint: avoid segfault when module_builds' linking fails
In the case that the objects built but linking failed, module_builds.c
called score_file_error with a NULL ccan_file object and 0 for line
number.
score_file_error assumed that the ccan_file object it is passed was
not-NULL when appending file errors to the score's aggregate error
string. It attempted to dereference it to get "fullname".
score_error was factored out from score_file_error. It takes a
"source" parameter, which is the file's full name (and possibly line
number) in the score_file_error case, and the ccan module name in the
case of link failure.
Peter Barker [Mon, 9 Mar 2015 04:59:48 +0000 (15:59 +1100)]
base64: implements rfc4648, the base64 encoding
Encode buffers into base64 according to rfc4648.
Decode base64-encoded buffers according to the same standard.
Signed-off-by: <pb-ccan@barker.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 30 Mar 2015 06:27:38 +0000 (16:57 +1030)]
tools/ccanlint: slight neatening of license logic.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Peter Barker [Wed, 25 Feb 2015 03:34:14 +0000 (14:34 +1100)]
ccanlint - avoid e.g. GPL vs LGPL mismatch in license checking
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Eric Wong [Fri, 24 Oct 2014 22:02:32 +0000 (22:02 +0000)]
list: add list_for_each_rev_safe{,_off} macros
Deleting while iterating backwards will be needed in the
Ruby st_foreach_reverse_check implementation if we decide
to port Ruby's st.c to use ccan/list.
ref: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/65408
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Eric Wong [Fri, 24 Oct 2014 22:02:31 +0000 (22:02 +0000)]
list: add list_for_each_rev_off macro
And re-implement list_for_each_rev in terms of list_for_each_rev_off
to avoid duplicating iteration logic.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Eric Wong [Fri, 24 Oct 2014 22:02:30 +0000 (22:02 +0000)]
list: new list_for_each{, _safe}_off_dir_ macros
These internal iteration macros will make implementing reverse
iteration simpler. For now, reimplement existing list_for_each_off
and list_for_each_safe_off macros on top of these macros to
prove they pass existing tests.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Eric Wong [Fri, 24 Oct 2014 22:02:29 +0000 (22:02 +0000)]
list: list_swap to exchange elements
This allows deleting and re-inserting an element in place
of the deleted element without branching.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Eric Wong [Fri, 24 Oct 2014 22:02:28 +0000 (22:02 +0000)]
list: list_add_after and list_add_before functions
These make it easy to add a new element before or after an
existing element in the middle of the list.
The existing list_add and list_add_tail functions are trivially
reimplemented on top of these new functions.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 30 Mar 2015 05:23:45 +0000 (15:53 +1030)]
stringbuilder: fix ccan/str test dependency.
It's a test dependency, not a core one, so it belongs under "testdepends".
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Jeremy Kerr [Mon, 18 Aug 2014 10:45:39 +0000 (18:45 +0800)]
endian: Fix cpu_to_be64 on big-endian
Commit
9e2c88b5 added an extra return (with an unconditional byteswap)
in cpu_to_be64. This breaks on big-endian, where we shouldn't be
byteswapping.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Stuart Longland [Fri, 22 Aug 2014 23:25:09 +0000 (09:25 +1000)]
stringbuilder: Functions for joining strings.
This is a small couple of functions for joining lists of strings
together. The lists can either be varadic arguments or arrays, and
delimiters are optional.
This patch incorporates some advice from David Gibson on the original
module.
Rusty Russell [Mon, 30 Mar 2015 06:46:08 +0000 (17:16 +1030)]
Makefile: add ntdb.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 20 Mar 2015 01:06:52 +0000 (11:36 +1030)]
ntdb: fix up tests.
Mainly include path fixes.
Also Samba's unit tests were enhanced to detect the prefixes
helpapi and helprun to indicate an object was to be linked against
only api/run tests. We hack around that by #including the helper
code instead.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 20 Mar 2015 01:06:28 +0000 (11:36 +1030)]
ntdb: assume HAVE_CCAN in header.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 18 Mar 2015 03:39:33 +0000 (14:09 +1030)]
ntdb: fix up _info.
It was missing dependency information, and a description of ntdb.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 18 Mar 2015 03:38:50 +0000 (14:08 +1030)]
ntdb: move python bindings to subdir.
The other option would be to require Python.h, which seems overkill.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 18 Mar 2015 03:37:48 +0000 (14:07 +1030)]
ntdb: remove config.h
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 17 Mar 2015 01:55:21 +0000 (12:25 +1030)]
Merge branch 'ntdb' of https://github.com/ddiss/ccan into ddiss-ntdb
Rusty Russell [Mon, 16 Mar 2015 21:46:28 +0000 (08:16 +1030)]
invbloom: singleton callback for when destroying a singleton, too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Disseldorp [Mon, 16 Mar 2015 14:15:31 +0000 (15:15 +0100)]
ntdb: add _info file
The Authors entries were added based on source file copyright
statements. Full details can be found via the upstream Samba Git
repository.
Signed-off-by: David Disseldorp <ddiss@suse.de>
David Disseldorp [Mon, 16 Mar 2015 13:08:57 +0000 (14:08 +0100)]
ntdb: link to common LGPL-3 license
Signed-off-by: David Disseldorp <ddiss@suse.de>
David Disseldorp [Mon, 16 Mar 2015 11:58:33 +0000 (12:58 +0100)]
ntdb: build core components via static Makefile
As part of Samba, ntdb was built using the Waf build system. As part of
ccan, convert this to a simple Makefile, and add a static config.h.
The Makefile only builds core ntdb components for now - libntdb and
tools.
Signed-off-by: David Disseldorp <ddiss@suse.de>
David Disseldorp [Fri, 13 Mar 2015 16:45:16 +0000 (17:45 +0100)]
ntdb: next-generation trivial key-value database
ntdb is a partial rewrite of Samba's Trivial Database, providing > 4GB
database scalability and an improved API.
Obtained from the Samba repository at git://git.samba.org/samba.git, as
of
bd13405e8570e9a5942165a8c52a2bc3fdc9d96e.
See Samba's Git changelog for authorship details.
Signed-off-by: David Disseldorp <ddiss@suse.de>
Rusty Russell [Sun, 15 Mar 2015 05:37:26 +0000 (16:07 +1030)]
invbloom: reduce hash count to 3.
Kalle shows the superiority of 3 (as does the paper for > 50 buckets).
https://github.com/kallerosenbaum/bitcoin-iblt/wiki/Diff-count-VS-failure-probability
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Sun, 15 Mar 2015 05:36:59 +0000 (16:06 +1030)]
invbloom: add callback for when an element becomes a singleton.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Sun, 15 Mar 2015 02:53:36 +0000 (13:23 +1030)]
invbloom: remove unused structure field.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 14 Nov 2014 02:45:18 +0000 (13:15 +1030)]
cdump: ignore __attribute__ (gcc extension).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 14 Nov 2014 02:28:58 +0000 (12:58 +1030)]
cdump: handle multi-line preprocessor directives.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 14 Nov 2014 00:21:29 +0000 (10:51 +1030)]
cdump: add CDUMP() support.
This lets you annotate your headers with notes for cdump.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 14 Nov 2014 00:20:01 +0000 (10:50 +1030)]
cdump: handle array sizes and comments better.
We can now parse array sizes properly: comments and extra [] pairs
will no longer confuse us.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 11 Nov 2014 05:40:21 +0000 (16:10 +1030)]
io: fix example in io_plan.h which didn't compile.
This was found because ccanlint now looks for examples here too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 11 Nov 2014 05:25:54 +0000 (15:55 +1030)]
cdump: add useful tool to generate enum name string table.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 11 Nov 2014 05:25:54 +0000 (15:55 +1030)]
cdump: handle , at end of enums.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 11 Nov 2014 05:25:48 +0000 (15:55 +1030)]
cdump: new module.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Tue, 11 Nov 2014 05:23:27 +0000 (15:53 +1030)]
pushpull: new module.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 10 Nov 2014 04:30:26 +0000 (15:00 +1030)]
ccanlint: offer to insert license comments where they're missing.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 10 Nov 2014 04:30:06 +0000 (15:00 +1030)]
ccanlint: check all headers for examples.
pushpull module doesn't have examples in pushpull.h.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Fri, 7 Nov 2014 04:38:03 +0000 (15:08 +1030)]
invbloom: new module for IBLTs.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Thu, 30 Oct 2014 22:53:26 +0000 (09:23 +1030)]
Makefile-ccan: bytestring now has source.
Reported-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 29 Oct 2014 05:59:56 +0000 (16:29 +1030)]
io: update for new timer API.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 29 Oct 2014 05:40:21 +0000 (16:10 +1030)]
timer: make timer_del() idempotent, add timer_init().
This catches duplicate timer_add() calls, as well as meaning we don't
need to track if the timer is active before calling timer_del().
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 29 Oct 2014 05:32:46 +0000 (16:02 +1030)]
timer: change timers_expire() to return a single timer.
The linked list method was problematic, especially if timers delete
other expired timers (eg. the next one in the expired list: the timer_del
will delete it from expired, but that's a bit unexpected).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Sat, 11 Oct 2014 16:46:57 +0000 (18:46 +0200)]
bytestring: Add initializer macro
The BYTESTRING macro is constant, since it's designed to take a string
literal, but it doesn't count as constant since it involves an (inlined)
function call. That means it can't be used in a static storage duration
initializer.
Unfortunately, I can't see a portable way to make something which can be
used as an initializer, but which can also be used in other contexts where
BYTESTRING() can be used, so this patch introduces BYTESTRING_INIT() which
is similar to BYTESTRING() but produces an initializer.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Sat, 11 Oct 2014 16:47:28 +0000 (18:47 +0200)]
bytestring: Use CONST_FUNCTION
The bytestring() constructor function satisfies the constraints of
CONST_FUNCTION, so mark it as such.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Mon, 28 Jul 2014 09:33:33 +0000 (19:33 +1000)]
bytestring: Split bytestrings by a string delimiter
This introduces the functions bytestring_splitstr_first() and
bytestring_splitstr_next() which can be used to iterate through substrings
of a bytestring separated by a specified substring.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Mon, 28 Jul 2014 09:31:36 +0000 (19:31 +1000)]
bytestring: Split bytestrings by a set of character delimiters
This introduces the functions bytestring_splitchrs_first() and
bytestring_splitchrs_next() which can be used to iterate through substrings
of a bytestring separated by any of a given set of delimiter characters.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Mon, 28 Jul 2014 09:31:11 +0000 (19:31 +1000)]
bytestring: Split bytestrings by a character delimiter
This introduces the functions bytestring_splitchr_first() and
bytestring_splitchr_next() which can be used to iterate through substrings
of a bytestring separated by a single, specified delimiter character.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Wed, 22 Oct 2014 13:37:22 +0000 (15:37 +0200)]
bytestring: Implement bytestring_spn() and bytestring_cspn()
Add bytestring_spn() and bytestring_cspn() functions which, in analogy to
strspn() and strcspn() return the lengths of initial sub-bytestrings which
either contain only a given set of bytes, or anything except a given set
of bytes.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Sat, 26 Jul 2014 12:51:22 +0000 (22:51 +1000)]
bytestring: Implement bytestring_bytestring()
Add a bytestring_bytestring() function which, in analogy with strstr() and
memmem() finds one bytestring within another.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Wed, 22 Oct 2014 13:35:26 +0000 (15:35 +0200)]
bytestring: Add bytestring_index and bytestring_rindex() functions
Add bytestring equivalents of the index() and rindex() standard functions
which search for characters/bytes within a bytestring.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Sun, 19 Oct 2014 10:26:29 +0000 (12:26 +0200)]
bytestring: bytestring_starts() and bytestring_ends() functions
This implements bytestring_starts() and bytestring_ends() which
will test if a given bytestring starts or ends with another given
bytestring.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Sun, 19 Oct 2014 10:22:49 +0000 (12:22 +0200)]
bytestring: Add bytestring_slice function
Add a bytestring_slice() function to take a sub(byte)string of a
bytestring.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Sun, 19 Oct 2014 10:20:14 +0000 (12:20 +0200)]
bytestring: Add bytestring_byte() function
Add a bytestring_byte() function to get a single byte / character
from a bytestring.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Wed, 22 Oct 2014 11:56:53 +0000 (13:56 +0200)]
mem: Implement memrchr()
The memrchr() function, which works like memchr(), but searches from the
back of the region to the front is implemented in the GNU C library, but
isn't standard.
This patch adds an implementation of the function to the mem module, when
it's not available in the system C library.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Wed, 22 Oct 2014 11:56:52 +0000 (13:56 +0200)]
mem: Correct testcases
Currently the 'mem' module testcases use test/run.c even though they don't
rely on access to the module internals. They're also missing an include
of mem.c, which has the effect that on systems with a C library memmem()
implementaiton, only that is tested, not the (re-)implementation in the
mem module itself. This corrects that by moving run.c to api.c/
Additionally, the memmem() testcases don't cover the case where the
"needle" appears multiple times in the "haystack". This patch also adds
such a test.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson [Wed, 22 Oct 2014 11:56:51 +0000 (13:56 +0200)]
mem: Rename memmem module to mem
Currently the 'memmem' module does nothing but provide an implementation of
the memmem() function if it is missing from the standard C library.
However there are other functions (e.g. memrchr()) also missing from some
C library implementations, so rename the module to mem to allow future
inclusion of other functions.
This also updates the rfc822 module - the only existing user of the
memmem module - to use the new name.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Chris McCormick [Sat, 25 Oct 2014 10:55:58 +0000 (18:55 +0800)]
Syntax highlighting for module example code using prettify. Note: prettify is introduced with an svn checkout into the web directoy.
Chris McCormick [Sat, 25 Oct 2014 09:43:30 +0000 (17:43 +0800)]
Removed more tables where they aren't required. Improved table layout.
Chris McCormick [Sat, 25 Oct 2014 13:19:15 +0000 (21:19 +0800)]
New page layout, font, background image. Replaced table tags with headers and paragraph tags as appropriate. Redesigned logo. Added stylesheet to specify layout more easily. Meta tag for mobile device friendliness.
Chris McCormick [Sat, 25 Oct 2014 13:12:27 +0000 (21:12 +0800)]
Standards compliance - XML html doctype, charset meta tag.
Chris McCormick [Sat, 25 Oct 2014 11:12:49 +0000 (19:12 +0800)]
When building webpages, skip clean-tree check if WEBDEV flag is set.
Chris McCormick [Sat, 25 Oct 2014 11:02:29 +0000 (19:02 +0800)]
Fix for broken links/images on website 'junkcode' pages.
Chris McCormick [Wed, 22 Oct 2014 16:00:46 +0000 (00:00 +0800)]
Changed the look of the website. Added a new logo design (source SVG included). Fixed an issue with junkcode prefix not being set (broken links and images on current site). Removed /tmp/ccan in clean as it was preventing 'make webpages' running twice. Brought the HTML closer to standards compliance (doctype, encoding). Added meta tag for mobile device browsers to render nicely.
Rasmus Villemoes [Tue, 7 Oct 2014 20:19:41 +0000 (22:19 +0200)]
configurator: Fix CTZ detection
The literal "1" in "1 << (sizeof(long{, long})*8 - 1)" should be 1L or
1LL, so that the expression has the right type. Otherwise, the shift
is only by 31 bits on x86 (other platforms may behave differently). To
avoid language lawyers shouting UB at me, and since
__builtin_ctz{,l,ll} formally takes unsigned parameters, use UL and
ULL suffixes.
Also, fix a typo (missing parenthesis) in the code for CTZLL causing
the detection of __builtin_ctzll to always fail for the wrong reason.
Signed-off-by: Rasmus Villemoes <rv@rasmusvillemoes.dk>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 13 Oct 2014 02:46:29 +0000 (13:16 +1030)]
Add eratosthenes to Makefile-ccan list.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Thu, 2 Oct 2014 14:15:01 +0000 (00:15 +1000)]
eratosthenes: Implementation of the Sieve of Eratosthenes
This adds a new "eratosthenes" module which implements the standard
Sieve of Eratosthenes algorithm for locating small prime numbers.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Thu, 2 Oct 2014 14:15:00 +0000 (00:15 +1000)]
bitmap: Implement bitmap_ffs()
This adds a bitmap_ffs() function to find the first (by the usual bitmap
bit ordering) 1 bit in a bitmap between two given bits.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Thu, 2 Oct 2014 14:14:59 +0000 (00:14 +1000)]
bitmap: Extend allocation functions
The bitmap module already has a simple allocation helper, which returns
an uninitialized, dynamically allocated bitmap of a given size.
This extends this with bitmap_alloc[01]() which allocate bitmaps and
initialize them to all zero or all one.
It also adds bitmap_realloc[01]() which reallocate an existing bitmap,
preserving existing bits, and setting any new bits to all zero or all one.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Thu, 2 Oct 2014 14:14:58 +0000 (00:14 +1000)]
bitmap: Add functions to set/clear ranges of bits
Add bitmap_zero_range() and bitmap_fill_range() functions which will set
a contiguous range of bits in the bitmap to 0 or 1.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Thu, 2 Oct 2014 14:14:57 +0000 (00:14 +1000)]
bitmap: Switch bit indices to unsigned long
Currently all bit indices used in the bitmap module are represented as
'int'. These conceptually should be unsigned. In additional limiting
these to ints potentially prevents use of very large bitmaps. So, change
these all to unsigned long.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Tue, 9 Sep 2014 14:22:54 +0000 (00:22 +1000)]
lstack: Linked list stack implementation
This new module provides a simple stack implementation as a singly
linked list.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Tue, 9 Sep 2014 14:22:53 +0000 (00:22 +1000)]
lqueue: Linked list queue implementation
This new module provides a simple queue implementation as a singly
linked (circular) list.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
David Gibson [Tue, 9 Sep 2014 14:22:52 +0000 (00:22 +1000)]
container_of: Add container_of_or_null()
It's quite common to have a pointer which could be either a pointer to a
structure member, or NULL. This needs special casing with container_of(),
or it will convert NULL into something strange.
This patch adds container_of_or_null(), which will return NULL if passed
(an appropriately typed) NULL, or the containining structure as
container_of() otherwise.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 27 Aug 2014 06:57:37 +0000 (16:27 +0930)]
io: use normal linked lists.
There seems to be a bug with the overloaded single-linked list.
Rewrite.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Wed, 27 Aug 2014 06:27:24 +0000 (15:57 +0930)]
list_del_init/list_node_init: for multiple list_del() calls.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 18 Aug 2014 17:07:19 +0000 (02:37 +0930)]
tal/str: use tal/grab_file not grab_file in example.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 18 Aug 2014 17:03:03 +0000 (02:33 +0930)]
charset: make example use tal/grab_file instead of grab_file.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Rusty Russell [Mon, 18 Aug 2014 16:55:04 +0000 (02:25 +0930)]
ccan_tokenizer: remove warnings with gcc
/home/rusty/devel/cvs/ccan/ccan/ccan_tokenizer/test/run.c:898:66: warning: initialization discards ‘const’ qualifier from pointer target type [enabled by default]
#define T(txt, ...) {txt, sizeof(txt)-1, array_count_pair(struct token, __VA_ARGS__)}
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>