2017-03-11  Sergey Poznyakoff  <gray@gnu.org>

	Version 2.1

2017-01-30  Sergey Poznyakoff  <gray@gnu.org>

	Apply --broken-8bit-charset only to frames in 8-bit encoding.
	* src/frametab.gperf (decode_qv): Passe frame as the 2nd argument
	to field_to_string.
	(text_decode): Likewise.
	* src/idest.h (idest_ucs4_cvt): Remove.
	(field_to_string): Change the type of the 2nd argument.
	* src/idop.c (frame_encoding_is_8bit)
	(frame_is_genre): New auxiliary functions.
	(idest_ucs4_cvt): Take frame as the 2nd argument. Do recoding
	only if the frame's encoding in 8-bit.
	(add_stringlist): Take frame instead of the isgenre boolean; pass
	it to idest_ucs4_cvt. All uses changed.
	(field_to_string): Take frame as the 2nd argument. All uses
	changed.
	(fixup_charset): Merge with collect_text_frames.

	Bugfix
	* libid3tag/tag.c (v1_render): Fix coredump on NULL TRCK value.

	Minor scheme fixes.
	* scheme/dry-run.scm: Mention a bug in Guile 2.0.9 that causes
	%load-hook to be called twice.
	* scheme/idest/list-modules.scm: Improve error handling.
	* tests/script05.at: Remove the "loading" diagnostics from the
	output.
	* tests/script08.at: Likewise.

2016-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Keep textual data in UTF-8 internally; provide new options
	for recoding
	* libid3tag/tag.c (id3_tag_new): Use conservative default options.

	* configure.ac: Check for iconv

	* src/utf8conv.c: New file.
	* src/Makefile.am (idest_SOURCES): Add new source file.
	(LDADD): Link with iconv libraries.
	* src/backup.c (copy_file): Initialize fsize properly.
	* src/cmdline.opt: New options: --fixup, --broken-8bit-charset,
	--encoding
	* src/guile.c: Remove unused functions.
	* src/frametab.gperf: Use textual_frame_encoding.
	* src/idest.h: Include locale.h
	(latin1_option): Remove.
	(charset,broken_8bit_charset)
	(textual_frame_encoding,fixup_option): New globals.
	(idest_conv_mode): New enum
	(utf8_convert): New proto.
	* src/idop.c (idest_ucs4_cvt): Hanlde broken_8bit_charset option.
	(set_tags): Fix-up frames if so requested.
	* src/main.c (latin1_option): Remove.
	(textual_frame_encoding,fixup_option): New globals
	(main): Set locale.

	* bootstrap: Update.
	* gnulib: Update.
	* gnulib.modules: Add localcharset

	* doc/html.init: Minor change.
	* doc/idest.texi: Update docs.

2015-11-17  Sergey Poznyakoff  <gray@gnu.org>

	bootstrap: remove the schizophrenic use of --no-recursive.
	Don't know what it served for.	Gnulib stuff is sometimes
	extremely ... ehm ... idiosyncratic.

2015-11-07  Sergey Poznyakoff  <gray@gnu.org>

	Include gnulib as a submodule. Fix testsuite.
	Guile 2.x outputs spurious diagnostics to stderr when compiling
	input files.
	The only way to disable it is to disable compilation by setting
	environment
	variable GUILE_AUTO_COMPILE to 0.  However, even if compilation
	is disabled,
	Guile still checks whether the compiled file exists and complains
	on stderr
	if it is older than the input file.  This diagnostics begins
	with ;;;.  Delete
	this using sed prior to comparing stderr with the expected text.

	* .gitmodules: Add gnulib
	* gnulib: New module.
	* bootstrap: Update from gnulib
	* gint: Upgrade.
	* scheme/idest/batch/setlyrics.scm: Fix typo.
	* src/Makefile.am: Use AM_CPPFLAGS instead of obsolete includes.

	* tests/atlocal.in: Set GUILE_AUTO_COMPILE=0
	* tests/testsuite.at (WITH_GUILE): New macro.
	* tests/delcomm.at: Use WITH_GUILE.
	* tests/fmt-shortlist.at: Likewise.
	* tests/framelist00.at: Likewise.
	* tests/framelist01.at: Likewise.
	* tests/framelist02.at: Likewise.
	* tests/list1.at: Likewise.
	* tests/list2.at: Likewise.
	* tests/lyrics00.at: Likewise.
	* tests/pic00.at: Likewise.
	* tests/pic01.at: Likewise.
	* tests/script00.at: Likewise.
	* tests/script01.at: Likewise.
	* tests/script02.at: Likewise.
	* tests/script03.at: Likewise.
	* tests/script04.at: Likewise.
	* tests/script05.at: Likewise.
	* tests/script06.at: Likewise.
	* tests/script07.at: Likewise.
	* tests/script08.at: Likewise.
	* tests/setlyrics.at: Likewise.
	* tests/setpic.at: Likewise.
	* tests/settitle.at: Likewise.
	* tests/shortlist.at: Likewise.

