2004-03-24  Dan Williams  <dcbw@redhat.com>

	* configure.in: Version 0.6.
	
2004-03-21  Dan Williams  <dcbw@redhat.com>

	* src/gen-compat-tree.c
	  src/menu-entries.c
	  src/menu-entries.h
	  src/menu-layout.h
	  src/menu-method.c
	  src/menu-modules.conf
	  src/menu-parser.c
	  src/menu-process.c
	  src/menu-process.h
	  src/Makefile.am
	  
	  Apply Frederic Crozat's patch to bring d-f-u up
	  to the freedesktop.org Menu Spec 0.8.  Approved
	  by havoc.

2004-03-21  Dan Williams  <dcbw@redhat.com>

	* src/menu-entries.c: Don't crash when a .desktop
	file is a symlink pointing to a nonexistent file.
	
2004-03-01  Mark McLoughlin  <mark@skynet.ie>

	* configure.in: Version 0.5.
	
2004-03-01  Mark McLoughlin  <mark@skynet.ie>

	Patch from Dan Williams to not segfault with .desktop
	files with comments at the start.

	* src/validate.c: (enum_sections), (enum_actions):
	Don't crap out if the section or action name is
	NULL.

2004-02-19  Mark McLoughlin  <mark@skynet.ie>

	* configure.in: Version 0.4

2004-02-19  Mark McLoughlin  <mark@skynet.ie>

	Add support for .desktop files which contains Actions. Verify
	that the Actions key and Desktop Action sections match up
	and that each Desktop Action section has an Exec key.

	* src/validate.c:
	(enum_sections): record the name of the main section and
	allow Desktop Action sections.
	(required_section): return the name of the main section.
	(required_keys): actually check for these keys in the correct
	section.
	(enum_actions), (error_orphaned_action),
	(required_actions): make sure the Actions key and Desktop Actions
	sections match up.
	(desktop_file_validate): upd.

2003-10-23  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (tree_node_find_subdir): don't return an
	entry's parent, only return a subdir at the exact path

2003-10-23  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c: implement <Move> operation
	
	* src/menu-process.c (menu_node_strip_duplicate_children): fix
	to keep later rather than earlier <Menu> nodes
	(move_children): drop the <Name> node from the source <Menu>

	* src/menu-parser.c (end_element_handler): don't add context to
	error messages that already have it

	* src/menu-parser.c (fixup_move_node): new code to canonicalize
	and verify move nodes

2003-10-23  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (process_only_unallocated)
	(tree_node_from_menu_node): add support for OnlyUnallocated
	element, passes 1 more test

2003-10-23  Havoc Pennington  <hp@redhat.com>

        Localizing the menu paths gets us another 2 passes with the test
	suite.
	
	* src/menu-process.c (localized_path_for_entry): new function
	(foreach_print): localize the paths that are outputted with
	--test-results as the test suite wants that.

2003-10-21  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.h (struct DesktopEntryForeachInfo): consolidate
	all the args to the foreach function into a struct

2003-10-20  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (tree_node_from_menu_node): change to alloc
	the TreeNode in here instead of separately then
	fill_tree_node_from_menu_node
	(tree_node_from_menu_node): handle <Deleted>/<NotDeleted>

2003-10-16  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (foreach_dir): include full menu paths

	* src/gen-compat-tree.c (process_one_file): search for relative
	filenames in the XDG paths

	* src/menu-tree-cache.c (cache_lookup): fix GError pileup

	* src/gen-compat-tree.c: add --verbose option

2003-07-17  Havoc Pennington  <hp@redhat.com>

	* src/menu-method.c: add a bunch of #ifdef READ_ONLY sections for
	using the backend without editing

2003-06-11  Havoc Pennington  <hp@redhat.com>

	* src/menu-tree-cache.c (reload_entry): diff old vs. new tree and
	store the list of changes

	* src/menu-method.c (do_monitor_add, do_monitor_cancel):
	monitoring using the tree diff stuff.

	* src/menu-process.c (desktop_entry_tree_diff): finish
	implementing this	

2003-06-11  Havoc Pennington  <hp@pobox.com>

	* src/menu-process.c (desktop_entry_tree_diff): add but 
	doesn't work yet, just syncing with work computer

