
2008-12-30  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_29.7 release.

	* sync_archive.c: new program created by combining compress_sparse and
	expand_sparse that, at this time, copies one archive into another.  
	* user_config.c (nwos_set_private_objects_path): new function to allow
	sync_archive to change the private path to the destination archive.


2008-12-29  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (lower_info_index, upper_info_index, check_chunk_density)
	(find_next_chunk_with_space): removed all of the experimental changes
	made in revisions 1.109, 1.110, and 1.111, which removed these
	variables and functions.
	(nwos_set_allocation_parameters, nwos_check_blocks_available): removed
	all changes made in revisions 1.109, 1.110, and 1.111, which removed
	all the changes made to these functions.  Compare this revision (1.113)
	to revision 1.108 and the only changes are the ones made in the
	alpha_29_5_branch (revisions 1.108.2.1, 1.108.2.2, and 1.108.2.3).


2008-12-27  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* config.h.in: merged changes from alpha_29_5_branch into main trunk.
	* configure.ac: merged changes from alpha_29_5_branch into main trunk.
	* disk_io.c: merged changes from alpha_29_5_branch into main trunk.
	* disk_usage.c: merged changes from alpha_29_5_branch into main trunk.
	* export_file.c: merged changes from alpha_29_5_branch into main trunk.
	* file.c: merged changes from alpha_29_5_branch into main trunk.
	* identify_disc.c: merged changes from alpha_29_5_branch into main
	trunk.
	* import_file.c: merged changes from alpha_29_5_branch into main trunk.
	* list_files.c: merged changes from alpha_29_5_branch into main trunk.
	* log.c: merged changes from alpha_29_5_branch into main trunk.
	* objectify.h: merged changes from alpha_29_5_branch into main trunk.
	* person.c: merged changes from alpha_29_5_branch into main trunk.
	* recrypt.c: merged changes from alpha_29_5_branch into main trunk.
	* security.c: merged changes from alpha_29_5_branch into main trunk.
	* verify_file.c: merged changes from alpha_29_5_branch into main trunk.


2008-12-26  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --

	* disk_io.c (nwos_read_block): Changed to initialize 'offset' variable
	to -1 when it is declared and removed code that specifically set it to
	-1 in two cases.

	* disk_io.c (nwos_read_block): Fix Bug #2354266 - Somtimes it aborts
	when entering wrong pass phrase.  Added code so that it returns false
	if the block is empty (I.E. the bit isn't set in the bit map).


2008-12-25  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --

	* verify_file.c (main): Fix print statement to eliminate warning on
	systems that define sizeof to be long unsigned (like OpenBSD) instead
	of just unsigned.  This also fixed Feature Request #1952357 - Fix to
	build on Mac OS X.

	* configure.ac (AC_CHECK_FUNCS): Fix Bug #2466388 - Added test for
	fdatasync function.
	* config.h.in (HAVE_FDATASYNC): Added undef for.
	* verify_file.c (shred): Added #ifdef so that if fdatasync is not
	available on the system it will use fsync instead.


2008-12-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --

	* person.c (nwos_list_persons): Fix Bug #2051304 - change to print a
	message that there are no persons stored in the system instead of
	asserting.


2008-12-23  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --

	* file.c (nwos_find_matching_path_and_file_association)
	(nwos_create_file_without_storing_data): Fix Bug #2026708 - change to
	use strlcpy and strlcat instead of strncpy and strncat.
	* log.c (nwos_log): change to use strlcpy instead of strncpy.
	* recrypt.c (save_objects, main): changed to use strlcpy instead of
	strncpy.
	* security.c (nwos_get_key_from_password): changed to use strlcpy
	instead of strncpy.

	* disk_io.c (index_compressed_file): changed to use strlcpy instead of
	strcpy.
	* file.c (nwos_read_files_disc_list): changed to use strlcpy instead of
	strcpy.
	* identify_disc.c (main): changed to use strlcpy instead of strcpy.
	* recrypt.c (ref_to_path): changed to use strlcpy instead of strcpy.

	* objectify.h (strlcpy, strlcat): changed the name of the 'len'
	parameter to 'size' to be consistent with the documentation (OpenBSD
	man pages).
	* log.c (strlcpy, strlcat): changed the name of the 'len' parameter to
	'size' to be consistent with the documentation (OpenBSD man pages) and
	added an assert to make sure the size is not zero.  No changes to the
	functionality of the code.


2008-12-21  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --

	* Version Alpha_29.6 release.

	* disk_usage.c: merged changes from CVS main trunk to get fixes for the
	graph.  NO changes were made on the branch.

	* file.c (find_file_path): changed so that the file path compare does
	not ignore case.  Now the file name main.html and Main.html are
	different names.  Part of fix for Bug #2427250. 

	* file.c (nwos_create_file): removed code that allowed a new path and
	file association to be created when both already existed but were not
	associated.  This allowed the original association to be hidden and
	then neither could be exported.

	* export_file.c (export_file): changed to return false if export failed
	or true if it succeeded, instead of void.
	(main): changed so that if export_file function returns false to set
	result to failed, so it exits with code 1.


2008-12-20  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --
	
	* file.c (find_path_and_file_association): Fix Bug #2454681 - the
	verify_file program is not sensitive to the minutes or seconds.

	* file.c (nwos_find_matching_path_and_file_association): changed to
	print if the assocition and the time stamp matched in addition to the
	path and file.

	* list_files.c (main): added code to mark which arguments had matches
	and report any that didn't at the end.  Also return an exit code of 1
	if any didn't match.


2008-12-19  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --
	
	* import_file.c (main): changed so that any PATH_NOT_FOUND,
	DUPLICATE_PATH, DUPLICATE_FILE, or MULTIPLE_FILES errors also cause
	it to exit with a 1 code.


2008-12-16  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- These changes were made on the CVS alpha_29_5_branch --
	
	* export_file.c (main): change to exit with a 1 status if any of the
	files specified on the command line were not found.

	* verify_file.c (process_file): changed to return false if the file
	wasn't found or if --remove was specified it wasn't removed because
	there was no known backup.
	(process_directory): changed to return false if any files weren't found
	or were not removed.
	(main): changed to return a 1 exit code if any files weren't found or
	were not removed.

	* import_file.c (main): change to exit with a 1 status if any of the
	files had errors or it was too full to add any files.

	* verify_file.c (process_file): when removing files, changed so that
	instead of asserting when a file doesn't match exactly, it prints a
	warning message and continues.  Part of fixing Bug #2427250.

	
2008-12-05  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_usage.c (display_graph): Fix Bug #2392474 - possible overflow in
	gigabyte calculation.  This technically was no longer a problem because
	of the previous change to have graph display 0 to 16 gigabytes instead
	of 0 to 100 percent, but it is better to have it fixed so any future
	changes won't break it again.
	

2008-11-28  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_usage.c (display_graph): Changed to display the graph in
	gigabytes instead of percent.
	
	* disk_usage.c (display_graph): Changed to also display allocated space
	in the graph with a '+' sign.
	
	* disk_usage.c (display_graph): Bug #2354269 - The graph printed by the
	disk_usage program is wrong.  Changed to divide the number of used
	blocks by the number of total blocks in that segment instead of the
	number of allocated blocks.


2008-11-15  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- This is from the CVS alpha_29_5_branch dated 2008-11-01 --
	
	* Version Alpha_29.5 release.


2008-11-03  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (check_chunk_density): new function to check which areas of
	a chunk meet the density requirement.


2008-11-02  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (Density_Split_Point, analyze_chunk_density): deleted, not
	going to work.


2008-11-01  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c - NOTE: this version is experimental and not usable.
	(lower_info_index, upper_info_index): new variables to pass area to
	allocate from to generate id function.
	(Density_Split_Point): new structure definition for passing back info
	on how the density of a chunk is divided up.
	(analyze_chunk_density): new function to analyze how the density of a
	chunk is divided up.
	(nwos_set_allocation_parameters): change to set skip parameters to one
	in small archives (not enough room to be completely random).
	(EXTRA_BLOCKS): define how many block to require in reserve.
	(nwos_check_blocks_available): started new algorithm - INCOMPLETE!


2008-11-01  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	-- This release is from the CVS alpha_29_5_branch on 2008-11-15 --
	
	* Version Alpha_29.5 release.


2008-10-31  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (MAXIMUM_PUBLIC_REFERENCE): added new to define
	the upper limit of public references (0x0fffffff).
	(MINIMUM_PRIVATE_REFERENCE): added new to define the lower limit of
	private references (0x10000000).
	(MAXIMUM_VALID_PRIVATE_REFERENCE): changed to MAXIMUM_PRIVATE_REFERENCE.
	(MINIMUM_TEMPORARY_REFERENCE): added new to define the lower limit of
	temporary references (0xfff00000).
	(MAXIMUM_TEMPORARY_REFERENCE): added new to define the upper limit of
	temporary references (0xffffffff).
	* objectify.h (Reference_Type): added two new types: Unknown_Reference
	and Temporary_Reference.
	(nwos_is_public_reference): added external declaration for.
	(nwos_is_private_reference): added external declaration for.
	(nwos_is_temporary_reference): added external declaration for.
	* objectify.c (is_valid_private_reference): moved to disk_io.c and
	renamed to nwos_is_private_reference.
	(nwos_initialize_objectify, nwos_create_root): changed 
	is_valid_private_reference to nwos_is_private_reference.
	(nwos_reference_type): moved to disk_io.c.
	* disk_io.c (nwos_is_public_reference): new function to test if a
	reference is a public reference.
	(nwos_is_private_reference): moved from objectify.c and renamed from
	is_valid_private_reference.
	(nwos_is_temporary_reference): new function to test if a reference is
	a temporary reference.
	(nwos_reference_type): moved from objectify.c.
	(nwos_initialize_disk_io): changed MAXIMUM_VALID_PRIVATE_REFERENCE to
	MAXIMUM_PRIVATE_REFERENCE.
	(nwos_allocate_new_chunk, uint32_ref_to_info_index): changed
	RESERVED_PUBLIC_BLOCKS to MINIMUM_PRIVATE_REFERENCE, and
	MAXIMUM_VALID_PRIVATE_REFERENCE to MAXIMUM_PRIVATE_REFERENCE.
	(nwos_hash_uint32_ref): changed
	RESERVED_PUBLIC_BLOCKS to MAXIMUM_PUBLIC_REFERENCE,
	MAXIMUM_VALID_PRIVATE_REFERENCE to MAXIMUM_PRIVATE_REFERENCE and
	RESERVED_PUBLIC_BLOCKS to MINIMUM_PRIVATE_REFERENCE.
	(nwos_check_blocks_available): changed MAXIMUM_VALID_PRIVATE_REFERENCE
	to MAXIMUM_PRIVATE_REFERENCE.
	(nwos_read_block): changed RESERVED_PUBLIC_BLOCKS to
	MAXIMUM_PUBLIC_REFERENCE.


2008-10-28  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (nwos_set_allocation_parameters): changed
	skip_backward and skip_forward parameters to uint32 instead of int32.
	* objectify.c (nwos_set_security_level): changed skip_backward
	parameters to positive values instead of negative values.
	* disk_io.c (chunk_skip_backward, chunk_skip_forward): changed to
	uint32 instead of int32.
	(nwos_set_allocation_parameters): changed skip_backward and 
	skip_forward parameters to uint32 instead of int32.  Changed assert for
	skip_backward to treat it as positive value instead of negative.
	(nwos_check_blocks_available): changed assert for chunk_skip_backward
	to treat it as a positive value instead of negative.


2008-10-27  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_disk_io): changed so that if the backup
	directory is an empty string (as it is if the environment variable is
	defined but empty) it doesn't create a backup (.dif) file.
	

