
	No longer update Changelog, add more useful info in the git log, please.


2008-01-26  Junichi Uekawa  <dancer@debian.org>

	* cowdancer-ilistdump.c (main): update for test.

	* cowdancer.c (verify_ilist_header, load_ilist): 
	* ilist.h (ILISTSIG): 
	* ilistcreate.c (ilistcreate): add header and signature checking.

2008-01-10  Junichi Uekawa  <dancer@debian.org>

	* parameter.c (parse_parameter): add error checking.

2007-12-04  Junichi Uekawa  <dancer@debian.org>

	* tests/900_test_pbuilder.sh: use debootstrap instead of
	cdebootstrap, which is currently broken.

2007-12-03  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.1: add a comment on ENOMEM

2007-11-02  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (cpbuilder_build): write to "/.ilist" inside chroot, not
	ilistpath.

2007-10-28  Junichi Uekawa  <dancer@debian.org>

	* parameter.c (parse_parameter): fix parameter passing for --debbuildopts.

2007-10-25  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c (cpbuilder_build): support debbuildopts
	* parameter.c (parse_parameter, load_config_file): 
	* parameter.h: support debbuildopts

	* qemubuilder.c: add support for --components in qemubuilder.
	* parameter.c (parse_parameter): add --components option.
	(load_config_file): support COMPONENTS option

2007-10-15  Junichi Uekawa  <dancer@debian.org>

	* debian/qemubuilder.files: install bash-completion file to qemubuilder

	* Makefile: install bash_completion.

	* bash_completion.qemubuilder: create (a start of) qemubuilder bash completion script.

	* bash_completion.cowbuilder: add cowbuilder bash completion script.

2007-09-10  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (main): specify cowdancer-reuse
	(cpbuilder_internal_cowcopy): remove .ilist file here.
	(get_ilistfile_path, cpbuilder_internal_cowcopy)
	(cpbuilder_build): consolidate common code to get_ilistfile_path.

	* qemubuilder.c (run_second_stage_script): set date / time inside
	chroot with date command; it will be different by a few seconds.

2007-09-07  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.c: fix case where .ilist didn't exist before.
	
	* qemubuilder.c: fix typo from "Jean-Baptiste Note"
	<jbnote@gmail.com>
	(run_second_stage_script): get network device name with ifconfig
	and grep. Can I assume 'ethX' here?

2007-09-06  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c (fork_qemu): change 'termination signal' to
	'termination message' so that it's not confusing.

2007-09-04  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.c: delete .ilist file if reuse flag is not set.

	* cowbuilder.c (cpbuilder_create): add cleanup code.

	* qemubuilder.c: cosmetic fixes.

2007-09-03  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c (create_ext3_block_device): use mke2fs -F instead
	of yes|mke2fs
	(fork_qemu): do not handle fd '0', so that tty control can be
	done.  
	(fix_terminal): fix termios after exit from qemu, at least put
	echo on.
	(fork_qemu): Handle exit-codes.

2007-09-01  Junichi Uekawa  <dancer@debian.org>

	* Makefile (check-syntax): add check-syntax target for flymake mode.
	Remove redundant #include statements.

	* cowbuilder.c: run cowdancer-ilistcreate within chroot if it
	exists.

	* parameter.c: 
	* forkexec.c: move fork/exec code from parameter.c

	* tests/014_ilistdump_test.sh: rewrite testsuite to use the generic dumping code.
	* Makefile: install dumping code.
	* cowdancer-ilistdump.1: document
	* cowdancer-ilistdump.c: create dumping code, from testsuite data.

2007-08-31  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.1: add reference to cowdancer-ilistcreate
	* cowdancer-ilistcreate.1: document.
	* Makefile (install): install ilistcreate.
	* cowdancer-ilistcreate.c: create new command.

2007-08-29  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c (cpbuilder_create): add aptitude into chroot.

2007-08-21  Junichi Uekawa  <dancer@debian.org>

	* parameter.c: config file parsing improved by patch from Jan-Marek Glogowski 

2007-06-27  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (initialize_functions): work around glibc bug: dlvsym failure
	isn't setting dlerror.
	(load_ilist): close fd used for mmap after use.