2003-06-06  Havoc Pennington  <hp@redhat.com>

	* src/menu-method.c (do_set_file_info): make this return
	NOT_PERMITTED rather than NOT_SUPPORTED
	(fill_in_generic_dir_info): fill in the uid/gid fields
	(fill_in_generic_file_info): ditto
	(menu_method_get_info): fill in file_info->name
	(do_check_same_fs): implement

2003-06-06  Havoc Pennington  <hp@redhat.com>

	* src/menu-tree-cache.c (reload_entry): mark cache valid again
	after reloading stuff, makes things a whole lot faster.

	* src/menu-method.c: convert some GError to GnomeVFSResult, and 
	return GNOME_VFS_ERROR_INVALID_URI when passed a non-.desktop 
	or non-.directory file.
	(dir_handle_new): remove extra unref on the DesktopEntryTree

2003-06-06  Havoc Pennington  <hp@redhat.com>

	Last bugfix so we can display redhat-menus pretty OK
	
	* src/menu-process.c (node_menu_compare_func): make this consider
	whether the menu nodes have the same parent, so we don't
	consolidate dups that aren't children of the same menu
	(menu_node_strip_duplicate_children): use node_menu_compare_func 
	instead of node_compare_func to see if two menu nodes are dups

	* src/menu-layout.c (menu_node_get_depth): new

2003-06-05  Havoc Pennington  <hp@redhat.com>

	* src/menu-layout.c (menu_node_append_to_string): fix name of node
	printed for LegacyDir

2003-06-05  Havoc Pennington  <hp@redhat.com>

	* src/menu-parser.c (menu_load): set name of the menu file on 
	root node

	* src/menu-entries.c (cached_dir_lookup): fix logic a bit

	* src/menu-process.c (menu_node_resolve_files_recursive):
	implement DefaultAppDirs, DefaultDirectoryDirs, DefaultMergeDirs

	* src/menu-util.c (init_xdg_paths): move here

	* src/menu-process.c (move_children): fix memleak and a crash
	when moving children to an empty node

	* src/menu-util.c (g_string_append_random_ascii): fix warnings

	* src/menu-parser.c: add <DefaultMergeDirs/> support

2003-06-02  Havoc Pennington  <hp@redhat.com>

	* src/menu-tree-cache.c (try_create_overrides): put
	applications-edits under "menus"
	(desktop_entry_tree_cache_create): can't create a menu with 
	same name as a directory; and don't create random mktmp names, 
	that was just crack

	* src/menu-layout.c
	(menu_node_remove_redundancy): fix this function to be able to
	remove redundancy despite intervening nodes.

	* src/menu-process.c (desktop_entry_tree_exclude)
	(desktop_entry_tree_include): add new nodes in root <Menu>, not to
	root of layout tree
	(menu_node_find_submenu): fix assertion
	(tree_node_find_subdir_or_entry): fix to return the right value

	* src/menu-tree-cache.c (reload_entry): fix unref/free of NULL
	fields.
	(lookup_canonical_entry): fix bug where we didn't fill 
	in entry->create_chaining_to correctly

	* src/menu-method.c (menu_method_resolve_uri): fix bug where 
	we passed wrong args to menu_method_get_tree

2003-05-31  Havoc Pennington  <hp@pobox.com>

	* src/menu-tree-cache.c (desktop_entry_tree_cache_rmdir):
	implement
	(desktop_entry_tree_cache_mkdir): implement

	* src/menu-process.c (desktop_entry_tree_mkdir): implement
	(desktop_entry_tree_rmdir): implement

	* src/menu-overrides.c: handle overriding a desktop file 
	with a '/' in the name

	* src/menu-method.c (menu_method_unlink): implement

	* src/menu-process.c (desktop_entry_tree_exclude): implement

	* src/menu-tree-cache.c (desktop_entry_tree_cache_delete): implement

2003-05-31  Havoc Pennington  <hp@pobox.com>

	* src/menu-util.c: move some functions that didn't make sense 
	in other files into here

	* src/menu-process.c (menu_node_resolve_files_recursive): fix bug
	where we used an uninitialized variable