2008-10-26  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_check_blocks_available): removed a new line character
	from the log message about allocating a new chunk.

	* disk_io.c (nwos_check_blocks_available): Added a hack so that when it
	reaches the end of the private chunk space it turns around and goes
	backwards.

	* disk_io.c (Bit_Map_Cache_Entry): changed 'index' member to
	'chunk_index'.  Before the 'index' was an index into the chunk_info
	table, now it is a direct index to the chunk.
	(write_bit_map, read_bit_map_into_cache, nwos_generate_new_1_in_N_id)
	(find_bit_map_in_cache, nwos_set_bit_in_map, nwos_clear_bit_in_map)
	(nwos_generate_new_closely_spaced_id): changed 'index' in bit map cache
	to 'chunk_index'.  Previously 'index' was the index into the chunk_info
	table.  This was necessary because if the chunk_info table is changed
	by having a new chunk inserted somewhere (as opposed to added at the
	end) the bit map cache will index into the wrong chunk.

	* disk_io.c (nwos_check_blocks_available): Bug #2184020 - Assert when
	adding files and chunk is near upper limit.  Fixed if statement that
	checks for reaching the last available chunk.

	* TSU_NOTIFICATION: this is a document describing the TSU NOTIFICATION
	process that I followed to notify the government of this project that
	performs encryption.  I did this so I could implement Feature Request
	#1985484 and it is also related to Feature Request #1994380.  See the
	document itself for more information.


2008-10-20  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (MAX_ROOT_TRANSFORMATIONS): changed back to 128.
	* objectify.c (root_transform_primes): deleted array, multiplying by
	primes did not distribute the result evenly over the entire space.
	(is_binary_number): new function that returns true if the number passed
	in is a power of 2 (1, 2, 4, 8, 16, etc.).
	(nwos_transform_root): changed to add the transform number to the upper
	byte of the reference id instead of multiplying by a prime number.
	(nwos_create_root): changed to randomly transform the root object so
	that it doesn't always land in the same location.


2008-10-19  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_usage.c (main): Fix Bug #2117258 - Seg fault running disk_usage.
	Changed for loop to only do used_private_chunks instead of 
	total_private_chunks because only space for used_private_chunks is
	malloc'd.


2008-10-02  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (MAX_ROOT_TRANSFORMATIONS): changed name from
	MAX_TRANSFORMATIONS and changed from 128 to 16.
	* objectify.c (is_valid_private_reference): changed name from
	is_valid_reference.
	(rotate_left, reverse_byte, reverse_bits): removed, no longer used.
	(root_transform_primes): array of 16, 32-bit prime numbers that are
	distributed from 0x10000000 to 0xffffffff.
	(nwos_transform_root): changed to multiply reference by a prime
	number instead of the rotating, inverting, and reversing.  One of the
	reasons for doing this was because there were certain values that did
	not transform well, 0x55555555 being a worst case example.
	

2008-09-30  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (MAX_TRANSFORMATIONS): definition of how many
	possible transformations can be done by nwos_transform_root.
	(nwos_transform_root): added external declaration for.
	* objectify.c (is_valid_reference): new function that returns true if
	reference passed in is a valid private reference (0x10000000 to
	0xffeffff).
	(rotate_left): new function that rotates a reference left the number of
	bits specified.
	(reverse_byte): new array with values that reverse left to right the
	bits in a byte (I.E. 0x7a -> 0x5e).
	(reverse_bits): new function that reversed the bits in a reference from
	left to right (I.E. 0x12345678 -> 0x1e6a2c48).
	(nwos_transform_root): new function that modifies a reference in a
	certain way depending upon a modification number passed in:
	    0         = no change,
	    1 to 31   = rotate left that number of bits,
	    32        = invert,
	    33 to 63  = invert and rotate left number - 32 bits,
	    64        = reverse bits end to end,
	    65 to 95  = reverse bits and rotate left number - 64 bits
	    96        = reverse bits and invert
	    97 to 127 = reverse bits, invert, and rotate left number - 96 bits.
	(setup_from_big_key): add assert to verify an object referencs is 4
	bytes.
	(nwos_initialize_objectify): add loop to try all possible
	transformations of the root object reference.


2008-09-25  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_disk_io): Fix Bug #2126403 - Assert when
	using compressed file.  Changed so that chunk_info table is not created
	and processed when reading from a compressed file.  This also fixed the
	problem where it complained about calculated sum of used blocks not
	matching stored count when reading from a compressed file.


2008-09-19  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_disk_io): added a warning message if it
	finds any chunks greater than MAXIMUM_VALID_PRIVATE_REFERENCE, which
	means there are blocks in the space now reserved for temporary blocks.


2008-09-18  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objecitfy_private.h (RESERVED_PRIVATE_BLOCKS): changed to 0xeff00000
	instead of RESERVED_PRIVATE_CHUNKS * USABLE_BLOCKS_PER_CHUNK which
	worked out to 0xeffffc40.
	(RESERVED_TEMPORARY_BLOCKS): new define that represents 256 megabytes
	or one mega blocks: 0x00100000 for temporary usage.
	(RESERVED_PRIVATE_CHUNKS): changed to allow for temporary blocks.
	(MAXIMUM_VALID_PRIVATE_REFERENCE): put in a hack for Alpha_29.5 because
	it doesn't come out even with odd sized (65504 block) chunks.  In
	Alpha_30, which will have even (65536 block) chunks it will be even.


2008-09-17  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_usage.c (display_graph): new function to display a bar graph of
	disk usage.
	(main): added call to display_graph.


2008-09-16  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_usage.c (calculate_blocks_used): changed to print a progress bar
	instead of blocks used per gigabyte.
	* Makefile.in (disk_usage): added progress_bar.o.

	* objectify.h (nwos_erase_progress_bar): added new external declaration
	for.
	* progress_bar.c (put_char): new function to write one character to the
	standard output and add it to the count.
	(put_string): new function to write a string to the standard output
	using the put_char function, so each character is counted.
	(put_decade): new function to print 0, 10, 20, etc. to standard output
	using the put_char function, so each character is counted.
	(nwos_start_progress_bar): change to call new put_string function
	instead of printf.
	(nwos_update_progress_bar): change to call new put_decade and put_char
	functions instead of printf.
	(nwos_erase_progress_bar): new function to erase the progress bar that
	has been printed.
	(nwos_finish_progress_bar): change to call new put_decade and put_char
	functions instead of printf.


2008-09-13  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* security.c (nwos_get_key_from_password): Fix Bug #2103915 -
	"If showing Pass Phrase it isn't obfuscated after entering".  Changed
	test to check for "Show" mode instead of "Hide" mode.


2008-09-07  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_29.4 release.

	* configure.ac: updated version to Alpha_29.4.

	* security.c (nwos_get_key_from_password): fixed so num_chars is set
	when reading pass phrase from environment variable.
	
	* security.c (display_help): new function to display help information
	at the pass phrase prompt.
	(nwos_get_key_from_password): added 'show', 'hide', 'none' and 'last'
	modes for entering pass phrase.  If 'quit' or 'exit' is typed at the
	pass phrase prompt it will exit without running.  Also changed to use
	fputc instead of fprintf for writing a single character.


2008-09-06  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* security.c (nwos_get_key_from_password): change to read pass phrase
	in non-canonical mode instead of using fgets.

	* config.h.in (TEST_PASS_PHRASE): removed, no longer used.
	(TEST_ENVIRONMENT_VARIABLE): added to define name of environment
	variable.
	* prep_disk.c (main): change to read environment variable instead of
	TEST_PASS_PHRASE to skip agree_no_warranty and understand security.
	* remove_file.c (main): change to read environment variable instead of
	TEST_PASS_PHRASE to skip verification that user really wants to do it.
	* security.c (nwos_get_key_from_password): change to read environment
	variable instead of TEST_PASS_PHRASE #define for testing pass phrase.


2008-09-01  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_29.3 release.

	* configure.ac: updated version to Alpha_29.3.

	* export_c_structs.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	
	* import_file (main): Fix Bug #2043130 - changed to print a warning
	message when an absolute path is given, instead of asserting.
	* verify_file (main): Fix Bug #2043130 - changed to print a warning
	message when an absolute path is given, instead of asserting.

	* objectify_private.h (nwos_create_root): changed to no take any
	parameters.
	* objectify.c (set_public_root_object): moved from prep_disk.c.
	(nwos_create_root): moved most of the code from prep_disk.c that
	prepared to create the root object.  Added a loop that reads the pass
	phrase twice and verifies they are the same before continuing.
	* prep_disk.c (main): moved almost all of the code that prepared to
	create the root object into the nwos_create_root function in
	objectify.c
	* add_password.c (main): moved almost all of the code that prepared to
	create the root object into the nwos_create_root function in
	objectify.c

	* disk_io.c (nwos_allocate_all_chunks_hack): removed, no longer used.
	
	* disk_io.c (nwos_allocate_new_chunk): fixed bug where it wasn't
	searching the chunk_info table to insert the new chunk.
	(chunk_info_reverse_index): table to translate from a chunk number to
	an index into the chunk_info table.
	(update_chunk_info_reverse_index): new function to update the
	chunk_info_reverse_index.
	(chunk_index_to_info_index): changed to just look the info index up
	in the chunk_info_reverse_index instead of doing the binary search.
	Which no longer works because the chunk index is not always in order.

	* objectify.c (setup_from_big_key): created from code extracted from
	nwos_initialize_objectify that sets up the Blowfish key, the sequence
	tables and returns the root object reference.
	(nwos_initialize_objectify): extracted code that sets up Blowfish key,
	the sequence tables, and the root object and created setup_from_big_key
	function.