2015-11-06  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes
	* configure.ac: Version 2.0.90
	* NEWS: Update.
	* doc/idest.texi: Update.
	* examples/settitle.scm: Remove directory components from
	the name.
	* scheme/dry-run.scm: Improve help output.

	Minor fix
	* scheme/idest/format/pic.scm: Remove unneeded function.

2015-11-05  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.
	1. Fix --convert option so it can be used to remove unnecessary
	ID3 formats (e.g. --convert=2).
	2. Fix processing of unknown frames in Guile code.
	3. Fix setpic and pic modules.

	* scheme/idest/batch/setpic.scm (read-picture): Use binary i/o.
	* scheme/idest/format/pic.scm (save-picture): Likewise.
	* scheme/idest/list-modules.scm: Minor changes.
	* src/frametab.gperf (frame_field_from_rawdata): New function.
	* src/getopt.m4: Update copyright years.
	* src/guile.c (set_frame_from_rawdata): Use
	frame_field_from_rawdata.
	* src/idest.h (frame_field_from_rawdata): New proto.
	* src/idop.c (set_tag_options): Always call id3_tag_options.

2015-04-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix doc generation.
	Default Config file applied to all output formats, which is wrong.
	Use a dedicated configuration file for html output formats, and
	defaults for the rest.

	* doc/Makefile.am (GENDOCS): Add html-specific configuration file.
	* doc/Config: Rename to doc/html.init.

2015-03-01  Sergey Poznyakoff  <gray@gnu.org>

	Switch to Texinfo 5.0
	* doc/Config: Rewrite.
	* doc/Makefile.am: Use Makeinfo 5 instead of texi2htm
	* doc/gendocs_template: Ps is not built
	* imprimatur: Upgrade.

2011-08-01  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 2.0

	Final cleanup.	Version 2.0.

	Finish the docs.
	* doc/.gitignore: Update.
	* doc/idest.texi: Document all new features.
	* scheme/idest/batch/setlyrics.scm: Update --help output.
	* scheme/idest/batch/setpic.scm: Likewise.
	* scheme/idest/format/lyrics.scm: Likewise.
	* scheme/idest/format/pic.scm: Likewise.
	* scheme/idest/list-modules.scm: Implement the --which option.
	* src/guile.c (%idest-package-site-dir)
	(%idest-version-site-dir)
	(%idest-guile-site-dir): New functions.

2011-07-31  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes
	* src/editem.c (ed_item_qv_cmp): Use the least of the two
	qc values
	for comparison.

2011-07-30  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish the testsuite.
	* scheme/Makefile.am: Rewrite.
	* src/frametab.gperf (frametab_enumerate): Minor fix.
	* tests/Makefile.am (TESTSUITE_AT): Add new testcases.
	(EXTRA_DIST): Add idest-32.png and idest-68.png.
	* tests/testsuite.at: Add new testcases.
	* tests/atlocal.in (GUILE_VERSION,INSTALL_PROG): New variables.
	* tests/id3v2: Remove trailing whitespace from USLT.
	* tests/delcomm.at: New file.
	* tests/fmt-shortlist.at: New file.
	* tests/framelist00.at: New file.
	* tests/framelist01.at: New file.
	* tests/framelist02.at: New file.
	* tests/list1.at: New file.
	* tests/list2.at: New file.
	* tests/lyrics00.at: New file.
	* tests/pic00.at: New file.
	* tests/pic01.at: New file.
	* tests/script00.at: New file.
	* tests/script01.at: New file.
	* tests/script02.at: New file.
	* tests/script03.at: New file.
	* tests/script04.at: New file.
	* tests/script05.at: New file.
	* tests/script06.at: New file.
	* tests/script07.at: New file.
	* tests/script08.at: New file.
	* tests/setlyrics.at: New file.
	* tests/setpic.at: New file.
	* tests/settitle.at: New file.
	* tests/shortlist.at: New file.
	* tests/version.at: Remove useless prereq.

2011-07-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add more tests.
	* src/idest.h (source_vopt): New extern.
	(guess_file_tag_options): New proto.
	* src/idop.c (parse_ed_items): Use only commas as
	separators.
	(set_tag_options,guess_file_tag_options): New function.
	(find_matching_frame): Use the above functions.
	(del_tags): make sure tag version remains unchanged,
	unless requested so on the command line.
	* src/main.c (source_vopt): New variable.
	(main): Set source_vopt.

	* tests/Makefile.am: Add new testcases.
	* tests/testsuite.at: Add new testcases.
	* tests/copy-v1-00.at: New testcase.
	* tests/copy-v12-00.at: New testcase.
	* tests/copy-v2-00.at: New testcase.
	* tests/del-all-v1.at: New testcase.
	* tests/del-all-v12.at: New testcase.
	* tests/del-all-v2.at: New testcase.
	* tests/del-frame-v1.at: New testcase.
	* tests/del-frame-v2.at: New testcase.
	* tests/set-v1-01.at: New testcase.
	* tests/set-v2-01.at: New testcase.