2007-06-21  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (initialize_functions): try to load chown@@GLIBC_2.1
	if it exists.
	It is translated to lchown on i386, if I try to load the unversioned symbol.

2007-06-19  Junichi Uekawa  <dancer@debian.org>

	* parameter.c (load_config_file): support BUILDPLACE
	configuration.
	(parse_parameter): make it an error that BUILDPLACE is not
	set. Default is set in pbuilderrc.
	(parse_parameter): process --distribution command-line option
	properly.

	* qemubuilder.8: 
	* cowbuilder.8: update documentation for dumpconfig.

	* qemubuilder.c (cpbuilder_help): 
	* cowbuilder.c (cpbuilder_help): 
	* parameter.c (parse_parameter): add dumpconfig command.

2007-06-17  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.8: add examples

	* qemubuilder.c (qemu_arch_qemu): change x86_64/i386 logic.

2007-06-09  Junichi Uekawa  <dancer@debian.org>

	* tests/014_ilistdump_test.sh: change deprecated sort +2 to -k 2

	* tests/014_ilistdump_test.c: fix testsuite

	* Makefile: fix rules to include ilistcreate.

	* cowbuilder.c: ignore ./home

	* cow-shell.c:
	* ilistcreate.c (ilistcreate): move function, and reorganize code.

2007-06-06  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c: clean up code and generally initialize variables.

	* Makefile (install): qemubuilder installed to sbin, since it
	needs root privilege

	* qemubuilder.c (copy_dscfile): support signed .dsc file.

	* parameter.h: 
	* parameter.c: new files, moved common code from cowbuilder/qemubuilder

2007-06-05  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (load_config_file): 
	* qemubuilder.c (load_config_file): set -e in sourcing configuration file.

2007-06-04  Junichi Uekawa  <dancer@debian.org>

	* tests/902_test_cowbuilder_fail.sh, etc.: skip when ran inside
	cowbuilder.

	* qemubuilder.1: document ARCH= option, and 
	add a sample pbuidlerrc

2007-05-28  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.1: document buildresult.
	* cowbuilder.8: 

	* cowbuilder.c: support buildresult

	* qemubuilder.c: support buildresult

2007-05-27  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c: sync twice before shutdown.

	* qemubuilder.1: create from cowbuilder doc.

	* cowbuilder.8: fix doc

	* qemubuilder.c: support INITRD config option.

	* Makefile (install): add install target for qemubuilder.

2007-04-18  Junichi Uekawa  <dancer@debian.org>

	* Makefile: do not install qemubuilder for now.

	* qemubuilder.c (qemubuilder_create): fix deb source line.
	(qemu_arch_qemu): return kvm only when kvm is available.
	make this work with x86_64 host x86_64 target.	

2007-04-05  Junichi Uekawa  <dancer@debian.org>

	* qemubuilder.c: initial import to cowdancer repository.  rename
	functions to 'qemubuilder_'.
	(qemubuilder_create): add mirror place to call to 'debootstrap
	--second-stage'.

2007-03-08  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c(ctor): add constructor

	* tests/021_test_open.c (main): C source for testing it.
	(main): add check that initial open is the problem.

	* tests/021_test_open.sh (TESTCODE): create test for close(0);open(XXX,XXXX)=0;

2007-03-04  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.c (main): remove use of /usr/lib and use value of
	LIBDIR

	* cowdancer.spec: create specfile

	* Makefile (install): fix makefile

2006-12-31  Junichi Uekawa  <dancer@debian.org>

	* Makefile (%.o): do not use strict aliasing for compiling
	cow-shell.c

	* cow-shell.c (ilistcreate): add debug hook.

	* tests/020_test_lchown.sh: add new test.

	* cow-shell.c (ilistcreate): include symbollic links to the list.

	* cowdancer.c (check_inode_and_copy, and others): do not
	canonicalize file name for lchown case. Add a new flag and change
	every function to use it.

2006-12-21  Junichi Uekawa  <dancer@debian.org>

	* tests/900_test_pbuilder.sh: do not call pdebuild through sudo.

