bupsplit.c: remove extra-large stack-allocated array from selftest().

In some rare cases involving userspace threads (where you're running the
selftest function for some reason?) this could cause stack overflow or
excess memory usage.  Let's just do it with plain malloc().

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
options.py: relicense to 2-clause BSD license.

At the request of a few people who would like to us it in their own
projects.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
cmd/ftp: fix tab completion on MacOS.

MacOS doesn't use the "real" readline, and the clone it uses is slightly
incompatible in its bindings.  Just bind both and it seems to work on both
MacOS and Linux.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
cmd/ftp: don't do MacOS readline bindings on non-MacOS.

I thought it was harmless, but apparently it makes the 'b' command not work
on Linux machines.  Oops.

Thanks to Gabriel Filion and gernot on IRC for reporting this.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
options.py: don't crash given semi-invalid optspecs.

It's kind of weird to provide an argument without a description, but it's
not crash-worthy (especially when the crash was a totally unhelpful
exception stack trace).  While we're here, test for a couple of other ones
that didn't cause a crash, but we want to keep it that way.

And fix the copyright message; actually options.py started in 2010.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
options.py: clean up handling of --no-* options.

The particular bug that triggered this (in a project other than bup) was of
the form:

	n,no-stupid       don't be stupid

Where it would actually end up setting stupid=1 by accident, and -n would
mean --stupid, not --no-stupid.  As part of fixing it, you can now also do
this:

	n,no-stupid,smart   don't be stupid (ie. be smart)

and it'll work as it should: n == smart == no-stupid == not stupid.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
options.py: get rid of end-of-line whitespace.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
shquote: add docstrings and a new quotify_list() function.

And associated tests.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Import new wvtest.py.

From wvtest project commit c2197e2caeda8dd8c2dc3dbe5df1eaa7cd177aa1.
Adjust Node.__cmp__() to compare full paths.

The function now returns immediately if the two arguments are the same
Python object, otherwise it compares the full path name (rather than
just the file name).

Discussion: https://groups.google.com/group/bup-list/browse_thread/thread/1afc33b26394d69e/1a7a8155a1005600

Signed-off-by: Gabriele Santilli <gabriele@colellachiara.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Add test for "child named after parent" bug.

The added test shows that saving a node with the same name as the root
of the tree fails.

Changing Node.__cmp__() to compare by full paths should fix the
problem.

Signed-off-by: Yung-Chin Oei <oei.yungchin@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Mention that option values will be converted to integers when possible.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Set python-mode python-indent to 4 in .dir-locals.el.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Add "xstat" itself to the xstat optspec usage message.

Thanks to Jean-Baptiste <jbd@jbdenis.net> for pointing it out.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
cmd/drecurse: correctly pass excluded_paths to recursive_dirlist

The excluded_paths argument was being passed as a positional argument,
but its position actually corresponded to the 'bup_dir' argument, so
'bup drecurse --exclude=/foo/bar /foo' has never worked.

Signed-off-by: Aneurin Price <aneurin.price@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Extend README for NetBSD.

Add NetBSD to the list of systems on which bup is known to work.  Give
hints for bup usage on NetBSD, including the location of the fuse
bindings and the pkgsrc entry.  Caution about incorrect cycle
detection on fuse mounts.  Add pkgsrc URLs.

Signed-off-by: Greg Troxel <gdt@lexort.com>
Reviewed-by: Gabriel Filion <lelutin@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Documentation/bup-save.md: document --date option.

Signed-off-by: Jakob Matthes <jakob.matthes@gmail.com>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
Documentation/bup-save.md: change --strip-prefix to --strip-path.

Signed-off-by: Jakob Matthes <jakob.matthes@gmail.com>
Reviewed-by: Zoran Zaric <lists@zoranzaric.de>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/bloom.py: fix minor documentation typos.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Add a bup "tick" before indexing to avoid timestamp race.

Signed-off-by: Rob Browning <rlb@defaultvalue.org>