2011-07-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add testsuite
	* Makefile.am (SUBDIRS): Add tests
	* configure.ac: Initialize testsuite.
	* src/cmdline.opt (get_options): Bugfix.
	* src/frametab.gperf: Use condesc instead of descr,
	which is reserved.
	* src/getopt.m4: Fix version output.
	* src/guile.c: Bugfixes.
	* src/main.c (guile_argv): Declare here, instead of in guile.c.
	* tests/Makefile.am: New file.
	* tests/testsuite.at: New file.
	* tests/.gitignore: New file.
	* tests/Makefile.am: New file.
	* tests/atlocal.in: New file.
	* tests/genfile.c: New file.
	* tests/id3v1: New file.
	* tests/id3v1-2: New file.
	* tests/id3v2: New file.
	* tests/idest-32.png: New file.
	* tests/idest-68.png: New file.
	* tests/info-v1-00.at: New file.
	* tests/info-v12-00.at: New file.
	* tests/info-v2-00.at: New file.
	* tests/query-v1-00.at: New file.
	* tests/query-v1-01.at: New file.
	* tests/query-v2-00.at: New file.
	* tests/query-v2-01.at: New file.
	* tests/query-v2-02.at: New file.
	* tests/query-v2-03.at: New file.
	* tests/query-v2-04.at: New file.
	* tests/set-v1-00.at: New file.
	* tests/set-v2-00.at: New file.
	* tests/version.at: New file.

2011-07-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add full support for APIC frames.
	* src/frametab.gperf: Support APIC.
	* src/idop.c (field_binary_from_string): Accept lowercase
	hex digits.
	* scheme/idest/batch/setpic.scm: New batch.
	* scheme/idest/format/pic.scm: Use named elements.

	New format `pic': displays attached picture.
	* scheme/idest/format/pic.scm: New format.

2011-07-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various improvements.
	* src/Makefile.am: Initialize MAINTAINERCLEANFILES.
	* src/cmdline.opt: New options: --prepend-load-path and
	--no-init-files.
	* src/guile.c (no_init_files_option): New variable.
	(guile_load): Bail out on error.
	(load_path_prepend): Rewrite.
	(load_path_append): New function.
	(user_load_path_list): Replace with user_path_list (array).
	(guile_add_load_path): Second arg indicates which list to modify.
	(flush_user_load_path): Argument indicates which list to flush.
	(load_startup_file): Don't touch load path. It is done elsewhere.
	(guile_init): Set up load path. Call load_startup_file unless
	no_init_files_option is set.
	* src/idest.h (no_init_files_option): New extern.
	(guile_add_load_path): Change signature.
	* src/main.c (main): Fix coredump.

	Upgrade gint

	Improve batch/format interface.
	* scheme/batch.scm: Rewrite using idest-load-module
	* scheme/format.scm: Likewise.
	* scheme/idest/batch/setlyrics.scm: New file.
	* scheme/idest/format/framelist.scm: Define idest-init
	* scheme/idest/format/help.scm: Likewise.
	* scheme/idest/format/lyrics.scm: Likewise.
	* scheme/idest/load-module.scm: New file.

2011-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement --batch option (a generalization of --format).
	* NEWS: Update
	* doc/idest.texi: Update.
	* scheme/Makefile.am (EXTRA_DIST,site_DATA): Add batch.scm
	(dist-hook): Exclude backup files.
	* scheme/batch.scm: New file.
	* scheme/idest/batch/help.scm: New file.
	* scheme/idest/format/help.scm: Use list-modules.
	* scheme/idest/format/shortlist.scm: Fix typo.
	* scheme/idest/list-modules.scm: New file (from
	scheme/idest/format/help.scm).
	* src/cmdline.opt: Remove the --function option.
	New option --batch.
	* src/guile.c (guile_function,guile_script): Remove.
	(load_closure): Remove struct.
	(load_handler,load_handler_path): data points to char **.
	(guile_load): Change signature: filename is superfluous,
	use argv[0]
	instead.  All callers updated.
	* src/idest.h (ed_list,guile_script,guile_function): Remove.
	* src/main.c (dry_run_option,batch_name): New variables.
	(set_guile_argv): New function.
	(main): Handle batch_name and dry_run_option.

2011-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement `--format help', which shows a list of existing formats.
	* scheme/idest/format/help.scm: New module.
	* scheme/idest/format/framelist.scm: Define description for use by
	--format help
	* scheme/idest/format/lyrics.scm: Likewise.
	* scheme/idest/format/shortlist.scm: Likewise.

	* src/guile.c: Change priority of directory in load path:
	VERSION_SITE is placed before PKG_SITE, but after user-defined
	directories.

2011-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.
	* scheme/format.scm: Don't declare it as a module.

	Convert v2.2 PIC to v2.4 APIC
	* libid3tag/compat.gperf (translate_APIC): New function. Use it
	to translate PIC to APIC.

	Minor change
	* libid3tag/compat.gperf: Reformat

2011-07-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.
	* scheme/format.scm: Improve error reporting.

	Minor fix.
	* scheme/Makefile.am (install-data-local): Create destdir if
	it does
	not exist already.