2003-05-30  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (menu_node_find_submenu): hack
	(menu_node_ensure_child): hack
	(desktop_entry_tree_include): hack

	* src/menu-method.c: hack

	* src/menu-tree-cache.c (desktop_entry_tree_cache_create): hack

2003-05-29  Havoc Pennington  <hp@redhat.com>

	* src/menu-method.c (menu_method_resolve_uri_writable): new

	* src/menu-tree-cache.c (desktop_entry_tree_cache_override): new

	* src/menu-entries.c (entry_cache_invalidate): new

	* src/menu-process.c (merge_resolved_copy_of_children): lots of 
	fixing

	* src/menu-layout.c (menu_node_steal): fix to update
	node->parent->children pointer

	* src/gen-compat-tree.c (process_one_file): fix build 	

2003-05-28  Havoc Pennington  <hp@redhat.com>

	* src/canonicalize.c (g_canonicalize_file_name): add
	allow_missing_basename argument

	* src/menu-tree-cache.c (init_xdg_paths): hack to pass in 
	the create_chaining_to to desktop_entry_tree_load()

	* src/menu-method.c (menu_method_get_tree): adapt to new API

	* src/menu-process.c (desktop_entry_tree_load): take 
	an argument which is the menu file to chain to 
	in a newly-created menu file
	
	* src/menu-layout.c (menu_cache_get_menu_for_file): 
	same, allow specifying a file to chain to if we 
	create a new menu file

2003-05-21  Havoc Pennington  <hp@redhat.com>

        Enough bugfixes to be able to view a sample menu in nautilus and 
	launch apps.
	
	* src/menu-process.c (tree_node_find_subdir_or_entry): fill in the
	node when we are loading a .desktop file

	* src/menu-method.c (menu_method_get_info): new function
	(do_get_file_info): change so we can stat a directory, 
	doh

	* src/menu-process.c (tree_node_find_subdir_or_entry): handle '/'

2003-05-21  Havoc Pennington  <hp@redhat.com>

	* src/menu-overrides.c: implement directory of .desktop file
	overrides

	* src/menu-layout.c (g_file_save_atomically): export

2003-05-20  Havoc Pennington  <hp@redhat.com>

	* src/menu-method.c: code stuff,
	gnomevfs-ls/gnomevfs-cat/gnomevfs-info are now up and running.

	* src/menu-process.c (tree_node_find_subdir_or_entry): fix

	* src/menu-tree-cache.c (parse_search_path_and_prepend): fix
	(init_xdg_paths): fix

	* src/Makefile.am: fix to link the menu-* sources into the VFS
	module.

2003-05-15  Havoc Pennington  <hp@redhat.com>

	* src/menu-method.c: hacking

	* src/menu-process.c (tree_node_find_subdir): fix so we don't
	ignore trailing junk on paths
	(desktop_entry_tree_resolve_path): new

2003-05-14  Havoc Pennington  <hp@redhat.com>

	* src/menu-tree-cache.c: quick implementation without file change
	monitoring.

2003-05-13  Havoc Pennington  <hp@redhat.com>

	* src/menu-tree-cache.c: new file to store cache of
	DesktopEntryTree

2003-05-12  Havoc Pennington  <hp@redhat.com>

	* src/validate.c: fix a bunch of compiler warnings
	(desktop_file_fixup): add code to fix semicolon termination of
	string lists if necessary.

	* src/desktop_file.c (gnome_desktop_file_merge_string_into_list):
	handle case where existing list is missing ';' at the end; 
	patch from Adrian Reber

2003-05-12  Havoc Pennington  <hp@redhat.com>

	* autogen.sh (ACLOCAL): automake, aclocal 1.7

	* configure.in: check for optional gnome-vfs, not required 
	of course, just a hack to share some menu code for now.

	* src/menu-method.c, src/Makefile.am: gnome-vfs boilerplate, 
	doesn't yet do anything.

2003-05-10  Havoc Pennington  <hp@pobox.com>

	* src/menu-layout.c (menu_node_append_to_string): implement
	serialization of the "DOM tree" of menu nodes so that we can 
	resave after editing.
	(menu_node_append_child): fix this, it was messing up order 
	of nodes
	(menu_cache_sync_for_file): implement doing the standard
	write-to-tmp-and-rename hoop-jumping.

2003-05-09  Havoc Pennington  <hp@redhat.com>

	* src/menu-entries.c: use a quark scheme for entry->categories
	to save time/memory

	* src/desktop_file.c (parse_key_value): fix a memory leak

2003-05-09  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c: refactor this to use MenuCache and
	EntryCache and as a result make more sense.

	* src/menu-layout.c: add MenuCache object; don't track
	is_file_root; don't try to autodrop cache when a menu 
	node is unref'd (didn't work anyway).

	* src/menu-entries.c: invent an EntryCache object to get rid of
	global variables
	
2003-05-09  Havoc Pennington  <hp@pobox.com>

	* src/desktop_file.c: make @ a valid byte in locale names, patch
	from Richi Plana

2003-05-08  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (fill_tree_node_from_menu_node): sort entries
	by basename

2003-05-08  Havoc Pennington  <hp@redhat.com>

	* src/menu-entries.c (entry_directory_list_add): fix list
	manipulation screwup that caused obscure memory error
	(find_value): fix bug that made it not work, and avoid extra
	strlen calls

	* src/menu-layout.h: add macros to disable verbose mode

2003-05-06  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (foreach_print): add ability to print in the
	format of test suite expected results file

2003-05-05  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c (tree_node_free_if_broken): allow nodes with
	NULL dir_entry, the menu spec allows that.
	(foreach_dir, foreach_print): assorted fixes, can now print a
	trivial two-item menu.

2003-05-02  Havoc Pennington  <hp@redhat.com>

	* src/menu-layout.c (menu_node_menu_ensure_entry_lists): create
	the node->app_dirs node->dir_dirs objects and account for
	MENU_NODE_ROOT node type

2003-05-02  Havoc Pennington  <hp@redhat.com>

	* src/menu-process.c: use basedir stuff stored on root node 
	instead of dealing with it in this file

	* src/menu-parser.c (menu_load): set basedir

	* src/menu-layout.c (menu_node_copy_one): copy fields in MenuNode
	"subclasses"
	(menu_node_get_basedir): new
	(menu_node_get_content_as_path): new

	* configure.in: add more compiler warnings, and --enable-tests

	* src/menu-layout.c (dfu_test_menu_nodes): start setting up unit
	test stuff

2003-05-01  Havoc Pennington  <hp@pobox.com>

	* src/menu-process.c (desktop_entry_tree_print): implement
	(desktop_entry_tree_foreach): implement

	* src/menu-entries.c (entry_set_new): fix to init to all bits zero

2003-05-01  Havoc Pennington  <hp@redhat.com>

	* src/validate.c: change to only warn about invalid keys, don't
	die
	(enum_keys): remove warning about Icon field with no .png extension	
	(desktop_file_validate): fix to reset fatal_error_occurred on each
	call

	* src/gen-compat-tree.c: hook up the new menu code, so we can
	start debugging

	* src/validate.c: allow GenericName, StartupNotify, StartupWMClass

	* src/menu-parser.c: got it compiling, most code should be there,
	untested

2003-04-30  Havoc Pennington  <hp@redhat.com>

	* src/menu-parser.c: more random hacking, syncing between computers

2003-04-30  Havoc Pennington  <hp@pobox.com>

	* src/menu-parser.c: skeletal noncompiling base file for menu xml
	parser thing

2003-04-11  Havoc Pennington  <hp@redhat.com>

	* src/validate.c (required_keys): don't stop checking as soon as
	we see an Encoding field. Fix from Ville Skytta
	<ville.skytta@iki.fi>

2002-12-21  Havoc Pennington  <hp@pobox.com>

	* test/run-test.c (main): allow specifying expected name of
	directory nodes, and allow quoting names and entry filenames so we
	can test for handling of whitespace etc.

2002-12-15  Havoc Pennington  <hp@pobox.com>

	* src/vfolder-query.c (my_str_has_suffix): rename since glib 2.2
	now has the symbol

	* src/menu-process.c (tree_node_find_subdir): fix compilation

	* test/run-test.c (main): add a start on a test program, which
	takes a file describing the menu file to load and the expected
	results of parsing that menu file, and checks whether the right
	results are generated.

2002-11-21  Havoc Pennington  <hp@redhat.com>

	* src/menu-entries.c (cached_dir_find_entry): fix a bug
	(find_subdir in iter not dir)

	* src/menu-process.c (fill_tree_node_from_menu_node): fill in a
	name for each TreeNode

2002-08-06  Havoc Pennington  <hp@redhat.com>

	* src/vfolder-query.c (symlink_recurse_nodes): add another
	unlink() for .directory files

2002-08-06  Havoc Pennington  <hp@redhat.com>

	* src/vfolder-query.c (symlink_recurse_nodes): unlink symlink
	before trying to create it again, to avoid errors and be sure 
	we replace the old link.

2002-08-04  Havoc Pennington  <hp@redhat.com>

	* src/install.c (main): create target directory if it doesn't 
	exist.

	* configure.in: 0.3

2002-08-01  Havoc Pennington  <hp@redhat.com>

	* src/vfolder-query.c (add_or_free_desktop_file): when complaining
	about a duplicate, say where the other one is.
	(load_tree): only read DATADIR/applications if the menu file
	didn't specify any directories.

2002-07-24  Havoc Pennington  <hp@redhat.com>

	* src/vfolder-query.c (add_or_free_desktop_file): actually 
	get rid of desktop files that should not be shown following
	OnlyShowIn

2002-07-22  Havoc Pennington  <hp@redhat.com>

	* src/gen-compat-tree.c: add --print-available option

	* src/vfolder-query.c: add function to print out all the 
	desktop files that would be used by a menu file

2002-07-09  Havoc Pennington  <hp@redhat.com>

	* src/validate.c (desktop_file_fixup): fix up "KDE Desktop Entry"

	* src/desktop_file.c (gnome_desktop_file_rename_section): new
	function
	(gnome_desktop_file_has_section): new function

2002-07-09  Havoc Pennington  <hp@redhat.com>

	* src/desktop_file.c (gnome_desktop_file_unset_internal): fix a
	memmove to use bytes instead of number of lines, fixes a crash

2002-06-21  Havoc Pennington  <hp@redhat.com>

	* src/validate.c: validate that KDE/GNOME are spelled all-caps in 
	OnlyShowIn

	* src/install.c: add a --remove-key option to remove bogus keys

	* src/validate.c (validate_strings): check that string list keys
	end in a semicolon

2002-06-21  Havoc Pennington  <hp@redhat.com>

	* src/install.c (process_one_file): implement
	--copy-name-to-generic-name, --copy-generic-name-to-name

	* src/desktop_file.c (gnome_desktop_file_copy_key): new function
	(gnome_desktop_file_unset): new

2002-06-16  Havoc Pennington  <hp@pobox.com>

	* src/install.c: fix delete_original flag so it actually gets
	filled in and works

2002-06-05  Havoc Pennington  <hp@redhat.com>

	* configure.in: 0.2 version

	* src/Makefile.am (desktop_menu_tool_SOURCES): rename
	desktop-menu-gen-compat-dir to desktop-menu-tool

2002-05-25  Havoc Pennington  <hp@pobox.com>

	* src/vfolder-query.c (add_or_free_desktop_file): add OnlyShowIn
	support.

2002-05-25  Havoc Pennington  <hp@pobox.com>

	* src/vfolder-query.c (desktop_file_tree_write_symlink_dir): 
	Add the create-a-dir-of-symlinks support.

	* src/desktop_file.c (gnome_desktop_file_merge_string_into_list):
	fix bug when adding the first string in the list.

	* src/vfolder-query.c: handle OnlyUnallocated correctly

2002-05-25  Havoc Pennington  <hp@pobox.com>

	* src/vfolder-query.c, src/vfolder-parser.c: implement more query
	stuff

2002-05-25  Havoc Pennington  <hp@pobox.com>

	* src/validate.c (desktop_file_fixup): move here from install.c

	* src/gen-compat-tree.c (main): initial test version, 
	doesn't work yet

	* src/desktop_file.c (gnome_desktop_file_save): do an atomic save
	via rename() for safety

2002-05-06  Havoc Pennington  <hp@redhat.com>

	* Initial module creation