2006-10-29  Junichi Uekawa  <dancer@debian.org>

	* tests/902_test_cowbuilder_fail.sh: use workaround hooks.

	* tests/901_test_pbuilder_create.sh: use workaround hooks.

	* tests/900_test_pbuilder.sh: use workaround hooks.

2006-08-31  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (cpbuilder_update): fix to use command-line options.

2006-08-26  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c: copyright update

	* debian/README.Debian: update

	* cowbuilder.8: add see-also.

	* cowbuilder.c (cpbuilder_help): add comment of other pbuilder options.

	* cowbuilder.8: fix up documentation to explain other options are
	passed through.

	* cowbuilder.c (main): fix up parameter handling

2006-08-20  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (cpbuilder_build, cpbuilder_login)
	(cpbuilder_execute, cpbuilder_update): abort and do not clean up
	if return code is wrong.

2006-07-26  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (cpbuilder_update): do not remove base.cow if
	update failed.

2006-06-24  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (main): s/basepath/buildplace/ for -B.

2006-06-21  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (cpbuilder_build): support COWDANCER_REUSE option
	in build target. pbuilder-satisfydepends seems faster now.  50
	seconds -> 33 seconds to build pbuilder inside chroot.

	* tests/902_test_cowbuilder_fail.sh: fix thinko.

	* cow-shell.1: document.

	* cow-shell.c (main): COWDANCER_REUSE option; it is definitely
	faster.

	[08:23:25]dancer64:linux-2.6> time echo exit| cow-shell
	Invoking /bin/bash
	
	real    0m0.323s
	user    0m0.059s
	sys     0m0.256s
	[08:23:25]dancer64:linux-2.6> time echo exit| COWDANCER_REUSE=yes cow-shell
	Invoking /bin/bash
	
	real    0m0.006s
	user    0m0.004s
	sys     0m0.002s

2006-06-15  Junichi Uekawa  <dancer@debian.org>

	* tests/901_test_pbuilder_create.sh: check for failure states in test.

	* tests/902_test_cowbuilder_fail.sh: check that exit code is
	processed properly; it seems like it isn't in some cases?

	* tests/010_test_noilistfile.sh: variable was wrong, it should be
	COWDANCER_ILISTFILE
	
	* cowbuilder.c (main): mkdir with 0777, not 777.

2006-06-11  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.c (ilistcreate): use find -links +1.
	(ilistcreate): fix the -type f location, it needs to be before
	-print0
	(ilistcreate): error out with a message when there is no
	hardlinked file.

	[14:32:00]dancer64:test> touch 1 2-1 3-1 4-1
	[14:32:07]dancer64:test> ln 2-1 2-2
	[14:32:10]dancer64:test> ln 3-1 3-2
	[14:32:13]dancer64:test> ln 3-1 3-3
	[14:32:14]dancer64:test> ln 4-1 4-2
	[14:32:18]dancer64:test> ln 4-1 4-3
	[14:32:19]dancer64:test> ln 4-1 4-4
	[14:32:20]dancer64:test> ls -li
	242255 -rw-r--r-- 1 dancer dancer 0 2006-06-11 14:32 1
	242258 -rw-r--r-- 2 dancer dancer 0 2006-06-11 14:32 2-1
	242258 -rw-r--r-- 2 dancer dancer 0 2006-06-11 14:32 2-2
	242262 -rw-r--r-- 3 dancer dancer 0 2006-06-11 14:32 3-1
	242262 -rw-r--r-- 3 dancer dancer 0 2006-06-11 14:32 3-2
	242262 -rw-r--r-- 3 dancer dancer 0 2006-06-11 14:32 3-3
	242263 -rw-r--r-- 4 dancer dancer 0 2006-06-11 14:32 4-1
	242263 -rw-r--r-- 4 dancer dancer 0 2006-06-11 14:32 4-2
	242263 -rw-r--r-- 4 dancer dancer 0 2006-06-11 14:32 4-3
	242263 -rw-r--r-- 4 dancer dancer 0 2006-06-11 14:32 4-4
	[14:32:22]dancer64:test> find -links +2
	./3-1
	./4-1
	./3-2
	./3-3
	./4-2
	./4-3
	./4-4
	[14:32:31]dancer64:test> find -links +1
	.
	./2-1
	./3-1
	./4-1
	./2-2
	./3-2
	./3-3
	./4-2
	./4-3
	./4-4
	[14:32:34]dancer64:test> find -links +3
	./4-1
	./4-2
	./4-3
	./4-4


	* cowdancer.c (check_inode_and_copy): test for regular files
	before investing too much.
	(check_inode_and_copy): check that st_nlink > 1, otherwise, it's
	not hardlinked at all.

	* tests/901_test_pbuilder_create.sh: fix test script to work around problem with debootstrap not supporting --debug