2011-07-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement new formats: framelist & lyrics.
	* scheme/format.scm: Set actual format script name as argv[0]
	* src/cmdline.opt <format>: Use `stop' to stop
	argument processing.
	* src/getopt.m4 (GETOPT): New local variable `stop'.

	* scheme/idest/format/framelist.scm: New file.
	* scheme/idest/format/lyrics.scm: New file.

2011-07-23  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfixes
	* src/cmdline.opt (get_options): Prevent coredump on argc==optind.
	* src/guile.c (flush_user_load_path): Prevent coredump
	on user_load_path_list == NULL.

2011-07-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement --format option.
	* Makefile.am (SUBDIRS): Add scheme (conditionally).
	* configure.ac (IDEST_COND_GUILE): New condition.
	* examples/dry-run.scm: Move to scheme.
	* examples/Makefile.am: Update.

	* src/Makefile.am (AM_CPPFLAGS): Add VERSION_SITE.
	* src/cmdline.opt: New options --format and --load-path.
	* src/editem.c (str_split_col): Remove static qualifier.
	* src/guile.c (guile_add_load_path): New function.
	(load_startup_file): Flush user additions to the load path.
	Add VERSION_SITE at the beginning.
	* src/idest.h (list_supported_frames)
	(str_split_col,guile_add_load_path): New protos.
	* src/main.c (format_name): New global.
	(main): Handle --format option.

	* scheme/dry-run.scm: New file (from examples)
	* scheme/format.scm: New file.
	* scheme/idest/format/shortlist.scm: New file.

2011-07-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Makefile.am: Add TAGS

	Minor fix

	Update

2011-07-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish the docs + minor cleanup.
	* doc/idest.texi: Document all changes.

	* examples/echo.scm: Rename to dry-run.scm
	* examples/title.scm: Rename to settitle.scm
	* examples/Makefile.am: Update
	* src/cmdline.opt: Update

2011-07-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs.  Accept --filter option with --list-frames.

2011-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor changes.

	Bugfix.
	* src/guile.c: Exit with code 1 if the file fails to load.

	New installable script echo.scm
	* NEWS: Update.
	* examples/Makefile.am: Install echo.scm to the sitedir
	* examples/delcomm.scm: New file.
	* examples/echo.scm: New file.

	New option: --list-frames
	* NEWS: Update.
	* src/cmdline.opt: New option --list-frames (-L)
	* src/frametab.gperf: Use %global-table option.
	(frametab_enumerate): New function.
	* src/idest.h (frametab_enumerate): New proto.
	* src/main.c: Implement --list-frames.

	Support for URL frames.
	* src/frametab.gperf: Add URL frames.
	Return meaningful error codes.

	Change version number to 1.99.90. Next stable will be 2.0.

	Fix some warnings.

	New feature: copy tags between files.
	* NEWS: Update.
	* src/cmdline.opt: New option --copy.
	Call parse_filter_items instead of parse_ed_items.
	* src/editem.c (ed_list_locate): New function.
	* src/idest.h (source_file, source_tag): New externs.
	(input_list_locate,parse_ed_items): Remove.
	(parse_filter_items): New proto.
	(ed_list_locate): New proto.
	* src/idop.c (filter_list): New list.
	(input_list_locate): Remove. Use ed_list_locate with
	a proper first argument. All uses updated.
	(parse_ed_items): Take 2 args.
	(parse_filter_items): New function.
	(input_list_init): Rename to filter_list_init.
	Operate on filter list.
	(output_list_print): Operate on filter_list.
	(copy_source_tags): New static function.
	(set_tags): Call copy_source_tags.
	(del_tags): Operate on filter_list.
	* src/main.c (source_file,source_tag): New variables.
	(main): Read source tags if --copy is requested.

	Improve error reporting in Guile.

	Handle unsupported frames in Scheme code graciously.
	* src/frametab.gperf (encode_field): Rename to
	frame_field_from_string.
	Handle ID3_FIELD_TYPE_INT32PLUS and ID3_FIELD_TYPE_BINARYDATA.
	* src/guile.c (idest_rawdata): New global symbol.
	(frame_to_scm): Handle frames for which no frametab is defined.
	(scm_to_tag): Handle frames in raw format.
	* src/idest.h (field_binary_from_string)
	(field_binary_to_string)
	(frame_field_from_string): New protos.
	* src/idop.c (field_binary_to_string): New function.
	(field_binary_from_string): New function.
	(field_to_string): Handle ID3_FIELD_TYPE_INT32PLUS and
	ID3_FIELD_TYPE_BINARYDATA.

	Bugfix
	* src/idop.c (output_list_print): Fix coredump on empty output
	list.

	Accept optional "display names" in query mode.
	* NEWS: Update.
	* src/editem.c: Extend frame spec syntax.

	Implement a shortcut for --set mode.
	* src/cmdline.opt: If MODE_MOD is set, accept assignments before
	file list.
	* NEWS: Update.

2011-07-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Implement the USLT frame.

