aboutsummaryrefslogtreecommitdiff
path: root/src/guile.c
AgeCommit message (Collapse)AuthorFiles
2017-03-11Version 2.1Sergey Poznyakoff1
2016-11-17Keep textual data in UTF-8 internally; provide new options for recodingSergey Poznyakoff1
* 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-05Bugfixes.Sergey Poznyakoff1
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.
2011-08-01Finish the docs.Sergey Poznyakoff1
* 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-29Add testsuiteSergey Poznyakoff1
* 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-26Various improvements.Sergey Poznyakoff1
* 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.
2011-07-26Improve batch/format interface.Sergey Poznyakoff1
* 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-25Implement --batch option (a generalization of --format).Sergey Poznyakoff1
* 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-25Implement `--format help', which shows a list of existing formats.Sergey Poznyakoff1
* 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-23Implement new formats: framelist & lyrics.Sergey Poznyakoff1
* 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-23BugfixesSergey Poznyakoff1
* 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-20Implement --format option.Sergey Poznyakoff1
* 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-17Minor changes.Sergey Poznyakoff1
2011-07-17Bugfix.Sergey Poznyakoff1
* src/guile.c: Exit with code 1 if the file fails to load.
2011-07-17Fix some warnings.Sergey Poznyakoff1
2011-07-17Improve error reporting in Guile.Sergey Poznyakoff1
2011-07-17Handle unsupported frames in Scheme code graciously.Sergey Poznyakoff1
* 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.
2011-07-16Major rewrite.Sergey Poznyakoff1
* 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-13Get rid of argmatch.Sergey Poznyakoff1
* 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.
2011-07-12Improve Guile startup files loading sequence.Sergey Poznyakoff1
* 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-12Minor change.Sergey Poznyakoff1
* 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-12Various fixes.Sergey Poznyakoff1
* 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-12Fix terminology. Use "content descriptor" (or condesc) throughout the code ↵Sergey Poznyakoff1
and docs.
2011-07-11BugfixSergey Poznyakoff1
2011-07-11Change Scheme representation of frame lists.Sergey Poznyakoff1
* 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.
2011-07-10Guile scripts can access and modify command line arguments.Sergey Poznyakoff1
* 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.
2011-07-10Search for Guile files in the %load-path. Implement startup files.Sergey Poznyakoff1
* 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-08Make sure no old tag instances remain after modifications.Sergey Poznyakoff1
* 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-03-19Update copyright years.Sergey Poznyakoff1
2010-04-14Migrate Guile support to GINT.Sergey Poznyakoff1
* 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-02Prepare for Guile 2.0: fix obsolete and deprecated calls in Guile code.Sergey Poznyakoff1
* 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.
2010-01-02Update copyright years.Sergey Poznyakoff1
Happy GNU Year!
2009-03-17Improve scripting, implement v1->v2 conversion, implement --delete command.Sergey Poznyakoff1
* 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-16Finish guile supportSergey Poznyakoff1
2009-03-16Add framework for Guile scripting.Sergey Poznyakoff1
* 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.

Return to:

Send suggestions and report system problems to the System administrator.