2006-06-06  Junichi Uekawa  <dancer@debian.org>

	* tests/900_test_pbuilder.sh: add debug option

	* tests/901_test_pbuilder_create.sh: add a test for bootstrapping each distribution.

2006-05-29  Junichi Uekawa  <dancer@debian.org>

	* tests/014_ilistdump_test.sh: sort both

	* tests/900_test_pbuilder.sh: use cowbuilder to test instead of
	hand-assembled stuff.

	* cowbuilder.c (cpbuilder_login): handle error
	(cpbuilder_execute, cpbuilder_update): handle error
	(main): create /var/cache/pbuilder/build/ directory if it doesn't
	already exist.
	(main): support --distribution option.
	(main): support --buildplace option.

	* cowbuilder.8: --basepath, not --basetgz.

2006-05-27  Junichi Uekawa  <dancer@debian.org>

	* cowbuilder.c (main): help iplementation.
	(pbuilder_help): help message.
	(main): 

2006-05-26  Junichi Uekawa  <dancer@debian.org>

	* debian/control: update description.

2006-05-24  Junichi Uekawa  <dancer@debian.org>

	* debian/TODO: update, note .ilist handling is a problem I have
	pondered and not reached any conclusions. I need to measure some
	timings and other stuff.

	* debian/changelog: fixed entry.

	* NEWS: added entry.

	* cowbuilder.c (main): implement save-after-login
	(cpbuilder_login, cpbuilder_execute)
	(cpbuilder_internal_saveupdate, cpbuilder_update): unify the
	replace-original routine.

	* debian/TODO: document more TODO items until cowbuilder becomes really usable.

	* cowbuilder.c: change default basepath and buildplace. basepath
	is in /var/cache/pbuilder/base.cow, and buildplace is in
	/var/cache/pbuilder/build.
	(cpbuilder_execute): effects of pbuilder --execute with -- seems sane.
	pbuilder documentation is updated with this insight.

	$ sudo pbuilder execute -- /bin/echo --world
	W: /home/dancer/.pbuilderrc does not exist
	Building the build Environment
	 -> extracting base tarball [/var/cache/pbuilder/base.tgz]

	$ sudo ./cowbuilder.c --execute hello --world
	./cowbuilder.c: unrecognized option `--world'
	Unhandled option

	[08:51:22]ibookg4:cowdancer> time sudo ./cowbuilder.c --execute -- /bin/echo hello --world
	 -> Copying COW directory
	 -> Invoking pbuilder
	DEBUG: 0: pbuilder
	DEBUG: 1: execute
	DEBUG: 2: --buildplace
	DEBUG: 3: /var/cache/pbuilder/build/cow9150
	DEBUG: 4: --no-targz
	DEBUG: 5: --internal-chrootexec
	DEBUG: 6: chroot /var/cache/pbuilder/build/cow9150 cow-shell
	DEBUG: 7: /bin/echo
	DEBUG: 8: hello
	DEBUG: 9: --world
	W: /home/dancer/.pbuilderrc does not exist
	 -> Running in no-targz mode
	 -> copying local configuration
	 -> mounting /proc filesystem
	ln: creating symbolic link `/var/cache/pbuilder/build/cow9150/etc/mtab' to `../proc/mounts': File exists
	 -> mounting /dev/pts filesystem
	 -> policy-rc.d already exists
	Obtaining the cached apt archive contents
	hello --world
	Copying back the cached apt archive contents
	 -> unmounting dev/pts filesystem
	 -> unmounting proc filesystem
	 -> Cleaning COW directory
	
	real	0m5.646s
	user	0m2.165s
	sys	0m2.290s


	* debian/README.Debian (BUGS): update

	* Makefile (install): install manual and install cowbuilder in sbin.

	* cowbuilder.8: rough manual

	* cowbuilder.c: introduce generic argument passing mechanism, and
	support all reasonable options pbuilder currently supports.