2011-07-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Major rewrite.
	* src/idest.h (ed_item): Remove union, leave only value instead.
	<ref>: New member.
	(describe_option,verbose_option,all_frames): New externs.
	(set_frame_value): Return int.
	(IDEST_OK,IDEST_ERR_*): New constants.
	(_idest_errstr, _idest_nerrs): New externs.
	(idest_frame_cmp_t,idest_frame_encoder_t)
	(idest_frame_decoder_t): New typedefs.
	(idest_frametab): New struct.
	(idest_frame_lookup)
	(find_matching_frame): New protos.
	(ed_list_add_item)
	(ed_list_print,ed_list_add_assignment)
	(ed_list_clear,ed_item_matches_frame)
	(ed_item_set_comment_fields): Remove.
	(qv_free,input_list_locate)
	(parse_ed_items): New protos.
	* src/idop.c: Rewrite.

	* src/.gitignore: Add src/frametab.c
	* src/Makefile.am (idest_SOURCES): Add editem.c and frametab.c
	(BUILT_SOURCES): Add frametab.c
	(.gperf.c): New rule
	(GPERF_FLAGS): New variable.
	* src/editem.c: New source.
	* src/frametab.gperf: New source.
	* src/cmdline.opt: Use input_list_add_assignment in --set handler.
	* src/guile.c (frame_to_scm,scm_to_tag): Rewrite using the new
	logic.