2008-08-31  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (ref_to_offset): change so that if the hash returned by
	nwos_hash_ref is zero, return minus one instead of asserting.
	(nwos_read_block): change to return false if block is not found,
	ref_to_offset returned -1 or not found in compressed index.
	(nwos_write_block): assert if ref_to_offset returns a negavie value.
	(nwos_remove_object): assert if ref_to_offset returns a negavie value.
	* objectify.h (nwos_initialize_objectify): private_root_object_ref
	removed.
	(nwos_set_root_object): changed to return bool instead of void.
	* objectify.c (nwos_initialize_objectify): changed to not return the
	private_root_object_ref value, but call nwos_set_root_object instead.
	Also allows three attempts at entering correct pass phrase.
	(nwos_set_root_object): change to return boolean success or failure.
	* check_objects.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* computer.c (main): change for new nwos_initialize_objectify calling
	convention and remove call to nwos_set_root_object.
	* disc_list.c (main): change for new nwos_initialize_objectify calling
	convention and remove call to nwos_set_root_object.
	* dump_obj.c (main): change for new nwos_initialize_objectify calling
	convention and remove call to nwos_set_root_object.
	* expand_sparse.c (main): change to call nwos_initialize_disk_io
	instead of nwos_initialize_objectify because there is no need to have
	objectify up and running just to write blocks.
	* export_file.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* identify_disc.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* import_file.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* list_discs.c (main): change for new nwos_initialize_objectify calling
	convention and remove call to nwos_set_root_object.
	* list_files.c (main): change for new nwos_initialize_objectify calling
	convention and remove call to nwos_set_root_object.
	* log_disc.c (main): change for new nwos_initialize_objectify calling
	convention and remove call to nwos_set_root_object.
	* remove_file.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* rename_file.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* update_files_0028.c (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.
	* verify_file.c  (main): change for new nwos_initialize_objectify
	calling convention and remove call to nwos_set_root_object.

	* objectify.h (nwos_read_variable_sized_object_from_disk)
	(nwos_read_object_from_disk): changed to return bool (success or
	failure) instead of asserting on failures.
	* objectify.c (check_object_data): changed to return bool (success or
	failure) instead of void and exiting if failure.
	(nwos_read_variable_sized_object_from_disk)
	(nwos_read_object_from_disk): changed to return bool (success or
	failure) instead of asserting on failures.
	(nwos_set_root_object): added assert around call to
	nwos_read_object_from_disk.
	* acronym.c (nwos_acronym_to_string): added an assert around calls to
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* add_password.c (set_public_root_object): added an assert around call
	to nwos_read_object_from_disk.
	* check_objects.c (check_spelling, check_name, check_class, main): added
	an assert around calls to nwos_read_variable_sized_object_from_disk.
	(check_month): added an assert around call to
	nwos_read_object_from_disk.
	(check_file_path): added an assert around calls to
	nwos_read_variable_sized_object_from_disk & nwos_read_object_from_disk.
	* class_definition.c (feature_size, nwos_clone_class_definition)
	(nwos_read_class_definition, nwos_read_variable_sized_object_from_disk)
	(nwos_find_private_class_definition, nwos_find_public_class_definition)
	(nwos_clone_updated_class_definition): added an assert around calls to
	nwos_read_variable_sized_object_from_disk.
	(nwos_get_object_size, nwos_find_public_feature_definition) added an
	assert around calls to nwos_read_object_from_disk and
	nwos_read_variable_sized_object_from_disk.
	* date.c (find_year_from_cardinal, nwos_find_or_create_private_year)
	(find_month, nwos_find_or_create_private_month, find_month_and_day)
	(nwos_find_or_create_private_month_and_day, nwos_year_to_string)
	(find_date, nwos_month_number_to_string, nwos_date_to_string): added an
	asssert around calls to nwos_read_object_from_disk.
	* device.c (nwos_list_public_manufacturers)
	(nwos_find_public_manufacturer): added assert around call to
	nwos_read_object_from_disk.
	* disc_list.c (check_for_previous_version_and_link): added an assert
	around calls to nwos_read_variable_sized_object_from_disk and
	nwos_read_object_from_disk.
	* dump_obj.c (main): added assert around call to
	nwos_read_object_from_disk.
	* export_c_structs.c (class_to_type, output_class, main): added an
	assert around calls to nwos_read_variable_sized_object_from_disk.
	(output_feature): added an assert around call to
	nwos_read_object_from_disk.
	* export_file.c (main): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	(export_file): added assert around calls to nwos_read_object_from_disk.
	* file.c (find_file_path, nwos_find_disc_list, nwos_file_path_to_string)
	(nwos_find_matching_disc_list): added an assert around calls to
	nwos_read_variable_sized_object_from_disk.
	(nwos_number_of_files_for_path, nwos_create_file_path,nwos_create_file)
	(nwos_file_path_to_path_and_file_association, nwos_file_has_backup)
	(nwos_create_disc_list): added an assert around calls to
	nwos_read_variable_sized_object_from_disk & nwos_read_object_from_disk.
	(find_md5, nwos_create_md5, find_sha1, nwos_create_sha1, find_sha256)
	(nwos_create_sha256, nwos_find_path_and_file_association_by_index)
	(find_sha512, nwos_create_sha512, find_matching_file_from_size_md5_sha1)
	(nwos_file_is_stored, nwos_find_or_create_path_and_file_association)
	(nwos_add_info_to_existing_file, nwos_add_new_revision_of_file)
	(nwos_check_file_checksums, nwos_restore_file, nwos_file_is_identical)
	(nwos_find_disc_copy, nwos_create_disc_copy, nwos_find_storage_location)
	(find_path_and_file_association, nwos_create_storage_location): added
	an assert around calls to nwos_read_object_from_disk.
	* financial.c (nwos_find_public_credit_union, nwos_list_credit_unions)
	(nwos_list_public_credit_unions, nwos_find_private_credit_union)
	(nwos_find_or_create_private_credit_union, nwos_create_account)
	(nwos_find_account, nwos_describe_person): add an assert around calls
	to nwos_read_object_from_disk.
	(nwos_find_or_create_account_number, nwos_create_checking)
	(nwos_list_accounts): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	(nwos_find_account_number, nwos_account_number_to_string): added an
	assert around calls to nwos_read_variable_sized_object_from_disk.
	* identify_disc.c (main):added an assert around calls to
	nwos_read_variable_sized_object_from_disk.
	* language.c (nwos_find_language): added assert around call to
	nwos_read_object_from_disk.
	* list_discs.c (main): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* list_files.c (print_md5, print_sha1, print_sha256, print_sha512):
	added an assert around calls to nwos_read_object_from_disk.
	(main): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* log_disc.c (main): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* name.c (nwos_find_public_name, nwos_find_private_name)
	(nwos_create_name, nwos_name_to_string) added an assert around calls to 
	nwos_read_variable_sized_object_from_disk.
	* number.c (nwos_find_cardinal_number, nwos_create_ordinal_number)
	(nwos_find_ordinal_number, nwos_ordinal_number_to_string): added an
	assert around calls to nwos_read_object_from_disk.
	(nwos_cardinal_number_to_string): added an assert around calls to 
	nwos_read_variable_sized_object_from_disk.
	(nwos_create_cardinal_number): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* person.c (nwos_find_public_gender, nwos_find_private_gender)
	(nwos_find_or_create_private_gender, nwos_create_ssn)
	(nwos_add_birthday, nwos_find_person, nwos_list_persons)
	(nwos_describe_person): added an assert around calls to
	nwos_read_object_from_disk.
	* phone.c (nwos_find_public_area_code, nwos_find_private_area_code)
	(nwos_find_or_create_private_area_code, nwos_find_phone_number)
	(nwos_phone_number_to_string, nwos_phone_number_to_string)
	(nwos_add_mobile_phone, nwos_add_mobile_phone)
	(nwos_find_phone_for_person): added an assert around calls to
	nwos_read_object_from_disk.
	* prep_disk.c (set_public_root_object): added assert around call to
	nwos_read_object_from_disk.
	* recrypt.c (save_objects): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	(main): added assert around call to nwos_read_object_from_disk.
	* remove_file.c (main): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* rename_file.c (file_is_used_in_disc_list): added an assert around
	calls to nwos_read_variable_sized_object_from_disk.
	(create_new_path): added assert around call to
	nwos_read_object_from_disk.
	(main): added an assert around calls to nwos_read_object_from_disk and
	nwos_read_variable_sized_object_from_disk.
	* spelling.c (nwos_find_public_spelling, nwos_find_private_spelling):
	added an assert around calls to 
	nwos_read_variable_sized_object_from_disk.
	(nwos_create_public_spelling, nwos_create_private_spelling): added an
	assert around calls to nwos_read_object_from_disk and
	nwos_read_variable_sized_object_from_disk.
	* update_files_0028.c (main): added an assert around calls to
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* url.c (nwos_find_public_url, nwos_url_to_string): added an assert
	around calls to nwos_read_variable_sized_object_from_disk.
	(nwos_create_url): added an assert around calls to 
	nwos_read_object_from_disk & nwos_read_variable_sized_object_from_disk.
	* us_state.c (nwos_create_us_city, nwos_add_city, nwos_add_city)
	(nwos_describe_state, nwos_list_cities_in_state): added an assert
	around calls to nwos_read_object_from_disk.
	* word.c (nwos_find_word): added assert around call to
	nwos_read_object_from_disk.

	* objectify_private.h (nwos_read_object_from_disk): removed declaration
	because it is declared in objectify.h


2008-08-30  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.h (nwos_initialize_objectify): removed bf_key, linear, and
	serial parameters and added private_root_obj_ref.
	* objectify.c (nwos_initialize_objectify): removed bf_key, linear, and
	serial parameters and added private_root_obj_ref to return the private
	object reference back to the caller.
	* export_c_structs.c (main): remove old nwos_initialize_objectify
	parameters that are no longer passed to it and now pass root_obj_ref.
	Removed assert that tested linear and serial parameters for zero in
	public mode.
	* expand_sparse.c (main): changed parameters to
	nwos_initialize_objectify.
	* add_password.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* check_objects.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* computer.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* disc_list.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* dump_obj.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* export_file.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* identify_disc.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* import_file.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* list_discs.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* list_files.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* log_disc.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* prep_disk.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* remove_file.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* rename_file.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.
	* update_files_0028.c (main): changed to no longer deal with getting
	pass phrase and passing all of the key stuff to
	nwos_initialize_objectify.
	* verify_file.c (main): changed to no longer deal with getting pass
	phrase and passing all of the key stuff to nwos_initialize_objectify.

	* Makefile.in (clean_c_structs): new target that just removes
	export_c_structs and c_structs.h.
	(clean_all): removed cleaning Makefile and config.h.  Moved removal of
	export_c_structs and c_structs.h to new clean_c_structs target and
	added it as a dependency.  Also changed to call make in the
	subdirectories with "clean" instead of "clean_all".
	(distclean): added new clean_c_structs as a dependency so that
	export_c_structs and c_structs.h are deleted.  This was broken in the
	2008-07-31 change.
	* attic/Makefile.in (clean_all): removed.
	(dist_clean): removed config.log and config.status that aren't in the
	attic.
	* gnu/Makefile.in (clean_all): removed.
	(distclean): added Makefile to remove.
	* http/Makefile.in (clean_all): removed.


2008-08-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_29.2 release.

	* config.h.in (DEFAULT_LOG_FILE_PATH): removed, no longer used.
	* user_config.c (path_table): changed DEFAULT_LOG_FILE_PATH to NULL,
	not doing a default log file anymore.
	* log.c (nwos_log): added code to see if log_file_path is NULL or empty
	and disable logging if it is.
	* objectify.conf: changed to reflect that there is no longer a default
	log file.
	

2008-08-16  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

     -- These changes were made on the CVS branch_0030_new_chunk_info branch --

	* disk_io.c (write_bit_map): added code to compute the MD5 checksum of
	the chunk and store it in the chunk_info table.
	(md5sum_to_string): new function to convert a MD5 digest to a hex
	string for printing.
	(read_bit_map_into_cache): added code to compute the MD5 checksum of
	the chunk and verify it with the one stored in the chunk_info table.

	* prep_disk.c (main): added logging of total and private chunks.
	
	* patch_compressed.c (convert_0022_to_0029_header_to_0030_header): new
	function to copy the data from an old 0029 header to the new 0030
	header.
	(main): added code to call convert_0022_to_0029_header_to_0030_header
	if the version is less than 30 and to compare total_chunks instead of
	the old total_blocks.


2008-08-15  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

     -- These changes were made on the CVS branch_0030_new_chunk_info branch --

	* check_block_maps.c (main): changed for new Disk_Header with
	total_chunks instead of total_blocks.  Fixed for bit maps outside of
	16 megabyte chunks.  And changed summary printing to just print used,
	free and total private blocks (not including that used by system.
	* compress_sparse.c (main): changed for new Disk_Header with
	total_chunks instead of total_blocks.  Fixed for bit maps outside of
	16 megabyte chunks.
	* diff_compressed.c (main): changed for new Disk_Header with
	total_chunks instead of total_blocks.  Also added code to allow an
	older compressed file to be used as file 1.
	* disk_usage.c (calculate_blocks_used): removed subtraction of 32 from
	bits counted in bit map because the bit map itself is no longer
	included in the bit map.
	(main): changed for new Disk_Header with total_chunks instead of
	total_blocks.
	* expand_sparse.c (main): removed reference to total_blocks in
	Disk_Header because it has been replaced in the header with
	total_chunks and it was only used for printing in this program.


2008-08-14  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

     -- These changes were made on the CVS branch_0030_new_chunk_info branch --

	* disk_io.c (generate_new_completely_random_id): remove BIT_MAP_BLOCKS
	from reference calculation.

	* disk_io.c (nwos_set_bit_in_map, nwos_clear_bit_in_map)
	(nwos_test_bit_in_map, nwos_block_used, nwos_generate_new_1_in_N_id)
	(nwos_generate_new_closely_spaced_id): subtract BIT_MAP_BLOCKS when
	computing byte number because they are no longer included.


2008-08-13  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

     -- These changes were made on the CVS branch_0030_new_chunk_info branch --

	* disk_io.c (nwos_allocate_new_chunk, nwos_allocate_all_chunks_hack):
	removed code that set the first four bytes of the bit map to all ones
	because they no longer represent the bit map.
	(write_bit_map, read_bit_map_into_cache): changed to NOT skip over the
	first four bytes of the bit map when looping over it.  Before the first
	four bytes were for the bit map itself, which is no longer the case.
	(generate_new_completely_random_id): changed so that it can pick any
	byte in the bit map instead of excluding the first four.

	* disk_io.c (nwos_initialize_disk_io): changed to new Disk_Header
	format with total_chunks instead of total_blocks.


2008-08-12  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

     -- These changes were made on the CVS branch_0030_new_chunk_info branch --

	* objectify_private.h (USABLE_BLOCKS_PER_CHUNK) changed to the full
	65536 so data in each chunk can be up to an even 16 megabytes.
	(BLOCKS_IN_CHUNK): changed so it is USABLE_BLOCKS_PER_CHUNK (65536)
	plus BIT_MAP_BLOCKS (32) = (65568).
	(Disk_Header): changed to have total_chunks instead of total_blocks,
	it is easier to deal with.
	(Chunk_Info): changed SHA1 checksum to a MD5 checksum, because it uses
	less space and it will be sufficient for this purpose.
	* prep_disk.c (print_usage): changed to deal with chunks that have 16
	megabytes of data plus the bit map.
	(main): changed to deal with chunks that have 16 megabytes of data plus
	the bit map and the new Disk_Header that has total_chunks instead of
	total_blocks.

	* objectify_private.h (BIT_MAP_BLOCK_MASK): removed, was not used
	anywhere in the code and it will be incompatible with the even 16 MB
	chunks.


2008-08-11  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

     -- These changes were made on the CVS branch_0030_new_chunk_info branch --

	* configure.ac: updated version to Alpha_30 and version string to 0030
	in 'branch_0030_new_chunk_info' branch.
	* objectify_private.h (Chunk_Info): changed "uint16 used" member to
	"uint32 flags_used" so that a used count larger than 65535 can be
	stored and flags stored in the upper bits.  Also added space to store a
	SHA1 checksum.
	(CHUNK_INFO_USED_MASK, CHUNK_INFO_FULL_MASK): new defines to mask off
	just the used count in the "flags_used" member of the Chunk_Info table.
	* check_block_maps.c (main): changed to access new "flags_used" member
	of chunk_info table instead of the old "used" member.
	* compress_sparse.c (main): changed to swap new "flags_used" member of
	the chunk_info table as 32 bits instead of the old 16 bit "used"
	member.
	* disk_io.c (nwos_initialize_disk_io): changed to swap new "flags_used"
	member of the chunk_info table as 32 bits instead of the old 16 bit
	"used" member and to access the used block count via "flags_used".
	(void nwos_terminate_disk_io): changed to swap new "flags_used" member
	of the chunk_info table as 32 bits instead of the old 16 bit "used"
	member.
	(nwos_allocate_new_chunk, write_bit_map, read_bit_map_into_cache)
	(nwos_set_bit_in_map, nwos_clear_bit_in_map, find_starting_chunk)
	(generate_new_completely_random_id, find_first_low_density_in_chunk)
	(nwos_generate_new_closely_spaced_id): changed to access new
	"flags_used" member of chunk_info table instead of the old "used"
	member.
	* disk_usage.c (calculate_blocks_used):  changed to access new
	"flags_used" member of chunk_info table instead of the old "used"
	member.
	(main): changed to swap new "flags_used" member of the chunk_info table
	as 32 bits instead of the old 16 bit "used" member.
	

2008-08-10  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* configure.ac: updated version to Alpha_29.2.  I accidentally checked
	in the change to Alpha_30 into the trunk instead of the 0030 branch.
	I wanted the truck to stay at 0029 for now, so I created this version.

	* check_block_maps.c (main): added printing of path in "Missing magic
	number" and "Incorrect version in header" error messages.
	* compress_sparse.c (main): added printing of path in "Missing magic
	number" and "Incorrect version in header" error messages.
	* disk_io.c (nwos_initialize_disk_io): added printing of path in
	"Missing magic number" and "Incorrect version in header" error
	messages.
	* disk_usage.c (main): added printing of path in "Missing magic number"
	and "Incorrect version in header" error messages.


2008-08-09  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_29.1 release.

	* configure.ac: updated version to Alpha_29.1.

	
2008-08-05  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* progress_bar.c (nwos_finish_progress_bar): Fix Bug #2038862 - change
	to not assert if 100% was already done by nwos_update_progress_bar.


2008-08-04  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_29 release.


2008-08-03  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disc_list.c (main): added --ignore-empty-directories and
	--ignore-empty-files options.
	* log_disc.c (main): added --ignore-empty-directories and
	--ignore-empty-files options.

	* objectify.h (DISC_LIST_NUM_FILES_MASK, DISC_LIST_EMPTY_FILE_FLAG)
	(DISC_LIST_EMPTY_DIR_FLAG, DISC_LIST_ERROR_SHIFT, DISC_LIST_ERROR_MASK)
	(DISC_LIST_INVALID_TYPE_FLAG, DISC_LIST_TOO_MANY_FILES_FLAG): added
	definitions for.
	(nwos_read_files_disc_list): changed to return 'uint32' instead of
	'int' and 'num_files' parameter to uint32.
	* file.c (nwos_read_files_disc_list): changed to return 'uint32'
	instead of 'int' and 'num_files' parameter to uint32.  Changed to use
	new DISC_LIST_*_FLAGs for errors.
	* disc_list.c (main): changed to handle new return values from
	nwos_read_files_disc_list.
	* log_disc.c (main): changed to handle new return values from
	nwos_read_files_disc_list.


2008-08-02  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_read_files_disc_list): consolodated duplicate error
	handling code.

	* file.c (nwos_read_files_disc_list): Fix Bug #2035981 - "Disc_list
	reports empty directories when they are not".  Changed to return the
	number of files in a directory even when an error has occurred
	previously.


2008-08-01  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* reference_list.c (check_ref_list_data): renamed to 
	"ref_list_checksum_matches" and changed to return true if checksum
	matches and false if it doesn't, instead of printing an error and
	exiting.
	(read_ref_list_into_cache): changed so that it can handle reference
	lists that start out with the old encryption but then later change to
	the new encryption.  This is necessary because when adding to a
	reference list only the last block is re-written and so the first
	blocks can be old encryption and later blocks new encryption.

	* dump_obj.c (main): added call to log arguments to disable logging and
	fixed typo in print statement text.

	* remove_file.c (main): added call to log arguments.

	* objectify.c (nwos_read_object_from_disk)
	(nwos_read_variable_sized_object_from_disk): added setting header to
	point to the object back in so that when reading an object larger than
	one block it gets the data checksum from the correct place.

	* dump_obj.c (main): added code to print class name and dump object
	data in hex.


2008-07-31  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.c (nwos_read_object_from_disk_and_old_decrypt):
	added external declaration for.
	* objectify.c (check_object_header): renamed to 
	"object_header_checksum_matches" and changed to return true if checksum
	matches and false if it doesn't, instead of printing an error and
	exiting.
	(nwos_old_read_object_from_disk_and_decrypt): renamed to
	"nwos_read_object_from_disk_and_old_decrypt".
	(nwos_read_object_from_disk)
	(nwos_read_variable_sized_object_from_disk)
	(nwos_get_object_class_without_update)
	(nwos_read_object_headers_from_disk): changed so that if checksum does
	not match after reading with nwos_read_object_from_disk_and_decrypt it
	reads the block again with nwos_read_object_from_disk_and_old_decrypt.
	* reference_list.c (read_ref_list_into_cache): changed so that if
	class definition doesn't match nwos_reference_list_class_ref after
	reading with nwos_read_object_from_disk_and_decrypt it reads the block
	again with nwos_read_object_from_disk_and_old_decrypt.
	* file.c (nwos_file_is_identical, nwos_restore_file): changed so that
	if checksum doesn't match after reading a block with 
	nwos_read_object_from_disk_and_decrypt it reads the block again with
	nwos_read_object_from_disk_and_old_decrypt.
	* dump_obj.c (main):  changed so that if checksum doesn't match after
	reading a block with nwos_read_object_from_disk_and_decrypt it reads the
	block again with nwos_read_object_from_disk_and_old_decrypt.

	* Makefile.in (clean): moved removal of export_c_structs and
	c_structs.h to "clean_all" target.
	(clean_all): moved removal of export_c_structs and c_structs.h from
	"clean" target.

	* objectify.c (nwos_read_object_from_disk_and_old_decrypt): copied
	nwos_read_object_from_disk_and_decrypt before changing order.
	(nwos_write_object_to_disk_and_encrypt)
	(nwos_read_object_from_disk_and_decrypt): Feature Request #2006029
	"Reverse the order of the encryption" - changed the order of the
	blowfish encryption and the reordering of the bytes to make it harder
	to decrypt the data.  Originally it reordered the bytes first and then
	applied the encryption.  The problem with that was that if the
	encryption was broken it would be more trivial to reorder the data
	because the data itself would give hints as to the correct position of
	the data (zeros could be picked out for example).  Now the encryption
	is applied first and then the data is scrambled.  This way to crack it
	the descrambling has to be done first while the data is hidden, when
	there aren't any clues as to it's position.


2008-07-30  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.c (nwos_write_object_to_disk_and_encrypt)
	(nwos_read_object_from_disk_and_decrypt): eliminated 'ptrobj' variable
	in encrypt and decrypt functions, changed to use memcpy instead of for
	loop, and eliminated copying the first 8 bytestwice.

	* objectify.c (nwos_write_object_to_disk_and_encrypt)
	(nwos_read_object_from_disk_and_decrypt): changed 'buffer1' and
	'buffer2' in the decrypt and encrypt functions to 'scrambled' and
	'encrypted' respectively, to make it easier to follow the flow of the
	data.

	* objectify.c (save_unencrypted, save_add_random, save_mixed_up)
	(save_encrypted, compare_bufs): deleted, originally used to debug
	encryption but isn't needed now and is cluttering up the place.
	(nwos_write_object_to_disk_and_encrypt)
	(nwos_read_object_from_disk_and_decrypt): removed old DEBUG_ENCRYPTION
	code, no longer needed.

	* configure.ac: updated version to Alpha_29.


2008-07-27  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_28.4 release.

	* configure.ac: updated version to Alpha_28.4.


2008-07-26  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disc_list.c (main): changed to use return value from
	nwos_read_files_disc_list for exit code if it fails.
	
	* file.c (nwos_read_files_disc_list): added  test to 
	nwos_read_files_disc_list for empty files and fixed invalid test so it
	would merge -4 instead of writing over any existing errors.

	* file.c (nwos_read_files_disc_list): changed error processing in
	nwos_read_files_disc_list to make combining errors more generic (or'ing
	them).  Fixed too many files test to include result value and changed
	to return -8 for too many files instead of exiting.

2008-07-25  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_read_files_disc_list): commented out print statement
	that I forgot and left in the check in.

	* log_disc.c (file_names, files): changed from being local variables
	in "main" function to static global variables.
	(main): changed to call nwos_read_files_disc_list to get list of file
	names which can recursively do subdirectories.


2008-07-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.h (nwos_read_files_disc_list): added external declaration.
	* file.c (nwos_read_files_disc_list): moved read_file_names function
	from disc_list.c and renamed it.  Modified the parameters to pass in
	names array and number of files and return number of files read.  Also
	added code to deal with empty directories.  
	* disc_list.c (read_file_names): moved to file.c and renamed to
	nwos_read_files_disc_list.
	(main): changed to call renamed nwos_read_files_disc_list function and
	print error message if the directory was empty.

	* disc_list.c (read_file_names): changed to return boolean, true if all
	of the files were okay or false if any of the files were invalid types
	like symbolic links or devices.  Added subdirectory parameter so it can
	call itself recursively and fix to recursively read file names from
	subdirectories.
	(main): changed to call read_file_names function with a NULL parameter
	for the subdirectory to indicate that this is the root call.

	* objectify.h (MAX_FILES_PER_DISC_LIST): changed from 4096 to 1000000.

	* disc_list.c (num_files, file_names, files): changed from being local
	variables in "main" function to static global variables.
	(read_file_names): new function created from code extracted from "main"
	function.
	(main): moved variables "num_files", "file_names", and "files" out and
	made them static global variables.  Moved code that scanned all file
	names out into a new function "read_file_names" and called it instead.


2008-07-19  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_28.3 release.

	* configure.ac: updated version to Alpha_28.3.

	* prep_disk.c (main): removed #ifndef TEST_PASS_PHRASE around the code
	that asks if it is okay to overwrite the storage.  Too dangerous!!

	* objecitfy.c (nwos_create_root): added code to set the new
	'creating_root' static variable when creating the root object which has
	a public class definition.
	(nwos_write_object_to_disk): added test in assert for 'creating_root'
	variable being set if object being written doesn't have a private
	class.

	* update_files_0028.c (main): added call to set security level in
	case the FILE class definition gets updated to the latest version.
	Changed call to nwos_find_or_create_private_class_definition for the
	FILE class instead of just nwos_find_private_class_definition so that
	the updated FILE class will be cloned if it hasn't been already.

	* reference_list.c (nwos_add_to_references): changed to call
	nwos_get_object_class_without_update instead of nwos_get_object_class.
	This fixes a problem where cloning the updated file class definition
	called this function to add the new reference to the class definition
	reference list.  But when this called nwos_get_object_class it called
	get_file_00x_reference, which called get_file_references, which called
	find_private_class_defintion, which reads the class defintion reference
	list.  Unfortunately that was what was being added with this function
	so it wasn't in the list yet so it could not find the "FILE" class
	definition, then later puked because it didn't have the private FILE
	class definitions in the file_references array.

	* objecitfy.c (get_file_class_reference): added code to check to see if
	an updated private file class has been added after this was first
	called.

	* objectify_private.h (nwos_disk_io_is_read_only)
	(nwos_disk_io_is_read_write): added external declarations for.
	* disk_io.c (nwos_disk_io_is_read_only, nwos_disk_io_is_read_write):
	added to return status of storage (read_only flag).

	* class_definition.c (nwos_find_or_create_private_class_definition):
	added asserts to verify that after an updated class was cloned it was
	accessible.

	* Makefile.in (OBJS, compress_sparse): added progress_bar.o.
	* prep_disk.c (start_progress_bar, update_progress_bar)
	(finish_progress_bar): moved to new file: progress_bar.c.
	(write_chunks, main): changed names of start_progress_bar,
	update_progress_bar, and finish_progress_bar functions to
	nwos_start_progress_bar, nwos_update_progress_bar, and
	nwos_finish_progress_bar respectively.
	* objectify.h (nwos_start_progress_bar, nwos_update_progress_bar)
	(nwos_finish_progress_bar): added external declarations for.
	* progress_bar.c (nwos_start_progress_bar, nwos_update_progress_bar)
	(nwos_finish_progress_bar): moved from prep_disk.c and renamed with
	nwos_ prefix and added asserts if finish called more than once.
	* compress_sparse.c (main): #if 0'd out printing of each block
	reference ID so it doesn't spew every single ID to the screen anymore.
	Added calls to the progress bar stuff so it prints a progress bar
	instead.
	* expand_sparse.c (main): #if 0'd out printing of each block reference
	ID so it doesn't spew every single ID to the screen anymore.  Added
	calls to the progress bar stuff so it prints a progress bar instead.


2008-07-18  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* dump_obj.c (main): added printing of header and object checksums.


2008-07-17  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.c (nwos_write_object_to_disk)
	(nwos_overwrite_object_to_disk): added assert to verify that the class
	definition for an object is of the correct type, public or private.

	* file.c (nwos_update_file_001_object_to_current)
	(nwos_update_file_002_object_to_current): changed to always update the
	class definition even if an updated private FILE class doesn't exist
	yet.  Before it would leave the class definition unchanged if an
	updated FILE class didn't exist and then if the object was overwritten
	to disk it would have the wrong class.

	* objectify.h (ObjCreateResult): moved to a place earlier in the file
	before all of the function declarations.
	(nwos_find_or_create_private_class_definition): changed to return
	ObjCreateResult instead of void so the caller can tell exactly what
	happened.
	* class_definition.c (nwos_find_or_create_private_class_definition):
	changed to return ObjCreateResult instead of void so the caller can
	tell exactly what happened.


2008-07-16  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_allocate_new_chunk): Fixed copy and paste error where
	the chunk_info .used and .index values were written over the .ref value
	instead of being copied into the next .used and .index values.


2008-07-15  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.c (get_file_references): Fix Bug #2016420 "After expanding
	a compressed 0026 file reading a file causes a bad checksum error".
	New function that reads the public file references and any private file
	class references.
	(get_file_001_reference, get_file_002_reference)
	(get_file_class_reference): removed old code to find reference and
	replaced with a call to new get_file_references function.

	* Makefile.in (PROGS): added "dump_obj".
	* dump_obj.c (main): updated to new version (had not been used since
	version 0004? - December 2005).


2008-07-13  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_create_file): added code to add any checksum (md5, sha1
	sha256, sha512) objects, if they are missing from the file object (I.E.
	if the file object was created before the sha256 and/or sha512
	checksums were added to the file class).

	* objectify.h (ObjCreateResult): Feature Request #1856369 "Fix so if
	imported file is already in system it works" - added IMPORTED_DATA.
	* file.c (nwos_create_file): added code to import data into file that
	already existed from disc_list, but didn't have data stored in system.
	* import_file.c (process_file): Added case for IMPORTED_DATA result
	from nwos_create_file.
	(main): added printing of number of "imported_data" results.


2008-07-12  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_create_file): changed to test for both existing path and
	file and then make the decision on how to proceed based upon both.
	Also changed so that if allow_multiple_paths flag is true then create a
	new association for an existing file even if there is another file with
	that same path.


2008-07-11  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_28.2 release.

	* configure.ac: updated version to Alpha_28.2.

	* verify_file.c (display_usage): changed the name of the "--remove"
	option to "--remove-no-shred" and the name of the "--shred" option to
	"--remove-min-shred" so that it forces one to choose if they want
	shredding or not.  This way one is reminded of the choice before,
	instead of using --remove and then remembering it should have been
	shredded after it is too late.	Also expanded the warning about it
	being minimal shredding.
	(main): Fix Feature Request #1996867 "Move verify_file --shred option
	warning before doing it".  Instead of moving the warning, removed the
	warning completely and changed the "--shred" option to 
	"--remove-min-shred".  Also changed the "--remove" option to
	"--remove-no-shred".

	* verify_file.c (main): Fix Bug #2004217 "verify -r fails if file is 
	not a directory" - added test to determine if the argument is a file or
	a directory and call the appropriate function.

	* import_file.c: added include of limits.h to define PATH_MAX.
	* verify_file.c: added include of limits.h to define PATH_MAX.
	
	* Makefile.in (export_c_structs): Fix Bug #2015898 - Permission denied
	when running export_c_structs.  Change so that export_c_structs is NOT
	compiled in PUBLIC_MODE so the public objects are opened read only.


2008-06-26  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (nwos_initialize_backup): Fix Feature Request
	#1993875 and Bug #2001629 (duplicate entries) - changed to return bool
	instead of void.
	* backup.c (nwos_initialize_backup): changed to return bool, false if
	opening backup file fails, true if successful.
	* disk_io.c (nwos_initialize_disk_io): changed so that if 
	nwos_initialize_backup fails it shuts back down and exits.


2008-06-25  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_28.1 release.


2008-06-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* configure.ac: updated version to Alpha_28.1.


2008-06-23  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* import_file.c (process_file): Fix Bug #1997776 (most of the changes
	since 2008-06-20 were related to this bug) - change to remove the
	leading "./" when doing "-r .".


2008-06-22  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.h (nwos_normalize_path): changed to return void instead of
	bool.
	* file.c (nwos_normalize_path): changed to return void instead of bool,
	because now it verifies the size of dst is big enough to hold src with
	an assert.  Since the output string will never be larger than the input
	that should be good enough.  Changed to output "." if the normalized
	path is empty.  Also will allow paths that start with "..", it is now
	up to the caller to do whatever it wants with that.  Otherwise we would
	have to write a separate function to test paths for thing like:
	"abc/def/../../../ghi".
	* import_file.c (main): changed to call the new nwos_normalize_path
	function.
	* verify_file.c (process_directory): fix to not duplicate the directory
	separators (slashes).
	(main): added code to call nwos_normalize_path to fix the path so there
	are no duplicate slashes, or periods in the path.

	* import_file.c (process_file): change order of expressions in if
	statement so size is verified before indexing into string.


2008-06-21  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_normalize_path): fixed to eliminate any "/./" or "/../"
	in the path.

	* objectify.h (nwos_normalize_path): added external declaration for.
	* import_file.c (cleanup_path): moved to file.c, renamed to
	nwos_normalize_path, and added size of destination string parameter.
	(main): renamed calls to cleanup_path to nwos_normalize_path and added
	size of destination string (path).
	* file.c (nwos_normalize_path): moved cleanup_path from import_file.c
	and renamed.  Also added size parameter.

	* backup.c (nwos_initialize_backup): added code to write backup file
	name to log file.


2008-06-20  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* import_file.c (cleanup_path): new function to copy a path string and
	eliminate extra slashes in the process.
	(process_file): fixed to not add a slash to a directory path if the
	path already ends in one.
	(main): changed to call new cleanup_path function with argument to make
	sure the path doesn't have any multiple slashes ('///') in it.


2008-06-19  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.h (nwos_create_file): added 'allow_multiple_paths'
	parameter to allow creating more than one path to a particular file.
	Also added CREATED_NEW_PATH_FOR_EXISTING_FILE to ObjCreateResult
	enumeration.
	* file.c (nwos_create_file): added 'allow_multiple_paths' parameter to
	allow creating more than one path to a particular file.  It returns
	CREATED_NEW_PATH_FOR_EXISTING_FILE if a new path is created for an
	existing file.
	* import_file.c (process_file): added 'do_recursive' paramter to allow
	multiple paths to a file when importing files recursively.
	(main): pass 'do_recursive' parameter to process_file and print
	message when a new path has been added to an existing file.


2008-06-18  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* import_file.c (process_file): added asserts so a path with double
	slashes ('dir//file') won't be accepted.  Still need to fix the code
	to not create them.


2008-06-14  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* backup.c (nwos_initialize_backup): Bug #1992924 - changed so if the
	.dif file already exists the code waits 1 second, generates a new file
	name and retries.  Also added a count so that it will only retry five
	times.


2008-06-11  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* import_file.c (check_invalid_type, check_directory_is_all_ok): moved
	to file.c and added nwos_ prefix.
	* objectify.h (nwos_check_invalid_type)
	(nwos_check_directory_is_all_ok): added external declarations for.
	* file.c (nwos_check_invalid_type, nwos_check_directory_is_all_ok):
	moved from import_file.c and added nwos_prefix.

	* disk_io.c (nwos_initialize_disk_io): moved setting of 'read_only'
	flag inside of ifdef PUBLIC_MODE else so that it doesn't get set in
	public mode.  If it is set no backup file is written.


2008-06-08  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* user_config.c (read_configuration_file): added #ifndef HTTP around
	code that tries to open a config file in the user's home directory
	because when running from Apache there is no $HOME defined.


2008-06-07  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_disk_io): Fix Bug #1987367 - move setting
	'read_only' flag outside of if private not null statement so read only
	always gets set even if there are no private objects.


2008-06-05  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_28

	* file.c (nwos_number_of_files_for_path): removed reading file object
	and changed to read next version from association object, because
	next/previous version links are now in the path and file association\
	objects.
	* export_file.c (export_file, main): added loop to find a path and file
	object where the next version is null, as long as the path is the same.
	In other words find the latest version of the file object, as long as
	it isn't a rename.


2008-06-04  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Makefile.in (clean_all, distclean): added http directory.

	* expand_sparse.c (main): added waring if version is older than 0028 to
	alert the user that they must run the 'update_files_0028' program.


2008-05-31  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* list_files.c (main): fixed so that old names for files that have been
	renamed are displayed with revision ;0.

	* configure.ac: updated version to Alpha_28.


2008-05-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.c (get_file_001_reference, get_file_002_reference)
	(get_file_class_reference): moved "result" static variables out of function
	and into global "file_references" array.  This will allow a function to be
	written that will get all of the file references instead of having a
	separate function for each revision.


2008-05-23  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* update_files_0028.c (main): change to log arguments instead of
	disabling logging.


2008-05-22  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* list_files.c (main): added check to see if files are using the old
	method for file revision and if they do deal with it and then put an
	asterisk after the revision and print a warning at the end.

	* objectify_private.h (nwos_disk_header): added external declaration.
	* disk_io.c (disk_header): made global and renamed to nwos_disk_header.
	(nwos_initialize_disk_io, nwos_terminate_disk_io): renamed disk_header
	to nwos_disk_header.

	* disc_list.c (check_for_previous_version_and_link): Fix Bug #1954154 -
	changed to put previous and next version links in PATH AND FILE
	ASSOCIATION objects instead of FILE objects.


2008-05-21  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_add_new_revision_of_file): changed to put previous and
	next version links in PATH AND FILE ASSOCIATION objects instead of FILE
	objects.
	* list_files.c (main): added code to read previous and next version
	links in PATH AND FILE ASSOCIATION objects instead of FILE objects.

	* time_stamp.h (nwos_time_stamp_to_string): added external declaration
	for.
	* time_stamp.c (nwos_time_stamp_to_string): new function to convert a
	time stamp into a character string, non-reentrant.


2008-05-20  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Makefile.in (update_files_0028): added.
	* update_files_0028.c: new program to move previous, next links from
	FILE objects to PATH AND FILE ASSOCIATION objects.


2008-05-18  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_27.2

	* configure.ac: updated version to Alpha_27.2.

	* combine_backup_files (MAX_FILES): increased to 100 from 64.

	* list_discs.c (main): added code to allow disc IDs with wildcards to
	be passed on the command line.


2008-05-06  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify_private.h (nwos_read_object_from_disk_and_decrypt): changed
	return type to bool.
	* objectify.c (nwos_read_object_from_disk_and_decrypt): changed return
	type to bool and changed assert on nwos_read_block failed to an if
	statement that returns false if it fails.
	(nwos_read_object_from_disk, nwos_read_object_headers_from_disk)
	(nwos_read_variable_sized_object_from_disk)
	(nwos_get_object_class_without_update): added asserts around calls to
	nwos_read_object_from_disk_and_decrypt to verify it returned true.
	* file.c (nwos_restore_file, nwos_file_is_identical): added asserts
	around calls to nwos_read_object_from_disk_and_decrypt to verify it
	returned true.
	* reference_list.c (read_ref_list_into_cache): added asserts around
	calls to nwos_read_object_from_disk_and_decrypt to verify it returned
	true.


2008-05-05  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (index_compressed_file): Change so that if fopen of index
	file fails, that it just prints a warning and continues without storing
	the index file.

	* disk_io.c (index_compressed_file): Fix Bug #1957451 - added test to
	make sure fopen call was successful before calling fwrite.


2008-04-28  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* import_file (process_file): added initializer for result so that
	compiler won't complain about it being uninitialized.

	* compress_sparse.c (main): added code to check for a block with a
	reference ID of zero and skip over it, with a warning.


2008-04-27  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* verify_file.c (display_usage): Feature Request #1919585 - added
	--shred option and a warning that it is minimal.
	(shred): new function that just writes random data over the file.  It
	is only one pass and the files could stll be read by someone with the
	proper equipment.
	(process_file): changed do_remove parameter to remove_option which can
	be any of "Do_Not_Remove", "Just_Remove", or "Shred_Before_Remove".
	(process_directory): changed do_remove parameter to remove_option.
	(main): added the --shred option and print a warning at the end, that
	shredding is minimal and files could still be read.


2008-04-26  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* verify_file.c (display_usage): new function to print usage
	information.
	(main): added calls to display usage information if the --help option
	is given or there is an error in the parameters.

	* verify_file.c (check_invalid_type): new function, mostly copied from
	import_file.c, that checks for all the possible file types (sockets,
	pipes, character and block devices) that we can't deal with.
	(process_file): new function, mostly taken from main() that does the
	import of one regular file.
	(process_directory): new function that scans one directory and imports
	all of the regular files and subdirectories.
	(main): extracted the code that imported a file and made the new
	process_file function with it.  Added -r and --recursive option.

	* import_file.c (process_file): added code to add-revision from main()
	so that a --add-revision option can be used on a directory.
	(main): took code that added a revision to a file and put it in the
	process_file function.

	* import_file.c (process_file): new function created from code taken
	from main() and changed to deal with recursively doing directories.
	(main): took code that created files and created new process_file
	function.  Made result_counts a global variable.

	* objectify.h (nwos_log_md5sum, nwos_log_sha1sum, nwos_log_sha256sum)
	(nwos_log_sha512sum): added 'const' to char* file_name parameter.
	(nwos_find_public_name, nwos_find_private_name, nwos_create_name):
	added 'const' to char* name parameter.
	(nwos_find_file_path, nwos_create_file_path, nwos_file_is_identical)
	(nwos_create_file, nwos_check_file_checksums, nwos_restore_file)
	(nwos_estimate_blocks_for_file, nwos_add_new_revision_of_file): added
	'const' to char* path parameter.
	(nwos_find_matching_path_and_file_association): added 'const' to char*
	path and char* file parameters.
	(nwos_create_file_with_only_md5, nwos_add_info_to_existing_file): added
	'const' to char* file_name parameter.
	(nwos_create_file_without_storing_data): added 'const' to char* path
	and char* file_name parameters.
	(nwos_find_storage_location, nwos_create_storage_location): added
	'const' to char* location parameter.
	* file.c (nwos_estimate_blocks_for_file, find_file_path, checksum_file)
	(read_file, nwos_add_new_revision_of_file, nwos_find_public_file_path)
	(nwos_create_file_path, nwos_restore_file, nwos_check_file_checksums)
	(nwos_create_file, nwos_find_file_path, nwos_file_is_identical): added
	'const' to char* path parameter.
	(nwos_create_file_with_only_md5, nwos_add_info_to_existing_file): added
	'const' to char* file_name parameter.
	(nwos_create_file_without_storing_data): added 'const' to char*
	directory and char* file_name parameters.
	(nwos_find_matching_path_and_file_association): added 'const' to char*
	dir and char* file_name parameters.
	(nwos_find_storage_location, nwos_create_storage_location): added
	'const' to char* location parameter.
	* log.c (nwos_log_md5sum, nwos_log_sha1sum, nwos_log_sha256sum)
	(nwos_log_sha512sum): added 'const' to char* file_name parameter.
	* name.c (split_name): added 'const' to char* name parameter and the
	char* p variable.
	(nwos_find_public_name, nwos_find_private_name, nwos_create_name):
	added 'const' to char* name parameter.

	
2008-04-25  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* import_file.c (display_usage): Feature Request #1915401 - added
	--recursive option.
	(check_invalid_type): new function to weed out the things we don't
	handle such as symbolic links, devices, sockets, etc.
	(check_directory_is_all_ok): new function to go down through a
	directory and make sure all of the files are kosher.
	(main): added code to deal with directories.

	
2008-04-13  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* config.h.in: added #undef HAVE_CLOCK_GETTIME so we can use something
	else if it isn't supported.
	* disk_io.c (initialize_random_number_generator): added condtional code
	to use 'gettimeofday' instead of 'clock_gettime' if it isn't supported
	(as on Mac OS X).
	* time_stamp.c (nwos_get_time_stamp): added condtional code to use
	'gettimeofday' instead of 'clock_gettime' if it isn't supported (as on
	Mac OS X).


2008-04-09  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* list_discs.c (main): added call to nwos_log_arguments to disable
	logging.
	* list_files.c (main): added call to nwos_log_arguments to disable
	logging.


2008-04-05  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* configure.ac: added http/Makefile.


2008-04-04  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_27.1

	* configure.ac: updated version to Alpha_27.1.


2008-04-01  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_objectify): added file locking for private
	file and public file if in PUBLIC_MODE.
	* prep_disk.c (main): added file locking.
	* check_block_maps.c (main): added file locking.
	* disk_usage.c (main): added file locking.


2008-03-30  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disc_list.c (main): Moved code to get disc ID before code to check
	public files as well.

	* disc_list.c (main): Moved code to check public files out of the
	initial directory scan loop and into it's own loop.  This way we can
	get the pass phrase first instead of having a delay while it reads
	public files and then asking for the pass phrase.


2008-03-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* log_disc.c (main): added an error message if the directory (disc) is
	empty so the user doesn't get some bogus assert.

	* log_disc.c (main): fix so it can deal with more than nine storage
	locations (I.E. numbers can have 2 digits instead of just 1).


2008-03-23  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (find_matching_file_from_size_md5_sha1): change to call
	find_md5, find_sha1, find_sha256, and find_sha512 functions directly
	with the 'public' parameter so they will search the correct space,
	public or private.

	* disk_io.c (nwos_terminate_disk_io): changed to not close private
	or public file if not open.

	* file.c (nwos_find_matching_file_from_size_md5_sha1): renamed to
	'find_matching_file_from_size_md5_sha1', made static, and added
	'public' parameter to determine if it is to search in the public or
	or private objects.
	(nwos_find_public_matching_file_from_size_md5_sha1): new function that
	calls 'find_matching_file_from_size_md5_sha1' to find a public file
	object.
	(nwos_find_matching_file_from_size_md5_sha1): new function to replace
	the old one that was renamed.  It calls the old function
	with the result of nwos_in_public_mode() to search in the correct
	space, public or private.
	(nwos_create_file_without_storing_data): added check to see if there is
	a public file object for the file being created and sets the 'clone_of'
	field if there is.
	(nwos_find_path_and_file_association): renamed to
	'find_path_and_file_association', made static, and added 'public'
	parameter to determine if it is to search in the public or private
	objects.
	(nwos_find_public_path_and_file_association): new function that calls
	'nwos_find_path_and_file_association' to find a public file object.
	(nwos_find_path_and_file_association): new function to replace the old
	one that was renamed.  It calls the old function with the result of
	nwos_in_public_mode() to search in the correct space, public or
	private.
	(nwos_find_or_create_path_and_file_association): added check to see if
	there is a public file object for the file being created and sets the
	'clone_of' field if there is.


2008-03-22  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_find_md5): renamed to 'find_md5', made static, and added
	'public' parameter to determine if it is to search in the public or
	private objects.
	(nwos_find_public_md5): new function that calls 'find_md5' to find a
	public MD5 object.
	(nwos_find_md5): new function to replace the old one that was renamed,
	that calls the old function (find_md5) with the result of
	nwos_in_public_mode() to search in the correct space (public or 
	private).
	(nwos_create_md5): added check to see if there is a public MD5 object
	for the MD5 being created and sets the 'clone_of' field if there is.
	(nwos_find_sha1): renamed to 'find_sha1', made static, and added
	'public' parameter to determine if it is to search in the public or
	private objects.
	(nwos_find_public_sha1): new function that calls 'find_sha1' to find a
	public SHA1 object.
	(nwos_find_sha1): new function to replace the old one that was renamed,
	that calls the old function (find_sha1) with the result of
	nwos_in_public_mode() to search in the correct space (public or 
	private).
	(nwos_create_sha1): added check to see if there is a public SHA1 object
	for the SHA1 being created and sets the 'clone_of' field if there is.
	(nwos_find_sha256): renamed to 'find_sha256', made static, and added
	'public' parameter to determine if it is to search in the public or
	private objects.
	(nwos_find_public_sha256): new function that calls 'find_sha256' to
	find a public SHA256 object.
	(nwos_find_sha256): new function to replace the old one that was
	renamed, that calls the old function (find_sha256) with the result of
	nwos_in_public_mode() to search in the correct space (public or 
	private).
	(nwos_create_sha256): added check to see if there is a public SHA256
	object for the SHA256 being created and sets the 'clone_of' field if
	there is.
	(nwos_find_sha512): renamed to 'find_sha512', made static, and added
	'public' parameter to determine if it is to search in the public or
	private objects.
	(nwos_find_public_sha512): new function that calls 'find_sha512' to
	find a public SHA512 object.
	(nwos_find_sha512): new function to replace the old one that was
	renamed, that calls the old function (find_sha512) with the result of
	nwos_in_public_mode() to search in the correct space (public or 
	private).
	(nwos_create_sha512): added check to see if there is a public SHA512
	object for the SHA521 being created and sets the 'clone_of' field if
	there is.
	(nwos_find_file_path): renamed to 'find_file_path', made static, and
	added 'public' parameter to determine if it is to search in the public
	or private objects.
	(nwos_find_public_file_path): new function that calls 'find_file_path'
	to find a public file path object.
	(nwos_find_file_path): new function to replace the old one that was
	renamed, it calls the old function (find_file_path) with the result of
	nwos_in_public_mode() to search in the correct space (public or 
	private).
	(nwos_create_file_path): added check to see if there is a public file
	path object for the path being created and sets the 'clone_of' field
	if there is.


2008-03-21  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disc_list.c (main): added code to check for public files.


2008-03-20  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.h (nwos_in_public_mode): added external declaration for.
	* objectify.c (nwos_in_public_mode): new function that returns true
	if in public only mode (no private objects).
	* file.c (nwos_find_file_path, nwos_find_md5, nwos_find_sha1)
	(nwos_find_sha256, nwos_find_path_and_file_association)
	(nwos_find_sha512, nwos_find_matching_file_from_size_md5_sha1) added a
	test to see if running in public mode and if so search for public class
	instead of private.
	(nwos_create_md5, nwos_create_sha1, nwos_create_sha256)
	(nwos_create_sha512) added assert to verify not in public mode.
	* verify_file.c (main): added --public option.


2008-03-15  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_27

	* Makefile.in: added cleaning attic to clean_all and distclean targets.

	* configure.ac: updated version to Alpha_27 and VERSION_STRING to 0027.

	* objectify.h (CheckFileResult): added SHA256_Sum_Mismatch and
	SHA512_Sum_Mismatch to enumeration.
	* file.c (nwos_check_file_checksums): added checking SHA256 and SHA512.

	* Makefile.in: (gnu): changed 'gnu' target to 'gnu_objs' so that make
	will rebuild it.

	* class_definition.c (nwos_find_private_class_definition): change to
	call new 'nwos_get_object_class_without_update' function to keep from
	getting into a recursive mess when compiled with -O3 or
	-finline-functions.
	* objectify.h (nwos_get_object_class_without_update): added external
	declaration for.
	* objectify.c (nwos_get_object_class_without_update): new function that
	gets an object's class without trying to update it to the latest
	revision.  Thereby avoiding any recursion problems.
	(nwos_get_object_class): modified to call the new
	nwos_get_object_class_without_update function and then check to see if
	the class needs to be updated to the latest revision.

	* gnu/sha512.c (sha512_process_bytes): fix bug where it didn't
	process odd sized buffers (244 bytes) correctly.  (Sent e-mail to 
	<bug-coreutils@gnu.org> about the problem.)


2008-03-14  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_find_md5, nwos_find_sha1, nwos_find_sha256)
	(nwos_find_sha512): fixed the bug in each of these where they were
	only comparing the first four bytes of each checksum, because the
	sizeof was returning the size of a pointer.
	(checksum_file): change 256 to 512 in a comment (NO code changes).

	* list_files.c (print_md5): changed to use MD5_DIGEST_SIZE instead of
	hardcoded 16.
	(print_sha1): changed to use SHA1_DIGEST_SIZE instead of hardcoded 20.
	(print_sha256): changed to use SHA256_DIGEST_SIZE instead of hardcoded
	32.
	(print_sha512): new function to print a SHA256 checksum.
	(main): added --sha512 option.

	* file.c (read_file) added sha512.
	(nwos_create_file, nwos_add_new_revision_of_file) added sha512 to call
	to read_file.

	* file.c (nwos_add_info_to_existing_file, nwos_create_file)
	(nwos_create_file_without_storing_data, nwos_add_new_revision_of_file):
	add sha512.
	
	* file.c (nwos_find_matching_file_from_size_md5_sha1): added sha512.
	(nwos_create_file_without_storing_data, nwos_add_new_revision_of_file)
	(nwos_create_file, nwos_find_matching_path_and_file_association): added
	sha512 to call to nwos_find_matching_file_from_size_md5_sha1.

	* file.c (nwos_find_matching_file_from_size_md5_sha1): fixed sha256
	test to make sure the sha256ref matches instead of the md5ref (this
	was a bug, it wasn't checking the sha256 matched).

	* objectify.h (SHA512_DIGEST_SIZE): added define for.
	(nwos_log_sha512sum): added external declaration for.
	* file.c (nwos_find_sha512): new function to find a sha512 checksum
	object.
	(nwos_create_sha512): new function to create a sha512 checksum object.
	(checksum_file): added code to calculate a SHA512 checksum in addition
	to the others.
	(nwos_add_info_to_existing_file, nwos_create_file_without_storing_data)
	(nwos_create_file, nwos_add_new_revision_of_file)
	(nwos_find_matching_path_and_file_association): added code for SHA512.
	* log.c (nwos_log_sha512sum): new function to log SHA512 checksum.

	* file.c (nwos_update_file_001_object_to_current): added code to void
	the new SHA512 reference.
	(nwos_update_file_002_object_to_current): new function to update a
	revision 002 FILE object to revision 003.
	* objectify_private.h (nwos_update_file_002_object_to_current): added
	external reference for.
	* objectify.c (get_file_002_reference): new function to find the
	reference for the revision 002 FILE class.
	(nwos_read_object_from_disk): added test to see if it is a FILE
	revision 002 object.
	(nwos_get_object_class): added test to see if it is a FILE revision 002
	object.


2008-03-12  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_26.6

	* log.c (nwos_log): added code to make sure all subdirectories in the
	path are created before opening the file.
	* prep_disk.c (main): added code to make sure all subdirectories in the
	path are created before opening the file.
	
	* log.c (nwos_log_arguments): added code to test if argc is 0 and argv
	is NULL and if so disable logging.
	(nwos_log): added code to return without printing anything to the log
	if logging has been disabled.
	* export_c_structs (main): added call to nwos_log_arguments(0, NULL) to
	disable logging.

	* objectify.conf: changed default paths for private.obj and log files.
	* config.h.in: changed default paths for private.obj and log files.


2008-03-11  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* configure.ac: changed md5, sha1, and sha256 directories into one
	'gnu' directory.
	* md5.h, md5.c, sha1.h, sha1.c, sha256.h, sha256.c: moved into the new
	'gnu' directory instead of having separate directories.
	* gnu/Makefile.in: created from sha256/Makefile.in, changed to compile
	md5.o, sha1.o, and sha256.o.
	* Makefile.in: changed to build md5.o, sha1.o, and sha256.o in the new
	'gnu' directory instead of separate directories.

	* compress_sparse.c (main): Feature Request #1856434 - changed from
	using the RSA MD5 context and functions to the GNU MD5 context and
	functions.
	* file.c (checksum_file, read_file, nwos_check_file_checksums)
	(nwos_restore_file): Feature Request #1856434 - changed from using the
	RSA MD5 context and functions to the GNU MD5 context and functions.
	* security.c (convert_short_pass_phrase_to_reference): Feature Request
	#1856434 - changed from using the RSA MD5 context and functions to the
	GNU MD5 context and functions.


2008-03-10  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* configure.ac: changed version to Alpha_26.6.


2008-02-29  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* export_file (export_file): added code so that if a file is in a
	sub-directory, create the directory if it doesn't exist.


2008-02-26  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.c (nwos_initialize_objectify): changed to not attempt to
	initialize all of the security stuff when the bf_key is null and the
	linear and serial values are zero.  (As is the case when called by
	expand_sparse.

	* rename_file.c (main): changed to require either the --no-history or
	--keep-history options, no default.


2008-02-25  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_allocate_new_chunk): changed to allow creating a
	chunk anywhere in the valid range of chunks and not just following the
	existing chunks.  This will lead to chunks being out of order in the
	storage, but that will be corrected when the archive is restored.


2008-02-24  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_check_blocks_available): added code to allocate a
	new chunk if the existing chunks are more than 90% full.

	* disk_io.c (generate_new_completely_random_id): Fix Bug #1900855,
	changed loop that searches for chunk to pick any chunk with empty
	blocks, and if it doesn't find one do a linear search.


2008-02-23  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* user_config.c (get_path): extracted code that read $HOME environment
	variable and made into new 'get_users_home_dir' function.
	(get_users_home_dir): new function to read the $HOME environment
	variable and return it.  Extracted from 'get_path' function.
	(read_configuration_file): changed to substitute users home directory
	for '~' in DEFAULT_USER_CONFIG_PATH.
	
	
2008-02-22  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* config.h.in (DEFAULT_CONFIG_PATH): split into
	DEFAULT_USER_CONFIG_PATH and DEFAULT_SYSTEM_CONFIG_PATH.
	* user_config.c (read_configuration_file): changed to check for a
	configuration file in the user's home directory first and then if it
	doesn't exist attempt to read the system configuration file.


2008-02-16  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* list_files.c (print_sha1): added if statement to print a notice that
	the SHA256 checksum is not available for this file, if it is void in
	the file object, instead of crashing.
	(print_time): added if statement to print "unknown" if the time stamp
	is zero.
	* time_stamp.h (nwos_time_stamp_is_zero): new inline function that
	returns true if the entire time stamp is zero.

	* file.c (nwos_add_info_to_existing_file): new function that reads the
	file and adds the modification_time, size, sha1, and sha256 checksums
	to a file already created by the 'nwos_create_file_with_only_md5'
	function.
	* objectify.h (nwos_add_info_to_existing_file): added external
	declaration for.

	* file.c (nwos_create_file_with_only_md5): took changes made in the
	previous revision back out (this revision is the same as revision
	1.85).

	* file.c (nwos_create_file_with_only_md5): changed to read the file in
	at the same time and calculate all the checksums and size.

	* file.c (nwos_create_file_with_only_md5): new function that creates a
	file with only a MD5 checksum.
	* objectify.h (nwos_create_file_with_only_md5): added external
	declaration for.


2008-02-15  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* export_c_structs.c (main): change AccessType to PUBLIC.

	* objectify.c (nwos_initialize_objectify): Fix to compile correctly in
	PUBLIC_MODE without blowfish_key, linear_after_first, and
	serial_after_first variables.  They were wrapped in #ifndef PUBLIC_MODE
	to eliminate warnings in revision 1.141.


2008-02-10  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* objectify.h (AccessType): added "PUBLIC" type.
	* objectify.c (nwos_initialize_objectify): rearranged to handle new
	"PUBLIC" access mode that only opens the Public Objects.
	(nwos_read_variable_sized_object_from_disk, nwos_get_object_class):
	added test so that it only tests for version 001 files if it is a
	private object, no public file objects were created with version 001 of
	the file class.
	* disk_io.c (nwos_initialize_disk_io): added code for new "PUBLIC"
	access mode.
	* list_files.c (main): added --public option to list files in the
	public objects.

	* configure.ac: added attic/Makefile to the list of files to be
	created.  Note: I did not attic/Makefile to the top level Makefile
	because the files in the attic are not used by users and therefore
	don't need to be built normally.


2008-02-09  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_disk_io): moved code that calls
	nwos_initialize_backup outside of "if (nwos_private_path != NULL)"
	block so that a backup file will be made even in PUBLIC_MODE.


2008-02-05  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_26.5 (Note: was not changed in configure.ac so this
	version still says it is Alpha_26.4).

	* user_config.c (read_configuration_file): Fix Bug #1887042 - changed
	to read all environment variables before reading the configuration
	file.  Then if a variable is already set (from environment variable)
	doesn't use value from file.  Finally, check for any values that are
	still null and fill them in with the default value.
	(get_path): changed to just call read_configuration_file if null, which
	will now check environment variables and set any defaults.

	* expand_sparse.c (main): Fix Bug #1887574 - changed to call 
	nwos_initialize_objectify with DEFAULT_FILE (NULL) instead of the
	actual storage.  Initialize disk_io now assumes that a non-null path is
	a compressed file.

	* disk_io.c (nwos_initialize_disk_io): added initialized for
	compressed_file variable so that compiler won't complain about it
	being uninitialized when compiling in PUBLIC_MODE.


2008-02-04  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_26.4

	* config.h.in: changed LOG_FILE_NAME to DEFAULT_LOG_FILE_PATH.
	* objectify.conf: added section for log file.
	* objectify.h (strlcat, strlcpy): added 'const' to src parameter.
	* objectify_private.h (nwos_get_log_file_path): added external
	declaration for.
	* user_config.c (nwos_get_log_file_path): added new function to get
	the path and file prefix for the log file.
	* log.c (nwos_log): Changed to get the log file path from the new
	nwos_get_log_file_path function.
	(strlcat, strlcpy): Added 'const' specifier to src parameter.

	* user_config.c (get_path): fix so that when it is substituting the
	home directory for the tilde it doesn't leave the tilde in the path.


2008-02-03  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* config.h.in (BACKUP_LOCATION): deleted, now defined in user_config.
	* objectify.conf: added section for backup directory path.
	* user_config.c (nwos_get_backup_directory_path): added new function
	to get the path for the backup directory.
	(nwos_initialize_backup): added 'const' to 'backup_location' parameter.
	* disk_io.c (nwos_initialize_disk_io): changed to get backup directory
	path from nwos_get_backup_directory_path() instead of BACKUP_LOCATION
	definition.
	* backup.c (nwos_initialize_backup): added a 'const' to the
	'backup_location' parameter because it comes from user_config.c now.

	* user_config.c (get_path): added code to check for a path that begins
	with a tilde ('~') and converts it to the home directory (from the
	$HOME environment variable).

	* prep_disk.c (main): changed to pass DEFAULT_FILE (NULL) to
	nwos_initialize_objectify because now it assumes that a file passed to
	it is a compressed file.

	* objectify.conf: new file that is put in /etc/objectify.conf to
	configure where the system reads the public and private objects.


2008-02-02  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Makefile.in (diff_sparse): removed program because it doesn't work in
	the current version.
	(export_c_structs): added user_config.c.
	(check_block_maps, compress_sparse, disk_usage): added user_config.o
	and log.o.
	* add_password.c (main): changed DEFAULT_TYPE_RW to READ_WRITE.
	* check_block_maps.c (main): change to get the private objects path
	from nwos_get_private_objects_path() instead of DEFAULT_FILE which is
	now simply defined as NULL.
	* check_objects.c (main): changed DEFAULT_TYPE_RO to READ_ONLY.
	* compress_sparse.c (main): change to get the private objects path
	from nwos_get_private_objects_path() instead of DEFAULT_FILE which is
	now simply defined as NULL.
	* computer.c (main): changed DEFAULT_TYPE_RW to READ_WRITE.
	* config.h.in (StorageType, DEFAULT_TYPE_RO, DEFAULT_TYPE_RW): deleted
	because the new user configuration doesn't use them.
	(DEFAULT_FILE): renamed to DEFAULT_PRIVATE_PATH to be more congruent
	with the DEFAULT_PUBLIC_PATH.
	* disc_list.c (main): changed DEFAULT_TYPE_RW to READ_WRITE.
	* disk_io.c (nwos_public_path, nwos_private_path): added 'const'
	specifier so that compiler doesn't complain about assignment discarding
	qualifiers from pointer target type.
	(nwos_initialize_disk_io): changed 'type' parameter to be 'AccessType'
	instead of 'StorageType' because now it just indicates if storage is to
	be opened 'READ_WRITE' or 'READ_ONLY'.  Changed the meaning of the 
	'path' input parameter such that now if it is NULL it calls
	nwos_get_private_objects_path to get the path and if it is not null it
	means a compressed file is to be used instead.  Added boolean variable
	'compressed_file' to indicate if we are accessing a compressed file or
	regular storage.  Changed occurrences of 'Drive_Or_Partition_RO',
	'Drive_Or_Partition_RW', 'Sparse_File_RO', 'Sparse_File_RW', and
	'Compressed_File_RO' to 'READ_WRITE' or 'READ_ONLY' as appropriate.
	* disk_usage.c (main): change to get the private objects path from
	nwos_get_private_objects_path() instead of DEFAULT_FILE which is now
	simply defined as NULL.
	* expand_sparse.c (main): change to get the private objects path from
	nwos_get_private_objects_path() instead of DEFAULT_FILE which is now
	simply defined as NULL.
	* export_file.c (main): eliminated 'type' variable, no longer needed.
	Added 'const' specifier to 'path' variable so that compiler doesn't
	complain about assignment discarding qualifiers from pointer target
	type.  Changed DEFAULT_TYPE_RO to READ_ONLY.
	* identify_disc.c (main): changed DEFAULT_TYPE_RO to READ_ONLY.
	* import_file.c (main): changed DEFAULT_TYPE_RW to READ_WRITE.
	* list_discs.c (main): changed DEFAULT_TYPE_RO to READ_ONLY.
	* list_files.c (main): eliminated 'type' variable, no longer needed.
	Changed DEFAULT_TYPE_RO to READ_ONLY.
	* log_disc.c (main): changed DEFAULT_TYPE_RW to READ_WRITE.
	* objectify.h (DEFAULT_FILE): added defintion to NULL, which is now
	used to indicate to nwos_initialize_disk_io that it should get the path
	using nwos_get_private_objects_path.
	(AccessType): this was the StorageType enumeration in config.h, renamed
	and changed so that the possible values are READ_ONLY or  READ_WRITE.
	(nwos_initialize_objectify): changed 'type' parameter to be 'AccessType'
	instead of 'StorageType'.
	* objectify_private.h (nwos_get_private_objects_path): added external
	declaration.
	(nwos_public_path, nwos_private_path): added 'const' to declaration.
	(nwos_initialize_disk_io): changed 'type' parameter to be 'AccessType'
	instead of 'StorageType'.
	* objectify.c (nwos_initialize_objectify): changed 'type' parameter to
	be 'AccessType' instead of 'StorageType'.
	* prep_disk.c (is_device, max_blocks_on_device):  added 'const'
	specifier so that compiler doesn't complain about assignment discarding
	qualifiers from pointer target type.
	(agree_no_warranty): updated Copyright dates to 2008.
	(main): change to get the private objects path from
	nwos_get_private_objects_path() instead of DEFAULT_FILE which is now
	simply defined as NULL.
	* remove_file.c (main): eliminated 'type' and 'path' variables and
	changed DEFAULT_TYPE_RW to READ_WRITE.
	* rename_file.c (main): changed DEFAULT_TYPE_RW to READ_WRITE.
	* user_config.c (nwos_get_private_objects_path): new function that
	returns the path to use to access the private objects.
	* verify_file.c (main): eliminated 'type' variable, no longer needed.
	Changed DEFAULT_TYPE_RO to READ_ONLY.
	
	* disk_io.c (nwos_public_path): put this global variable, which was
	removed in revision 1.64 (2008/01/22), back in so that it is congruent
	to the nwos_private_path.
	(nwos_initialize_disk_io): added code to initialize nwos_public_path.
	Originally (in revision 1.63 and before) it was initialized statically
	with DEFAULT_PUBLIC_PATH.  Changed all occurances where
	nwos_get_public_objects_path was called back to nwos_public_path.

	* Makefile.in (export_c_structs): added -DPUBLIC_MODE so it is compiled
	without all of the private stuff.
	* objectify.c (security_level): put #ifndef around this variable to
	eliminate warning when compiled with -DPUBLIC_MODE.
	(blowfish_key): put #ifndef around this variable to eliminate warning
	when compiled with -DPUBLIC_MODE.
	(nwos_read_object_from_disk_and_decrypt): put #ifndef around variables
	that are not used when compiled with -DPUBLIC_MODE.
	(nwos_write_object_to_disk_and_encrypt): put #ifndef around variables
	that are not used when compiled with -DPUBLIC_MODE.
	* disk_io.c (last_ref): put #ifndef around this variable to eliminate
	warning when compiled with -DPUBLIC_MODE.
	(chunk_density_target, chunk_skip_backward, chunk_skip_forward): put
	#ifndef around these variables to eliminate warning when compiled 
	with -DPUBLIC_MODE.
	(uint32_ref_to_info_index): put #ifndef around this function to
	eliminate warning when compiled with -DPUBLIC_MODE.
	
	* user_config.c (get_path): new function created from the old
	nwos_get_public_objects_path that is generic.  The name of the desired
	path is passed in and it locates it's entry in the path_table, if it
	is null, it checks for an environment variable.  If that is not found
	it reads the configuration file and if that didn't find it it sets it
	to the default value.
	(nwos_get_public_objects_path): changed to just call the new generic
	'get_path' function with the name "public".

	* user_config.c (read_configuration_file): changed path_table to store
	the path itself instead of a pointer to the path.
	(nwos_get_public_objects_path): eliminated the "public_objects_path"
	variable and changed to find the "public" entry in the path_table and 
	use it.

	* user_config.c (read_configuration_file): new function that reads the
	configuration file and stores the parameters in variables pointed to by
	the path_table.
	(nwos_get_public_objects_path): changed to check for an environment 
	variable first, then read the configuration file, and finally use the
	default.
	* config.h.in (DEFAULT_CONFIG_FILE): new define for the path to the
	configuration file.


2008-01-29  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* patch_compressed.c (main): added code to include the number of used
	blocks in the print statement when the number of used blocks doesn't
	match.


2008-01-22  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_initialize_disk_io, nwos_terminate_disk_io): changed
	to call new nwos_get_public_objects_path function to get path to public
	objects, instead of having the nwos_public_path global variable.
	* objectify_private.h (nwos_get_public_objects_path): added external
	declaration.
	* user_config.c (nwos_get_public_objects_path): new function that
	returns the path of the public objects file.
	* Makefile.in (OBJS): added user_config.o.

	* list_files.c (main): added some options that were missing from the
	usage print.  Also added explanations for what the options are for.


2008-01-17  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* backup.c (sort_file): added code to clear errno at the beginning in
	case it was non-zero from some call before entering.

	* objectify.c (nwos_create_root): rearranged code so that if it is not
	in PUBLIC_MODE it uses the bit map to determine if the block has
	already been written or not.  This is necessary now that prep_disk
	doesn't always write the entire chunk.

	* prep_disk.c (write_chunks): changed to use the progress bar instead
	occasionally writing the number of blocks written.

	* disk_io.c (nwos_allocate_all_chunks_hack): moved the progress bar
	code to prep_disk.c and replaced it with a parameter that is a pointer
	to a progress report function.
	* prep_disk.c (start_progress_bar, update_progress_bar)
	(finish_progress_bar): new functions created from code taken from
	disk_io.c that print a progress bar in text.
	(main): added code to do the progress bar when calling the
	nwos_allocate_all_chunks_hack function.

	* disk_io.c (nwos_allocate_all_chunks_hack): fixed the progress bar so
	it works correctly even on small sizes (less than 512 megabytes).

	* disk_io.c (nwos_allocate_all_chunks_hack): removed the previous
	change, it was unnecessary because for sparse files the entire file was
	already written.

	* disk_io.c (nwos_allocate_all_chunks_hack): added code to determine
	if it is writing to a "sparse" file or a partition and writes the
	entire 16 megabyte chunk to a sparse file.  If this isn't done then it
	really creates a sparse file and those have proven to be very
	inefficient with disk space.


2008-01-16  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* disk_io.c (nwos_allocate_all_chunks_hack): added call to flush the
	data after each bit map block write and then usleep 10 mS.

	* disk_io.c (nwos_allocate_all_chunks_hack): changed to only write the
	bit map blocks into each chunk instead of the entire 16 megabyte chunk.

	* disk_io.c (nwos_allocate_all_chunks_hack): added code to print the
	percentage done in 2% increments (formated 0...10...20...30... and so
	on).
	
	* Makefile.in (distclean): added command to remove the  autom4te.cache
	directory.


2008-01-13  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* file.c (nwos_create_file_without_storing_data, nwos_create_file)
	(nwos_add_new_revision_of_file): changed to use new nwos_log_md5sum,
	nwos_log_sha1sum, and nwos_log_sha256sum function to log checksums to
	log file instead of writing them to stdout.

	* file.c (nwos_find_md5, nwos_create_md5, nwos_find_sha1)
	(nwos_create_sha1, nwos_find_sha256, nwos_create_sha256, checksum_file)
	(nwos_find_matching_file_from_size_md5_sha1, nwos_restore_file)
	(nwos_create_file_without_storing_data, nwos_create_file)
	(read_file, nwos_add_new_revision_of_file, nwos_check_file_checksums)
	(nwos_find_matching_path_and_file_association): changed to use new
	MD5_DIGEST_SIZE, SHA1_DIGEST_SIZE. SHA256_DIGEST_SIZE defines instead
	of hardcoded values.

	* objectify.h (MD5_DIGEST_SIZE, SHA1_DIGEST_SIZE. SHA256_DIGEST_SIZE):
	added to define the size of the various digests.
	(nwos_log_md5sum, nwos_log_sha1sum, nwos_log_sha256sum): new functions
	to add a log message for the various types of checksums.

	
2008-01-06  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* patch_compressed.c (main): Added --ignore-times option that allows
	the file to be patched even if the times in the header of the
	compressed file doesn't match the header in the patch file.  Also
	changed the comparing of the headers to compare individual components
	instead of just doing a memcmp of the entire header.


2008-01-04  J. Scott Edwards  <j.scott.edwards.nwos@gmail.com>

	* Version Alpha_26.3

	* backup.c (sort_file): Bug #1862306 - removed extra increment of the
	file 'offset' which caused it to be incremented twice when a duplicate 
	block occurred after the sort buffer was full.

	* backup.c (sort_file): added code after the file is sorted to go back
	through the whole file and verify that the blocks are all in order and
	if not emit an error message.