2006-05-22  Junichi Uekawa  <dancer@debian.org>

	* debian/TODO: update

2006-05-21  Junichi Uekawa  <dancer@debian.org>

	* Makefile: install cowbuilder

	* cowbuilder.c: add cowbuilder code.

2006-04-29  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.c (ilistcreate, main): instead of hard-coding
	".ilist", use ilistpath variable to specify the ilist location.

2006-03-05  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (check_inode_and_copy): make 'canonical' be always
	defined rather than conditionally using 's'

	* tests/019_test_filename_with_space.sh: test quote character also.

	* cowdancer.c (check_inode_and_copy): rewrite with exec.

	* tests/019_test_filename_with_space.sh: add test for filename with a space.

	* cowdancer.c (check_inode_and_copy): support filename with a
	space.  Doesn't support filename with a "'" character, but that'll
	need to be handled in a completely different way.

2006-01-25  Junichi Uekawa  <dancer@debian.org>

	* NEWS: update for 0.11

	* cow-shell.1: update manual. It does cross device boundaries.
	Note that -I or -i option should be used on debuild.
	Note that hardlinks are broken all the time.

	* cowdancer.c (check_inode_and_copy): return int.
	(open): set errno=ENOMEM
	(fchmod,...): check for error condition returned from check_inode_and_copy

2006-01-14  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (initialize_functions): use mkstemp to create a temp
	file.
	(check_inode_and_copy): thinko. fix ~~ handling.

	* tests/017_tempfilecheck.sh: fix temp file handling.

	* tests/015_test_ilistdelete.c: update to be a pthread-based test.

	* tests/018_testcxx.cc (main): test for C++ code.

	* tests/018_testcxx.sh: add test for C++ code

	* debian/changelog: 0.10 preparation.

	* NEWS: 0.10 preparation

	* tests/016_memleakcheck.sh: use mcheck to see if memory leaks
	happen.
	Why does this not fail when check is failing?

	* tests/015_test_ilistdelete.sh: disabled the check since it's
	difficult to formulate the test yet.

	* tests/002_test_open.c (main): fix thinko. It was never tested,
	really.

2006-01-13  Junichi Uekawa  <dancer@debian.org>

	* tests/015_test_ilistdelete.c (main): a preliminary
	implementation, this is wrong.
	I should also test pthread and doing something racy.

	* cowdancer.c (initialize_functions): logic error, if someone else
	is initializing and it has failed, we'd probably need to retry,
	not hang.

	* tests/015_test_ilistdelete.sh: test ilist delete code path.

2006-01-08  Junichi Uekawa  <dancer@debian.org>

	* NEWS: update

	* debian/TODO: document the problem with ld.so overwrite

	* cowdancer.c (check_inode_and_copy): try to tackle the problem of
	ld.so overwrite while exec.

	This happens because we do rename before cp.
	before:
	rename a a~~
	cp -a a~~ a (requires working libc)
	rm a~~

	modified:
	cp -a a a~~ 
	rename a~~ a

2006-01-07  Junichi Uekawa  <dancer@debian.org>

	* tests/900_test_pbuilder.sh: skip this test unless it's a known
	working location

	* Makefile: make it easier to see test failure results.

	* debian/pbuilder-test/000_prepinstall: 
	* debian/pbuilder-test/001_makecheck: testsuite to run make-check inside chroot.

	* tests/900_test_pbuilder.sh: 

	* debian/TODO: note that cpbuilder test fails today, because it's
	probably forking when it should not be.

	* Makefile: use VERSION string without debian dependency.

2005-12-29  Junichi Uekawa  <dancer@debian.org>

	* debian/TODO: update 

	* debian/README.Debian (BUGS): add fchown/fchmod notes.

	* tests/014_ilistdump_test.sh: add a test to check for ilist dumping.

	* tests/014_ilistdump_test.c: add a test program for dumping ilist file contents.

	* cowdancer.c (load_ilist): add error checks.

	* Makefile (%.o): define _REENTRANT

2005-12-28  Junichi Uekawa  <dancer@debian.org>

	* NEWS: update news file.

	* cowdancer.c: insert sched_yield in parts to make things look a
	bit more quasi-thread-safe.

2005-12-25  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (check_inode_and_copy): use bsearch
	(check_fd_inode_and_warn): use bsearch

	* ilist.h (compare_ilist): comparison function here.

	* cow-shell.c: move compare_ilist to header file.

	* tests/900_test_pbuilder.sh: ignore this test for now.

	* cowdancer.c (load_ilist): use mmap.

	* cow-shell.c: include ilist.
	
	* ilist.h (struct ilist_struct): create ilist struct separately.

2005-11-23  Junichi Uekawa  <dancer@debian.org>

	* debian/changelog: 0.7

	* tests/002_test_open.c: write(2) requires unistd.h

	* NEWS: add comments on what has been changed.

	* tests/900_test_pbuilder.sh (COWDEB): use a better algorithm for 
	determining the deb package to use.
	
	* Makefile (DESTDIR): export VERSION

	* tests/013_test_chmod.sh (TESTCODE): 
	* tests/012_test_chown.sh (NEWID): 
	* tests/004_test_fopen64.sh (TESTCODE): 
	* tests/003_test_fopen.sh (TESTCODE): 
	* tests/002_test_open.sh (TESTCODE): 
	* tests/001_test_symlink.sh (TESTDIR): 
	* tests/000_test_basic.sh (TESTDIR): cp -al 1/ 2/ no longer works,
	change to cp -al 1/ 2
	
	* cow-shell.c (main): work around new 'stat' feature, which doesn't 
	add a newline after --format.
	Add a space after it so that scanf can read in.
	Tested with Debian sarge and sid.

	* cow-shell.1: add reference to COWDANCER_DEBUG environmental variable.

	* cowdancer.c (debug_cowdancer_2, debug_cowdancer): use COWDANCER_DEBUG
	environment variable for debug toggling.

2005-11-02  Junichi Uekawa  <dancer@debian.org>

	* Makefile (VERSION): Change VERSION to be dpkg-parsechangelog-based

	* tests/012_test_chown.c (main): 
	* tests/013_test_chmod.c (main): do not test fchmod, fchown.

	* cowdancer.c (check_fd_inode_and_warn): do not die even if 
	fchown/fchmod is used; try allowing things to run albeit the warning...
	I am guessing test_pbuilder.sh is going to be non-functional.

2005-10-31  Junichi Uekawa  <dancer@debian.org>

	* tests/900_test_pbuilder.sh: update for 0.6
	 test fails for pbuilder test since fchmod is used here:
	
	    cowdancer-unsupported operation, read-only open and fchown/fchmod: 2049:274641
	    dpkg: error processing /var/cache/apt/archives/libc6-dev_2.3.5-7_amd64.deb (--unpack):
	     error setting ownership of `./usr/bin/gencat': No such file or directory


2005-10-28  Junichi Uekawa  <dancer@debian.org>

	* tests/013_test_chmod.c (main): 
	* tests/012_test_chown.c (main): expect fchown and fchmod to fail.

        * cowdancer.c (initialize_functions): chown, fchown, and lchown implementation. they look like the following:
	chown("/tmp/1/a", 1000, 24)             = 0
	fchown(3, 1000, 24)                     = 0
	lchown("/tmp/1/c", 1000, 24)            = 0
	fchown will be an unsupported operation, hopefully noone will use that.
	(check_fd_inode_and_warn, fchown, lchown, chown): implement.
	(chmod, fchmod): implement.
	chmod("/tmp/1/a", 0400)                 = 0
	fchmod(3, 0400)                         = 0
	
	* cowdancer.c (load_ilist): use calloc instead of malloc.
	(check_inode_and_copy): clear memory before match.
	Required to get working on my ibook. Probably the 
	structs weren't packed.

2005-10-08  Junichi Uekawa  <dancer@debian.org>

	* tests/012_test_chown.sh (TESTCODE): 
	* tests/013_test_chmod.sh (TESTCODE): 
	* tests/012_test_chown.c: 
	* tests/013_test_chmod.c: test for chown/chmod functionality.
	
2005-09-21  Junichi Uekawa  <dancer@debian.org>

	* cow-shell.c (main): SHELL may contain non-full path value.
	'SHELL=bash', execlp instead of execl.
	Fall back to /bin/sh if SHELL is bogus.

2005-08-30  Junichi Uekawa  <dancer@debian.org>

	* NEWS: 0.4 release.

	* tests/900_test_pbuilder.sh (COWDEB): update to 0.4; 
	note that this test depends on local ../cowdancer.
	It will be updated when cowdancer package exists in Debian.

2005-08-29  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (load_ilist): add error checking for NULL.

	* tests/010_test_noilistfile.sh: new test to test error checking; the log is more significant.

	* Makefile (VERSION): 0.4

	* cowdancer.c (load_ilist): errorcheck
	(outofmemory): do not kill myself.
	(initialize_functions): return 1 on error.
	(fopen, fopen64): return NULL on error
	(creat64, creat, open64, open): return -1 on error.

2005-08-20  Junichi Uekawa  <dancer@debian.org>

	* NEWS: update NEWS

	* debian/changelog: update changelog

	* tests/900_test_pbuilder.sh: use dsh as example, not cowdancer itself.

2005-08-19  Junichi Uekawa  <dancer@debian.org>

	* tests/900_test_pbuilder.sh: with fixed pbuilder 0.130, it works

	* cowdancer.c (likely_fopen_write, fopen, fopen64): implement fopen.
	(initialize_functions): implement fopen.

	* tests/004_test_fopen64.sh: 
	* tests/004_test_fopen64.c: 
	* tests/003_test_fopen.sh: 
	* tests/003_test_fopen.c: 
	* tests/002_test_open.sh: 
	* tests/002_test_open.c: Add testsuite. fopen test fails.

2005-08-18  Junichi Uekawa  <dancer@debian.org>

	* Makefile (check): fix redirect in testsuite.

	* cowdancer.c (check_inode_and_copy): use the canonical filename
	rather than the possible symbollic link.

	* tests/001_test_symlink.sh: create code to test symlink handling.

	* tests/README: add a readme.

	* tests/900_test_pbuilder.sh: rename to 900.

2005-08-17  Junichi Uekawa  <dancer@debian.org>

	* cowdancer.c (check_inode_and_copy): add hook to avoid looping around; should not be
	a problem, but as a safety measure.
	(check_inode_and_copy): Fix free routine location.
	(check_inode_and_copy): add debugging error message
	(check_inode_and_copy): check that the file is a regular file
	before trying to do anything on it; directories and special files
	and sockets really don't want this.

	* cow-shell.c (main): -xdev to find.

	* tests/001_test_pbuilder.sh: cow working simulation

	* Makefile (check): create logfiles.

2005-08-16  Junichi Uekawa  <dancer@debian.org>

	* tests/000_test_basic.sh: Created a basic test.

2005-08-13  Junichi Uekawa  <dancer@debian.org>

	* Makefile (VERSION): 0.2

	* cowdancer.c (load_ilist): buffer overflow.

	* Makefile: install manpage

	* cow-shell.1: create a manpage

	* cow-shell.c: unset COWDANCER_IGNORE

	* NEWS: create a NEWS file.

	* cowdancer.c: fix obscure messages.

	* cow-shell.c: fix a few thinko's

	* Makefile (clean): new target for cleaning.
	(BINARY): -ldl is required, some programs are not linked against -ldl.

	* cow-shell.c: created

	* Makefile: created.

	* cowdancer.c: Created.


 cowdancer -- a Copy-on-write data-access; No-cow-easy-replacement

 Copyright 2005 Junichi Uekawa
 GPL v2 or later.