2011-07-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Get rid of argmatch.
	* gnulib.modules: Remove argmatch.
	* src/backup.c: Remove unused include.
	* src/idest.h: Remove unused include.
	(frame_id): Rename to frame_to_item_id.
	(ed_item_set_comment_fields): New proto.
	* src/main.c (item_ids, item_names)
	(item_frames)
	(item_id,frame_id)
	(ed_item_find): Remove.
	(item_table, item_count): New variables.
	(name_to_item_info)
	(frame_id_to_item_info)
	(frame_to_item_id): New functions.

	Bugfixes
	* src/idest.h (ED_ITEM_CONCAT): New constant.
	(ed_item)<flags>: New member.
	* src/main.c (_ed_list_new_item0): Always allocate name.
	(ed_list_new_item): Fix erroneous allocation of
	content description (bug is hit when a qualified comment
	is followed by a comma.
	(ed_list_add_item): Discontinue concatenation of frames
	with the same ID. The old code is still around, it can be
	enabled by setting te ED_ITEM_CONCAT flag in the ed_item.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.
	* src/main.c (ed_list_clear): Don't free lang and condesc, to
	avoid coredump on subsequent iterations of show_tags.
	(ed_list_add_item): Print [condesc] prefix only if
	the comment request was unqualified.

	Improve Guile startup files loading sequence.
	* src/guile.c (make_file_name): New file.
	(try_file): Remove.
	(load_startup_file): Pass in the command line the list of
	files which were to be tried after the file being loaded.
	* doc/idest.texi: Update.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Change ID3 version handling.
	* src/cmdline.opt: New option --default-id-version.
	The --convert and --id-version take version list as their
	argument.
	* src/idest.h (IDEST_ID3V_1)
	(IDEST_ID3V_2): New constants.
	(default_version_option): New extern.
	* src/idop.c (set_tags): Don't alter version_option.
	Unless none of version_option, default_version_option or
	convert_version is set, preserve existing file structure.
	Create new tags according to the settings of
	default_version_option.
	* src/main.c (main): Set default value for default_version_option.

	* NEWS: Document changes.
	* doc/idest.texi: Update.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor change.
	* src/guile.c (stringlinst_to_scm): Rename to stringlist_to_scm
	(fix typo).  Don't use obstack, rely on pure Scheme approach.
	* gnulib.modules: Remove obstack and save-cwd.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Various fixes.
	* src/guile.c (idest-readonly): Initialize to #t.
	(field_to_scm): Return SCM_EOL if field is NULL.
	* src/main.c (ed_list_add_item): Always prepend content
	description.
	* src/getopt.m4: Update copyright years.

	* doc/idest.texi: Document all recent changes.
	* examples/list1.scm: New file.
	* examples/list2.scm: New file.
	* examples/shortlist.scm: New file.
	* examples/title.scm: New file.
	* examples/Makefile.am: New file.
	* Makefile.am: Add examples.
	* configure.ac: Likewise.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix terminology.  Use "content descriptor" (or condesc) throughout
	the code and docs.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Accept comment content descriptors in --delete.
	* src/idest.h (ed_item_matches_frame): New proto.
	* src/idop.c (del_tags): Use ed_item_matches_frame to
	find matching frames.
	* src/main.c (ed_item_matches_frame): Remove static qualifier.

	* NEWS, doc/idest.texi: Update.

2011-07-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	New option --describe. Accept content descriptors in -q args.
	* src/cmdline.opt: New option --describe
	* src/main.c (describe_option): New variable.
	(str_split_col): New function,
	(ed_list_new_item): Rewrite.
	(ed_item_matches_frame): New function,
	(ed_list_add_item): Honor describe_option.
	(ed_list_add_assignment): Use ed_list_new_item.
	(ed_list_print): Minor change.

	* NEWS: Updated
	* doc/idest.texi: Updated.

2011-07-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix

	Change Scheme representation of frame lists.
	* doc/idest.texi: Update
	* src/guile.c (field_to_scm): Support all conversions,
	except ID3_FIELD_TYPE_BINARYDATA.
	(frame_to_scm): Rewrite taking into account new frame list
	format.
	(scm_to_tag): Likewise.
	(setval): Remove.
	* src/idop.c (set_frame_value): Accept any frame type.

	Minor fix

	Accept language and class specs when setting comment fields.
	* src/idest.h (set_frame_value): Change signature.
	* src/idop.c (set_frame_value): Change signature.
	Set lang and class for comment fields, if supplied.
	(update_frame): New function. Introduces special handling
	for comment fields.
	(set_tags): Call update_frame.
	* src/main.c (ed_list_add_assignment): Accept language and class
	specs for comment fields (--set comment:lang:class=value).
	* NEWS: Update.

	Include comment classes (short descriptions) to the output.
	* src/idest.h (ed_item): New members lang & class.
	(field_to_string): New proto.
	(ed_list_add_item): Change signature.
	* src/idop.c (add_stringlist): Change signature. Optionally
	return the
	total length of strings added to the list. All uses changed.
	(field_to_string): New function.
	(ed_item_set_comment_fields): New function.
	* src/main.c (ed_list_add_item): Add comment classes.

	Minor change in the library.
	* libid3tag/field.c: Add a missing break.
	* libid3tag/id3tag.h: Reindent.

2011-07-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Guile scripts can access and modify command line arguments.
	* NEWS: Update.
	* src/cmdline.opt (--script): Stop argument processing.
	* src/guile.c (guile_argv): New variable.
	(guile_load): Take command line arguments as the 3rd argument.
	All uses updated.
	(guile_init): Allow the script to alter command line arguments.
	* src/idest.h (guile_argv): New proto.
	(guile_init): Change signature.
	* src/main.c (main): Call guile_init before checking argc.

	Search for Guile files in the %load-path. Implement startup files.
	* NEWS: Document Guile startup files.
	* src/Makefile.am (AM_CPPFLAGS): Define GUILE_SITE and PKG_SITE.
	* src/guile.c (guile_load): Second argument controls whether to
	search for the file in the %load-path.
	(load_path_prepend,try_file)
	(load_startup_file): New functions.
	(guile_init): Load startup files.
	Unless guile_script contains directory separators, look it up
	in the %load-path.

2011-07-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Make sure no old tag instances remain after modifications.
	* src/guile.c (guile_transform): Remove existing tags prior to
	installing new ones.
	* src/idop.c (set_tags): Remove all existing instances of the tag
	except the first one prior to altering it.

	* libid3tag/frame.c: Add type casts.
	* libid3tag/render.c: Likewise.
	* libid3tag/tag.c: Likewise.

2011-07-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add a possibility to delete a subset of ID3 frames.
	* NEWS: Document changes to --delete.
	* doc/idest.texi: Likewise.
	* src/cmdline.opt: --delete takes optional argument.
	-d is a shorthand for it.
	* src/idop.c (del_tags): Delete only certain frames, if
	a frame list is given.

	Minor change.
	* src/idop.c (del_tags): Use id3_tag_clearframes.

	Implement the --info option.
	* NEWS: Update.
	* configure.ac: Version 1.2.90
	* doc/idest.texi: Document the --info option.
	* libid3tag/file.c (id3_file_struct_ntags)
	(id3_file_struct_iterate): New functions.
	* libid3tag/file.h (id3_file_struct_ntags)
	(id3_file_struct_iterate): New protos.
	(id3_file_struct_iterator_t): New data type.
	* src/cmdline.opt: New option --info.
	* src/idest.h (info_id3): New proto.
	(del_id3v2): Remove.
	* src/idop.c (info_id3): New function.
	* src/main.c (id3_mode): Add info_id3.

2011-04-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.2
	* NEWS, README, configure.ac, doc/idest.texi: Update
	version number and bug reporting address.

2011-03-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	libid3tag: Fix writing v2 tags to a clean mp3 file.
	This fixes a bug introduced by 4c887e9caf.

	* libid3tag/file.c (v2_write): Proceed even if ntags is 0,
	but take care not to dereference file->tags.
	After writing, add new tag to the file.

2011-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update libid3tag patchlevel
	* libid3tag/id3tag.h (ID3_VERSION_PATCH)
	(ID3_VERSION_EXTRA): Update

	libid3tag: cleanup tag.c a bit.
	* libid3tag/tag.c (v2_parse): Split into several subfunctions.

	Reindent libid3tag sources.

	Improve signal handling; new option --verbose
	* NEWS: Update.
	* src/cmdline.opt: New option --version
	* src/idop.c (safe_id3_file_update_and_close): New function.
	(set_tags, del_tags): Use safe_id3_file_update_and_close.
	* src/main.c (verbose_option): New variable.
	(main): Print name of the file being processed, if verbose_option
	is set.

2011-03-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	gint: Upgrade to a5774356.

	Update copyright years.

2010-05-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix GINT_INIT usage.
	* gint: Upgrade to a5774356.
	* configure.ac (--with-guile): Remove option. Handled by
	GINT_INIT.
	(GINT_INIT): Don't call it within a conditional.

2010-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Migrate Guile support to GINT.
	* gint: Add submodule.
	* am/guile.m4: Remove.
	* Makefile.am (ACLOCAL_AMFLAGS): Look for includes in gint,
	instead of am.
	(SUBDIRS): Add gint.
	* bootstrap.conf: Init submodule.
	* configure.ac: Integrate gint. Set version number 1.1.90.
	* src/Makefile.am: Integrate gint.
	* src/guile.c (struct scheme_exec_data)<result>: Remove.
	(scheme_safe_exec_body): Return the result of ed->handler
	call, not SCM_BOOL_F.
	(guile_safe_exec): Use scm_c_catch instead of
	the deprecated scm_internal_lazy_catch.
	(guile_apply_main): Likewise.
	* NEWS: Update.

	* libid3tag/Makefile.am (AUTOMAKE_OPTIONS): Remove. Now
	set in configure.ac.
	Add AM_V_GEN marker to actions in all rules.
	* libid3tag/configure.ac (AM_INIT_AUTOMAKE): Pass options
	here. Use silent rules by default.

2010-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Prepare for Guile 2.0: fix obsolete and deprecated calls in
	Guile code.
	* am/guile.m4: Fix quoting of arguments.
	Check for SCM_DEVAL_P et al.
	Check for scm_t_off, define it if not found.
	* src/guile.c (proc_name): Remove.
	(eval_catch_body): Use scm_apply_0 instead of
	scm_primitive_eval to avoid evaluating the
	arguments.
	(load_handler, stringlinst_to_scm)
	(field_to_scm, tag_to_scm, scm_to_tag): Fix obsolete
	and deprecated calls in Guile code.
	(guile_init): Protect calls to SCM_DEVAL_P &c. by
	#ifdef GUILE_DEBUG_MACROS.

	Update for recent Gnulib.
	* src/idest.h: Include gl_xlist.h.
	(set_frame_value): New proto.
	* src/idop.c (add_stringlist, add_field, frame_to_list): Static.
	* src/slist.c: Shut up gcc warnings.
	* gnulib.modules: Add xlist.
	* src/backup.c: Include unistd.h

2010-01-02  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years.
	Happy GNU Year!

2009-10-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix doc/Commit
	* doc/Commit (gray_print_section): Output anchors before
	chapter/section/etc. titles, so that the heading menu in
	monolithic document works properly.

	Minor change
	* doc/Config: Fix copyright statement.

2009-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix.
	* libid3tag/file.c (v2_write): Return immediately if file->ntags
	is 0.

	Improve docs.
	* doc/Makefile.am (manual.tar.bz2, man-tar): New rules.
	(manual): Mark as phony.
	* doc/gendocs_template: Upgrade for the new webpage style.
	* doc/idest.texi: Minor changes.
	* doc/Config: New file.

2009-03-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.1
	* configure.ac, NEWS: Raise version number.
	* Makefile (make-ChangeLog): Remove spurious rule.

2009-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix
	* src/slist.c (concat_string_list): Fix endless loop (adding to
	the tail
	of the list being iterated).

2009-03-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.0
	* NEWS, configure.ac, README, README-hacking: Update.
	* doc/idest.texi: Finish documentation.
	* doc/Makefile.am (idest_TEXINFOS): Add macros.texi.

2009-03-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs.
	* doc/idest.texi: Document scripting mode.

2009-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve and document backup handling.
	* doc/idest.texi: Document backup methods.
	* src/cmdline.opt: Fix handling of the --backup option.

	Add documentation (incomplete)

	Improve scripting, implement v1->v2 conversion, implement
	--delete command.
	* libid3tag/file.c (v2_write): Change for make it possible to
	convert v1 to v2.
	* src/.gitignore: Add guile.x.
	* src/Makefile.am (idest_SOURCES): Add guile.x
	(BUILT_SOURCES): Add guile.x
	(SUFFIXES): Add .x
	(.c.x): New rule
	* src/cmdline.opt: New option: --trace.
	* src/guile.c: Rewrite.
	* src/idest.h (MODE_QUERY, MODE_MOD, MODE_DELETE): New defines
	(from main.c).
	(guile_transform, guile_list): New protos.
	(guile_apply): Remove.
	* src/idop.c (set_tags): Handle convert_version == 2.
	(del_tags): New function.
	* src/main.c (del_id3): Call del_tags

2009-03-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Finish guile support

	Add framework for Guile scripting.
	* am/guile.m4: New file.
	* Makefile.am (ACLOCAL_AMFLAGS): Add -I am
	* configure.ac: Check for Guile.
	* src/Makefile.am (idest_SOURCES): guile.c
	(INCLUDES,LDADD): Add guile variables.
	* src/cmdline.opt: New options: --script and --function.
	* src/getopt.m4: Support conditional compilation.
	* src/idest.h (guile_debug, guile_script, guile_function):
	New externs.
	* src/guile.c: New file.

	Minor fixes

2009-03-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix src/.gitignore

	Remove old v1 code. Add an option for converting tags to v1.
	* libid3tag/file.c (SIZE_T_MAX): Rename to MALLOC_MAX. Use
	(size_t_max-1),
	due to a bug in glibc's malloc.
	(make_temp_file): Fix size calculation (memory overrun).
	(v2_write): data and/or length can be 0.
	(id3_file_update): Drop v2 header, if ID3_TAG_OPTION_NO_ID3V2
	is set.
	* libid3tag/id3tag.h (ID3_TAG_OPTION_NO_ID3V2): New constant.
	* src/id3v1.c, src/id3v1.h: Remove.
	* src/id3v2.c: Rename to...
	* src/idop.c: ... this.
	(set_tags): Handle convert_version and version_option.
	* src/Makefile.am: Reflect the above.
	* src/cmdline.opt (--convert, -C): New option.
	* src/idest.h: Kick off id3v1.h.
	(convert_version, version_option): new externs.
	(set_id3v1, query_id3v1, del_id3v1)
	(set_id3v2, query_id3v2, del_id3v2): Remove.
	(set_tags, query_tags, del_tags): New prototypes.
	* src/main.c (convert_version): New variable.
	(query_id3): use all_frames to determine ed_list.
	(set_id3): Remove old v1 code.
	(main): Remove old v1 code.

2009-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix in libid3tag.
	* libid3tag/file.c (v2_write): Implement general case.

	Use included copy of libid3tag.
	* Makefile.am (SUBDIRS): Add libid3tag.
	* README-hacking: Mention gperf
	* bootstrap: Replace series of invocation of autotools with
	a single
	invocation of autoreconf.
	* bootstrap.conf: Make sure libid3tag/m4 exists.
	* configure.ac: Don't check for external libid3tag. Use included
	copy.
	* src/Makefile.am: Link with ../libid3tag/libid3tag.a.
	* src/id3v2.c (set_id3v2): Attach new frame to the tag.
	Remove call to backup.
	* src/main.c (backup_type): Change default value back to
	no_backups.
	(set_id3, del_id3): Call backup.
	* src/libid3tag: Trimmed-down copy of libid3tag 0.15.1b.

	Initial implementation of --set.
	* src/cmdline.opt: New option --delete.
	* src/id3v1.c (del_id3v1): Initial implementation.
	* src/id3v2.c: Implement setting basic fields.
	* src/idest.h (latin1_output): Rename to latin1_option.
	(enum item_ids): New enum (from main.c)
	(struct ed_item): New data type (from main.c)
	(ed_list): New global.
	* src/main.c (latin1_output): Rename to latin1_option.
	(backup_type): Default to numbered_existing_backups.

2009-02-08  Sergey Poznyakoff  <gray@gnu.org.ua>

	Preparation for implementing set/delete operations.
	* src/backup.c: New file.
	* gnulib.modules: Request backupfile, dirname and save-cwd.
	* src/Makefile.am (idest_SOURCES): Add backup.c
	* src/cmdline.opt: New options --backup and --backup-directory.
	* src/id3v2.c: Minor change.
	* src/idest.h: Include backupfile.h
	(backup_type, backup_dir): New externs.
	* src/main.c: Minor change.

2009-02-07  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix
	* src/getopt.m4: Fix printing optional arguments in help output.

	Assume `idest' as the official project name

	Implement ID3v2 read-only access.
	* .gitignore: Add core.
	* gnulib.modules: Add argmatch and linked-list.
	* src/.gitignore: Add .gdbinit
	* src/slist.c: New file
	* src/Makefile.am (id3ed_SOURCES): Add new files.
	* src/cmdline.opt: Remove all options, except -q and --latin1.
	Add new options: --all and --set.
	* src/getopt.m4 (BEGIN): Fix handling of optional arguments.
	* src/id3ed.h: Include xalloc.h, gl_linked_list.h and argmatch.h
	(v1_block,title,artist,album,year,comment,track,genre): Remove.
	(DEFAULT_ED_LIST): New define.
	(set_id3v1): Takes 2 arguments.
	(string_list_action_fn): new data type.
	(new_string_list,do_string_list,concat_string_list)
	(print_string_list): New prototypes.
	(ed_list_add_item,ed_list_print,ed_list_add_assignment):
	New prototypes.
	* src/id3v1.c (id3v1_read,id3v1_write): Bugfixes.
	(set_id3v1): Take a pointer to id3v1_block as 2nd argument.
	* src/id3v2.c: Implement show_tags.
	* src/main.c: Rewrite.

2009-02-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Switch to using libid3tag

	Add src/Makefile.am and .gitignores

2009-02-04  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add gnulib framework

2009-02-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Initial commit

Local Variables:
mode: change-log
version-control: never
buffer-read-only: t
End:
