This is ChangeLog at source code level (src/ChangeLog). It describes
changes in source files, as opposed to top-level ChangeLog, which shall
describe more high-level changes.

2010-10-22 Kamil Ignacak
	* configuration/cdw_config.c, configuration/cdw_config_ui_internals.c:
	  updating default size of padding in cdrecord options;
	* user_interface/cdw_processwin.c: fixing width of field displaying
	  current writing speed, so the string doesn't jump when the speed
	  oscillates around 10.0
	* native_file_system/cdw_fs_browser.c: clearing up piece of code
	  in cdw_fs_browser_new() that may have caused problems whenever
	  the function has been called with empty initial path;

2010-10-21 Kamil Ignacak
	* main.c: modifying one conditional compilation, adding gettext
	  calls and comments, adjusting includes;
	* utilities/cdw_utils.c, external_tools/cdw_md5sum.c,
	  native_file_system/cdw_fs.c: adding gettext calls and comments;
	* utilities/cdw_sys.c: updating one comment;
	* tasks/cdw_read_disc_info.c: one change to detect situation when
	  there is no drive at all in user's computer;
	* tasks/cdw_burn_disc.c, configuration/cdw_config_ui_internals.c,
	  user_interface/cdw_erase_wizard.c, external_tools/cdw_cdrecord.c:
	  adding gettext comments;
	* tasks/cdw_erase_disc.c: adding gettext comments, adding some
	  calls to UI refresh functions to fix corruption of UI when kernel
	  detects empty disc and prints messages to tty;
	* disc_and_drive/cdw_drive.c: few changes to detect situation when
	  there is no drive at all in user's computer; adding gettext
	  comments;

2010-10-19 Kamil Ignacak
	* utilities/cdw_cdll.c, user_interface/cdw_ncurses.c,
	  user_interface/cdw_main_window.c, native_file_system/cdw_file.c:
	  removing unused code;
	* utilities/cdw_sys.c: small changes to silence compiler warnings;
	* tasks/cdw_read_disc.c: small fix in debug message;
	* configuration/cdw_config_ui_internals.c: replacing some deallocation
	  code with new, separate function;
	* user_interface/cdw_colors.c: yet another change in colors scheme;
	* user_interface/cdw_erase_wizard.c: cdw_erase_wizard_destroy():
	  adding some deallocation functions fixes small memory leak;
	  removing unused code;
	* user_interface/cdw_form.c: adding new function with code
	  deallocating some memory used by cdw form;
	* user_interface/cdw_widgets.c: small change on top of file to
	  silence compiler warnings; removing unused code;
	* disc_and_drive/cdw_drive.c: small change in includes to silence
	  compiler warnings; adding call to free() in
	  cdw_drive_print_help_message() - fixing a memory leak; removing
	  unused code;
	* disc_and_drive/cdw_disc.c: clearing up piece of code related
	  to reading ISO filesystem with read();
	* external_tools/cdw_ext_tools.c: commenting out one function
	  declaration to silence compiler warnings; removing unused code;
	* native_file_system/cdw_file_picker.c:
	  cdw_fs_ui_file_picker_destroy(): added missing deallocation
	  function to fix memory leak; removed unused code;
	* native_file_system/cdw_fs.c: adding/fixing gettext comments;

2010-10-16 Kamil Ignacak
	* tasks/cdw_read_disc_info.c: small fix/update of how information
	  about disc is displayed; added comments for gettext strings;
	* tasks/cdw_burn_disc.c: updating one dialog message;
	* tasks/cdw_erase_disc.c: cdw_erase_disc(): adding a comment/FIXME;
	* user_interface/cdw_processwin.c: updating one debug message;
	* user_interface/cdw_ncurses.c: updating one message;
	* disc_and_drive/cdw_drive.c: cdw_drive_eject_tray(): attempting
	  to fix a problem where cdw sometimes can't eject a tray - drive
	  is probably blocked by some process, and ioctl() fails; adding
	  small delay seems to resolve this problem; this happens mostly
	  with DVD-RW Seq discs;
	* disc_and_drive/cdw_cdio.c: updating one debug message;
	* disc_and_drive/cdw_disc.c: cdw_disc_get_meta_info(): updating how
	  audio CDs are handled; cdw_disc_debug_print_disc(): small update
	  in debug message;
	* external_tools/cdw_ext_tools.c: cdw_ext_tools_build_dvd_family():
	  adding one line of code that fixes a bug: cdw crashed when there
	  were no tool families for DVDs available, and user opened
	  Configuration window and tried to configure them tools - "DVD
	  family" dropdown had no items; similar fix has been made in
	  cdw_ext_tools_build_cd_family(), even though there is no "CD
	  family" dropdown (yet); some small refactoring with tool names;
	* external_tools/cdw_cdrecord_regex.c: small change in comment;
	* native_file_system/cdw_fs_browser.c: adding one call to refresh()
	  function;

2010-10-03 Kamil Ignacak
	* utilities/cdw_regex.c: small change in
	  cdw_regex_execute_regexes_table(): the function exits earlier, as
	  soon as a match is caught and appropriate handler is called;
	* tasks/cdw_read_disc.c: minor changes in debug messages, dialog
	  messages and comments; other minor changes;
	* tasks/cdw_read_disc_info.c: small fix in layout of messages
	  printed in disc info view; previously some strings overlapped;
	* tasks/cdw_task.c: small update of one of dialog messages;
	* configuration/cdw_config.c: adding code handling new flag
	  show_dvd_rw_support_warning; cdw_config_debug_print_config():
	  function uses new extern table with strings representing
	  volume sizes; cdw_config_var_write_to_file(): small change in
	  layout of text printed to configuration file;
	  cdw_config_var_set_defaults(): removing redundant slash from
	  path to cdw log file;
	* configuration/cdw_config_ui_internals.c: small refactoring
	  of code that creates volumes size dropdown;
	* user_interface/cdw_colors.c: changing background of error messages
	  from red to yellow - yellow background gives better readability
	  of text;
	* user_interface/cdw_ncurses.c: added KEY_HOME and KEY_END to
	  cdw_ncurses_key_labels;
	* user_interface/cdw_form.c: small update in debug message;
	* disc_and_drive/cdw_drive.c: cdw_drive_make_drives_dropdown(): added
	  missing gettext call; cdw_drive_status() is no longer static;
	* disc_and_drive/cdw_cdio.c: changes in return values for some
	  functions; added cdw_cdio_copy_print_debug_on_error() used
	  by functions copying data from cdio disc;
	* disc_and_drive/cdw_disc.c: small changes in #includes;
	  cdw_disc_get_meta_info() now warns about imperfect support for
	  DVD-RW discs only once; cdw_disc_resolve(): additional check
	  to avoid further unnecessary checks;
	* external_tools/cdw_cdrecord_regex.c: fixing one problem that
	  may have occurred when writing data to discs with large speeds
	  (when drive buffer was filled in less than 100%) - as a result
	  process window wasn't refreshed properly; added second method
	  of catching drive's default writing speed that works with
	  cdrecord;
	* external_tools/cdw_growisofs_regex.c: fixing typo in debug message;
	* external_tools/cdw_md5sum.c: small changes that are result of
	  changes in cdw_cdio module;
	* external_tools/cdw_dvd_rw_mediainfo.c: small fix for proper
	  recognizing of DVD-ROM discs;
	* native_file_system/cdw_fs.c: one fix of return value, one change
	  in dialog message

2010-09-17 (2) Kamil Ignacak
	* external_tools/cdw_md5sum.c: updating few messages;
	* external_tools/cdw_cdrecord_regex.c: some changes in comments,
	  very minor changes in code (reorganizing few lines of code);
	* disc_and_drive/cdw_cdio.c: cdw_cdio_disc_reset(): function now uses
	  its argument instead of global variable; changes in few functions
	  fix a bug in correct handling of empty discs;
	* disc_and_drive/cdw_drive.c: some changes in variable names (using
	  more consistent names); adding/changing some calls to usleep()
	  to improve user experience when drive tray is closed;
	* configuration/cdw_config_ui_internals.c,
	  configuration/cdw_config.c: some changes in variable names
	  (using more consistent names);

2010-09-17 Kamil Ignacak
	* external_tools/cdw_regex_dispatch.c: moved some generic functions
	  to new file (utilities/cdw_regex.c);
	* external_tools/cdw_mkisofs.c: improving one assert;
	* external_tools/cdw_cdrecord_regex.c: moving all regular expressions
	  for stderr to a table, converting functions processing these
	  regular expressions (preparing, executing and cleaning them up)
	  to new-style functions; some code has been abstracted and moved
	  to new file (utilities/cdw_regex.c); adding few new handler
	  functions - these functions replace simple assignments that were
	  sufficient in old code, now these assignments needed to be moved
	  to separate functions; fixing size of some char buffers; fixing
	  one debug message in cdw_cdrecord_handle_image_writing();
	  updating some functions so that they return int value and accept
	  regex_t and regmatch_t arguments; removing unused code from the
	  file;
	* external_tools/cdw_cdrecord.c: cdw_cdrecord_set_disc_states():
	  fixing one incorrect assignment of symbolic value;
	* disc_and_drive/cdw_disc.c: fixing one #include;
	* tasks/cdw_task.c: removing 2 redundant lines of initialization;
	* tasks/cdw_erase_disc.c: cdw_erase_disc(): checking value returned
	  by cdw_read_disc_info();
	* tasks/cdw_read_disc.c: cdw_read_disc_read_audio_tracks(): fixing
	  memory leak (one variable was not free()d); fixing how
	  cdw_read_disc_read_data_disc_prepare() returns a value;
	  cdw_read_disc_read_data_track(): removing one unnecessary variable
	  of type cdw_rv_t; cdw_read_disc_get_audio_track_fullpath():
	  removing unnecessary check if a track is an audio track;
	* utilities/cdw_regex.c: new file with code that handles variables
	  of cdw_regex_t type - this is a type that collects few variables
	  useful in using regular expressions in cdw;

2010-09-12 Kamil Ignacak
	* main.c, configuration/cdw_config.c,
	  configuration/cdw_config_ui_internals.c,
	  external_tools/cdw_cdrecord.c,
	  external_tools/cdw_dvd_rw_format.c,
	  external_tools/cdw_dvd_rw_mediainfo.c,
	  external_tools/cdw_ext_tools.c, external_tools/cdw_growisofs.c,
	  external_tools/cdw_md5sum.c, external_tools/cdw_mkisofs.c,
	  native_file_system/cdw_file_picker.c, native_file_system/cdw_fs.c,
	  native_file_system/cdw_fs_browser.c,
	  optical_file_systems/cdw_iso9660.c, tasks/cdw_burn_disc.c,
	  tasks/cdw_create_image.c, tasks/cdw_read_disc.c,
	  user_interface/cdw_help.c, utilities/cdw_logging.c:
	  adjusting #includes
	* disc_and_drive/cdw_drive.c: trying to enforce proper refreshing
	  of processwin;
	* external_tools/cdw_cdrecord_regex.c,
	  external_tools/cdw_dvd_rw_format_regex.c,
	  external_tools/cdw_dvd_rw_mediainfo_regex.c,
	  external_tools/cdw_growisofs_regex.c,
	  external_tools/cdw_md5sum_regex.c,
	  external_tools/cdw_mkisofs_regex.c:
	  adjusting #includes, using new function names from
	  cdw_regex_dispatch();
	* cdw_utils.c: some code has been moved from cdw_regex_dispatch();
	* cdw_thread.c: using new function names from cdw_regex_dispatch();
	* external_tools/cdw_regex_dispatch.c: 6 almost identical functions
	  have been merged into one function (cdw_regex_caller()) + few
	  tables; some code has been moved to cdw_utils.c

2010-09-06 Kamil Ignacak
	* cdw_cdio.c: changing some variable names; refactoring;
	* cdw_disc.c: cdw_disc_check_if_is_readable(): if a disc is not
	  readable the function now returns pointer to diagnostic string
	  that can be used as message displayed to user; the function now
	  checks when disc type is DVD if ISO9660 file system is supported
	  by operating system kernel - this fixes a fixme;
	* tasks/cdw_read_disc.c: cdw_read_disc_check_preconditions() now uses
	  pointer to diagnostic message returned by
	  cdw_disc_check_if_is_readable()
	* utilities/cdw_sys.c: minor changes in
	  cdw_sys_check_file_system_support()

2010-09-04 Kamil Ignacak
	* external_tools.c: adding "const" keyword to some "char *"
	  pointers, fixing one compiler warning about discarded information
	  about const;
	* write_wizard.c, tasks/cdw_burn_disc.c: replacing references to
	  disc->cdio_blank with disc->state_empty
	* cdw_drive.c: updating call to cdw_disc_get_meta_info();
	* cdw_cdio.c: updating cdw_cdio_disc_t data structure by adding
	  cdw_optical_fs_t field; reorganizing code that reads ISO9660
	  information from a disc (parts of code moved to new function);
	  other changes;
	* cdw_task.c, external_tools/cdw_cdrecord.c: removing reference to
	  task->media_info.get_cdrecord_msinfo, this field has been removed
	  because now cdrecord always fetches msinfo;
	* cdw_ui_main.c: updating some references to cdw_disc_t fields;
	* cdw_disc.c: one bug fix: in code from latest commit information
	  about disc type wasn't correctly copied from cdw_cdio to cdw_disc;
	  refactoring: reorganizing code that fetches meta information from
	  a disc: some functions disappeared, some were changed; updating
	  cdw_disc_debug_print_disc(), making it useful, and used, again;
	  other minor changes and improvements; updating comments;
	* tasks/cdw_read_disc_info.c: few small changes that are results of
	  changes in cdw_disc;

2010-09-01 Kamil Ignacak
	* cdw_disc.h: cdw_disc_t type has been rewritten; changes aren't
	  significant, but they trigger a lot of changes in other files;
	* cdw_disc.c: changes that are a result in cdw_disc.h; refactoring
	  some functions; changing prototypes (and implementation) of some
	  functions so that they no longer operate on global variable
	  "current_disc", but on function argument of type "cdw_disc_t *";
	* utilities/cdw_sys.c: updating one debug message;
	* utils.c: one function moved from cdw_disc.c, one function (that
	  returns pointer to a label) added;
	* cdw_fs_browser.c: renaming one variable in cdw_fs_browser_driver(),
	  adding one utility function (cdw_fs_browser_is_navigation_key());
	* write_wizard.c, blank_wizard.c, tasks/cdw_erase_disc.c,
	  tasks/cdw_burn_disc.c, tasks/cdw_read_disc.c,
	  external_tools/cdw_dvd_rw_mediainfo.c,
	  external_tools/cdw_growisofs.c, external_tools/cdw_cdrecord.c,
	  external_tools/cdw_mkisofs.c, dvd_rw_mediainfo_pipe_regexp.c,
	  external_tools/cdw_dvd_rw_format.c, cdw_task.c, cdw_ui_main.c,
	  cdrecord_pipe_regexp.c, cdw_drive.c: changes triggered by changes
	  in cdw_disc.c/cdw_disc.h
	* cdw_fs_ui.c: refactoring cdw_fs_ui_file_picker_driver();
	* cdw_ncurses.c: cdw_ncurses_window_new(): fixing one potential
	  bug in code creating new window; changing policy when a subwindow
	  is decorated with frame (only if this is main window, not
	  a subwindow);
	* main.c: 'D' hotkey now calls new function
	  cdw_read_and_display_disc_info() - the function shows a window
	  with summary of disc information rather than full log file;
	* cdw_cdio.c: adding few lines of code that handle new field in
	  cdw_cdio_t type: structure with information about iso9660 file
	  system;
	* tasks/cdw_read_disc_info.c: new function
	  cdw_read_and_display_disc_info(): function that shows window with
	  short summary of information about current disc; this is only
	  beginning of developing this function, it is intended to be called
	  when user hits 'D' hotkey - information displayed in this window
	  will be much more readable (and succinct) than all the information
	  displayed in log file; also: some changes triggered by changes in
	  cdw_disc.c/cdw_disc.h;

2010-08-29 Kamil Ignacak
	* write_wizard.c: using new function name (cdw_dropdown_new2() ->
	  cdw_dropdown_new());
	* cdw_file_manager.c: fixing typos, adding 'q' and 'Q' keys as keys
	  that allow user to exit list of selected files (in addition to
	  already recognized Escape key);
	* cdw_fs.c: using new function name (cdw_sys_errno_handler() ->
	  cdw_fs_errno_handler()); fixing typos; moving cdw_fs_errno_handler()
	  (old cdw_sys_errno_handler) from utils.c to cdw_fs.c; the function
	  has been rebuilt with most of data moved to external table; moving
	  unused code to unused_code.see;
	* cdw_iso_image.c: using new function name (cdw_sys_errno_handler() ->
	  cdw_fs_errno_handler());
	* cdw_drive.c: using new function name (cdw_dropdown_new2() ->
	  cdw_dropdown_new()); updating debug messages;
	* main.c: adding new header; mtrace() is now enabled only in debug
	  builds;
	* utils.c: cdw_sys*() functions moved to different files:
	  cdw_sys_errno_handler() is now cdw_fs_errno_handler() in cdw_fs.c,
	  rest of functions moved to utilities/cdw_sys.c
	* cdw_fs_ui.c:  using new function name (cdw_sys_errno_handler() ->
	  cdw_fs_errno_handler());
	* cdrecord_pipe_regexp.c: moving some more regexes into a loop;
	  fixing small memory leak - some regex variables weren't properly
	  deallocated
	* cdw_fs_browser.c: adding 'q' and 'Q' keys as keys that allow user
	  to exit list of selected files (in addition to already recognized
	  Escape key); updating some CDW_* constant names;
	* cdw_cdio.c: fixing typos, updating some references to g_disc
	  variable (which are disabled under normal conditions anyway);
	  adding call to cdw_sys_check_filesystem_support(), which doesn't
	  do much, it is just a call of function that will have some use
	  in future;
	* external_tools.c: using new function name (cdw_dropdown_new2() ->
	  cdw_dropdown_new()); fixing typos;
	* cdw_widgets.c: fixing typos, updating debug messages; updating
	  some CDW_* constant names; removing unused fragments of code;
	  removing old definition of cdw_dropdown_new() that created
	  "old style" dropdowns, and renaming cdw_dropdown_new2() to
	  cdw_dropdown_new(); some minor refactoring in
	  cdw_input_line_safe_driver_message();
	* blank_wizard.c:  using new function name (cdw_dropdown_new2() ->
	  cdw_dropdown_new()); fixing typos;
	* cdw_cdio_drives.c: refactoring (moving some code to smaller
	  functions); fixing one problem: some entries discovered by cdio
	  may be symbolic links to real devices, and using such entries
	  in cdw (i.e. using them by external tools called by cdw) may cause
	  problems; one of such problems was that ioctl reported "no such
	  file" right after burning with growisofs; I don't know why this
	  happened, but it happened when cdw was using symbolic link; now
	  code in cdw_cdio_drives.c recognizes symbolic links and resolves
	  them (using canonicalization); this may lead to duplicate entries
	  on list of devices, so cdw checks for duplicates too;
	* cdw_config_ui_internals.c: small changes in comments; using new
	  function name (cdw_dropdown_new2() -> cdw_dropdown_new());
	* src/utilities/cdw_sys.c: new file with functions that interact
	  with some operating system files or handle operating system signals;
	  cdw_sys_check_filesystem_support() is a new function that checks
	  if operating system supports ISO9660 and UDF file systems; this
	  function will be used to check if cdw is able to read given disc;
	  since cdw uses read()(2) function to read ISO9660 file systems from
	  DVD discs (instead of using functions from libiso9660 library),
	  support for reading ISO9660 (and - in future - UDF) by operating
	  system is needed;

2010-08-22 Kamil Ignacak
	* cdw_config.c, mkisofs_interface.c, growisofs_interface.c,
	  cdw_burn_disc.c: adding/updating code after changing names
	  of some fields in cdw_config_t data type;
	* cdw_read_disc.c, main.c, cdrecord_interface.c, cdw_iso_image.c:
	  updating code after changing "tempdir" to "iso_image_full_path"
	  in cdw_config_t data type;
	* cdw_drive.c: few small fixes/changes, using a symbolic name
	  instead of magic number;
	* cdw_cdio_drives.c: small improvement in cdw_cdio_drives_collect(),
	  other minor changes;
	* cdw_config_ui_internals.c: adding/updating code after changing
	  names of some fields in cdw_config_t data type; removing button
	  next to "boot image file" input field; the field itself is now
	  called "boot disc options", and is intended to store all options
	  specific for creating boot disc; I have never tested this
	  functionality, and I can't guarantee that it woks, so I'm
	  simplifying it as much as possible, moving all responsibility
	  to the user;
	* cdw_create_image.c: disabling some code related to boot disc
	  image; updating code after changing "tempdir" to
	  "iso_image_full_path" in cdw_config_t data type;

2010-08-22 Kamil Ignacak
	* utils.c: getting rid of reference to global_config variable;
	* cdw_config.c: few changes after changing cdrw_device to
	  custom_device and adding cdw_drive to cdw_config_t type;
	* dvd_rw_format_interface.c, cdw_erase_disc.c: replacing
	  cdw_config_get_cdrw_device() with cdw_drive_get_drive_fullpath();
	* dvd_rw_mediainfo_interface.c: replacing one reference to
	  global_config with call to cdw_drive function;
	* cdw_read_disc.c, cdw_disc.c: updating one function call;
	* cdrecord_pipe_regexp.c: fixing reference to global config variable;
	* cdw_drive.c: adding code that manages information about drives,
	  provided by cdw_cdio_drives module, and that creates and manages
	  dropdown used in hardware panel in configuration window;
	* main.c: adding init functions calls for cdw_cdio_drives and
	  cdw_drive modules;
	* md5sum_interface.c: removing reference to global_config, updating
	  one function call;
	* cdw_cdio.c: cdw_cdio_open_disc(): the function now gets path to
	  drive from cdw_drive module, not as a function argument; other
	  minor changes;
	* cdrecord_interface.c, mkisofs_interface.c, growisofs_interface.c,
	  cdw_burn_disc.c: using cdw_drive_get_drive_fullpath() to
	  get drive path;
	* cdw_config_ui_internals.c: adding a dropdown to "hardware" page;
	  the dropdown is populated with paths to drives detected by
	  cdw_cdio_drives module + one item that allows user to select
	  custom path to a drive; subwindow with help text, displayed in
	  "hardware" page is now managed by cdw_drive module; other minor
	  changes;
	* cdw_ui_main.c: cdw_main_ui_disc_info_view_display_data(): adding
	  code that displays "no drive" information in "disc info" area
	  when cdw_cdio_drives module can't detect any drive;
	  cdw_main_ui_show_license(): fixing default path to license file
	  restores displaying full text of license instead of just displaying
	  short license summary;
	* task/cdw_read_disc_info.c: updating some function calls, using
	  cdw_drive_get_drive_fullpath() to get drive path; removing reference
	  to global_config;
	* cdw_cdio_drives.c: new file using few functions from <cdio/device.h>
	  file to collect basic information about discs available in user's
	  system; the information is then used by cdw_drive module; adding
	  this code adds hardware detection and semi-auto-configuration
	  functionality to cdw;

2010-08-19 Kamil Ignacak
	* cdw_config.c: adding cdw_config_get_cdrw_device() getter;
	  updating few lines of code that used "blank_fast" field, now
	  the field's name is "erase_mode";
	* dvd_rw_format_interface.c: removing direct references to
	  "global_config" variable; using "erase_mode" field from task
	  variable instead of from config variable;
	* write_wizard.c: updating one debug message;
	* cdrecord_pipe_regexp.c: moving few more regexps and handlers
	  into tables; doing some general clean up;
	* cdrecord_interface.c: updating references to fields of "task"
	  variable, related to erasing of disc;
	* blank_wizard.c: large parts of the wizard have been rewritten
	  using cdw_form functions and data types;
	* cdw_config_ui_internals.c: replacing config->blank_fast with
	  config->erase_mode;
	* growisofs_pipe_regexp.c: moving function erasing fifo and
	  speed information in process window from this module to some
	  higher-level code;
	* cdw_erase_disc.c, cdw_task.c: few changes that are a result of
	  renaming constants, fields and functions in other modules;
	* cdw_burn_disc.c: updating when fifo and speed information is
	  erased from process window after burning is finished;

2010-08-15 Kamil Ignacak
	* thread.c, pipe_regexp.c: fixing/updating some TODOs/FIXMEs;
	  removing calls to clean_before_cdw_exit();
	* utils.c: SIGSEGV handler: handler no longer calls old sigsegv
	  handler, it calls exit() instead, to trigger calling functions
	  registered with atexit(); other minor changes;
	* cdw_config.c: fixing one FIXME; updating some calls to one of
	  cdw_string functions (new name), updating some debug messages;
	* cdw_widgets.c: doing one TODO, adding comments, updating one
	  function name
	* write_wizard.c, cdw_text_file_viewer.c, cdw_list_display.c,
	  cdw_cdio.c, cdrecord_interface.c, growisofs_pipe_regexp.c:
	  fixing/updating some TODOs/FIXMEs;
	* cdw_logging.c: replacing symbolic constant representing hardwired
	  log file name with "const char *" variable
	* cdw_fs.c: some refactoring in code traversing file system: parts
	  of code encapsulated in new functions; did some TODOs; "follow
	  symlinks" is now part of cdw_fs_visitor_data_t type, which
	  simplifies argument lists of some functions; other minor changes;
	* cdw_read_disc.c: removed unnecessary function declaration;
	* cdw_ncurses.c: doing one TODO: replacing old function creating
	  fields with newer one;
	* main.c: removing calls to clean_before_cdw_exit() and adding
	  calls to atexit() that register <module name>_clean() functions;
	  other minor changes;
	* cdw_file.c: adding one strerror() call in cdw_file_new_stat();
	* cdw_file_manager.c:
	  cdw_file_manager_calculate_selected_files_size_mb(): updating
	  and fixing how size of selected files is calculated and updated;
	  there was a little bug elsewhere, that caused incorrect displaying
	  of size of symbolic links, this change helps fixing it;
	* cdw_config_ui.c: cdw_config_ui_window() adding call to function
	  regenerating selected files view to ensure that change in "follow
	  symlinks" is reflected in list of selected files;
	* cdw_string.c: some cleaning up in cdw_string_security_parser()
	  (doing one TODO triggered further changes);
	* cdw_ui_main.c: moving one function to "unused code" part of file
	  (this was a TODO); other minor changes;
	* cdw_disc.c: two minor changes in cdw_disc_current_disc_reset();
	* cdw_form.c: name of one of fields in cdw form type has changed;
	  some small changes in cdw_form_description_to_fields();
	* tasks/cdw_read_disc_info.c: adding some comments for translators;
	* cdw_config_ui_internals.c: minor change: name of one filed in cdw
	  form has changed; also some changes in comments;

2010-08-14 Kamil Ignacak
	* cdw_config.c: adding code that handles "joliet-long" option;
	* cdw_read_disc.c: code in the file has been reorganized to
	  make clearer distinction between reading audio CD and reading
	  data CD/DVD; when user attempts to read multi-track data disc,
	  he is warned that only first track of disc can and will be read;
	  code reading data discs has been changed so that it reads only
	  first track of a disc;
	* cdrecord_pipe_regexp.c: I'm starting to reorganize data and
	  function calls in this file so that data is organized in a table,
	  and function calls are executed in a loop; I hope that this will
	  make the code easier to maintain; code capturing output of
	  cdrecord during burning data now captures information about speed
	  of burning, and displays it in process window;
	* cdw_processwin.c: few changes to enable displaying writing speed
	  in process window (in the same line as FIFO information) and to
	  make erasing the information from process window;
	* cdw_cdio.c: few changes in cdw_cdio_copy_sectors_to_file_sub():
	  the changes fix defect that caused incorrect display of progress
	  of reading tracks on multi-track audio disc; the reading itself
	  was correct, but displaying progress was not; the bug was
	  introduced few commits ago; simplifying list of arguments of
	  cdw_cdio_update_processwin();
	* cdw_config_ui_internals.c: adding "Long Joliet names" checkbox
	  in ISO9660 config pages; adding button activating file picker
	  widget next to "boot image" input field;
	* growisofs_pipe_regexp.c: adding code that captures burning speed
	  in output of growisofs, and prints the information to progress
	  window;
	* mkisofs_interface.c: adding code related to "joliet-long" option;
	* cdw_task.c: cdw_task_check_tool_status(): updating one message
	  printed in dialog box, referring to "Joliet long" option;

2010-08-11 Kamil Ignacak
	* utils.c: added code handling SIGSEGV signal, reorganized code
	  handling signals;
	* main.c: main(): removed call to zombie_handler_init() and added
	  call to cdw_sys_signal_init(); other minor changes;
	* cdw_cdio.c: some small refactoring; added two helper functions:
	  cdw_cdio_get_fs_label() and cdw_cdio_is_fs_iso();
	* cdw_task.c: removed one condition in cdw_task_set_allowed_modes(),
	  it is no longer needed because cdw now can recognize if DVD+RW
	  or DVD-RW Res is empty or not;
	* cdw_ui_main.c: small changes in
	  cdw_main_ui_disc_info_view_display_data(): info is displayed only
	  when there is a disc in drive, and first row displays file system
	  type on disc in addition to disc type;
	* cdw_burn_disc.c: added warning dialog about possibility of
	  overwriting data on non-empty DVD+RW or DVD-RW Res discs;
	* cdw_disc.c: cdw_disc_resolve() makes proper use of disc->cdio_blank
	  field, leaving no place for uncertainty whether or not DVD+RW or
	  DVD-RW Res disc is empty; using cdw_cdio_get_fs_label() in
	  cdw_disc_get_meta_info();

2010-08-08 Kamil Ignacak
	* utils.c: updated one argument type;
	* growisofs_interface.c, dvd_rw_format_interface.c,
	  dvd_rw_mediainfo_interface.c: removed/updated code related
	  to process window module
	* cdw_fs.c: cdw_fs_check_device_mounted(): added checking of
	  errno after call to realpath();
	* cdw_read_disc.c: cdw_read_disc_read_tracks(): small change of
	  name of function printing to process window;
	  cdw_read_disc_check_preconditions(): using new function
	  cdw_read_disc_info()
	* growisofs_pipe_regexp.c, dvd_rw_format_pipe_regexp.c,
	  cdrecord_pipe_regexp.c: using new names of functions printing
	  to process window;
	* cdw_drive.c: changes of code related to process window; these
	  changes have triggered some refactoring and rewriting of
	  functions; code in this file may still undergo some changes soon;
	* cdw_processwin.c: refactoring; adding "active" field to process
	  window data structure so that other modules using process window
	  can know whether a process window already exists or not (in the
	  latter case other modules may decide to create their own process
	  window);
	* main.c: using few new functions in place of old ones;
	* md5sum_interface.c: removing/updating calls to process window
	  functions; "using_local_processwin" controls whether new process
	  window is needed (when user performs "stand alone verification
	  via 'v' hotkey), or or not (when verification is a part of
	  burning process);
	* cdw_cdio.c: cdw_cdio_copy_sectors_to_file_sub(): added one call
	  printing to process window information about reading completed
	  in 100%;
	* cdrecord_interface.c: removed/updated code related to process
	  window; removed some unused code;
	* cdw_erase_disc.c: changes related to calls of functions from
	  process window module; using new function cdw_read_disc_info();
	* cdw_create_image.c: using cdw_processwin_create() and
	  cdw_processwin_destroy();
	* mkisofs_interface.c: removing some code related to process window
	  module;
	* cdw_ui_main.c: added one comment;
	* cdw_burn_disc.c: added calls to few functions from process window
	  module; these calls were moved from lower-level modules (from
	  cdrecord interface and growisofs interface); using
	  cdw_read_disc_info() in cdw_burn_disc_is_disc_ready();
	* cdw_disc.c: cdw_disc_is_disc_ready() moved to new file
	  cdw_read_disc_info(); other minor changes;
	* tasks/cdw_read_disc_info.c: file that is intended to collect
	  high-level code related to getting disc information, mixing it
	  with some calls to process window interface, and put it behind
	  one or two function names;

2010-08-01 Kamil Ignacak
	* cdw_read_disc.c: cdw_read_disc(): rewriting main if()/else()
	  branches so that cdw can now read DVDs too; moving some strings
	  to external data structure (strings_table[] on top of file);
	  removing explicit call of cdw_cdio_get_disc_meta_info(); other
	  smaller changes;
	* write_wizard.c: updating code controlling 'verify' checkbox so
	  it may be visible for DVDs too
	* help.c: using updated CDW_MENU_* symbol;
	* growisofs_pipe_regexp.c: disabling some debug messages;
	* cdw_task.c: one change in cdw_task_select_tool_for_task() that
	  enables selecting md5sum when burning to DVDs;
	* cdw_iso_image.c: debug messages and minimal refactoring;
	* cdw_drive.c: adding usleep() in function reloading tray;
	* growisofs_interface.c: disabling some debug messages; small cleanup;
	* main.c: main(): code controlling movement of focus in main menu
	  allows "wrapping": when focus is on last position, and user presses
	  down arrow, focus is moved to first item; similarly for topmost
	  item; adding call to cdw_cdio_init(): function that initializes
	  cdio module;
	* utils.c: clean_before_cdw_exit(): adding call to cdw_cdio_clean():
	  a function that cleans up cdio module before closing application;
	* cdw_ui_main.c: cdw_main_ui_main_menu_view_create(): using changed
	  name of CDW_MENU_* symbol;
	* cdw_cdio.c: lots of changes; most important change is in code
	  related to reading sectors: cdw_cdio_copy_sectors_to_file() and
	  related code; some changes in code getting disc meta information,
	  some changes in main cdw_cdio data structure; added handler for
	  libcdio messages; added few id/label tables; added module
	  initializer/cleanup functions; getting disc meta information is
	  now part of opening cdio disc (it is no longer available directly
	  to other modules); other changes; overall the module has been
	  revised and cleaned up, but there are still some things to be
	  improved;
	* cdw_burn_disc.c: cdw_burn_disc(): added one 'else' branch after
	  attempting to burn ISO image larger than 4GB with wodim; other
	  minor changes;
	* isosize.c: small refactoring in isosize();
	* cdw_processwin.c: added one assertion in
	  cdw_processwin_display_progress_conditional() to catch errors in
	  calculating input values;
	* cdw_disc.c: cdw_disc_get_meta_info(): removed explicit call to
	  cdw_cdio_get_disc_meta_info(), adjusted rest of code accordingly;
	  cdw_disc_supported_for_ripping() now returns true for DVDs;
	* md5sum_interface.c: removed explicit call to
	  cdw_cdio_get_disc_meta_info()

2010-07-17 Kamil Ignacak
	* write_wizard.c: fixing one typo in function's name;
	* cdw_erase_disc.c: cdw_erase_disc(): removing one unnecessary call
	  to cdw_buttons_dialog();

2010-07-09 Kamil Ignacak
	* cdw_config_ui_internals.c: "volume ID label" field has been moved
	  a bit left and made wider, so that it can display all 32 characters;
	  this changes has been made after report from rogerx about cdw
	  crashing whenever volume label is longer than 19 chars (which was
	  initial width of the field);

2010-07-09 Kamil Ignacak
	* cdw_fs_browser.c: added missing #define to silence compiler warning
	* cdw_processwin.c: small changes that are intended to prevent
	  processwin from closing too early, without user's key
	* cdw_ncurses.c: cdw_ncurses_delete_menu_and_items(): one change that
	  potentially fixes one bug that may cause cdw to crash when
	  destructing a menu + a bit of cleaning up;
	* main.c: updating one reference to global_config variable;
	* md5sum_interface.c: cdw_verify(): adding one refresh function that
	  refreshes cdw ui - useful when some kernel messages printed to screen
	  distort ui; cdw_verify_read_image(): adding one message printed in
	  processwin
	* cdw_config_ui_internals.c: cdw_config_ui_window_pages_driver_sub():
	  disabling one refresh function, it was unneeded in this place;
	* cdw_config_ui.c: cdw_config_ui_window(): adding call to a refresh
	  function that refreshes main ui window after initial display of
	  configuration window;
	* cdw_burn_disc.c: small fix of comment;

2010-07-07 Kamil Ignacak
	* cdw_burn_disc.c: some fixes of bad grammar and typos - a patch from
	  rogerx;

2010-06-29 Kamil Ignacak
	* cdw_config.c, cdw_create_image.c, help.c: fixing one typo;
	* cdw_widgets.c: adding missing xgettext comments;
	* external_tools.c: updating one xgettext comment;
	* cdw_fs.c: fixing typos
	* cdw.pot: updated file with most up-to-date strings
	* invoke_xgettext: small change in invocation of xgettext: added
	  src/external_tools directory, although there are no xgettext
	  calls in src/external_tools/*.c files (yet);

2010-06-28 Kamil Ignacak
	* cdw_config.c: adding missing reference to support_dvd_rp_dl field
	  of cdw config variable in functions handling the variable (e.g.
	  function copying one variable of cdw_config_t type to another);
	  this fixes a small error that caused "media size" dropdown in
	  configuration window to work incorrectly on some rare occasions;
	  cdw_config_volume_id_by_label() is now case insensitive;
	* cdw_widgets.c: cdw_input_line_safe_driver(): small change of code
	  handling TAB key; the change fixes behavior of volume id input
	  dialog;
	* cdw_fs_browser.c: adding
	  cdw_fs_browser_get_current_printable_dirpath(), function used to
	  get dirpath displayed at the bottom of file selector window;
	* cdrecord_interface.c, dvd_rw_mediainfo_interface.c: removing calls
	  to debug function (function printing values of some fields of disc
	  variable); the function will be called elsewhere;
	* cdw_fs_ui.c: moving one comment;
	* cdrecord_pipe_regexp.c: adding missing entries in wodim_profiles[]
	  table - this fixes problem when wodim code can't set proper label of
	  disc type (e.g. "DVD-ROM"); changes in comments and debug messages;
	* cdw_disc.c: adding call to cdw_disc_debug_print_states_and_types(),
	  moved from *_interface.c files;
	* cdw_config_ui_internals.c: small change in function building volume
	  size dropdown to fix possible problems with "DVD+R DL" item in the
	  dropdown;
	* cdw_file_manager.c: cdw_file_selector_display_current_fullpath():
	  calling cdw_fs_browser_get_current_printable_dirpath() to always
	  get printable dirpath in bottom frame of file selector window;
	* cdw_ui_main.c: cdw_main_ui_files_info_view_update(): adding one
	  dialog message, displayed when there is something unusual with
	  selected files;
	* cdw_which.c: disabling message printed in cdw_which_tests() since
	  there are no real unit tests for this module; some changes in debug
	  messages;

2010-06-24 Kamil Ignacak
	* cdw_config_ui_internals.c: fixing a small bug in pages driver, that
	  caused cdw to freeze and consume 100% of CPU time; this bug has
	  been introduces quite recently, on one of recent commits;
	* cdw_form.c: cdw_form_driver_go_to_field(): adding one check of
	  return value from form_driver(); I was hoping that it will help
	  solving problem in config pages driver; it didn't but I didn't
	  remove the check, it won't hurt to have it;

2010-06-22 Kamil Ignacak
	* cdw_config.c: some simple renames and changes in debug messages;
	* cdw_config_ui_internals.c: refactoring; some form descriptions have
	  been updated to ensure that content in all panels has the same
	  begin_x / begin_y; using updated field index names: *_dd, *_cb, *_b;
	  simplifying code using cdw_form_get_field_bit(); removing unused
	  code; updating cdw_config_ui_draw_tabs() so that it can draw
	  properly any tab that is disabled (invisible), not only page E;
	* cdw_form.c: updating definition of cdw_form_get_field_bit(): now
	  it returns bool value;
	* cdw_fs_browser.c: fixing incorrect condition in assert;
	* cdw_read_disc.c: adding one call to refresh function;

2010-06-18 Kamil Ignacak
	* cdw_config.c: updating calls to
	  cdw_string_input_string_security_parser();
	* cdw_widgets.c: updating definition of
	  cdw_input_line_safe_driver_message(): the function is now simpler,
	  and takes additional argument: string with unsafe character; updating
	  code calling the function; fixing positioning of error string
	  displayed by the function;
	* cdw_text_file_viewer.c: comments;
	* cdw_fs_ui.c: changes in driver function improve behavior of file
	  picker when focus is moved between fs browser and input line;
	* cdw_string.c: cdw_string_input_string_security_parser() now takes
	  second argument, to which the function saves invalid character from
	  first argument; updating unit tests code for
	  cdw_string_input_string_security_parser(): data is now in table and
	  test calls are executed in loop;

2010-06-15 Kamil Ignacak
	* cdw_config.c: making one type declaration "stand-alone" (named type?)
	  and using the type in few utility functions for clarity;
	  cdw_config_var_validate() now checks one more field in "tools and
	  other" page;
	* cdw_drive.c: cdw_drive_is_disc_in_drive(): refactoring to decrease
	  number of calls to cdw_buttons_dialog();
	* cdw_ncurses.c: cdw_ncurses_init(): adding missing call to _clean(),
	  without the call result of fprintf won't be visible in console;
	* main.c: main(): removing unnecessary calls to refresh functions;
	* md5sum_interface.c: very small update in one dialog message,
	  adding one call to refresh function;
	* cdw_config_ui_internals.c: merging cdw_config_ui_draw_widgets() and
	  cdw_config_ui_draw_non_widgets() into one function and calling it
	  outside of main loop that creates config window;
	  option_fields_save_changes(): checking result of conversion of
	  "custom value of volume size" into number; also some renamings in
	  the function; other minor changes;
	* cdw_task.c: implementing and using cdw_task_e(): wrapper around
	  dialog function and refresh function;

2010-06-13 Kamil Ignacak
	* cdw_widgets.c: cdw_dropdown_add_item(): fixing one malloc() call
	  which fixes some nasty memory access problem (thanks valgrind!);
	* cdw_fs_browser.c: cdw_fs_browser_internal_error_dialog(): updating
	  one error message (about file being possibly removed), and
	  refactoring whole body of function;
	* cdw_list_display.c: adding cdw_list_display_is_member() wrapper;
	* cdw_config_ui_internals.c: page_f_build_fields(): adding gettext
	  comments, making one input field a bit wider, updating some labels;
	  cdw_config_ui_draw_widgets(): fixing one bug where help text in
	  "hardware" page wasn't displayed; cdw_config_ui_window_destroy():
	  refactoring - putting some code in loop for brevity;
	* cdw_file_manager.c: cdw_file_selector_add_file_to_selected(): adding
	  one check before attempting to add file to selected files; the check
	  is to search for currently added file on list of selected files;
	  until now cdw first scanned given file/dir (which could have been
	  huge), and then attempted to add the file to list of selected files;
	  now calling is_member() first saves us some time and trouble;
	* cdw_task.c: updating one error message;

2010-06-12 Kamil Ignacak
	* help.c: updating one message printed in help window;
	* cdw_burn_disc.c: adding conditional displaying of volume ID dialog
	  before attempting to burn files to disc; some minor renames;
	* cdw_ui_main.c: cdw_main_ui_disc_info_view_update now returns value,
	  that is used in main.c; other minor changes;
	* cdw_string.c: test_cdw_string_get_bool_value(): removing
	  unnecessary printf();
	* pipe_regexp.c: minor changes in testcases code;
	* cdw_config_ui.c: cdw_config_ui_conditional_volume_label_dialog():
	  adding missing ui refresh; moving unused code to unused_code.see
	  file;
	* cdw_file_manager.c: some functions related to file selector were
	  renamed as cdw_file_selector_*(); code from
	  cdw_file_manager_init_initial_path() moved to
	  cdw_file_selector_init(); other simple changes and renames;
	* cdw_config_ui_internals.c: adding gettext comments;
	* cdw_dll.c: added missing #include;
	* main.c: 'D' hotkey now displays log file with information about
	  disc only when the information was properly read from disc;
	  updating how UI is refreshed in main loop;
	* cdw_fs_ui.c: cdw_fs_ui_file_picker_driver_on_enter_policy():
	  adding new return value to handle cases when user presses "cancel"
	  button in "do you want to overwrite the file" dialog; this is
	  also reflected in cdw_fs_ui_file_picker_driver_on_enter();
	  adding check of argument in cdw_fs_ui_file_picker_build(); other
	  minor changes;
	* cdw_fs.c: few simple changes in testcases code;
	* cdw_logging.c: updating comments, updating return values, removing
	  unused code; updating one dialog message;
	* cdw_widgets.c: cdw_dialog_create_button_labels(): removing
	  unnecessary calls to strdup(), this also requires removing some
	  calls to free() in cdw_dialog_base_delete(); removing unused piece
	  of code from cdw_safe_input_dialog(); disabling code refreshing main
	  ui in both dialogs using dialog base, because sometimes dialogs
	  are displayed on top of some other window than main ui window;

2010-06-09 Kamil Ignacak
	* cdw_disc.c: cdw_dis_is_disc_ready() now prompts user to unmount
	  disc instead of returning at once; this should prevent errors
	  during burning of ISO image with verification when reloaded disc
	  is automounted - cdw usually failed to verify disc in such
	  situations; few changes in label/id tables;
	* cdw_burn_disc.c: cdw_burn_disc_get_source(): removing unused
	  pieced of code, adding one ui refresh function; adding some
	  comments;
	* cdw_task.c: cdw_task_set_allowed_modes(): updating code setting
	  allowed session modes so that default mode for empty disc is
	  "make single session" instead of "start multi session";
	  cdw_task_set_allowed_modes_message(): small simplification;
	  few changes in label/id tables;
	* cdw_create_image.c: cdw_create_image_get_target_data_image_path():
	  removing unused piece of code;
	* cdw_file_manager.c: updating code related to file selector to make
	  sure that initial path is always set correctly;
	* cdw_config_ui_internals.c: adding one #define to control labels
	  in "volume size" dropdown;
	* cdw_ncurses.c: few changes in label/id tables;
	* cdw_fs_ui.c: moving cdw_fs_ui_get_path() to "unused code" part
	  of file; updating layout of file picker so that a message is
	  displayed on top of window (below border) instead of being displayed
	  at the very bottom;
	* cdw_read_disc.c: cdw_read_disc(): removing unused fragment of code,
	  adding missing ui refresh; cdw_read_disc_check_preconditions()
	  uses cdw_disc_is_disc_ready() instead of cdw_drive_is_disc_in_drive()
	  to make sure that disc is not mounted;
	* cdw_fs.c: cdw_fs_init_home_dir_fullpath(),
	  cdw_fs_init_tmp_dir_fullpath(): removing unused fragment of code;
	* write_wizard.c: write_wizard(): fixing bug where value of
	  "verify_write" was not saved at all; removing unnecessary checks
	  of static labels being or not (char *) NULL; other minor changes;
	* cdw_fs_browser.c: moving two function prototypes to header file;
	* cdw_graftpoints.c: adding one debug message;
	* utils.c: cdw_utils_id_label_table_get_label() redesigned;

2010-06-05 Kamil Ignacak
	* cdw_form.c: adding cdw_form_new() cdw_form_delete(), removing
	  cdw_form_set_up(); I have used forward declaration of data type
	  in cdw_form.h, so now cdw form functions can use "cdw_form *"
	  argument type, instead of "void *"; I have extracted a snippet
	  of code from cdw_form_driver() and put it into
	  cdw_form_driver_go_to_field(); updated some debug messages and
	  comments; moved get_field_string() from cdw_config_ui_internals
	  to cdw_form; added some asserts for function arguments;
	  cdw_form_driver_toggle_focus() improved, has explicit branches
	  for input fields and checkboxes; is_<widget>_field_index()
	  functions are simplified by using field_widget_ids table;
	* write_wizard.c: using cdw form constructor and destructor, and
	  making wizard.cdw_form a pointer - this triggers few changes
	  in whole file; moving one condition (controlling "verify"
	  checkbox) into separate function - for better readability;
	* cdw_ncurses.c: removing code creating new field types: cdw
	  doesn't use field types to recognize associated widgets anymore;
	* cdw_config_ui_internals.c: making cdw_form field in cdw_config_page_t
	  type a pointer - this triggers a bit of changes in whole file;
	  reorganizing code in cdw_config_ui_window_create(): moving
	  some code to separate function and making sure that cdw form
	  creator is called before any references to cdw form field;
	  moving get_field_string to cdw_form.c and renaming it - this
	  also introduces some changes to file; other minor changes;
	  using cdw form creator and destructor; updating list of
	  arguments of some functions so that they don't use "void *"
	  but "cdw_form_t *";

2010-06-04 Kamil Ignacak
	* cdw_form.c: moving more code from modules using cdw form into
	  this module; rewriting some functions so that they don't use
	  "pi" (page index) argument, and use cdw_form instead - there is
	  only one form to handle by such functions so there is no need to
	  use "pi"; cdw_form_set_up() assigns values to few more function
	  pointers; cdw form data type now has two new fields: id - which
	  helps recognize given form when there are many of them, and
	  field_widget_ids - table of IDs identifying type of widget related
	  to every field of form; both fields are very useful;
	* cdw_config_ui_internals.c: changes are mainly result of changes in
	  cdw form module: less of "pi" (page index), some functions removed
	  (using those provided now by cdw form); field builder functions
	  now take cdw_form_t argument instead of FIELD argument;
	* write_wizard.c: changes are mainly result of changes in cdw form
	  module: less of "pi" (page index), some functions removed (using
	  those provided now by cdw form);

2010-06-03 Kamil Ignacak
	* cdw_string.c, pipe_regexp.c, cdw_fs.c: I have rewritten some unit
	  tests by putting test data in table and executing tested code in
	  loop;
	* cdw_config.c, cdw_file.c, cdw_cdll.c, cdw_dll.c: I'm using new
	  macro in unit tests: cdw_assert_test(), that works in non-debug
	  builds as well;
	* cdw_config_ui_internals.c: refactoring: moving some functions to
	  cdw_form module, using CDW_WIDGET_BUTTON in form descriptions,
	  putting pointers to buttons in form descriptions, other changes
	  that are result of changes in cdw_form module;
	* cdw_widgets.c: moving some code to "unused code" part of file;
	* cdw_ncurses.c: adding code that defines new field type
	  CDW_FIELD_TYPE_BUTTON;
	* cdw_form.c: moved some functions from modules using cdw_form code,
	  because the functions were generic enough to put them in common
	  file; cdw_form_description_to_fields() recognizes CDW_WIDGET_BUTTON
	  field; minor change in form driver that prevents entering regular
	  chars into non-input line fields; added cdw_form_set_up(): function
	  that does simple configuration of cdw form;
	* cdw_file_manager.c: cdw_file_manager_init(): a bit better handling
	  of one return value;
	  cdw_file_manager_handle_adding_to_selected_files(): removed unused
	  code; cdw_file_manager_init_initial_path(): fixing return values;
	* write_wizard.c: large parts of code rewritten using cdw form
	  description table and cdw form driver; file is now a bit smaller,
	  but the main change is that there is no separate driver code in
	  this module; movement of focus is handled by abstracted cdw form
	  driver, which proves that cdw form driver was a Good Idea; other
	  changes;

2010-05-28 Kamil Ignacak
	* cdw_config.c, cdw_cdll.c, main.c, cdw_dll.c, pipe_regexp.c,
	  cdw_string.c: moved unit tests code from <module_name>_tests.c
	  to <module_name>.c
	* cdw_config_tests.c, cdw_cdll_tests.c, main_tests.c,
	  cdw_dll_tests.c, pipe_regexp_tests.c, cdw_string.c: removed file;
	  unit tests code moved to file implementing tested functionality;
	* cdw_logging.c: replaced cdw_fs_ui_get_path() with
	  cdw_fs_ui_file_picker()
	* cdw_fs.c: replaced cdw_fs_ui_get_path() with cdw_fs_ui_file_picker();
	  added preprocessor conditions for conditional compilation of
	  unit tests code;
	* cdw_read_disc.c, cdw_burn_disc.c: replaced cdw_fs_ui_get_path() with
	  cdw_fs_ui_file_picker()
	* cdw_fs_ui.c: disabled implementation of cdw_fs_ui_get_path();
	* cdw_list_display.c: removing few unnecessary parents, updating
	  some comments;
	* cdrecord_interface.c: updated some comments
	* cdw_file.c: added preprocessor conditions for conditional
	  compilation of unit tests code;
	* cdw_create_image.c: enabling cdw_fs_ui_file_picker(), replacing
	  "config" with "global_config";
	* cdw_which.c: added cdw_which_tests() function, but just for
	  "testing of testing"
	* cdw_drive_tests.c, cdw_fs_ui_tests.c: these files are removed,
	  their functionality was unused for some time now;

2010-05-23 (2) Kamil Ignacak
	* utils.c: I have changed some assumptions about 'label,id' tables,
	  so cdw_utils_id_label_table_get_label() has been updated; one
	  of such tables in utils.c has been also updated;
	* cdw_fs_browser.c: updated one line in function changing directory,
	  to avoid problems with socket files;
	* cdw_ncurses.c: added code defining new form field type; moved code
	  defining new key codes to separate function; added
	  cdw_curses_clean() function; updated two 'label,id' tables;
	* main.c: updated code handling hotkeys in main window: 'edit volume',
	  'edit cdrecord parameters' and 'edit volume size' windows aren't
	  accessible through hotkeys anymore;
	* cdw_config_ui_internals.c: updated some form description tables:
	  they include now explicit CDW_WIDGET_DROPDOWN value and match new
	  declaration of cdw_form_descr_t type; some of fields of the tables
	  now contain pointers to dropdowns, which greatly simplifies
	  is_dropdown_field_index() and cdw_config_ui_get_dropdown_from_form();
	* cdw_file_manager.c: cdw_file_manager_handle_adding_file(): adding
	  few lines of code that prevent from selecting e.g. socket files;
	* cdw_config_ui.c: functions used to edit cdrecord parameters, volume
	  id or volume size were moved to "unused code" part of file; see
	  changes in main.c; these fields can be now accessed only through
	  configuration window;
	* cdw_task.c, cdw_disc.c: updated 'label,id' tables;
	* help.c: updated content of help window so that it doesn't mention
	  few hotkeys, which are removed in today's commit;
	* cdw_form.c: small updates in form driver code: recognizing return
	  key is moved to loop condition, one additional check prevents
	  overwriting dropdown widget with characters entered by user;
	  cdw_form_description_to_fields updated after updating
	  cdw_form_descr_t type, also adding support for CDW_WIDGET_DROPDOWN;

2010-05-23 Kamil Ignacak
	* thread.c: adding missing header file
	* utils.c, dvd_rw_format_interface.c, cdw_logging.c, cdw_drive.c,
	  growisofs_interface.c,main.c, cdw_drive_tests.c, cdw_read_disc.c,
	  cdw_create_image.c, dvd_rw_mediainfo_interface.c, cdw_iso_image.c,
	  md5sum_interface.c, cdrecord_interface.c, cdw_file_manager.c,
	  cdw_erase_disc.c, mkisofs_interface.c, cdw_task.c, cdw_burn_disc.c,
	  cdw_disc.c, dvd_rw_mediainfo_pipe_regexp.c: changing 'config' to
	  'global_config';
	* cdw_config.c: mostly renames; global variable 'config' is now
	  called 'global_config'; variable names with leading underscore
	  are now fixed; code dealing with fields of cdw_config_t, related
	  to volume size, is added, extended and updated;
	* cdw_widgets.c: mostly changes of int types; cdw_dropdown_driver()
	  and cdw_dropdown_expanded_driver(): removed unused argument;
	* external_tools.c: main data type of this module has been simplified
	  and moved from header file to *.c file; code operating on fields
	  of this data type has been updated; I have added code that manages
	  dropdowns used in config ui module: now config ui module doesn't
	  have direct access to ext tools data structure;
	* write_wizard.c, blank_wizard.c: changes in int types + changing
	  'config' to 'global_config';
	* cdw_ncurses.c: moving three functions to cdw_form.c
	* cdw_config_ui_internals.c: main changes: c_pages[] is now used
	  much more extensively; parts of code related to creating external
	  tools dropdowns has been moved to external tools module; I have
	  fixed one small error: value of ISO level wasn't properly saved,
	  but I don't know which versions are affected, perhaps only latest
	  CVS commits; page_u_driver() driver function has been moved to
	  cdw_form.c and made more universal, it should now be used for any
	  form (provided that some additional conditions are met); speed
	  range dropdown and iso level dropdown are now created with new
	  style dropdown creator function;
	* cdw_config_ui.c: changing 'config' to 'global_config'; updating
	  cdw_config_ui_media_size_selector() so that it uses new names
	  of some cdw_config_t type fields; the function will be removed
	  in future anyway, its functionality is being moved to one of
	  cards of Configuration window;
	* cdw_ui_main.c: changing 'config' to 'global_config'; using new
	  field names from cdw_config_t;
	* cdw_form.c: new file with functions related to ncurses form;
	  also defines cdw_form_t type and one function using it: a form
	  driver; this new form driver is already used in cdw config ui
	  internals module, and hopefully will turn out to be flexible
	  enough to be useful in other places;

2010-05-19 Kamil Ignacak
	* cdw_config_ui_internals.c: adding few more widgets to one of
	  Configuration window pages; the widgets will be used to select
	  and set maximal size of ISO volume, i.e. sth that now is done in
	  separate configuration window invoked by F4 hotkey; other minor
	  changes;

2010-05-18 Kamil Ignacak
	* cdw_string.c: rewriting cdw_string_free_table_of_string() so that
	  it accepts table + max. number of elements instead of table with
	  guards;
	* cdw_string_tests.c: adjusting test_cdw_string_free_table_of_string()
	  after changing cdw_string_free_table_of_string();
	* cdw_config_ui.c: cdw_config_ui_window(): adding proper behavior
	  when cdw_config_ui_window_create() returns with error;
	* cdw_config_ui_internals.c: more refactoring, more code executed
	  in loops; using more fields of cdw_config_page_t data type;
	  removing some unnecessary string allocations;
	  cdw_config_ui_window_destroy() now deallocates all dropdowns and
	  buttons;
	* cdw_config.c: cdw_config_module_init(), cdw_config_module_clean():
	  removing unnecessary references to config ui module

2010-05-16 Kamil Ignacak
	* cdw_config.c: cdw_config_var_validate() now checks value of
	  "pad size" field; rest of changes are just simple renames;
	* cdw_ncurses.c: new function: cdw_ncurses_is_form_movement_key(),
	  used in config ui module; also added some debug messages and
	  checks of return values;
	* cdw_config_ui.c: cdw_config_ui_window(): reduced number of
	  functions called when creating and deleting config window - result
	  of changes in cdw_config_ui_internals module;
	* cdw_config_ui_internals.c: lots and lots of refactoring; all
	  pages are now created with cdw_ncurses_form_description_to_form();
	  few more fields (e.g. audio dir path or log file path) now have
	  small button next to input fields, the button calls file picker
	  so that user can select file or dir more comfortably;
	  some fragments of code and some data structures were rewritten so
	  that now more code can be executed in loops;
	  all refactoring changes resulted in cleaner code and shorter file,
	  and adding buttons improved usability; there are still some things
	  to be improved and many things to be checked and tested, so there
	  may be some errors in the module;

2010-05-15 Kamil Ignacak
	* cdw_config_ui_internals.c: page_d_build_fields() rewritten,
	  now almost all widgets from "ISO fs" page are in one large table,
	  and there is a new function cdw_ncurses_form_description_to_form()
	  that iterates through this table to create all form fields;
	  implementing cdw_ncurses_form_description_to_form() required
	  moving few functions from this module to cdw_ncurses module to
	  avoid mutual dependencies; the changes in page_d_build_fields()
	  were initiated by wanting to add small button next to "path to
	  ISO file" field, that would invoke file picker window; this is
	  one of reasons why file picker was created, so finally its
	  functionality is used in Configuration window; file picker needs
	  some more work and testing, so it may be unstable, but overall
	  it works; other minor changes in ui driver code;
	* cdw_ncurses.c: three functions moved from cdw_config_ui_internals.c,
	  one new function added: cdw_ncurses_form_description_to_form()

2010-05-14 Kamil Ignacak
	* cdw_config.c: cdw_config_module_clean(): one check resolves
	  problem occurring when _clean() function was called, but
	  the module wasn't initialized properly;
	* external_tools.c: removing references to which_pipe_regexp
	  and which_interface modules, replacing them with calls to
	  cdw_which and code supporting/handling cdw_which; this is
	  a result of adding external_tools/cdw_which module, which
	  should guarantee the same results on every platform that has
	  PATH environment variable; some new functions are added, some
	  old moved to "unused code" part of file;
	* cdw_fs_browser.c: very simple changes: comments, renames, etc.
	* cdw_ncurses.c: cdw_ncurses_window_new() updated so that it now
	  accepts list of arguments instead of one variable of very
	  specialized type - this will allow to use the function in body
	  of loops;
	* cdw_fs_ui.c: updating calls to cdw_ncurses_window_new(), which
	  now accepts list of arguments instead of one variable of very
	  specialized type;
	* cdw_config_ui_internals.c: cdw_config_ui_window_initialize_windows():
	  using cdw_ncurses_window_new() to create windows in Configuration
	  window;
	* pipe_regexp.c: removing references to old "which" module;
	* cdw_task.c: removing references to "which" task and "which" fields
	  in task data type;
	* external_tools/cdw_which.c: new file that is a simple
	  implementation of "which" utility;

2010-05-10 Kamil Ignacak
	* cdw_fs.c: cdw_fs_init_home_dir_fullpath(): there is a bug in
	  the function: writing beyond string's boundary when attempting
	  to end dir path with '/'; the code has been updated, debug
	  messages have been added; On some occasions this bug may have
	  caused incorrect initialization of path to config file, and
	  as a result a crash of cdw, this should be now fixed; initial
	  bug report on this was sent by rogerx, which also provided much
	  more detailed information;
	* cdw_config.c: cdw_config_module_set_paths(): changing name of
	  one variable + updating debug messages;

2010-05-08 Kamil Ignacak
	* thread.c: adding a function which sends given char to stdin of
	  child's process; this may be useful when child process expects
	  e.g. Enter key from user;
	* cdw_config.c: cdw_config_var_validate(): adding security check
	  of audio dir path;
	* cdrecord_pipe_regexp.c: there are three sets of changes in the
	  file:
	  one set of changes updates how "Current: XXX" line is handled;
	  the line contains information about type of disc in drive, and
	  it comes in two types: old style: 0xYYYY hex number, sometimes
	  followed by descriptive name, and new style: descriptive name
	  only; regular expressions have been updated to catch these two
	  types of data, and handle_current_disc_type(), which handled
	  both types of information, has been replaced by two more
	  specialized functions;
	  second set of changes is a code that captures prompt from wodim
	  ("close tray and press enter") and performs additional actions;
	  this prompt may be seen on laptops: optical drive has tray
	  that can be open by software, but can't be closed by software,
	  so software needs to prompt user to do it; wodim opens and
	  closes tray when called with "-msinfo" option for closed discs;
	  see sourceforge defect 2998671;
	  third set of changes recognizes "No disk / Wrong disk!" error
	  message;
	* cdw_ncurses.c: adding code that adds new key definitions; this is
	  a workaround for few problems with terminfo/termcap databases,
	  which can result in function (and other) keys not being recognized
	  or being misinterpreted in some environments; see sourceforge
	  defect 2996770 for more information;
	* cdrecord_interface.c: cdw_cdrecord_get_meta(): adding piece of
	  code that resets current disc info if regexp code (the one
	  added today) recognizes "No disk / Wrong disk!" error message;
	* which_interface.c: added big piece of comment: there are some
	  problems with "which" in some busybox versions, this comment
	  describes them and describes future actions; see sourceforge
	  defect 2996758 for more information;
	* cdw_config_ui_internals.c: refactoring code to achieve these goals:
	  1. shift function keys up by one, so that F1 is not used to switch
	  config window panels (F1 key may be captured by terminal emulator
	  or desktop environment); 2. replace magic numbers with symbolic
	  names; see sourceforge defect 2996770 for more information;
	* cdw_task.c: adding one error message displayed to user (this is
	  related to "No disk / Wrong disk!" message captured by cdrecord
	  pipe regexp code;

	  It is worth noting that changes in thread.c, cdrecord_pipe_regexp.c,
	  cdw_ncurses.c, which_interface.c and cdw_config_ui_internals.c are
	  fixes of bugs reported and described by user robwoj44;

2010-05-05 Kamil Ignacak
	* <topdir>/gnulib/lib/*.[ch]: I'm adding few files from gnulib, as
	  found in findutils-4.2.31; they are licensed under GPL 2 or later,
	  so no mismatch of licenses; main reason behind including them in
	  cdw is canonicalize_filename_mode() from canonicalize.c; see
	  top level ChangeLog for more information;
	* cdw_fs_browser.c: cdw_fs_browser_change_dir_on_enter(): the
	  function now recognizes if selected dir is parent dir ("..") or
	  not, and uses "browse_to_file()" or "browse_into_dir()" as needed;
	  "browse_to_file()" is used to prevent focus always going to topmost
	  item in visited parent directory; I'm using
	  canonicalize_filename_mode() from gnulib, the function replaces my
	  own canonicalization function; other minor changes;
	* cdw_fs.c: cdw_fs_canonicalize_path() is moved to "unused code" part
	  of file; unit tests are updated: I don't test
	  cdw_fs_canonicalize_path() anymore, now I check behavior of
	  canonicalize_filename_mode();
	* cdw_fs_ui.c: cdw_fs_canonicalize_path() is replaced by
	  canonicalize_filename_mode();

2010-04-27 Kamil Ignacak
	* cdw_string.c: cdw_string_input_string_security_parser() rewritten
	  with strpbrk() so now only explicitly listed chars are considered
	  unsafe; list of such chars is in cdw_string.h
	* cdw_string_tests.c: testcases for
	  cdw_string_input_string_security_parser() have been updated;
	* cdw_ncurses.c: new function cdw_ncurses_window_new() for creating
	  new and derived windows; what has been just a simple experiment:
	  a wrapper for no more than 10 lines of code, became a longer
	  function with proper checking of return values;
	* cdw_fs_ui.c: refactoring fs picker code: now most of code operates
	  on pointer to picker, moved between functions as function argument;
	  this shortens list of function arguments and makes better code;
	  maybe some day I will make proper creator and destructor for picker
	  type; cdw_fs_ui_file_picker_build() uses cdw_ncurses_window_new();
	  in driver code I'm specifying two "synchronization points" where
	  some data is exchanged between input line and fs browser: it is
	  important to get this right, because otherwise file picker will
	  behavior will be incorrect or unnatural, and/or data will be lost;
	  file picker driver uses now cdw_input_line_safe_driver() so problem
	  of secure data entered to input line by user is now solved;
	* cdw_widgets.c: cdw_one_line_form_driver(): updating behavior on TAB
	  key so that data can be correctly saved (this worked correctly until
	  now, as I'm using input line (and cdw_one_line_form_driver()) in new
	  situations; cdw_safe_input_dialog() now uses
	  cdw_input_line_safe_driver(); cdw_input_line_safe_driver() is a
	  function that checks safety of entered string - this new
	  implementation of input line driver moves security checking to lower
	  level so that every code using input line benefits from this feature
	  in the same way; at the same time this makes input line less
	  versatile, as I can imagine places where security checking may be
	  unwanted, or may need different implementation; I have to update
	  implementation of input line so that it is more configurable and
	  universal; cdw_input_line_new(): updated few lines because now
	  input line window needs to occupy 2 lines (one line for input area,
	  one line for messages area); related function
	  cdw_input_line_safe_driver_message() prints error message explaining
	  why entered string can't be accepted; the message is printed right
	  under input area, so no need to use dialog window and bother with
	  refreshes;

2010-04-24 Kamil Ignacak
	* cdw_list_display.c: two most visible changes: display->item_i renamed
	  as display->current_item_ind; cdw_list_display_scroll() changed into
	  cdw_list_display_scroll_to_current() (new name, new args list,
	  updated definition); cdw_list_display_scroll_to_current() and new
	  function cdw_list_display_add_item() always keep "current_item"
	  field of list display updated, at relatively low cost (no need to
	  spend additional time to go through linked list every time a current
	  item is needed), so it was easy to add
	  cdw_list_display_get_current_item_data(); other minor changes;
	* utils.c: removing few labels from table initialization, IDs
	  corresponding to these labels were removed from main.h
	* cdw_fs_browser.c: most of changes are result of removing
	  current_dirpath and current_fullpath fields from definition
	  of cdw_fs_browser_t type: removed initializations, copying,
	  clearing, deallocating; cdw_fs_browser_change_dir_on_enter()
	  has been simplified, partly because cdw_fs_update_dirpath() is
	  no longer used; definition of cdw_fs_browser_get_current_file()
	  has been rewritten using new function
	  cdw_list_display_get_current_item_data();
	  cdw_fs_browser_update_current_fullpath() is removed because
	  there is no "current_fullpath" field anymore;
	  cdw_fs_browser_browse_to() has been rewritten without references
	  to current_dirpath and current_fullpath, and with new functionality
	  of new functions in cdw_fs module, and with new functionality
	  provided by list display's current_item field in mind; added two
	  accessor functions: cdw_fs_get_current_dirpath() and
	  cdw_fs_get_current_fullpath(): although current_dirpath and
	  current_fullpath no longer exist, but code using fs_browser widget
	  still needs such information; other changes in module are result of
	  renaming of some variables and symbolic constants;
	* cdw_fs.c: some changes in white spaces ((add-hook 'before-save-hook
	  'delete-trailing-whitespace)); cdw_fs_update_dirpath() moved to
	  "unused code" part of file, parts of code used in new function
	  cdw_fs_check_dirpath()
	* cdw_text_file_viewer.c: updated one function call;
	* cdw_fs_ui.c: adding "fullpath" field to declaration of file picker
	  type declaration, the field becomes a point of exchange of current
	  fullpath between input line and fs browser; replacing direct
	  references to fs_browser->current_fullpath with fs_browser module
	  function calls or with fullpath field from picker data struct;
	  changes in whitespaces and other minor changes;
	* cdw_file_manager.c: cdw_file_manager_handle_adding_to_selected_files():
	  removing call to cdw_fs_check_existing_path() because currently
	  fs browser can correctly handle incorrect paths passed to it, so
	  there is no need to keep checking initial path;
	  cdw_file_manager_fs_browser_update_border() now takes pointer to
	  whole fs browser instead of dirpath, because there is no
	  fs_browser->dirpath anymore;
	  cdw_selected_files_clone_and_append_file(): lines of code directly
	  dealing with display's doubly linked list moved to new function
	  cdw_list_display_add_item(); other changes that are result of
	  removing trailing whitespaces; other changes related to renaming
	  of variables;
	* cdw_create_image.c: removing trailing whitespaces;

2010-04-22 Kamil Ignacak
	* cdw_widgets.c: cdw_input_line_driver(): result is now provided by
	  returned value, not by one of arguments; implementation of this
	  function has been updated accordingly; cdw_safe_input_dialog() that
	  uses cdw_input_line_driver() was updated to handle new return value
	  and new list of arguments for the function;
	* cdw_fs_browser.c: cdw_fs_browser_new() has been refactored and
	  updated: part of functionality has been moved to
	  cdw_fs_browser_browse_to() (which becomes increasingly important),
	  part of code is now wrapped in cdw_fs_browser_new_base(), and new
	  code for browsing to some initial location has been added; other
	  minor changes;
	* cdw_fs.c: cdw_fs_check_fullpath() has been expanded and updated:
	  it now uses new symbolic values to describe given fullpath more
	  precisely; new function cdw_fs_get_initial_path() returns full path
	  to some sane location in file system, it is intended to replace
	  separate calls to functions returning path to home dir or path to
	  tmp dir;
	* cdw_fs_ui.c: enhancing driver code of file picker so that it works
	  more correctly and handle more special cases;
	* cdw_file_manager.c: cdw_file_manager_init_initial_dirpath() now
	  uses cdw_fs_get_initial_dirpath(); other minor changes;
	* cdw_create_image.c: cdw_create_image_get_target_data_image_path():
	  added code for testing file picker in "real life" scenario;

2010-04-18 Kamil Ignacak
	* cdw_fs_browser.c, cdw_graftpoints.c, cdw_fs_ui.c, cdw_file_manager.c:
	  removing references to file->name;
	* cdw_widgets.c: input line widget: replacing one assert with
	  condition and debug message to avoid exits when input line buffer
	  stores non-printable path;
	* cdw_string_tests.c: adding missing free() in one of tests;
	* cdw_fs.c: updating definitions of few functions:
	  cdw_fs_correct_dir_path_ending() now can handle arbitrary number
	  of ending slashes; cdw_fs_get_filename_start() prints more debug
	  info and is easier to understand (hopefully); unit tests code
	  reviewed and extended;
	* cdw_dll_tests.c: unit tests reviewed and updated; the file no longer
	  needs cdw_file module to test storing and retrieving complex data
	  structures, as it now has its own test data structure;
	* cdw_file.c: cdw_file_new2() removed, as it is unused; unit tests
	  reviewed and updated; code in the module has been updated: references
	  to "name" field have been removed, code initializes, uses and cleans
	  up printable_fullpath, is_ref_to_parent_dir and name_start fields;
	  added/updated some comments
	* cdw_string.c: added cdw_string_get_printable_if_needed() function
	  which checks if given string can be printed by ncurses, and if not,
	  then creates its printable representation, replacing unprintable
	  characters by '?' marks

2010-04-12 Kamil Ignacak
	* cdw_fs_tests.c: unit testing code from this module has been moved
	  to cdw_fs.c;
	* cdw_widgets.c: cdw_button_delete(): added missing free();
	  cdw_input_line_refresh_with_string(): added some debug code;
	  cdw_input_line_driver(): small simplification;
	* cdw_fs_browser.c: cdw_fs_browser now has explicit api for going
	  to specified file or directory: cdw_fs_browser_browse_to_file(),
	  cdw_fs_browser_browse_to_dir() and cdw_fs_browse_to(); the api
	  makes use of fs browser widget in file picker dialog much more
	  convenient; large portions of code in these functions already
	  existed, but now it is extracted into new functions; small change
	  in cdw_fs_browser_update_current_fullpath() closes one memory leak;
	* cdw_fs.c: moving unused code to "unused code" part of file; small
	  change in cdw_fs_get_filename_start() closes one memory leak;
	  new function cdw_fs_check_fullpath() is new function for checking
	  if given fullpath has correct permissions, points to correct file
	  type, and satisfies "new or existing file" constraints; it is better
	  than already existing cdw_fs_check_existing_path() in that the new
	  function works for paths to non-existing files too; all unit tests
	  have been moved from cdw_fs_tests.c to cdw_fs.c;
	* cdw_fs_ui.c: all changes are in file picker dialog: thanks to new
	  fs browser api and new function for checking fullpath (from fs
	  module) input line and fs browser can work nicely: user can change
	  path or select file using both input line or fs browser, and changes
	  made in one part are visible in the other; file picker now can
	  select file of proper type (file/dir) and state
	  (existing/non-existing), but checking path permissions was not
	  tested yet;
	* cdw_ncurses.c: one minor change: a function now returns CDW_GEN_ERROR
	  instead of CDW_MEM_ERROR;
	* main.c: added one necessary refresh function in code testing file
	  picker;
	* main_tests.c: removed one unnecessary include because after moving
	  unit tests from cdw_fs_tests.c to cdw_fs.c file, the cdw_fs_tests
	  module will be removed;
	* cdw_file.c: new function cdw_file_new2() that takes only one
	  argument: full path to new file; this required creating new function
	  cdw_file_new_sub() and modifying cdw_file_new(); other changes in
	  the file are a result of adding name_start and is_ref_to_parent
	  fields to cdw_file_t type;

2010-03-28 Kamil Ignacak
	* utils.c: changing name of option that enables DVD+R DL support, the
	  name is now less cryptic; adding the option to set of options
	  displayed when cdw is called with "--help" option;
	* cdw_widgets.c, external_tools.c, cdw_fs.c, cdw_fs_ui.c,
	  cdw_create_image.c: added missing gettext comments;
	* dvd_rw_mediainfo_interface.c: cdw_dvd_rw_mediainfo_set_disc_states():
	  added missing branch for DVD+R DL disc;
	* cdw_read_disc.c: added one missing gettext comment; added one call
	  to function refreshing main ui window in cdw_read_disc();
	* cdrecord_pipe_regexp.c: added code capturing another error message
	  about incorrect option passed to cdrecord;
	* cdw_processwin.c: there are still problems with processwin closing
	  without waiting for user's key; wgetch() returns "ERR", but curses
	  configuration seems to be ok, and it happens only in few cases when
	  process window is used; anyway, changing sleep() parameter to 2 will
	  make this slightly less annoying;
	* md5sum_interface.c: adding two calls to
	  cdw_main_ui_main_window_refresh() to refresh ui when OS prints to
	  console window any error messages; this may happen when there
	  are some read errors; other minor changes;
	* cdrecord_interface.c: cdw_cdrecord_set_disc_states() few changes
	  introduced after testing support for DVD+R DL;
	* growisofs_interface.c: removing unnecessary call to gettext();
	* cdw_task.c: adding missing gettext comments;
	* cdw_ui_main.c: disabling piece of code that printed disc information
	  for DVD+R DL discs;
	* cdw_burn_disc.c: cdw_burn_disc_is_disc_ready(): adding one warning
	  message displayed when user attempts to burn to DVD+R DL;

2010-03-25 Kamil Ignacak
	* thread.c: few changes in CDW_THREAD_EVAL_READ macro to avoid compiler
	  warnings;
	* dvd_rw_mediainfo_interface.c: one comment added, one debug message
	  updated;
	* cdrecord_pipe_regexp.c: added code capturing first line of
	  information about disc TOC, it is used to set "has_toc" field of
	  disc data structure;
	* cdw_cdll.c: moved unused function to "unused code"-part of file;
	* cdrecord_interface.c: added/edited some comments;
	  cdw_cdrecord_set_disc_states(): code fixing wodim problems has been
	  reviewed and simplified;
	* blank_wizard.c: removing unused argument of cdw_erase_wizard_create();
	* mkisofs_pipe_regexp.c: added code for capturing error message that
	  may be printed when disc in drive (to which user wants to append more
	  data) has not been reloaded;
	* cdw_task.c: cdw_task_check_tool_status(): added one message related
	  to new error captured by mkisofs pipe regexp code;
	  cdw_task_display_current_writing_modes() moved to "unused code"-part
	  of file;
	* cdw_disc.c: cdw_disc_current_disc_reset(): "has_toc" field is now by
	  default "false"; code in other files that reads and sets this field
	  has been updated accordingly; added some comments;
	* dvd_rw_mediainfo_pipe_regexp.c: added one comment

2010-03-21 Kamil Ignacak
	* thread.c: added one setenv() call to properly set env variable
	  for growisofs on Debian box, it looks like there can be NO reference
	  to mkisofs on Debian boxes; added some comments and debug messages;
	* external_tools.c: some renaming of functions and updates in debug
	  messages;
	* cdw_fs.c: I have updated one line of code responsible for counting
	  size of selected files; I'm not 100% sure why it works (shame on me),
	  but it works better than previous line of code;
	* main.c: removed redundant testing code;
	* cdrecord_interface.c: disabled some asserts, added some comments;
	  it looks like the code dealing with "has_toc" field needs some work,
	  preferably before 0.4.0 release;
	* mkisofs_pipe_regexp.c: added handling of one more error message
	  printed when one of selected files is larger than 4GB and iso level
	  is not 3 nor 4 (only 3 or 4 allows files that large);
	* cdw_task.c: added cdw_task_debug_print_tools() and
	  cdw_task_get_task_label() debug functions; small changes in debug
	  messages and user dialog messages; cdw_task_check_tool_status():
	  added one dialog message related to changes in mkisofs_pipe_regexp.c;
	* cdw_disc.c: two asserts changed into warning messages; added one
	  comment added;

2010-03-18 Kamil Ignacak
	* cdw_task.c: adding cdw_task_get_task_label() function and related
	  table of ID-label pairs for getting printable representation of
	  task id name; cdw_task_select_tool_sub() has been simplified by
	  removing "disc" parameter and passing only one "tool_family"
	  parameter; "task" and "tool_family" are enough for the function to
	  select proper tool for given task; cdw_task_select_tool_universal()
	  has also been updated to feed proper parameters with proper values
	  to cdw_task_select_tool_sub(); added debug messages that are
	  helpful during test phase;
	* cdw_file_manager.c: cdw_file_manager_handle_adding_file(): added
	  one check that prevents scanning parent directory; other changes
	  are related to just debug messages and comments;
	* cdw_fs.c: debug messages, comments, and very small refactoring;
	* external_tools.c: few functions used during selection of tool
	  implementation have been slightly modified so that they can display
	  debug messages when testing procedure of selecting tools

2010-03-14 Kamil Ignacak
	* cdw_config.c: added function printing state of configuration, used
	  during testing;
	* cdw_widgets.c: added one TODO comment;
	* external_tools.c: cdw_ext_tools_assert_indexes_correctness()
	  renamed as cdw_ext_tools_debug_print_config() and modified a bit;
	  it will serve as function printing current settings of external
	  tools module; cdw_ext_tools_build_cd_family(): added comments and
	  reordered few instructions to avoid repeated checks for tools
	  availability; cdw_ext_tools_build_dvd_family() function reworked
	  in similar fashion, but additionally dvd-rw-tools family is set
	  as available (i.e. put into "dvd family" dropdown) only when all
	  programs: growisofs, dvd-rw-mediainfo and dvd-rw-format are
	  available;
	* cdw_logging.c, cdw_disc.c: updating one message;
	* cdw_config_ui_internals.c: using cdw_config_debug_print_config()
	  instead of cdw_ext_tools_assert_indexes_correctness()
	* cdw_ui_main.c: expanding one comment;

2010-03-13 Kamil Ignacak
	* cdw_widgets.c: cdw_input_dialog() has been replaced with
	  cdw_safe_input_dialog(), a function that checks entered
	  string and informs user about insecure content; this function
	  will be used as default input widget in whole app; other changes
	  in the file are just some minor changes, refactoring and renames;
	* external_tools.c: adding code used during tests and for debugging;
	* write_wizard.c: comments, debug messages;
	* cdw_fs.c: added piece of code that may be an alternative
	  implementation of already existing algorithm; it is disabled for
	  now, I treat it just as an exercise;
	* cdw_read_disc.c: moved part of code from cdw_read_disc() to separate
	  function: using cdw_safe_input_dialog() requires initializing
	  a variable with few values;
	* cdw_fs_ui.c: using cdw_safe_input_dialog(); few other minor changes;
	* cdrecord_pipe_regexp.c: adding code that handles "Bad Option" error
	  message printed by cdrecord;
	* blank_wizard.c: comments, debug messages; one fix in
	  cdw_erase_wizard_make_erase_mode_dropdown(): the function preselected
	  dropdown item using constant value, now it uses correct variable;
	* cdw_config_ui.c: all changes in the file are result of: a) replacing
	  *get_safe_string() function with cdw_safe_input_dialog() function;
	  b) redesigning data type (the data type with message fields etc.)
	  used by code getting safe message;
	* cdw_create_image.c, cdw_burn_disc.c: updating one message;
	* cdw_task.c: adding one error message displayed when cdrecord pipe
	  regexp code captures "Bad Option" error; adding two pieces of code
	  for converting session and disc mode IDs into string labels;

2010-03-07 Kamil Ignacak
	* utils.c: adding two __attribute__((unused)) marks to silence
	  compiler complaints; adding cdw_utils_get_crv_label() utility;
	* cdw_widgets.c: adding few casts to (void) to silence compiler
	  complaints; re-introducing cdw_dropdown_item_t type, because
	  it should have a slightly different properties than cdw_id_label_t;
	  few minor changes related to int types; other minor changes;
	* cdw_text_file_viewer.c, cdw_processwin.c, cdw_list_display.c,
	  cdw_file.c: adding type casts to silence compiler complaint;
	* cdw_ncurses.c: cdw_ncurses_get_field_buffer(): debug_messages;
	  cdw_ncurses_new_input_field(): reordering few function calls;
	  updating few debug messages; updating implementation of
	  cdw_ncurses_key_label() so that it can return values of ASCII
	  characters;
	* cdrecord_interface.c: code creating command for burning iso image
	  now quotes path to iso image to ensure that path string with spaces
	  in it is correctly passed to cdrecord
	* cdw_config_ui_internals.c: sizes of two-row fields are changed
	  to one row, because I can't get correct saving of data from these
	  fields if data is longer than single row; perhaps first change
	  listed here: http://lists.gnu.org/archive/html/bug-ncurses/2009-12/msg00006.html
	  fixes this, but I can't tell for sure just by looking at the
	  description; anyway, there are no 2-row fields in config anymore;
	  option_fields_save_changes(): checking some return values;
	  cdw_config_ui_window_pages_ui(): calling
	  form_driver(..., REQ_VALIDATION) for all forms, in an attempt to
	  save changes made in fields to their respective buffers - this
	  was supposed to be a workaround for problems with multi-line
	  fields, but it didn't work out; I'm leaving the calls in place,
	  they may be useful anyway;
	* cdw_config.c: adding few debug messages;
	* cdw_fs_ui.c: adding type casts to silence compiler complaint;
	  cdw_fs_ui_get_path(): adding one explicit (but empty) check of
	  return value to avoid printing error debug message for non-error
	  return value;
	* cdw_config_ui.c: functions that prompt user to enter ISO image
	  volume id and cdrecord parameters are rewritten using
	  cdw_config_ui_get_safe_string(), and now the two functions don't
	  accept strings with unsafe characters ('|', '@', ';' etc.);
	* cdw_create_image.c: debug messages, gettext calls;
	* mkisofs_interface.c: code creating command for creating iso image
	  now quotes path to iso image to ensure that path string with spaces
	  in it is correctly passed to mkisofs
	* growisofs_interface.c: code creating command for burning iso image
	  now quotes path to iso image to ensure that path string with spaces
	  in it is correctly passed to growisofs
	* cdw_string.c: adding one debug message in
	  cdw_string_input_string_security_parser();
	* cdw_burn_disc.c: updating few comments and debug messages;

2010-03-05 Kamil Ignacak
	* thread.c: adding one comment to cdw_thread_set_child_env()
	* utils.c: adding cdw_utils_id_label_table_get_label() - a function
	  that looks up a key (id) in given table and returns matching
	  string (label);
	* cdw_widgets.c: code from cdw_one_line_form_new_field() is moved
	  to new function cdw_ncurses_new_input_field() in cdw_ncurses
	  module; using new type cdw_id_label_t instead of
	  cdw_dropdown_item_t; using new constant names in few places;
	* external_tools.c: modifying cdw_ext_tools_get_tool_fullpath()
	  so that it prints debug information;
	* dvd_rw_mediainfo_interface.c: adding few calls to debug function
	  in dvd_rw_mediainfo_set_disc_states();
	* cdw_ncurses.c: cdw_ncurses_error_string() and cdw_ncurses_key_label()
	  rewritten so that they don't return pointer to function's local
	  variables; new function cdw_ncurses_new_input_field() with body
	  from cdw_widgets (or from cdw_config_ui_internals, I can't remember
	  now);
	* cdrecord_interface.c: cdw_cdrecord_set_disc_states(): adding few
	  calls to debug function
	* cdw_config_ui_internals.c: cdw_input_field_new() rewritten using
	  cdw_ncurses_new_input_field();
	* cdw_file_manager.c: updating functions that handle adding files
	  to set of added files, and remove files from that set, so that
	  total size of selected files is re-counted using stat() only
	  when whole process of adding or removing ends, not every time
	  a single file is selected or removed - this makes the process
	  of adding or removing files a bit faster;
	* cdw_config_ui.c: using new name of one constant from cdw ncurses
	  module
	* cdw_ui_main.c: changes in cdw_main_ui_files_info_view_update()
	  that are related to changes in cdw_file_manager module;
	* cdw_disc.c: adding cdw_disc_debug_print_states_and_types(): a debug
	  function that prints values of disc->state_* and disc->type_* in
	  human-readable form

2010-02-28 Kamil Ignacak
	* cdw_burn_disc.c: cdw_burn_disc(): more detailed checking of return
	  value of write_wizard(); cdw_burn_disc_get_source(): added one
	  comment;
	* write_wizard.c: the wizard has been rebuilt: all variables
	  representing controls in the widget are now fields of one big
	  structure, dropdowns are now created by separate functions (that
	  use new cdw_dropdown_* API from cdw_widgets module), driver has
	  been reviewed and simplified a bit; other functions have been
	  affected by this rewrite as well; renamings and other refactoring
	* blank_wizard.c: dropdowns in this wizard are now created and
	  (partially) managed by new dropdown API functions from
	  cdw_widgets module; this allowed me to remove some labels tables
	  and make other changes in the file; renamings and other refactoring
	* cdw_config_ui_internals.c: using new names of dropdown API functions
	* cdw_widgets.h: I have added new data type: cdw_dropdown_item_t that
	  is used in updated CDW_DROPDOWN type declaration;
	* cdw_widgets.c: I have added cdw_dropdown_new2(): new creator
	  function for dropdown widget; dropdowns created with this function
	  ("new style" dropdowns) have different method of adding new elements,
	  and (because each element of the dropdown now consists of ID and
	  label) allow me to use new, useful functions; when implementing
	  cdw_dropdown_new2() I have discovered a bug in cdw_dropdown_new()
	  (not a critical one) that has been now fixed;

2010-02-25 Kamil Ignacak
	* blank_wizard.c: blank_wizard(): fixing incorrect references to
	  two dropdowns

2010-02-24 Kamil Ignacak
	* thread.c: cdw_thread_set_child_env(): adding some checks of returned
	  values;
	* cdw_widgets.c: some cosmetic changes: updating types, renaming some
	  variables; input line widget: the widget no longer has "buffer"
	  field - buffer variable must be provided by caller;
	* cdw_fs_browser.c: updating comments, debug messages; minimal changes
	  in code;
	* cdw_fs.c: adding one debug message;
	* cdw_fs_ui.c: cdw_fs_ui_file_picker(): updated code that deals with
	  result fullpath: checking of return value from picker driver and,
	  if necessary, copying fullpath from fs browser to caller's buffer;
	  other minor changes related to handling buffer with full file path;
	  other minor changes;
	* cdw_ncurses.c: changing implementation of cdw_ncurses_key_label()
	  so that the function doesn't return pointer to function's local
	  variables; other minor changes;
	* cdw_list_display.c: comments, debug messages and a bit of
	  refactoring
	* main.c: code for testing file picker: added checking of return value
	  and few debug messages;
	* blank_wizard.c: added ids[] table to erase mode struct + some code
	  that operates on the ids - this is to avoid using magic numbers in
	  few places; blank_wizard(): code saving initial states of widgets
	  moved here from function building the widgets; updated some comments,
	  refactored few lines of code;
	* cdw_file_manager.c: only changes in comments;
	* cdw_task.c: cdw_task_select_tool_for_task(): more careful checking
	  of return value of cdw_task_select_tool_universal();
	  cdw_task_select_tool_sub(): added checking of correct value of
	  cd family in one of condition branches; other minor changes;
	* cdw_disc.c: cdw_disc_get_source(): more careful checking of return
	  value of one of functions;
	* dvd_rw_mediainfo_pipe_regexp.c: updated one comment;

2010-02-08 Kamil Ignacak
	* thread.c: cdw_thread_set_child_env(): adding assert, fixing one typo;
	* cdw_config.c: renaming "speed" field as "depreciated_speed" to
	  stress that it is, well, depreciated;
	* cdw_graftpoints.c: cdw_graftpoints_close_file(): adding some checks
	  of returned values;
	* cdw_widgets.c: minor changes: types (int/size_t), debug messages,
	  formatting;
	* external_tools.c: updating code referencing "task" fields in
	  cdw_ext_tools_check_versions();
	* cdw_fs_browser.c: adding new function:
	  cdw_fs_browser_update_current_fullpath() - a wrapper for few common
	  lines of code; other minor changes: in debug messages, in checks,
	  etc.; one change that probably fixes some error introduced in
	  post-0.3.95, CVS version: correctly initializing current item index
	  after entering new dir in cdw_fs_browser_change_dir();
	* dvd_rw_mediainfo_interface.c: cdw_dvd_rw_mediainfo_set_disc_states():
	  adding setting of safe values in case of errors; adding some checks
	  and debug messages;
	* cdw_fs.c: cdw_fs_traverse_path(): added more checks of errno + error
	  messages printed to log file in cases when path cannot be visited;
	  adding missing 'else';
	* cdw_fs_ui.c: removing "fullpath" from definition of picker,
	  a fullpath variable from fs browser should be used instead (?);
	  added some checks and comments;
	* cdw_drive.c: updated few error messages in
	  cdw_drive_is_disc_in_drive()
	* cdw_ncurses.c: cdw_ncurses_new_form(): added function-level comment,
	  and added missing deallocating of resources;
	* cdw_list_display.c: added function cdw_list_display_remove_item():
	  code moved from cdw_file_manager module: now this code is more
	  general and can be reused by other modules; other cosmetic changes;
	* main.c: adding call to cdw_disc_init(); improving code calling
	  file picker for testing purposes;
	* cdrecord_interface.c: small changes in comments;
	* cdw_file_manager.c: updating part of
	  cdw_file_manager_handle_adding_to_selected_files() so that it
	  always refreshes list of selected files, regardless of value returned
	  by of file selector; cdw_file_manager_file_selector(): moved part
	  of code from driver loop to new external function
	  (cdw_file_manager_handle_adding_file()) to make the loop appear
	  cleaner; cdw_file_manager_append_file_to_display() was changed
	  into cdw_selected_files_clone_and_append_file(): name was changed,
	  but internals of function were updated as well; parts of code in this
	  file were updated so that now they are specifically operate on
	  selected files display;
	* pipe_regexp.c: small change of code in if/else condition, it doesn't
	  change functionality
	* growisofs_interface.c: updating two lines of code in
	  run_command_growisofs_blank_dvd() so that they use current variable
	  and field names;
	* cdw_task.c: cdw_task_check_tool_status(): using casts to get rid of
	  compiler warnings in debug messages, updating dialog messages to be
	  less cryptic; cdw_task_select_tool_universal(): refactoring the
	  function, updating code setting tool families, now there are more
	  checks and error dialogs;
	* cdw_ui_main.c: adding "const" keyword in three places;
	* cdw_disc.c: adding cdw_disc_init(): function that creates labels
	  for "unknown", "none" and "audio cd" disc types so that
	  cdw_disc_resolve_type_label() gets even more simple since all labels
	  already exist in cdw_disc_type_labels[];
	  cdw_disc_current_disc_validate(): improving flow of if/else
	  conditions;
	* dvd_rw_mediainfo_pipe_regexp.c: improving flow of if/else
	  conditions, adding comments;

2010-01-30 Kamil Ignacak
	* thread.c: simplifying thread functions by removing unnecessary
	  calls to sleep(), removing unused conditions and moving common
	  code to new macro; ensuring that run_command() opens all file
	  descriptors in blocking mode (so idle looping is avoided);
	  moving setting child process' environment variables to separate
	  function: the function set child's environment language and
	  (if current task is to burn files with growisofs), MKISOFS env
	  variable is set to correct value (depending on settings in
	  cdw configuration module);
	* cdw_config.c: minor fix in comment;
	* cdw_widgets.c: expanding cdw_one_line_input_form_driver() so that
	  it can conditionally return on '\t' key - it is needed in new
	  widget; adding cdw_input_line* widget: one line editing field;
	  it is different than existing cdw_one_line_form(), because
	  this is a separate widget, not a single function, thus it is more
	  flexible;
	* dvd_rw_format_interface.c: using task->erase.speed variable instead
	  of config.speed;
	* external_tools.c: reorganizing a bit how tool families are handled;
	  many small changes, but no specific major ones;
	* cdw_fs_browser.c: general improvement of fs browser code: removing
	  unnecessary function arguments, improving clean up of browser in case
	  of problems; adding "current_fullpath" field to fs browser data
	  structure (the field is updated by fs browser on any move in fs), so
	  higher-level code can easily check fullpath to currently highlighted
	  file; added cdw_fs_browser_get_current_file() utility function;
	* write_wizard.c: using task->burn.speed in few places instead of
	  config.speed; other minor changes;
	* dvd_rw_mediainfo_interface.c: added
	  cdw_dvd_rw_mediainfo_set_disc_states(): function that assigns proper
	  values to disc->state_empty and disc->state_appendable using
	  information collected in dvd_rw_mediainfo_pipe_regexp.c
	* cdw_fs.c: I have disabled cdw_fs_dirsize_path() and updated (and renamed)
	  cdw_fs_file_over_4gb_present() -> cdw_fs_traverse_path(): now the
	  new function is more generic, inheriting functionality from the two
	  orginal functions, thanks to use of 'visitor' argument, e.g. function
	  that operates on all visited filesystem nodes; since this function can
	  perform any operations and has its own variable for storing data, the
	  resulting code is more generic and can be easily extended; traversing
	  of set of filesystem paths must be now performed by higher level code;
	* cdw_read_disc.c, cdw_drive.c: minor update: using new function name;
	* cdw_text_file_viewer.c: updating call to cdw_list_display_driver():
	  removing unnecessary iterator;
	* cdw_fs_ui.c: implementing basics of file picker widget: a widget that
	  is similar to file selection dialogs in normal applications; it will
	  be used e.g. to select ISO image file, and will replace one line
	  input widget - this will be more convenient to end user;
	* cdrecord_pipe_regexp.c: using task->tool_status.cdrecord field for
	  saving tool status values (this is new field in task data type);
	* cdw_ncurses.c: improving one debug message in cdw_ncurses_new_form();
	  implementing cdw_ncurses_key_label() which returns string with name
	  of specified key (works for few basic keys only);
	* cdw_list_display.c: adding item_i field to list display data
	  structure: this field is an index of current item on the list; this
	  simplifies list display API a bit and the field can be read by
	  other modules directly, which simplifies things further;
	* main.c: adding 'P' hotkey to test file picker widget
	* md5sum_interface.c: using task->tool_status.<tool> field for
	  saving tool status values (this is new field in task data type);
	  other small changes;
	* cdrecord_interface.c: using new fields of task data structure in few
	  places; added cdw_cdrecord_set_disc_states(): function that assigns
	  proper values to disc->state_empty and disc->state_appendable using
	  information collected in cdrecord_pipe_regexp.c
	* blank_wizard.c: creating one large "struct wizard" variable and
	  rewriting lots of code to use this struct; doing some refactoring
	* cdw_config_ui_internals.c: updating few references to ext tools data
	  structure;
	* growisofs_pipe_regexp.c: updating one regexp in
	  growisofs_stdout_regex_prepare(); using task->tool_status.<tool>
	  field for saving tool status values (this is new field in task
	  data type);
	* cdw_file_manager.c: introducing struct selected_files as means of
	  making some order with "selected files" concept; adding and updating
	  some code to support this new struct;
	  cdw_file_manager_file_selector(): using new or updated fs browser API;
	  cdw_file_manager_calculate_selected_files_size_mb(): using new api
	  from cdw_fs module;
	* mkisofs_pipe_regexp.c: using task->tool_status.<tool> field for
	  saving tool status values (this is new field in task data type);
	* cdw_erase_disc.c, cdw_create_image.c: using updated function names;
	* growisofs_interface.c: using new fields of task data structure, in
	  some places this replaces use of config data structure;
	* cdw_task.c: part of changes comes from new or modified fields in
	  cdw task data structure (e.g. task->tool_status.<subfields>,
	  task->burn.speed); code for manual and for intelligent selection
	  of tool for given task has been merged into one function:
	  cdw_task_select_tool_universal(), which uses
	  cdw_ext_tools_get_tool_fullpath() function - this function checks
	  which method of selection (manual or automatic) is in effect, and
	  selects tool appropriately;
	* cdw_ui_main.c: cdw_main_ui_disc_info_view_create() uses new name
	  of a function from cdw_disc module;
	  cdw_main_ui_disc_info_view_display_data() was modified so that
	  some conditions are clearer and displayed common labels are reused
	  rather than created in each conditions branch; other minor changes;
	* cdw_burn_disc.c: using few new function names and data structures
	  fields
	* cdw_disc.c: cdw_disc_current_disc_resolve() renamed as
	  cdw_disc_resolve() and heavily modified: assignment of values to
	  type fields was just updated, but assignment of values to state
	  fields was moved to external functions from cdrecord_interface
	  and dvd_rw_mediainfo_interface modules - these two modules "know"
	  best how to interpret values captured by respective "pipe_regexp"
	  modules; cdw_disc_resolve_type_label() rewritten using table of
	  labels;
	* dvd_rw_mediainfo_pipe_regexp.c: updating code recognizing disc state
	  so that assigning values to state_empty and state_appendable, the
	  code only assigns simple value to disc.dvd_rw_mediainfo.disc_status,
	  and this value is later evaluated by dvd_rw_mediainfo_interface
	  module;

2010-01-18 Kamil Ignacak
	* which_interface.c: last minute change to ensure that no unnecessary
	  output is printed to log file when some tool is not available;
	* other files: updating bits and pieces for new version 0.3.95
	* utils.c: updating copyright notice printed in console

2010-01-17 Kamil Ignacak
	* *.c: ensuring that no fprintf(stderr, ...) call are made in normal
	  flow of program and updating copyright notice (2009 -> 2010)

2010-01-16 Kamil Ignacak
	* thread.c: commenting out code that was supposed to slow down
	  idle looping, this was replaced by opening one file for blocking
	  read (O_NONBLOCK -> O_ASYNC); result was clearly visible on my
	  oldish 32-bit Duron machine :)
	* external_tools.c: adding one preprocessor command for conditional
	  enabling of debug function
	* cdw_fs.c: quickly adding one function that browses through selected
	  files to look for any file larger than 4 GB, which is useful
	  information if you want to put that file into ISO filesystem, as
	  some versions of genisoimage (or mkisofs with iso level < 3) may
	  not support this; the function is almost exact copy of other
	  function in this module, so this is considered only a quick hack
	  and surely should be fixed in future;
	* cdw_read_disc.c: cdw_read_disc(): it was well known to me that
	  when reading second (and following) data tracks from CD, these
	  tracks will be unreadable for some reason - well, now user is
	  warned about this; cdw_read_disc_read_tracks(): I have tested
	  reading on real console (not terminal emulator), and I have
	  modified the function to refresh UI when it is distorted by kernel
	  messages;
	* cdrecord_pipe_regexp.c: adding code catching one more error message
	  printed by cdrecord when size of data to be burned is larger than
	  space available on optical disc;
	* cdw_processwin.c: cdw_processwin_refresh(): adding call to redrawwin()
	  to ensure that all lines are drawn on screen;
	* cdrecord_interface.c: messages printed in processwin at the end of
	  process of burning files or image now indicate that the process may
	  have failed (if tool complained about sth)
	* growisofs_pipe_regexp.c: added code catching message printed by
	  growisofs when size of one of selected files exceeds 4GB
	* cdw_file_manager.c: added quickly a function that scans selected
	  files searching for file larger than 4GB;
	* mkisofs_pipe_regexp.c: added code catching 3 different error
	  messages;
	* cdw_erase_disc.c: added one dialog message printed when user wants
	  to burn disc of unknown type;
	* cdw_task.c: cdw_task_check_status(): added new dialog messages for
	  errors reported by external tools and catched by pipe regexp code;
	* cdw_burn_disc.c: added one error dialog message displayed when there
	  is file larger than 4GB on list of selected files and user should
	  be sure to use correct tools for this task;
	  cdw_burn_disc_is_disc_ready(): adding error message displayed when
	  current disc is unsupported;
	* src/Makefile.am: adding _FILE_OFFSET_BITS=64 flag to ensure proper
	  handling of large files (> 4GB) on 32-bit machines (this
	  *partially* solves sourceforge defect 2545568)

2010-01-10 Kamil Ignacak
	* cdrecord_pipe_regexp.c: adding code that handles an error message
	  printed after unsuccessful write attempt.
	* cdw_task.c: cdw_task_check_status(): adding dialog message for next
	  cdrecord error message; cdw_task_set_allowed_modes(): updating code
	  related to DVD+R (after tests of burning to DVD+R with wodim/cdrecord
	* cdw_burn_disc.c: updating one dialog message;
	* cdw_disc.c: cdw_disc_current_disc_resolve(): updating one "if"
	  condition by adding DVD+R (after testing burning to DVD+R with
	  wodim/cdrecord) + adding one TODO and pseudo code;

2010-01-07 Kamil Ignacak
	* external_tools.c: adding cdw_ext_tools_is_cdrecord_wodim() function
	  (and some other functions as foundation for it) that returns true
	  if currently selected implementation of cdrecord is wodim - this
	  information is useful on few occasions;
	* cdrecord_pipe_regexp.c: adding regexp code for detecting two error
	  messages printed by cdrecord / wodim: one about not finding TOC on
	  disc, and the other that is printed for non-appendable disc; also
	  some renaming of functions; extending handle_current_disc_type()
	  so that "DVD-R sequential recording" is recognized - first step to
	  correctly handling DVD-R;
	* cdrecord_interface.c: extending prototype of cdw_cdrecord_get_meta();
	  cdw_cdrecord_get_meta(): disabling "atip" call if disc is DVD-R and
	  tool is cdrecord (the real cdrecord), because on some occasions it
	  took very long time to get atip info (even with timeout parameter);
	  some workarounds were needed; also added call to get "toc"
	  info - this was needed to check if disc is empty (especially useful
	  for DVD-R + wodim combination, since wodim 1.1.10 has some problems
	  with reporting state of non-empty DVD-R (and perhaps other DVDs as
	  well)
	* cdw_task.c: cdw_task_check_status(): adding dialog for another
	  error message printed by cdrecord; cdw_task_set_allowed_modes():
	  reworking some conditions to add support for DVD-R + cdrecord
	  combination
	* cdw_burn_disc.c: improving one dialog message;
	* cdw_disc.c: cdw_disc_current_disc_reset(): adding resetting of new
	  field of cdw_disc_t structure; cdw_disc_current_disc_resolve() and
	  other: at first I was trying to provide workarounds for some wodim
	  imperfections, but I decided that code resolving disc states should
	  be rewritten, so there is a beginning of this job in
	  cdw_disc_current_disc_resolve()

2010-01-03 Kamil Ignacak
	* dvd_rw_format_interface.c: updating the way how messages are
	  displayed in process window (now we have "preparing erasing,
	  please wait" message at the beginning)
	* write_wizard.c: added some comments and TODOs, added and updated
	  few debug messages; the "real" code was not affected
	* main.c: disabling code that was used for debugging "verify" function;
	* growisofs_pipe_regexp.c: updating some comments, ordering function
	  declarations
	* growisofs_interface.c: adding messages displayed in process window
	  before burning starts, that say "preparing writing, please wait"
	* cdw_task.c: some small changes in debug messages displayed by
	  cdw_task_display_current_writing_modes(); updating one dialog message
	  and comment in cdw_task_check_status();
	* dvd_rw_format_pipe_regexp.c: adding code that erases "preparing
	  erasing, please wait" from process window when the erasing starts;
	* cdw_burn_disc.c: adding and updating debug messages

2009-12-21 Kamil Ignacak
	* cdw_widgets.c: silencing two debug messages;
	* dvd_rw_format_interface.c: cdw_dvd_rw_format_run_task(): modified
	  some debug messages, removed one type cast; enabled "-force" option
	  for DVD+RW discs (a result of tests)
	* external_tools.c: updated one debug message, added some comments,
	  updated one label appearing in configuration panel ("tools" tab,
	  label in tools family dropdown - it is now "dvd+rw-tools" instead
	  of "growisofs");
	* write_wizard.c: correcting one debug message in write_wizard_build()
	* cdrecord_pipe_regexp.c: changes after testing the module with DVD+RW:
	  added capturing of one error message about blanking, updated code
	  capturing track number - sometimes it was incorrect for first track;
	* md5sum_interface.c: cdw_verify_display_summary_for_disc_and_image():
	  added/updated comments to gettext calls, updated formatting of one
	  message to improve readability
	* cdrecord_interface.c: cdw_cdrecord_erase_disc(): added one message
	  displayed when there were problems with erasing DVD+RW with
	  cdrecord (with wodim - to be exact)
	* growisofs_pipe_regexp.c: updating names of some functions so that
	  they follow "cdw_<module_name>_name()" convention; implemented
	  capturing of error message about insufficient space on optical disc
	  that works for both burning image file and normal data files; code
	  that catched similar error message (for files only) is disabled;
	  added short note on top of the file about messages printed by
	  growisofs on such occasions;
	* pipe_regexp.c: using updated function names;
	* cdw_string.c: removing '+' char from list of "illegal" input
	  characters;
	* cdw_task.c: cdw_task_check_status(): updating some printf formats
	  so that whole error code is displayed properly; adding one dialog
	  message for cdrecord; adding one dialog message for growisofs, making
	  some small changes around growisofs-related messages;
	* dvd_rw_format_pipe_regexp.c: updating names of functions so that they
	  follow "cdw_<module_name>_name()" convention;
	  cdw_dvd_rw_format_stderr_regexp_execute(): updated code cleaning up
	  buffer line, because previous version may have resulted in incorrect
	  results (percentage information during long erasing was captured
	  incorrectly) - this should be tested and may change;
	* cdw_ui_main.c: adding "Approximate size of selected files" label
	  in main window, because method of calculating size of selected files
	  may yield incorrect results (relative symlinks and other factors);
	* dvd_rw_mediainfo_pipe_regexp.c: updating names of functions so that
	  they follow "cdw_<module_name>_name()" convention; removing one
	  unnecessary escape char in one of regexps;

2009-12-06 Kamil Ignacak
	* write_wizard.c: small change in debug message;
	* cdw_fs.c: doing some rewrites in cdw_fs_dirsize_path(), especially
	  in code calculating size of files pointed by symlinks; it turns
	  out that current implementation (using readlink()) can't handle
	  relative links correctly, but alternative implementation (using
	  realpath()) can't handle circular loops in symlinks; having
	  on one side implementation giving on some occasions incorrect
	  results, and implementation that will crash the application, I
	  chose the former, because in the end it is a size calculated later
	  by mkisofs that really counts, and size calculated by my code
	  is only an estimate, and thus can be imprecise; it doesn't mean
	  that I will let it be as it is now, but correct solution of this
	  problem (probably directory name caching) will take too much time;
	  I want to release this version soon, and then handle this defect
	* cdrecord_pipe_regexp.c: silencing some debug messages in
	  handle_direct_writing(); handle_current_disc_type(): adding
	  "DVD-ROM" as recognized disc type;
	* pipe_regexp.c: silencing some debug messages in eta_calculations();
	* cdw_burn_disc.c: fixing a typo in cdw_burn_disc_is_disc_ready();
	* cdw_disc.c: cdw_disc_current_disc_resolve_empty(): adding some
	  comments and code related to DVD-ROM so that this type is recognized
	  correctly

2009-11-23 Kamil Ignacak
	* cdrecord_pipe_regexp.c: fixing one condition; the error made it
	  impossible to read writing speeds for DVD
	* cdrecord_interface.c: adding a table with information on burning to
	  DVDs with cdrecord, similar to the table in growisofs_interface.c;
	  currently there are values only for DVD+RW;
	* cdw_task.c: code setting modes now checks for a tool if a disc
	  type is DVD+RW, because cdrecord is a bit limited compared to
	  growisofs;
	* cdw_burn_disc.c: cdw_burn_disc(): changing order of two function
	  calls in order to have some tool selected before burning modes
	  are set (burning modes may depend on tool planned to use);

2009-11-08 Kamil Ignacak
	* cdrecord_pipe_regexp.c, growisofs_pipe_regexp.c,
	  mkisofs_pipe_regexp.c, md5sum_pipe_regexp.c, which_pipe_regexp.c,
	  dvd_rw_format_pipe_regexp.c, dvd_rw_mediainfo_pipe_regexp.c:
	  refactoring, comments, debug messages, asserts;
	* mkisofs_interface.c: comments, debug messages, asserts, minor changes
	* pipe_regexp.c: added one comment and cdw_pipe_regexp_get_submatch()
	  function that encapsulates few lines of code that appear in (almost)
	  all *_pipe_regexp.c files at least once, sometimes more often;
	* pipe_regexp.h: adding small utility that helps me to ensure
	  at least partially that some assumptions about regular expressions
	  in *_pipe_regexp.c files (i.e. number of subexpressions) are correct;

2009-11-01 Kamil Ignacak
	* cdw_cdll.c: adding new definition of function cdw_cdll_destroy()
	  after running unit tests on my other machine (32-bit, Debian) -
	  there was some free()ing of invalid pointer;
	* mkisofs_interface.c: rewriting code responsible for creating
	  sting with multisession information; previous version made totally
	  incorrect use of sizeof operator which, on 32-bit machine, caused
	  creating of truncated string, which made it impossible to burn
	  second and following sessions on disc; current version uses
	  asprintf() (thank you, gnu lib!), so it is shorter and more
	  bug-resistant; this fix should resolve sourceforge defect 2890403
	* cdw_logging.c: this was a really dumb error: I created a function
	  that (if displaying log file after some actions was enabled)
	  became recursive function, effectively freezing cdw; this
	  fix should resolve sourceforge defect 2890399
	* src/Makefile.am: I have changed organization of gcc flags and
	  added some comments, but most important thing is changing C standard
	  flag from c99 to gnu99, because using c99 on my other machine made
	  it impossible to build cdw (search on the internet for "compile
	  error linux/cdrom.h asm/byteorder.h" to see other cases of similar
	  problem); this should fix sourceforge defect 2890402; perhaps I will
	  switch back to c99 in some development commits, but release tarballs
	  should have gnu99 flag;

2009-10-28 Kamil Ignacak
	* write_wizard.c: write_wizard_build(): added one more check to decide
	  if "verify" checkbox should be visible, also added some debug
	  messages;
	* cdw_task.h: renaming "md5sum" field to "verify", adding two file
	  descriptors: one represents stdin of md5sum tool (data sink),
	  second is source of data sent to md5sum (optical disc track or
	  iso image); there is also pointer to thread function, which
	  reads from source file descriptor to sink file descriptor;
	* cdw_task.c: cdw_task_reset_state(): added code resetting new
	  subfields of "verify" field; cdw_task_select_tools_for_task():
	  added code that assigns md5sum tool too; other minor changes;
	* cdw_disc.c: cdw_disc_get_meta_info_cdrecord() moving one cdio call
	  in right place (there was some minor bug, can't remember what was
	  that ;)
	* md5sum_pipe_regexp.c: using new names of extern variables from
	  md5sum_interface.c, reformatting one debug message;
	* main.c: adding one hotkey for purposes of testing of verification
	* md5sum_interface.c: code in the file was heavily refactored and,
	  as a result, doesn't smell that much anymore; one noteworthy thing
	  is that I make use of function pointer (task->verify.read_and_write)
	  as a generic function for reading and writing data in thread code
	  in both parts of verification process: when reading burned track
	  (this is still done with libcdio calls) and when reading iso image
	  (now the image is forwarded to md5sum using read() and write() on
	  file descriptors instead of using redirections in unix shell);
	  other interesting part is that code configuring reading of data,
	  and code cleaning up after reading data, are moved outside of
	  threads code, so errors occurring in configuration phase can be
	  detected before threads are created;
	* cdw_burn_disc.c: cdw_burn_disc(): moving tool discovery a bit up
	  to learn if md5sum tool is available before calling write wizard
	  (write wizard displays "verify" checkbox depending on presence of
	  md5sum tool); calling cdw_verify() instead of
	  run_command_md5sum_check();
	* thread.c: removing write_to_md5sum_stdin(), it has been replaced by
	  function pointer in cdw_task_t->verify; updating pthread_create()
	  call for thread writing to md5sum stdin because third argument to
	  pthread_create() (thread function) has changed; other minor changes;

2009-10-25 (2) Kamil Ignacak
	* pipe_regexp.c: silencing few debug messages;
	* cdw_erase_disc.c: updating one condition in cdw_erase_disc() so that
	  assert is not triggered for erasing with cdrecord;
	* external_tools.c: cdw_ext_tools_build_dvd_tools_table(): enabling
	  code that adds cdrecord to list of tool families that can handle
	  DVD discs; the list is visible in configuration panel if manual
	  configuration of tools is used;
	* cdrecord_pipe_regexp.c: updating two regexps in
	  cdrecord_stdout_regexp_prepare() so that they capture DVD types too;
	  expanding code in handle_current_disc_type() so that DVD disc types
	  are recognized and proper values are assigned to "disc_type" field
	  from cdw_disc_t type; other minor changes;
	* cdw_task.c: updating cdw_task_reset_state() - the function now
	  resets all fields of cdw_task_t; adding one important comment in
	  cdw_task_select_tools_for_task();
	* mkisofs_interface.c: updating references to last_sess_start and
	  next_sess_start;
	* cdw_read_disc.c: updating comment in
	  cdw_read_disc_check_preconditions()
	* blank_wizard.c: blank_wizard(): updating condition, on which a format
	  dropdown is displayed - there is no reason to display it when erasing
	  DVDs with cdrecord, since cdrecord doesn't provide appropriate options
	* cdw_disc.c: whole logic behind setting value of
	  current_disc->state_empty is updated, modified and moved from
	  cdw_disc_current_disc_resolve() to new function
	  cdw_disc_current_disc_resolve_state_empty(); new fields of
	  cdw_disc_t - media_info_source - is used to dispatch some function
	  calls; the field was necessary because now both cdrecord and
	  dvd+rw-mediainfo can be used to get media information from DVD
	* cdrecord_interface.c: some renames of variables, modifications
	  of asserts, debug messages and other messages;
	* dvd_rw_mediainfo_pipe_regexp.c: disabling code that produced unused
	  data

2009-10-25 Kamil Ignacak
	* external_tools.h: updating tool id names, so that they begin with CDW
	* cdw_task.h: updating some identifier names so that they begin
	  with CDW; updating cdw_write_session_mode_t and cdw_write_disc_mode_t
	  type names and fields names; updating task id names, so that they
	  begin with CDW; finally removing "source" field from cdw_task_t type;
	  renaming fields: burning->burn, blanking->erase; TASK_BURN was
	  replaced by two separate tasks: CDW_TASK_BURN_FROM_FILES and
	  CDW_TASK_BURN_FROM_IMAGE: this allows me to get rid of "source"
	  field; other minor changes and renames; added CDW_TASK_CREATE_TASK
	  macro which allows me to replace very common pattern: task variable
	  definition, resetting task variable, assigning value to task.id

	  all these renames in external_tools.h and cdw_task.h are to make
	  naming conventions more consistent and to make using them more
	  intuitive; these changes trigger other changes in many *.c files,
	  listed below:

	* pipe_regexp.c, cdw_erase_disc.c, external_tools.c,
	  cdw_config_ui_internals.c, write_wizard.c, cdrecord_pipe_regexp.c,
	  cdw_task.c, mkisofs_interface.c, blank_wizard.c, main.c,
	  cdrecord_interface.c, mkisofs_pipe_regexp.c, cdw_burn_disc.c,
	  dvd_rw_format_interface.c, thread.c, growisofs_pipe_regexp.c,
	  growisofs_interface.c: using new identifier names and data type
	  field names from *.h files;
	* cdw_create_image.c: using CDW_TASK_CREATE_TASK in cdw_create_image();
	* cdw_read_disc.c: cdw_read_disc(): using CDW_TASK_CREATE_TASK,
	  using current_disc->disc_type instead of task->source in one of
	  conditions (task->source no longer exists); other minor changes;
	* cdw_disc.c: cdw_disc_get_meta_info(): using CDW_TASK_CREATE_TASK;
	  using new identifier names from *.h files;
	* md5sum_interface.c: a bit of refactoring, using new features
	  from *.h files;

2009-10-24 Kamil Ignacak
	* pipe_regexp.c: now function calls are dispatched by task->id
	  and then by tool->id
	* cdw_erase_disc.c: few small changes that are result of changes
	  in cdw_task module;
	* external_tools.h: most of data structures in external_tools
	  module were redesigned, this caused lots of changes in other
	  modules; most important change in the file is how data types
	  are nested and combined to produce final cdw_ext_tools_t type;
	  there is clearer distinction what is used by dropdowns in
	  configuration module (dd struct); added "config" - its fields
	  represent state of some items in configuration panel;
	* external_tools.c: all changes are result of changes in
	  external_tools.h: the way data is initialized, modified, organized,
	  cleared - all this was updated;
	* cdw_config_ui_internals.c: all changes are related to "Tools" page
	  and are in code that uses "cdw_ext_tools" variable from external
	  tools module; major changes are:
	  - new "manual selection" checkbox that shows or hides items in the
	    panel, switching between manual and automatic selection of tools
	  - new dropdown "tools for dvd" where user can select if (in case of
	    manual tools selection) DVD discs will be handled by growisofs
	    and related tools, or by cdrecord; currently only growisofs is
	    available in the dropdown, but cdrecord will be added in final
	    version;
	  cdw_config_ui_toggle_page_e_fields_activity() function was added;
	* write_wizard.c: minor changes, one of them is adding argument to
	  cdw_config_ui_window() call, which turns off displaying of "Tools"
	  tab;
	* cdw_config.c: added comment;
	* cdw_task.h: removed TASK_ATIP, TASK_PRCAP, TASK_MSINFO: collecting
	  meta information by cdrecord is now done as TASK_MEDIAINFO;
	  cdw_task_t data structure was modified, mainly by adding structures
	  related to task types: "create_image", "md5sum" - just like already
	  existing "burning" and "blanking", but now every one of them has
	  "tool" structure;
	* cdw_task.c: changes that are result of changes in cdw_task_t data
	  type; also some refactoring; cdw_task_select_tools_for_task()
	  was heavily changed to support both "manual" and "intelligent"
	  selection, depending on state of checkbox in Tools page in config
	  window; added cdw_task_select_tool_intelligently() which will
	  select tool implementations for given task whenever user deselects
	  "manual selection" checkbox in configuration; for now this
	  "intelligence" comes to selecting system default implementations,
	  but in future this may become more sophisticated: more detailed
	  checking of disc, checking of tool versions, etc;
	* cdw_create_image.c: updating call to cdw_task_set_state(), updating
	  comment;
	* mkisofs_interface.c: updating code to correctly use new fields
	  of cdw_task_t
	* cdw_read_disc.c: updating call to cdw_task_set_state()
	* cdw_disc.c: cdw_disc_get_meta_info_dvd_rw_mediainfo() now takes
	  "task" as an argument, this makes the function shorter and more
	  simple; cdw_disc_get_meta_info_cdrecord() pushes most of the
	  job of calling cdrecord with three different tasks to
	  cdw_cdrecord module; other minor changes;
	* main.c: adding argument to cdw_config_ui_window(), so that "tools"
	  tab is accessible to user;
	* md5sum_interface.c: changes that are result of changes in cdw_task
	  module;
	* which_interface.c: using new fields from cdw_task_t type;
	* cdw_widgets.c: added two functions: cdw_dropdown_make_invisible()
	  and cdw_dropdown_make_visible() which hide and show dropdown
	  that was already created and placed in destination window; it was
	  needed to show and hide all elements of "tools" panel in
	  configuration window; other changes related to this feature;
	* cdrecord_interface.c: cdw_cdrecord_get_meta() is extended so that
	  it does 3 separate calls of cdrecord with 3 different options:
	  -atip, -msinfo, -prcap; this replaces calling the function 3
	  times by cdw_disc_get_meta_info_cdrecord() with different task IDs;
	  other minor change related to new fields in cdw_task_t;
	* cdw_config_ui.c: adding "tools_page_visible" to
	  cdw_config_ui_window() parameters list;
	* which_pipe_regexp.c: because some fields were removed from
	  cdw_task_t, code in this file had to be rewritten to start using
	  fields from cdw_ext_tools_t data type;
	* dvd_rw_mediainfo_interface.c, dvd_rw_format_interface.c: minor
	  change: now fullpath to tool comes from cdw_task module, not
	  directly from external_tools module;
	* cdw_burn_disc.c: small changes related to changes in cdw_task module
	  and cdw_task_t data type;
	* growisofs_interface.c: small changes related to changes in cdw_task
	  module and cdw_task_t data type; also: now fullpath to tool comes
	  from cdw_task module, not directly from external_tools module;

2009-10-17 Kamil Ignacak
	* which_pipe_regexp.c: using new name of a symbolic constant;
	* main.c: main(): covering one more return value of
	  cdw_ext_tools_init()
	* cdw_config_ui_internals.c: page E: message displayed on top of the
	  page is now shorter, so dropdowns and labels are moved up a bit;
	  the message is shorter, because now the dropdowns have explicit
	  labels "system default", so user can easily decide to use
	  system default implementation; second change is minor: renaming
	  of one variable;
	* external_tools.c: refactoring, comments, asserts, debug messages;
	  representation of tools in configuration module (dropdowns) now
	  has two new labels (if the tool is available): "system default"
	  and "selected by cdw", selecting either of them tells cdw to make
	  decision about selecting proper implementation itself

2009-10-11 Kamil Ignacak
	* pipe_regexp.c: eta_calculations(): added comments, handling
	  overflowed values of eta argument, and got rid of unnecessary
	  floor() (cast from double to int was a source of compiler warnings);
	* cdw_ui_main.c: minor change in
	  cdw_main_ui_main_window_wrefresh_part() (checking for NULL value);
	* help.c: updated description of "G" hotkey in help window;
	* cdw_processwin.c: refactoring: moving some variables related to
	  processwin to new struct; also made some changes that silenced
	  compiler warnings (mainly warnings about int types);
	* cdw_config_ui_internals.c: get_field_string(): small change that
	  silences compiler warnings;
	* write_wizard.c, md5sum_interface.c, cdw_widgets.c, cdw_config_ui.c:
	  small changes that silence compiler warnings about int types;
	* isosize.c: small changes, mainly changing code layout, also using
	  long long data type;
	* cdw_fs.c: rewriting cdw_fs_check_device_mounted() so that it first
	  checks  which path to use, and only then checks if the path exists
	  in mtab file; there are also dialogs added, so user gets some
	  feedback; one FIXME solved and removed;
	* cdw_task.c: changing FIXMEs into TODOs
	* cdw_create_image.c: replaced call to graftpoints code with calls
	  to file manager code;
	* cdw_read_disc.c: fixing one FIXME by adding calls to logging
	  functions; user now gets some more information in when reading fails;
	  cdw_read_disc_check_preconditions(): changing order of some checks
	  so that checking if disc is empty is done first - this helps to avoid
	  some misleading messages; also messages were updated to be more
	  generic and to cover more cases;
	* cdw_string.c: changing function's prototype to silence compiler
	  warnings
	* cdw_string_tests.c: two minor changes to avoid compiler warnings;
	* cdw_burn_disc.c: adding cdw_burn_disc_release_source() function,
	  which later is used in cdw_burn_disc() to remove graftpoints file;
	* growisofs_pipe_regexp.c: removing direct references to processwin
	  and replacing them with function calls;

2009-10-10 Kamil Ignacak
	* utils.c: after_event(): using "conditional" logging function
	* cdw_graftpoints.c: cdw_graftpoints_create_file() was simplified,
	  all necessary parts of graftpoint are already in cdw_file_t
	  structure, so it makes creating graftpoint easier; adding checks
	  to cdw_graftpoints_delete_file(); cdw_graftpoints_write_to_file()
	  gets updated after changes in cdw_graftpoints_create_file();
	  other minor changes;
	* cdw_logging.c: adding "conditional" version of
	  cdw_logging_display_log()
	* cdw_read_disc.c: cdw_read_disc() now takes no arguments, instead
	  it recognizes disc type using cdw_read_disc_check_preconditions();
	  cdw_read_disc_check_preconditions() was simplified because now
	  there is no comparing of real disc type and disc type expected
	  by function;
	* cdrecord_pipe_regexp.c: small changes in regexp and handler
	  of current disc type information; now the fact that there are two
	  formats of the information are is more clear;
	* main.c: main(): changing calls to cdw_read_disc() and
	  cdw_burn_disc() according to new function prototypes;
	* cdrecord_interface.c: code from cdw_cdrecord_set_tsize_value_arg()
	  was partially moved to cdw_iso_image.c, and partially moved to
	  caller function's body;
	* cdw_file_manager.c: code from
	  cdw_file_manager_check_number_of_selected_files() was moved to
	  new function cdw_file_manager_create_graftpoints_file();
	  there is other new function:
	  cdw_file_manager_delete_graftpoints_file() so that only file
	  manager has to access graftpoints module calls;
	* cdw_erase_disc.c: changes after one function changing name to
	  cdw_disc_is_disc_ready() (return type was also changed);
	* cdw_create_image.c: cdw_create_image(): separate checking of number
	  of selected files and call to cdw_graftpoints_create_file() was
	  replaced with one call to file manager function;
	  code from cdw_create_image_boot_image_exists() was moved to
	  cdw_create_image_check_boot_image()
	* cdw_ui_main.c: two main menu items: "Copy data CD" and
	  "Copy audio CD" are now merged into "Copy CD"
	* cdw_burn_disc.c: cdw_burn_disc() now takes different argument so
	  no reference to menu items is now necessary; the function uses
	  few renamed or new functions so that body of the function can be
	  more compact; cdw_burn_disc_check_source_data_image() and
	  cdw_burn_disc_check_data() are merged into cdw_burn_disc_get_source(),
	  which mostly calls functions from file manager and iso image modules;
	  other minor changes;
	* cdw_disc.c: cdw_disc_check_disc_ready() renamed as
	  cdw_disc_is_disc_ready(), now returns bool values;
	* help.c: removing two separate tooltips for "Copy data CD" and
	  "Copy audio CD" buttons, adding tooltip for "Copy CD" button;
	* cdw_iso_image.c: new file with code moved from other modules;
	  the code operates on iso image pointed by path set in configuration
	  panel

2009-10-04 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c: fixing reference to "config" data
	  structure; handle_mounted_media(): adding line of code for
	  conditional support of DVD+R DL;
	* cdw_disc.c: cdw_disc_current_disc_resolve(): using new disc type:
	  CDW_DISC_NONE, adding line of code for conditional support
	  of DVD+R DL;
	* cdw_ui_main.c: cdw_main_ui_disc_info_view_update(): adding three
	  lines of code that allow to display correct value for disc type
	  ("no disc") in disc info area when there is no disc in drive;
	* cdw_task.c: cdw_task_select_tool_for_task(),
	  cdw_task_set_allowed_modes(): adding line of code for conditional
	  support of DVD+R DL;
	* cdrecord_interface.c: removing one comment;
	* main.c: main(): handling new return value from
	  process_commandline_args() to check if support DVD+R DL should be
	  enabled;
	* cdrecord_pipe_regexp.c: fixing reference to "config" data structure;
	* cdw_fs_browser.c: cdw_fs_browser_read_dir_content(): adding one
	  comment and one call to error message dialog, so that user knows
	  why dir was not changed;
	* cdw_config.c: cdw_config_var_set_defaults(): adding one line of
	  code to set initial value of new field of cdw_config_t
	  variable: support_dvd_rp_dl
	* utils.c: process_commandline_args(): adding support for new command
	  line arguments, modifying the method of handling command line
	  arguments;
	* thread.c: removing unused (and incorrect) reference to "config"
	  global variable

2009-10-03 Kamil Ignacak
	* thread.c: read_child_stdout() and read_child_stderr(): added
	  few lines of code to slow down idle loops and reduce CPU usage;
	* dvd_rw_format_interface.c: I have removed reference to extern global
	  "current_disc" variable and introduced passing disc variable
	  as function argument;
	* external_tools.c: cdw_ext_tools_run_which(): using new function
	  name from "which" module;
	* write_wizard.c: few small changes that are result of changing
	  name of one of "task" fields;
	* dvd_rw_mediainfo_interface.c: I have removed reference to extern
	  global "current_disc" variable and introduced passing disc variable
	  as function argument; changed one function name to follow
	  "cdw_<module name>_xx()" convention;
	* cdrecord_pipe_regexp.c: cdrecord_stdout_regexp_prepare():
	  two changes in regexp strings, first allows me to catch "DVD+R/DL"
	  as type of current disc in cdrecord output, second change allows me
	  to capture writing speeds for DVD discs;
	  cdrecord_stderr_regexp_prepare(): one update of regexp, result
	  of some tests; handle_current_disc_type(): added handling of
	  "DVD+R/DL"; handle_prcap_write_speed_table() now recognizes
	  write speeds for both CD and DVD
	* cdw_cdio.c: added "dvd_layers" field to cdio disc data structure,
	  added few lines of code that use the field; this variable holds
	  number of layers in current disc
	* cdrecord_interface.c: I have removed reference to extern global
	  "current_disc" variable and introduced passing disc variable
	  as function argument; cdw_cdrecord_create_command_for_writing():
	  one important change: when preparing track format specifier, the
	  function now checks if current disc is CD or DVD; also hardwired
	  gracetime value is increased to 4, because 2 was mentioned in
	  cdrecord man page as a minimum; also the "burnproof" drive argument
	  now has correct name "burnfree"
	* which_interface.c: renamed one function;
	* cdw_erase_disc.c, cdw_create_image.c, cdw_burn_disc.c: few small
	  changes caused by new names or new lists of arguments of few
	  functions;
	* mkisofs_interface.c: refactoring, getting rid of reference to extern
	  global "current_disc" variable
	* growisofs_interface.c: I have removed reference to extern global
	  "current_disc" variable and introduced passing disc variable
	  as function argument;
	* cdw_task.c: cdw_task_select_tool_for_task() now also selects
	  tool for media info collection task and support DVD+R DL discs;
	  cdw_task_set_allowed_session_modes() and
	  cdw_task_set_allowed_disc_modes() are now merged into one function
	  cdw_task_set_allowed_modes()
	* cdw_disc.c: refactoring and rewrites, mainly in
	  cdw_disc_get_meta_info()

2009-09-23 Kamil Ignacak
	* cdw_config.c: adding small utility function
	  cdw_config_has_scsi_device()
	* external_tools.c: adding cdw_ext_tools_check_versions() function,
	  currently only runs code checking version of growisofs;
	* cdw_cdio.c: cdw_cdio_open_disc() now tries harder to open disc;
	  cdw_cdio_get_disc_meta_info() refactored: part of code moved into
	  two new separate functions (..._disc_meta_info_cd() and
	  ..._disc_meta_info_dvd()); cdw_cdio_get_disc_meta_info_dvd() uses
	  mmc_get_dvd_struct_physical() from new version of libcdio to get
	  some (unused at the moment) information about dvd disc; disabling
	  some debug messages (cdw_vdm () -> cdw_sdm ()); adding some comments;
	  parts of code now use "disc" variable passed as function argument,
	  not as global variable; added some new debug messages at returns;
	* cdrecord_interface.c: most of functionality in this module is now
	  accessed by one function only: cdw_cdrecord_run_task(), which
	  I hereby call an improvement ;) some functions are renamed to
	  follow cdw_cdrecord_*() convention; refactoring; *_atip(), *_msinfo(),
	  *_prcap() functions are replaced by cdw_cdrecord_get_meta(), since
	  there were only minor differences between the three functions;
	* growisofs_pipe_regexp.c: added code that captures growisofs version;
	* cdw_erase_disc.c: cdw_erase_disc_dispatcher(): using new function
	  name from cdrecord_interface.c;
	* cdw_create_image.c: cdw_create_image(): using new function name
	  (cdw_mkisofs_run_task()), other minor changes;
	* mkisofs_interface.c: renaming some functions so that their names
	  are like cdw_mkisofs_*(); function preparing mkisofs options string
	  now returns pointer to string, not cdw_rv_t value; other minor
	  changes;
	* cdw_task.c: small changes in cdw_task_resolve_allowed_writing_modes();
	  cdw_task_set_allowed_session_modes(): adding small branch that
	  allows us to write first session to empty DVD+R DL disc;
	* cdw_ui_main.c: a bit of refactoring in
	  cdw_main_ui_disc_info_view_display_data()
	* cdw_burn_disc.c: cdw_burn_disc_dispatcher(): added some asserts,
	  simplified decision making by using new functions from growisofs
	  and cdrecord interface;
	* cdw_disc.c: cdw_disc_get_meta_info(): added missing return; simple
	  renames in cdw_disc_get_meta_info_cd();
	  cdw_disc_current_disc_resolve(): added comments and two lines of
	  code for support of DVD+R DL;
	* dvd_rw_mediainfo_pipe_regexp.c: handle_mounted_media(): added
	  recognition of DVD+R DL; handle_disc_status(): value of
          current_disc.state_appendable is assigned in few more places;

2009-09-09 Kamil Ignacak
	* thread.c, external_tools.c, write_wizard.c, which_pipe_regexp.c,
	  cdw_string_tests.c, cdw_graftpoints.c, cdw_fs.c, isosize.c,
	  cdw_ui_main.c, utils.c, cdw_dll_tests.c, cdw_colors.c,
	  cdw_fs_ui.c, cdw_widgets.c, cdw_config.c,
	  cdw_config_ui_internals.c, cdw_config_tests.c: added missing
	  #define required after change in Makefile.am
	* cdw_disc.c: fixing a typo;
	* cdw_file.c: new function: cdw_file_display_file() - code moved from
	  cdw_file_manager.c
	* blank_wizard.c: added few checks in blank_wizards()
	* cdw_burn_disc.c: added missing #define required after change in
	  Makefile.am; simplified displaying of debug messages in
	  cdw_burn_disc();
	* cdw_create_image.c: using new function name in cdw_create_image();
	* cdw_list_display.c: cdw_list_display_new() is simplified: it only
	  creates new display embedded in parent window provided as an
	  argument, the function doesn't create its own parent window - this
	  simplifies the use of function (size arguments are clearly described);
	  cdw_list_display_delete() now takes pointer to pointer as argument,
	  so it can assign null to deleted pointer; cdw_list_display_driver(),
	  cdw_list_display_refresh(), cdw_list_display_scroll(): few simple
	  changes; added cdw_list_display_add_return_char() and
	  cdw_list_display_is_return_char(): functions that control set of
	  chars, for which display driver returns control to caller;
	* help.c: added some checks and asserts()
	* cdw_file_manager.c: cdw_file_manager_file_selector(): using functions
	  from cdw_fs_browser.c to implement file selector;
	  cdw_file_manager_create_selected_files_view(): changes in code
	  reflect changes in cdw_list_display();
	  cdw_file_manager_internal_error_dialog(): simplified use of title
	  string; cdw_file_manager_read_dir_content(),
	  cdw_file_manager_change_dir_in_display(): code from these two
	  functions moved to cdw_fs_browser();
	  cdw_file_manager_display_file() moved to cdw_file.c; other minor
	  changes and improvements in the file (asserts, debug messages,
	  other);
	* cdw_text_file_viewer.c: added some checks in cdw_text_file_viewer(),
	  simplified one check of return value;
	* cdw_fs_browser.c: new file with some code moved from
	  cdw_file_manager.c, the code implements native file system browser,
	  a part that can be reused not only in cdw_file_manager.c, but in
	  other parts of app as well (e.g. in cdw_fs_ui.c)

2009-08-30 Kamil Ignacak
	* cdw_file.c: large parts of code are reviewed, API is updated, debug
	  messages added; added unit tests for functions from the file (one
	  unit test was moved from cdw_fs_tests.c (test_cdw_file_equal()));
	  cdw_file_dealloc_files_from_list() is a new function with body
	  of function from cdw_file_manager.c
	* cdw_file_manager.c: using new functions from cdw_file.c; in place
	  where cdw_file_duplicate() is used this saves us one branch and some
	  checks; cdw_file_manager_dealloc_files_from_list() moved to
	  cdw_file.c; cdw_file_manager_copy_dirent_to_list() moved to cdw_fs.c
	* main_tests.c: added call to cdw_file_tests();
	* cdw_fs.c: added cdw_fs_get_file_size() and moved
	  cdw_fs_copy_dirent_to_list() from cdw_file_manager.c
	* cdw_fs_tests.c: added test for cdw_fs_get_filename_start(), moved
	  test for cdw_file_equal() to cdw_file.c
	* src/Makefile.am: added few lines for support of flymake in emacs

2009-08-09 Kamil Ignacak
	* help.c: added missing gettext function calls (_()), fixed one typo
	* cdw_ui_main.c: discovered one unexpected behavior, and documented
	  it in cdw_main_ui_clean();
	* cdw_task.c: silencing some debug messages
	* main.c: adding one call to clean_before_cdw_exit() to ensure proper
	  restoring of console state in case of early exit;
	* src/Makefile.am: adding one comment for line that disables debug,
	  commented out one line with debug parameters for compiler

2009-08-02 Kamil Ignacak
	* cdw_ui_main.c, cdw_file_manager.c, cdw_config_ui_internals.c,
	  cdw_fs.c, main.c, cdw_logging.c, cdw_cdio.c, cdw_burn_disc.c,
	  growisofs_interface.c: adding or modifying comments for translators;
	* cdw_processwin.c: one change in cdw_processwin_create() that
	  displays initial "0% done" state in progress win; small
	  changes in comments for translators;
	* cdw_drive.c, cdrecord_pipe_regexp.c, cdw_config_ui.c: just
	  adjusting indentation;
	* cdw_task.c: adding dialog for one error reported by growisofs
	* cdw_disc.c: cdw_disc_current_disc_validate() now correctly recognizes
	  CD-ROM; cdw_disc_current_disc_resolve() - minor change;
	* cdrecord_interface.c: a typo in debug message
	* growisofs_pipe_regexp.c: adding handling of one more error reported
	  by growisofs;
	* external_tools.c: disabling some functions printing debug info

2009-07-26 Kamil Ignacak
	* cdw_task.c: cdw_task_check_status(): added dialog for one error
	  reported by growisofs; cdw_task_set_allowed_session_modes():
	  added one debug message;
	* blank_wizard.c: improving code creating mode dropdown: previously
	  cdw displayed garbage in dropdown (which affected whole blank
	  wizard window) when user wanted to erase DVD+RW, because there
	  is only one item in the dropdown then, but initial index was
	  set to second item in dropdown;
	* cdw_widgets.c: one comment on returned value in
	  cdw_one_line_form_driver(); cdw_dropdown_new() one assert protecting
	  from initial index out of range (see change in blank_wizard.c);
	* growisofs_pipe_regexp.c: adding code that recognizes when growisofs
	  complains about non-existing filesystem on DVD and user tries to
	  append files to existing filesystem; it seems that growisofs prints
	  two different messages covering the same situation (I might be wrong
	  though, I didn't investigate growisofs code);
	* cdw_erase_disc.h: adding two constants that start to replace some
	  magic numbers

2009-07-19 Kamil Ignacak
	* cdw_erase_disc.c, cdw_ui_main.c, cdrecord_interface.c,
          dvd_rw_format_interface.c, growisofs_pipe_regexp.c:
          terminology: blank -> erase;
	* help.c: updating one tooltip: "erase" function can also be used
	  to reformat DVD-RW disc;
	* cdw_config_ui_internals.c: one change in terminology, one updated
	  label;
	* write_wizard.c: "Default" label is replaced by "Unspecified":
	  it is user that doesn't specify mode, cdw or underlying tool
	  can specify the mode by itself;
	* cdrecord_pipe_regexp.c: updating one message in process window:
	  since fixating can take some time, it is better to show user
	  that he should wait and don't worry;
	* cdw_task.c: more detailed check of value returned by
	  cdw_task_set_allowed_session_modes(); disabling some debug messages;
	  updating values returned by cdw_task_set_allowed_session_modes();
	  refining values set in cdw_task_set_allowed_disc_modes();
	* blank_wizard.c: adding debug messages; terminology change: blank->
	  erase; adding struct with temporary values for speed and blank_fast,
	  so that the two parameters are saved only if user accept values in
	  wizard; added some checking of returned values here and there;
	* cdw_disc.c: cdw_disc_current_disc_validate() now behaves correctly
	  for DVD-ROM discs (i.e. no validation is necessary); refining
	  disc resolution for DVD-RW restricted overwrite in
	  cdw_disc_current_disc_resolve();
	* main.c: using new name of constant;
	* cdw_fs_ui.c: replacing STRERROR with strerror so that it is not
	  catched by shell pipe filters that I sometimes use to filter out
	  ERROR debug messages;
	* mkisofs_pipe_regexp.c: commenting out function declarations that are
	  no longer defined
	* cdw_string_tests.c, cdw_burn_disc.c: minor change;
	* dvd_rw_mediainfo_interface.c: adding code that recognizes DVD-ROM disc;
	* growisofs_interface.c: terminology: blank -> erase; updating code
	  resolving DAO parameter;

2009-06-27 Kamil Ignacak
	* cdw_processwin.c: added some debug messages; code displaying FIFO
	  level value now uses two colors (instead of one) to warn about
	  low levels of data in FIFO;
	* cdw_file_manager.c: moving refresh function in proper place to ensure
	  that screen was refreshed even
	* write_wizard.c: added some debug messages; added some checks of
	  strdup() return values;
	* cdw_task.c: added dialogs informing about one more problem reported
	  by mkisofs; added simple modification to code resolving allowed
	  disc modes for dvd: now DAO mode is available only for empty discs
	* mkisofs_pipe_regexp.c: added support for one more error reported
	  by mkisofs (X and Y have the same RR name); removed few one-line
	  functions and moved their bodies where the functions were called,
	  now it's a lot simpler;
	* cdw_burn_disc.c: added some debug messages; call to after_event()
	  replaced with call to logging module function;
	* growisofs_interface.c: simple fix in printf() format string;

2009-06-20 Kamil Ignacak
	* cdw_config_ui_internals.c: added some debug messages, updated user
	  messages;
	* cdrecord_pipe_regexp.c: added code processing "cannot send CUE sheet"
	  error message from cdrecord;
	* cdw_task.c: added two error messages informing about one error
	  reported by mkisofs and one error reported by cdrecord; added
	  some debug messages; updated code building allowed disc modes for
	  CD: now *_DEFAULT is no longer a default item on the menu for
	  non-empty discs;
	* cdw_disc.c: added some debug messages; cdw_current_disc_validate():
	  added one if() that checks for audio cd; before this audio CDs
	  were not recognized correctly;
	* mkisofs_pipe_regexp.c: added code that handles "Old session has
	  illegal name" error message from mkisofs;
	* cdw_task.h: added two new tool status IDs, converted tool status ID
	  values from enum values into #defined values;

2009-06-13 Kamil Ignacak
	* cdw_erase_disc.c: passing 'true' to cdw_disc_get_meta_info() so that
	  the function checks if disc is blank before attempting to erase
	  the disc
	* cdw_ui_main.c: comments; fixing how menu windows are created;
	  updating width of menu area (and thus of disc info area) so that
	  "DVD-RW Seq" label in disc info box is not truncated;
	  cdw_main_ui_main_window_wrefresh_part() now doesn't use assert() -
	  this is to prevent crashing when a dialogbox (using the function)
	  is displayed, but main ui is not yet initialized; other minor
	  changes
	* cdrecord_interface.c, md5sum_interface.c, utils.c,
          growisofs_interface.c: using new function names from logging module;
	* main_tests.c: I was trying to fix interactive tests code (it crashed
	  because main ui is never properly initialized during tests) but I
	  had to disable interactive tests altogether, at least for now;
	* cdw_config_ui_internals.c: cdw_input_field_new() now handles buffer
	  length as well, at a price of yet another function arg; the
	  function code now is better at checking return values of ncurses
	  function calls;
	* cdrecord_pipe_regexp.c: removing old, unused code
	* cdw_read_disc.c: using new function names from logging module;
	  other minor changes;
	* cdw_disc.c: moving one check and one dialog window into more
	  appropriate place;
	* main.c: using new function names from logging module; checking one
	  more return value; other minor changes;
	* cdw_fs_ui.c: better handling of value returned in cdw_fs_ui_get_path();
	* cdw_logging.c: new, consistent function names; removing
	  cdw_logging_show_last_log(), former log_file_display() (now called
	  cdw_logging_display_log()) is taking over its duties;
	* cdw_cdio.c: cdw_cdio_get_disc_meta_info(): now function returns
	  non-error value for DVD discs - this fixes a bug of recognizing
	  a disc as DVD but treating it later as CD in cdw_disc_get_meta_info()
	  (the bug was in development version only);
	* cdw_string_tests.c: minor change: removing (probably) const char from
	  list of arguments of function that could change the string;
	* thread.c: removing old references to lasttrack variable; using new
	  function names from logging module; read_child_*(): adding one line
	  that recognizes backspace char in processes data, this is to handle
	  output from dvd+rw-format correctly (progress of formatting wasn't
	  displayed in progress window in development code);

2009-06-06 Kamil Ignacak
	* cdw_erase_disc.c, cdw_processwin.c, cdw_file_manager.c, utils.c,
          cdw_drive.c, cdw_text_file_viewer.c, md5sum_interface.c,
          cdw_config_ui.c: using new function names from cdw_ui_main.c
	* main_tests.c: using new function name and updating how return value
	  is handled
	* help.c, cdw_burn_disc.c: using new function names from cdw_ui_main.c
	  and new symbolic names from cdw_ui_main.h
	* cdw_ui_main.c: replaced many separate variables global in file with
	  one big nested structure that reflects how main ui is built; now
	  all names have unified form and using full names of variables (with
	  struct accessors) makes it clear where does a variable belong to;
	  struct of button labels is replaced with table of labels for easier
	  handling; cdw_curses_init() and cdw_delete_menu_and_items() moved
	  to cdw_ncurses.c; functions renamed so that their names begin with
	  'cdw_main_ui'; added accessor functions for main app window and main
	  menu; other refactorings
	* cdw_config_ui_internals.c: page_create_helper() is removed, calls
	  to this function (and some other pieces of code) are replaced with
	  call to cdw_ncurses_new_form(); using cdw_dropdown_delete() in
	  place of cdw_dropdown_destroy(); using new function names from
	  cdw_ui_main.c
	* blank_wizard.c, write_wizard.c: using cdw_dropdown_delete() in place of
	  cdw_dropdown_destroy() and cdw_button_delete() in place of
	  cdw_button_destroy(); using new function names from cdw_ui_main.c
	* cdw_read_disc.c: using one new symbolic name
	* main.c: using new function names from cdw_ui_main.c, new functions
	  from cdw_ui_main.c, removing some variables global in file, using
	  new symbolic names from cdw_ui_main.h
	* cdw_ncurses.c: cdw_ncurses_init() moved here from cdw_ui_main.c;
	  cdw_ncurses_new_form() updated so that it can be used in
	  cdw_config_ui_internals.c; cdw_ncurses_delete_menu_and_items()
	  moved here from other file; added some asserts, renamed some
	  variables, other minor changes
	* cdw_widgets.c: some minor refactoring, added debug messages,
	  checking some return values, using new function names of functions
	  from other modules; cdw_button_destroy() and cdw_dropdown_destroy()
	  now are named *_delete() and accept pointer to pointer as argument,
	  so that the function can assign NULL to widget pointer after
	  destroying widget
	* cdw_fs_ui.c: refactoring, debug messages;

2009-05-30 Kamil Ignacak
	* utils.c, help.c, external_tools.c, write_wizard.c,
	  dvd_rw_mediainfo_interface.c, cdw_fs.c, cdw_read_disc.c,
	  cdw_text_file_viewer.c, cdw_fs_ui.c, cdw_drive.c, cdw_processwin.c,
	  main.c, md5sum_interface.c, main_tests.c, cdrecord_interface.c,
	  blank_wizard.c, cdw_config_ui_internals.c, cdw_file_manager.c,
	  cdw_erase_disc.c, cdw_config_ui.c, cdw_create_image.c, cdw_task.c,
	  cdw_ui_main.c, cdw_burn_disc.c, cdw_disc.c, cdw_logging.c,
	  cdw_config.c: using new function names and new symbolic names
	* cdw_widgets.c: general review of the code, mainly of dialog with
	  input field and dialog with buttons: the two dialogs now use common
	  widget CDW_DIALOG_BASE for some basic things like window, text
	  subwindow, calculating sizes, the two dialog types just need to
	  add some specifics; fixed a bug in input dialog: now non-zero limit
	  for data entered by user is set properly; cdw_nice_box() moved to
	  cdw_ncurses.c; other minor changes;
	* cdw_ncurses.c: new file with some wrappers of ncurses-related code,
	  which are no more than utilities for other modules: they aren't
	  complicated enough to be new widgets;

2009-05-24 Kamil Ignacak
	* cdw_config_ui_internals.c: updated some comments; page_x_draw()
	  functions replaced by one page_u_draw_non_widgets();
	  page_x_build_fields() functions now return value, and the value is
	  checked; shortened some variable names; all field indexes are now
	  moved to cdw_config_ui_internals.h, so that they can be shared
	  with validation function from cdw_config.c; updating some error
	  messages; some code is moved from few page_x_create() functions to
	  new function page_u_draw_widgets(), now page_x_create() functions
	  have only few differences, it will be easier to replace them all
	  with one universal function; cleaning of resources removed from
	  page_create_helper(), cleaning should be done in one place;
	  adding some casts
	* mkisofs_interface.c: moving one assert() in proper place to avoid
	  triggering it when simple task of creating iso image file is
	  performed; prep_command_mkisofs_prepare_multi_string() now takes
	  disc as a parameter - one place less to deal with global var;
	  other minor changes;
	* cdrecord_interface.c: minor change in comment;
	* cdw_config.c: setting proper return value in definition of
	  cdw_config_read_from_file(); cdw_config_var_validate() now uses only
	  indexes defined in cdw_config_ui_internals.h; other minor changes;
	* cdw_config_ui_internals.h: adding definitions of field indexes for
	  rest of config window pages;

2009-05-23 Kamil Ignacak
	* cdw_config_ui_internals.c: adding page F in configuration window:
	  it contains two options related to cdw log file, the two options
	  are moved from page A; also in page A I added new option: padsize;
	  options on page A are reordered and divided into general,
	  cdrecord-specific and growisofs-specific; modifying few lines after
	  changing config->iso_level into int; also added some checks and
	  debug messages in few places;
	* cdw_cdio.c: more refactoring: comments, variable and function names,
	  comments, other changes;
	* mkisofs_interface.c: prep_command_mkisofs(): moving part of code
	  (creating 'multi' string) into new, separate function (the function
	  name is prep_command_mkisofs_prepare_multi_string());
	  prep_command_mkisofs(): moving some calculations outside of list
	  of arguments to concat() call, things should be a bit cleaner now;
	  modifying few things after changing config->iso_level into int;
	* cdw_config_ui.c: updating some names in function calls;
	* cdrecord_interface.c: prep_command_cdrecord_write_data() now
	  supports padsize option; speed option is calculated more explicitly;
	* cdw_config.c: big part of changes is related to 3 things: changing
	  config->iso_level into int, moving log options to separate group
	  (separate page in config window), and adding pad_size option;
	  rest of it is mostly comments, casts, asserts and other minor changes
	* cdw_processwin.c: cdw_processwin_erase_progressbar() renamed to
	  cdw_processwin_reset_progress() and modified so that it resets all
	  data related to displaying progress information in process window;
	* cdw_config_ui_internals.h: adding two enums, one of them (F) is new,
	  the other is a set of field indexes for page A of config window;
	  some of these indexes are needed in cdw_config_var_validate() from
	  cdw_config.c

2009-05-20 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c, cdw_burn_disc.c: removing
	  reference to CDW_DISC_APPENDABLE_ERROR; updating one value name;
	* cdw_cdio.c: next part of general file review: updating comments,
	  asserts, variable names; moving unused code to unused_code.see;
	  type definitions moved from cdw_cdio.h
	* cdw_read_disc.c, md5sum_interface.c: changes that are result of
	  changes in cdw_cdio.c and cdw_disc.c: access to information is
	  a bit more abstracted
	* cdw_disc.c, cdrecord_pipe_regexp.c: using new forms of
	  CDW_DISC_* symbolic values
	* mkisofs_interface.c: removing reference to CDW_DISC_SIMPLE_TYPE_NONE
	* cdw_cdio.h: moving some type definitions to cdw_cdio.c;
	  adding definition of cdw_content_t type - unused for now, but in
	  future it will be used in some places; updating functions
	  declaration list;
	* cdw_disc.h: removing unused / unnecessary symbolic values;

2009-05-19 Kamil Ignacak
	* cdrecord_pipe_regexp.c, write_wizard.c: using new field name of
	  current_disc struct
	* mkisofs_interface.c, cdw_task.c: using new symbolic names of simple
	  disc types
	* cdw_disc.c: implementing changes that are result of changes in
	  cdw cdio module: new function names, new constant names, etc.
	  moving disc_supported_for_ripping() from cdw_cdio.c to cdw_disc.c
	* md5sum_interface.c: implementing changes that are result of changes
	  in cdw cdio module: new function names, return values, getters
	  instead of direct access to cdio disc data struct;
	* cdw_read_disc.c: implementing changes that are results of changes
	  mainly in cdio module, but also those from cdw_disc module (which
	  were changes made because of changes in cdio module); using some
	  getters instead of direct access to cdio disc data struct;
	* cdw_cdio.c: general review of code (part one): updating api,
	  renaming functions, refactoring; one important change is that
	  cdio disc data structure is available to other modules (including
	  cdw_disc) only by getters(); cdw_cdio_recognize_track() is now
	  much clearer: functionality and tasks of functions were divided
	  into few separate pieces of code (some of them in functions);
	  part of changes signalled by diff is a result of using cdw_vdm ()
	  instead of cdw_sdm (), and also because part of code is moved
	  to "unused code" part of file;
	* cdw_cdio.h: added CDW_GREY_BOOK track type, but probably not for
	  long; simple disc type symbolic names are now more verbose;
	  cdw_cdio_disc_t type definition moved to cdw_cdio.c disc type;
	  added / modified / removed some function declarations;
	* cdw_disc.h: removed from cdw_disc_t data type field of type
	  cdw_cdio_disc_t; other minor changes;

2009-05-17 (2) Kamil Ignacak
	* cdw_widgets.c, cdw_processwin.c, cdw_list_display.h, cdw_widgets.h,
	  cdw_processwin.h: using new cdw_colors_t type;
	* cdw_text_file_viewer.c, cdw_file_manager.c: adding missing COLORS_PAIR() macro
	  invocations
	* cdw_colors.c: expanding one comment, removing one FIXME;
	  using new cdw_colors_t type;
	* cdw_list_display.c: adding missing COLORS_PAIR() macro
	  invocations; using new cdw_colors_t type;
	* cdw_colors.h: using typedef with existing enum into create
	  cdw_colors_t type;


2009-05-17 Kamil Ignacak
	Changes that affect almost all files:
	include files: I've renamed all include guards so that now they
	have the same format: H_CDW_sth. This is to avoid using identifiers
	starting with one or two underscores, which are reserved by
	C Standard (I removed such identifiers from include guards before)
	and to avoid another kind of reserved identifiers: those starting
	with 'E' letter: I used such identifier in erase_disc.h, so
	I had to modify it. I came up with convention that is consistent in
	all header files (mentioned H_CDW_sth);

	include files and *.c files: I changed policy regarding nested
	#includes: from now on a header file for module X should include
	all other header files that are necessary to compile header X
	correctly, i.e. all other header files that define data types,
	macros,	constants that are used by functions declared in X.h.
	Now code that wants to use functions from module X can include
	only X.h file and doesn't have to care about any other include
	files (which define data types, macros, etc. used by X header)
	needed to properly call functions from module X. This change
	allowed me to decrease number of #includes in *.c files

	* blank_wizard.c cdw_create_image.c cdw_widgets.c cdw_fs.c
	  dvd_rw_mediainfo_pipe_regexp.c growisofs_pipe_regexp.c thread.c
	  pipe_regexp.c write_wizard.c cdw_text_file_viewer.c utils.c
	  cdw_fs_ui.c cdw_config_ui_internals.c cdw_cdio.c cdw_logging.c
	  cdw_read_disc.c cdrecord_interface.c cdrecord_pipe_regexp.c
	  cdw_burn_disc.c cdw_cdll_tests.c cdw_colors.c cdw_config.c
	  cdw_config_ui.c cdw_disc.c cdw_dll.c cdw_dll_tests.c cdw_drive.c
	  cdw_drive_tests.c cdw_erase_disc.c cdw_file_manager.c cdw_fs_tests.c
	  cdw_fs_ui_tests.c cdw_graftpoints.c cdw_list_display.c
	  cdw_processwin.c cdw_string.c cdw_task.c cdw_ui_main.c
	  dvd_rw_format_interface.c dvd_rw_format_pipe_regexp.c
	  dvd_rw_mediainfo_interface.c external_tools.c growisofs_interface.c
	  main.c main_tests.c md5sum_interface.c md5sum_pipe_regexp.c
	  mkisofs_interface.c mkisofs_pipe_regexp.c pipe_regexp_tests.c
	  which_interface.c which_pipe_regexp.c: reorganizing headers
	* help.c: reorganizing includes, removing unused defines
	* cdw_config_tests.c, cdw_cdll.c: reorganizing includes, replacing
	  asserts() with cdw_asserts()
	* cdda2wav.c: disabling almost all of the content in the file - it is
	  unused at the moment;
	* cdw_file.c: reorganizing includes, updating code in debug messages;
	* cdw_fs_tests.h main.h mkisofs_interface.h cdw_cdll_tests.h
	  cdw_fs_ui_tests.h cdw_burn_disc.h cdw_config_ui.h
	  md5sum_pipe_regexp.h dvd_rw_mediainfo_interface.h
	  cdrecord_pipe_regexp.h cdda2wav.h cdrecord_interface.h
	  cdw_processwin.h dvd_rw_format_pipe_regexp.h cdw_erase_disc.h
	  utils_filesystem_tests.h cdw_cdll.h pipe_regexp_tests.h
	  which_pipe_regexp.h cdw_drive_tests.h cdw_string_tests.h
	  cdw_create_image.h dvd_rw_mediainfo_pipe_regexp.h cdw_fs.h cddb.h
	  growisofs_pipe_regexp.h help.h write_wizard.h cdw_debug.h isosize.h
	  cdw_fs_ui.h cdw_logging.h cdw_ui_main.h cdw_read_disc.h
	  md5sum_interface.h dvd_rw_format_interface.h cdw_dll_tests.h
	  cdw_ui_driver.h mkisofs_pipe_regexp.h gettext.h cdw_config_tests.h
	  growisofs_interface.h: editing include guards
	* iso9660.h: adding include guards
	* cdw_string.h cdw_graftpoints.h cdw_config.h which_interface.h
	  cdw_file.h cdw_widgets.h thread.h pipe_regexp.h utils.h
	  cdw_text_file_viewer.h cdw_config_ui_internals.h cdw_cdio.h
	  cdw_colors.h blank_wizard.h cdw_disc.h cdw_list_display.h
	  external_tools.h cdw_file_manager.h cdw_dll.h cdw_drive.h
	  cdw_task.h: editing include guards, reorganizing includes

2009-05-15 Kamil Ignacak
	* cdw_widgets.c: cdw_dialogbox(): reorganized code responsible for
	  calculating size of text area in dialog window, and of dialog:
	  now dialogs can display safely much longer texts (especially on
	  small terminals), although the code is still imperfect;
	* help.c: tooltips at the bottom of main ui window are now displayed
	  with textarea function, this makes display_tooltip() function
	  shorter, and modified tooltips can be now longer: there is no need
	  to produce one shorter tooltip and second longer, and make sure that
	  both are shorter than window width.
	* cdw_text_file_viewer.c: renamed some functions, added comments and
	  type casts
	* cdw_logging.c: using new name of function from cdw_text_file_viewer.c
	* cdw_ui_main.c: updating one line of code in recalculate_sizes()
	  for "nicer" align of text in help subwindow; cdw_ui_show_license()
	  rebuilt: if it can't display license from txt file in system
	  location, it first tries to display long license information, and
	  then (if it fails) short license information; so now the function
	  looks better and tries harder ;)
	* cdw_file_manager.c: some renaming of variables;
	  cdw_file_manager_display_file() now supports h_offset parameter,
	  so user can shift dir listings to view long dir/file names;
	* cdw_list_display.c: added lots of comments; more checks in
	  cdw_list_display_new(); added checks for number of items on
	  display's list in some functions in module to properly handle lists
	  with zero elements; cdw_list_display_driver() now handles
	  Left/Right arrow keys, also has improved handling of Home key which
	  takes into account possible horizontal offset of content of window;
	  this new functionality of driver() was moved from driver function in
	  old cdw_text_file_viewer.c; renaming some variables to remove any
	  references to files and dirs (list display was developed mainly with
	  displaying file listings, but now it is universal widget);
	  other minor changes;
	* cdw_list_display.h: adding comments, renaming some variables

2009-05-14 Kamil Ignacak
	* cdw_config.c: cdw_config_var_validate() now removes trailing slashes
	  from path to cdrw device;
	* cdw_task.c: using *_N_MAX instead of *_GUARD labels, adding some
	  assertions and test code;
	* cdw_config_ui_internals.c: improving message printed in "Hardware"
	  tab of configuration window;
	* write_wizard.c: tables of labels for session mode and disc mode
	  are now dynamically allocated: this requires some changes in
	  argument lists of some functions, and other changes in the file
	  (e.g. session_mode_dropdown_labels_build() and
	  disc_mode_dropdown_labels_build() are modified);
	  using disc->write_speeds[] instead of atoi(speed_dropdown_labels[]):
	  this is clearer and, IMO, more correct;
	* cdw_fs.c: adding comments; scandir filter functions moved to the
	  bottom (they should be revised less often);
	  cdw_fs_check_existing_path() now returns EACCES instead of "a value"
	  when file permissions do not match; cdw_fs_check_device_mounted()
	  improved: it checks if given device fullpath is a link, and checks
	  target of the link as well; cdw_fs_update_dirpath() was rewritten
	  using realpath(), I think that the code is now easier to maintain;

	* cdw_text_file_viewer.c: text file viewer was rewritten using list
	  display widget;
	* utils.c: updating order of calling clean() functions to force correct
	  cleanup of selected files view;
	* cdw_file_manager.c: minor changes: result of adding additional
	  parameter to cdw file display functions + some comments;
	* cdw_list_display.c: clearing up situation with parameters for
	  display's window and subwindow in cdw_list_display_new(); adding
	  small test in cdw_list_display_delete() to catch orphaned data
	  on display's list; cdw_list_display_driver(): adding handling
	  of left / right arrow keys and upgrading of home key handling -
	  this upgrade is inspired by former driver from text file viewer,
	  it is significant only when a line display procedure can handle
	  h_offset parameter (line display procedure for text file viewer
	  can do this, whereas line display procedure for file manager
	  module can't do this now); updating argument list of
	  display->display_item() calls;

2009-05-13 Kamil Ignacak
	* cdw_create_image.c, cdw_logging.c, cdw_read_disc.c,
	  cdw_fs_ui_tests.c: calling functions from cdw_fs.c and cdw_fs_ui.c
	  with new, correct args;
	* cdw_widgets.c: cdw_one_line_input(): simplified comment for the
	  function, added some debug messages; cdw_one_line_input_get_buffer():
	  now the function can realloc any buffer, regardless of value of
	  limit arg; cdw_inputbox(): casts, asserts, debug messages;
	* cdw_fs.c: both home and tmp fullpath variables are now dynamically
	  alloced; added clean() function for the module; updated some comments;
	  cdw_fs_check_existing_path(): simplified checking permissions:
	  now instead of S_IRUSR, S_IWUSR etc. the function accepts R_OK, W_OK
	  and X_OK, and uses access(); cdw_fs_init_home_dir_fullpath() and
	  cdw_fs_init_tmp_dir_fullpath() rewritten to handle the variables as
	  dynamic strings, also other changes;
	* write_wizard.c: id tables for session modes and disc modes are now
	  fields of cdw_task_t type; this makes the code a bit more readable;
	  some debug messages moved to cdw_task.c;
	  disc_mode_dropdown_labels_build() is more like
	  session_mode_dropdown_labels_build(): it has labels[] table indexed
	  with constants defined in cdw_task.h, code calculating allowed
	  disc modes is moved outside of the function;
	* utils.c: calling cdw_fs_clean() in clean_before_cdw_exit();
	* cdw_fs_ui.c: some debug messages added, updated argument type of
	  cdw_fs_ui_get_path_check()
	* cdw_colors.c: curses_colors_init() split into two "phases":
	  calling phase 1 is required for fs to be safely initialized, and
	  phase 2 can't be called until fs is initialized;
	* cdw_file_manager.c: removed declaration of extern base_dir_fullpath,
	  the module now initializes initial_dirpath() using calls of cdw_fs
	  module;
	* cdw_task.c: added functions: cdw_task_resolve_allowed_writing_modes(),
	  cdw_task_set_allowed_session_modes(),
	  cdw_task_set_allowed_disc_modes(); these functions aren't brand new,
	  the code is moved from other files and wrapped in functions with
	  updated names;
	* growisofs_interface.c, cdrecord_interface.c: added some asserts,
	  using new fields from cdw_file_t;
	* main.c: using curses_colors_init_phase 1 and 2;
	* cdw_burn_disc.c: cdw_burn_disc_check_data_and_disc() is now
	  moved to other file and called
	  cdw_task_resolve_allowed_writing_modes(); added some asserts;
	* cdw_config.c: base_dir_fullpath is now static;
	* cdw_task.h: updated definitions of cdw_write_session_mode_t and
	  cdw_write_disc_mode_t: *_GUARD now can be used as size of related
	  tables; explicitly specified *_INIT values; reorganized fields in
	  cdw_task_t type;

2009-05-12 Kamil Ignacak
	* cdw_create_image.c: boot_image_exists() moved from cdw_fs.c and
	  renamed;
	* cdw_widgets.c: updated one comment
	* cdw_fs.c: updating includes; using PATH_MAX instead of MAXPATHLEN;
	  one() and two() functions now have more verbose names; removed
	  declaration of global config variable, now cdw_fs_dirsize_path*()
	  functions take additional "follow_symlinks" argument;
	  cdw_sys_errno_handler(), boot_image_exists(), my_readline_10k()
	  moved to other files; functions related directly to cdw_file_t
	  data type moved to new file cdw_file.c
	* growisofs_pipe_regexp.c: updated includes; using new field:
	  task->data_size_mb in handle_growisofs_writing_data();
	* utils.c: moved to this file from cdw_fs.c: my_readline_10k(),
	  cdw_sys_errno_hander()
	* cdw_fs_ui.c: updated includes; cdw_fs_ui_get_path() now passes
	  PATH_MAX to cdw_inputbox() to make sure that entered path is no
	  longer than OS allows;
	* cdw_logging.c, cdw_read_disc.c, cdw_fs_ui_tests.c,
          cdrecord_interface.c, cdw_graftpoints.c: updating includes;
	* cdw_ui_main.c: removing global variable selected_files_size_mb:
	  it is now global only in cdw_file_manager.c file, and accessed
	  by functions from this module; this is related to changes in code
	  and declarations of cdw_ui_files_info_view_recalculate_data() (now
	  called cdw_ui_files_info_view_update()) and
	  cdw_ui_files_info_view_display_data();
	* cdw_colors.c: using PATH_MAX instead of MAXPATHLEN
	* cdw_dll_tests.c, cdw_fs_tests.c: including cdw_file.h and using
	  functions from this file (old functions from cdw_fs.c with new names);
	* cdw_file_manager.c: file manager now also manages
	  selected_files_size_mb variable: calculates its value in
	  cdw_file_manager_calculate_selected_files_size() and makes its value
	  available by cdw_file_manager_get_selected_files_size(); including
	  cdw_file.h and using functions from this file (old functions from
	  cdw_fs.c with new names);
	* cdw_config_ui.c: using cdw_ui_files_info_view_update() function in
	  place of two others from cdw_ui_main.c
	* cdw_burn_disc.c: updating includes; removing definition of global
	  iso_file_size_mb variable; setting value of task->data_size_mb before
	  passing task variable to cdw_burn_disc_dispatcher() - pipe regexp code
	  can use it to display total size of data to burn;
	* cdw_file.c: new file with parts of code from cdw_fs.c: functions
	  related directly to cdw_file_t data structure;

2009-05-11 Kamil Ignacak
	* cdw_config_ui_internals.c: cdw_ext_tools_resolve_default_fullpaths()
	  is replaced with cdw_ext_tools_assert_indexes_correctness(); some
	  comments added;
	* external_tools.c: adding comment on top of file, adding comments to
	  functions; some checks of returned values;
	  cdw_ext_tools_check_which_availability() rewritten so that it doesn't
	  "guess" that much where "which" can be located, now the function uses
	  PATH shell variable to see in which dirs to look for "which"; changed
	  code that handled cdw_tools[<tool id>].fullpath and
	  cdw_tools[<tool id>].index: fullpath is removed, index is the only
	  source of information about current fullpath; removed
	  cdw_ext_tools_generic_error_message(), dialog moved directly into
	  place of the function's call;
	  cdw_ext_tools_resolve_default_fullpaths() renamed and changed to be
	  cdw_ext_tools_assert_indexes_correctness(); other minor changes
	* growisofs_interface.c: updating code in
	  prep_command_growisofs_finalize() - function that is currently
	  disabled: implementing changes that were made in other functions
	  in last commit;
	* main.c: fixing one typo in error message;
	* cdw_burn_disc.c: fixing one typo in comment
	* which_interface.c: adding one comment and one cast
	* which_pipe_regexp.c: minor changes;
	* external_tools.h: removed fullpath from cdw_tool_t; removed and
	  modified some comments;

2009-05-10 Kamil Ignacak
	* cdw_create_image.c, write_wizard.c, utils.c, cdw_disc.c,
          cdw_burn_disc.c, cdw_erase_disc.c: using new function name
	* cdw_config_ui_internals.c: declarations of few vars from
	  external_config.c now replaced by just one; changes in this file
	  are result of this change and of other changes in external_tools.c
	* md5sum_interface.c, dvd_rw_format_interface.c,
          growisofs_interface.c, mkisofs_interface.c, cdrecord_interface.c,
          dvd_rw_mediainfo_interface.c: now accessing fullpath to tool only
          by accessor function, removed declaration of cdw_tools global
          variable;
	* external_tools.c: struct of tools (cdw_tools_t cdw_tools) was
	  replaced by table of tools, that allowed me to rewrite big part
	  of code in this file as loops over the table; code from
	  external_tools_init() was wrapped into separate function;
	  added cdw_ext_tools_check_which_availability(); added accessor
	  function: cdw_ext_tools_get_tool_fullpath() - now other parts
	  of application don't have to know about internals of cdw_tools
	  data structure; now only cdw_config_ui_internals.c accesses
	  its fields directly - I kept this for convenience;
	* cdw_task.c: moved cdw_task_select_tool_for_task() from
	  external_tools.c; other minor changes;
	* main.c: using new name of function initializing "external tools"
	  module, checking its return value;
	* which_interface.c: removing unused include;
	* which_pipe_regexp.c: simplifying handle_which() by moving one check
	  on top of function; updating includes; other minor changes;
	* cdw_task.h: definition of enum cdw_tool moved to external_tools.h;
	  removed includes, added one function declaration;
	* external_tools.h: removed includes; removed declaration of
	  struct cdw_tools_t, added definition of enum cdw_tool (moved from
	  cdw_task.h, did some renamings;
	* which_interface.h: removed unused includes;

2009-05-09 Kamil Ignacak
	* cdw_widgets.c, help.c, write_wizard.c, cdw_text_file_viewer.c
	  cdw_config_ui_internals.c, blank_wizard.c, md5sum_interface.c
	  main.c, cdw_config.c, cdw_processwin.c: using new function
	  name from cdw_ui_main.c
	* cdw_ui_main.c: modifying some function names; removing
	  main_win_refresh() - it was always called with arg=false,
	  so calls to it were replaced by calls to cdw_ui_main_window_refresh()
	* cdw_dll_tests.c: added tests for cdw_dll_is_empty(), cdw_dll_append()
	  and cdw_dll_ith_item()
	* cdw_file_manager.c: added some comments; checking return values in
	  more places; added some debug messages; other minor changes
	* cdw_dll.c: adding some asserts, removing unnecessary debug messages;
	  removing unused cdw_dll_get_item_data();

2009-05-08 Kamil Ignacak
	* cdw_fs.c, cdw_fs.h: adding 'const' keyword in one function's
	  argument list
	* cdw_ui_main.c: selected_list_view_create(): adding some comments,
	  checking value returned by cdw_file_manager_create_selected_files_view();
	  cdw_delete_menu_and_items(): minor changes; removing unused function
	  selected_files_menu_regenerate_error_dialog(), now cdw_file_manager
	  displays error in case of problems with creating selected files
	  view;
	* cdw_list_display.c: adding initialization of two fields in
	  cdw_list_display_new();
	* cdw_file_manager.c: adding comments, renaming functions, doing some
	  refactoring; also adding checking few return values and adding
	  debug error messages
	* cdw_file_manager.h: moving some function declarations to c file,
	  removing unused declarations;
	* cdw_debug.h: reformatting cdw_assert() output, adding conditional
	  compilations;

2009-05-07 Kamil Ignacak
	* cdw_fs.c, cdw_fs.h: added two new utility functions:
	  cdw_fs_new_file() and cdw_fs_new_file_from_path();
	* cdw_ui_main.c, cdw_ui_main.h: adding missing declarations
	* cdw_file_manager.c: added some comments, asserts, checks and casts;
	  cdw_file_manager_clean() now properly deallocs selected_files display;
	  replaced some calls to cdw_dll_length() with display_name->n_items,
	  this required changes in few places to always properly update value
	  of n_items; file_panel_internal_error_dialog() renamed to
	  cdw_file_manager_internal_error_dialog(); the function now accepts
	  argument, on which different dialogs are used; function
	  cdw_file_manager_copy_dirent_to_list() was simplified: now only one
	  loop is performed, big parts of code refactored into separate
	  functions and moved to cdw_fs.c; cdw_file_manager_display_file():
	  simplified code by moving some checks outside of main if/else
	  branches and using temporary vars; added
	  cdw_file_manager_dealloc_files_from_list() wrapper;
	* cdw_list_display.c: adding missing cleaning of dll data structure
	  to cdw_list_display_delete();
	* cdw_dll.c: adding one assertion and removing meaningless assignment
	  in cdw_dll_clean();
	* cdw_graftpoints.c: adding missing includes

2009-05-05 Kamil Ignacak
	* cdw_string_tests.c: small changes in includes, using new
	  name of function relaxed_recognize_bool_value() ->
	  cdw_string_get_bool_value();
	* cdw_create_image.c: small changes in includes; adding call
	  to graftpoints module code to create graftpoints file before
	  creating image; added two dialogs with error messages;
	* cdw_fs.c: small changes in includes; added some utility functions:
	  cdw_fs_duplicate_file(), cdw_fs_free_file(), cdw_fs_files_equal(),
	  cdw_fs_update_dirpath();
	* pipe_regexp.c: added missing include
	* cdw_text_file_viewer.c: small changes in includes; added some 'const'
	  keywords, changed asserts() to cdw_asserts();
	* utils.c: small changes in includes; updated clean_before_cdw_exit():
	  removed two unnecessary function calls (2 modules no longer need
	  cleanup); conditional_exit() moved to other file;
	  relaxed_recognize_bool_value() moved to cdw_string.c
	* cdw_tmp_files.c: renamed as cdw_graftpoints.c, code refactored;
	* cdw_fs_ui.c: small changes in includes;
	* cdw_logging.c: small changes in includes; minor changes: casts,
	  'const' keywords, removed unused declaration;
	* cdw_ui_main.c: small changes in includes; universal_menu_clean()
	  renamed as cdw_delete_menu_and_items(); changed parts of code
	  related to 'selected files' view, parts of code moved to
	  cdw_file_manager.c
	* md5sum_interface.c: added missing include
	* main_tests.c: references to filelist replaced by references to cdw_dll
	* cdw_file_manager.c: refactoring, refactoring, refactoring: small bits
	  of code moved from cdw_ui_main.c, code in the file now utilizes two
	  objects of type CDW_LIST_DISPLAY called file_browser and
	  selected_files: two widgets that allow user to select files and
	  manage them, some functions implement handling of some keys pressed
	  in the two displays; CDW_LIST_DISPLAY itself is implemented in
	  cdw_list_display.[ch]; result of the changes is more abstraction,
	  reusing of new data structure (CDW_LIST_DISPLAY), replacing two
	  similar data structures holding files (table and list) by one
	  (list);
	* cdw_fs_tests.c: added tests of cdw_fs_files_equal()
	* filelist.c: small changes that are now meaningless, since code from
	  filelist.c is now replaced by cdw_dll.c
	* mkisofs_interface.c: small changes in includes; updated references
	  to graftpoints and filelist code
	* main.c: small changes in includes; removed call to tmp_files_init();
	  cdw_tmp_files.c file is now unused, and graftpoints module (replacing
	  tmp files module) doesn't require initialization; conditional_exit()
	  moved from utils.c; using two functions from cdw_ui_main module with
	  new names;
	* cdw_string.c: small changes in includes; cdw_string_get_bool_value()
	  is former relaxed_recognize_bool_value() function;
	* cdw_fs_ui_tests.c: small changes in includes;
	* cdw_burn_disc.c: small changes in includes; removed references to
	  filelist, added calls to graftpoints code, which now creates
	  graftpoints file;
	* cdw_config.c: small changes in includes; using
	  cdw_string_get_bool_value() name in place of
	  relaxed_recognize_bool_value()
	* cdw_dll_tests.c: new file with unit tests for code from cdw_dll.c
	  file
	* cdw_dll.c: new file with code implementing doubly linked list
	  (this is file with refactored code from filelist.c)
	* cdw_list_display.c: new file with code implementing new widget:
	  the widget displays content of doubly linked list in given
	  ncurses window; the list, the window and other variables are
	  put into one data structure; the widget can be used to display
	  e.g. list of files;
	* cdw_graftpoints.c: new file with parts of code from cdw_tmp_files.c
	  that implement handling of graftpoints file used by mkisofs;


2009-04-26 Kamil Ignacak
	* cdw_string_tests.c: tests for correct_dir_path_ending() moved
	  to other file; other minor changes;
	* cdw_create_image.c: added or modified some comments;
	  added cdw_create_image_get_target_data_image_path(): nice wrapper
	  for cdw_fs_ui_get_path() call; other minor changes
	* cdw_widgets.c: updates in comments; changed one parameter name;
	* options_ui.c: code from the file moved to cdw_config_ui_internals.c
	  and other files;
	* dvd_rw_mediainfo_pipe_regexp.c: variables of type regex_t changed
	  from pointers to, well, variables; this allowed me to remove few
	  lines of code and change other lines; removed or updated some
	  comments; cleaned up handle_track_start_address() by using
	  n_tracks instead of blank_track_index;
	* growisofs_pipe_regexp.c: variables of type regex_t changed
	  from pointers to variables; this allowed me to remove few
	  lines of code and change other lines;
	* thread.c: minor changes in includes; added
	  __attribute__((unused)) to silence some compiler warnings
	* utils_filesystem.c: renamed to cdw_fs.c; some code moved to
	  cdw_fs_ui.c; some function renames; refactoring and improvements
	* pipe_regexp.c: small changes in comments and debug messages;
	  eta_calculations() has new argument, it is also simplified
	* help.c: reformatted some code and comments; tooltips are now
	  printed in their own subwindow, not in part of main window;
	* write_wizard.c: added some assertions, removed reference to
	  global current_disc - it is now a parameter of functions; some
	  refactoring; big part of code from
	  session_mode_dropdown_labels_build() that was responsible for
	  specifying allowed modes for given disc types is moved to
	  cdw_burn_disc.c; other changes (refactoring)
	* cdw_text_file_viewer.c: two includes removed;
	* utils.c: added  __attribute__((unused)) in 3 places; removed some
	  includes;
	* cdw_tmp_files.c: changes in includes; graftpoint_fullpath is no
	  longer a global variable, it is exposed via getter function;
	  tmp_files_init() simplified by using cdw_fs_get_tmp_dir_fullpath();
	* cdw_cdio.c: cdw_cdio_disc_open() now returns pointer to open disc;
	* cdw_logging.c: some changes in includes; log_module_init() refactored;
	  other parts of refactored and reformatted;
	* cdw_read_disc.c: changes in includes; cdw_read_disc() split into
	  two parts: part of code responsible for real reading extracted to
	  new function; other changes, added asserts, comments;
	* cdw_ui_main.c: added code creating and cleaning tooltips subwindow;
	  cdw_curses_init(): call to curses_colors_init() had to be moved to
	  main(); removed reference to global current_disc - it is now
	  parameter of functions, or it is accessed by getter
	* cdw_colors.c: changes in includes; curses_colors_init() simplified
	  by use of cdw_fs_get_home_dir_fullpath(); changes in comments,
	  added assertions, added debug messages;
	* blank_wizard.c: refactoring, reformatting, renames, added/updated
	  comments;
	* md5sum_interface.c: small changes: using new names of task functions;
	  changed code using cdw_cdio_disc_open(), which now returns pointer
	  to disc; other changes;
	* cdw_disc.c: added cdw_disc_current_disc() getter; blank_track_index
	  replaced by n_tracks in dvd+rw-mediainfo-related code; using new
	  names of task functions;
	* dvd_rw_format_interface.c: config.speed is now int, introducing
	  nececessary changes in the file;
	* main_tests.c: added call to cdw_fs_ui_interactive_tests(),
	  cdw_fs_run_tests() and pipe_regexp_run_tests(); interactive tests are
	  now performed in subwindow, not in window (to simplify refreshing);
	* external_tools.c: using new names of task functions;
	* cdw_file_manager.c: using new names of variables, functions and
	  constants; changes in includes;
	* growisofs_interface.c: config.speed is now int, introducing
	  nececessary changes in the file; other minor changes;
	* cdw_drive.c: small changes in code that uses new forms of
	  cdw_cdio and current_disc modules calls;
	* mkisofs_pipe_regexp.c: replacing several variables with one; removing
	  unnecessary comments; calling eta_calculations() with third parameter;
	* filelist.c: changes in includes, using new function name
	  (cdw_fs_dirsize_path())
	* mkisofs_interface.c: changes in includes; reformatting, changes of
	  variable names; removed reference to global graftpoints_fullpath -
	  now using getter; other minor changes;
	* main.c: changes in includes; added call to cdw_fs_init() and
	  curses_colors_init(); using renamed functions from cdw_config_ui;
	* cdw_string.c: some changes in comments;
	* cdw_burn_disc.c: big refactoring; new function
	  cdw_burn_disc_check_data_and_disc() decides which session modes are
	  allowed for given disc - this is the code moved from write wizard;
	* cdrecord_interface.c: changes in includes; changes in comments;
	  config.speed is now int, introducing nececessary changes in the file;
	  other minor changes;
	* cdda2wav.c: changes in includes;
	* cdrecord_pipe_regexp.c: variables of type regex_t changed from
	  pointers to variables; this allowed me to remove few lines of
	  code and change other lines;
	* md5sum_pipe_regexp.c: variables of type regex_t changed from
	  pointers to variables; this allowed me to remove few lines of
	  code and change other lines;
	* dvd_rw_mediainfo_interface.c: blank_track_index replaced by n_tracks;
	* cdw_config.c: cdw_config_module_set_paths() simplified by use of
	  new functions from cdw_fs.c; config.speed is now int, not string,
	  some changes in code were necessary; changes in comments;
	* cdw_erase_disc.c: refactoring, reformatting; using new names of
	  task functions; removing reference to global current_disc, now using
	  getter;
	* cdw_processwin.c: removing some commented out reference, fixing
	  one typo
	* cdw_cdll.c: removing unused includes;
	* dvd_rw_format_pipe_regexp.c: removing unnecessary comments;
	  variables of type regex_t changed from pointers to variables;
	  this allowed me to remove few lines of code and change other lines;
	* tasks.c: renamed as cdw_task.c
	* cdw_drive_tests.c: replacing cdw_main_test_widow by
	  cdw_main_test_subwin;
	* which_interface.c: changes in includes, removing unused reference
	  to config;
	* which_pipe_regexp.c: changes in includes; removing unused reference
	  to config;
	* pipe_regexp_tests.c: new file testing eta_calculations();
	* cdw_fs_ui_tests.c: new file testing simple file selectors;
	* cdw_fs_tests.c: new file testing cdw_fs_correct_dir_path_ending
	* cdw_config_ui.c: new file with old pieces of code: (top level)
	  functions that implement user interface to configuration;
	* cdw_config_ui_internals.c: new file with old code building
	  window and pages in cdw configuration window;
	* cdw_fs.c, cdw_fs_ui.c: new files with old code that in some way
	  interfaces filesystem, or allows user to interact with filesystem
	* cdw_task.c: old tasks.c file

2009-04-09 Kamil Ignacak
	* cdw_create_image.c, cdw_widgets.c, options_ui.c,
	  dvd_rw_mediainfo_pipe_regexp.c, growisofs_pipe_regexp.c,
	  thread.c, utils_filesystem.c, pipe_regexp.c, help.c, utils.c,
	  cdw_tmp_files.c, cdw_logging.c, cdw_read_disc.h, cdw_ui_main.c,
	  cdw_colors.c, blank_wizard.c, md5sum_interface.c, cdw_disc.c,
	  dvd_rw_format_interface.c, external_tools.c, cdw_file_manager.c,
	  filelist_tests.c, growisofs_interface.c, cdw_drive.c,
	  mkisofs_pipe_regexp.c, filelist.c, mkisofs_interface.c, main.c,
	  cdw_burn_disc.c, cdrecord_interface.c, cdda2wav.c,
	  cdrecord_pipe_regexp.c, md5sum_pipe_regexp.c,
	  dvd_rw_mediainfo_interface.c, cdw_ui.c, cdw_config.c,
	  cdw_erase_disc.c, cdw_processwin.c, cdw_cdll.c,
	  dvd_rw_mediainfo_pipe_regexp.c, tasks.c, which_interface.c,
	  which_pipe_regexp.c, *.h: many, many changes that are result of
	  refactoring, review, renaming, removing sources of compiler
	  warnings, moving code between files and creating new files
	* utils_string_tests.*: renamed to cdw_string_tests.*
	* utils_string.*: renamed to cdw_string.*
	* write_wizard.c: one of changes is that I removed possibility of
	  writing initial session of multisession disc when user writes iso
	  image to disc;
	* main_tests.c: added initial code for interactive testing
	* cdw_config_tests.*: new file with code for testing functions from
	  cdw_config.c file (currently only cdw_config_split_options_line.c)
	* cdw_drive_tests.*: new file with code for testing functions form
	  cdw_drive.c file (interactive testing)

2009-04-02 Kamil Ignacak
	* cdw_disc.*: lots of refactoring, renaming and rewriting;
	  code is reviewed, improved, updated; api is simplified;
	  some unused code is moved to unused_code.see;
	* processwin.*: renamed as cdw_processwin.*; some refactoring,
	  renaming and rewriting; code is reviewed, improved, updated
	* *.*: various minor changes being result of changes in processwin.c,
	  and cdw_disc; also some minor improvements, reformatting and
	  removing few "const" keywords;

2009-03-28 Kamil Ignacak
	* *.*: lots and lots of refactoring, function renaming, moving code
	  from one file to another; some files added, some files removed;
	  lots of changes in source committed as one big changeset

2009-03-22 Kamil Ignacak
	* options_ui.c: cdw_input_field_new(): fixing order of function calls
	  to avoid truncating of field buffers; adding "Follow symlinks"
	  field in ISO options tab; renaming config_window() to
	  config_window_internal(); config_window() is a new function
	  that takes care of some things before and after call to "real"
	  config_window(), i.e. config_window_internal();
	* utils_filesystem.c: _dirsize() adding code that either follows
	  symbolic links (and includes size of target files in total value)
	  or not, depending on value of config.follow_symlinks option;
	* commands.c: preconditions_check_disc(), check_burn_preconditions(),
	  ui_command_blank_optical_disc(): removing two TODOs by moving some
	  code to appropriate places; ui_command_write_to_opt_disc():
	  removing one FIXME by adding code checking returned value;
	* write_wizard.c: extracting some code from write_wizard() into two
	  separate functions: write_wizard_build() and write_wizard_destroy()
	* cdw_tmp_files.c: removing one TODO by checking return values of
	  two functions;
	* external_tools.c: some simple refactoring in
	  external_tools_error_dialog();
	* options_logic.c: adding support for follow_symlinks option;
	* filelist.c: filelist_to_file(): adding checking of returned value
	* mkisofs_interface.c: adding code that appends "-f" flag to
	  mkisofs options based on config.follow_symlinks option;
	* cdrecord_interface.c: prep_command_cdrecord_write_data():
	  adding checking of one return value and replacing call to
	  my_itoa2() with snprintf();
	* tasks.c: improving one error message
	* options.h: added follow_symlinks field to struct conf;
	* cdw_text_file_viewer.*: new file with part of code from log.*
	  file; the file contains code that implements file viewer;
	* cdw_logging.*: new file with part of code from log.* file; the
	  file contains code that implements logging functionality for cdw
	* log.*: the file is now removed; its content is moved to
	  cdw_text_file_viewer.* and cdw_logging.*

2009-03-21 Kamil Ignacak
	* *.*: small changes, mostly to supress compiler warnings; also
	  introducing size_t instead of other int types and removing some
	  TODOs

2009-03-15 Kamil Ignacak:
	* options_ui.c: page_u_driver_dropdown_handle_enter(): refactored
	  code so that now no code repeats itself in condition branches;
	  option_fields_save_changes() now saves indexes of tool paths
	  selected in "Tools" tab of configuration;
	* which_pipe_regexp.c: handle_which(): added piece of code that
	  removes unwanted characters from end of path to executable;
	* dvd_rw_mediainfo_interface.c, md5sum_interface.c,
	  cdrecord_interface.c, dvd_rw_format_interface.c,
	  mkisofs_interface.c, growisofs_interface.c: replaced symbolic tool
	  name with variable holding path;
	* external_tools.c: some code is modified to make use of
	  new variable of new type cdw_tools_t; added code that checks path
	  of md5sum tool (and otherwise supports); path to this tool cannot
	  be modified in configuration, but now behavior for all external
	  tools is consistent, and I could get rid of checking path to
	  MD5SUM tool at compile time too; added cdw_tools_resolve(),
	  which checks if a tool is available, and selects default path
	  to the tool; also added external_tools_is_tool_available() and
	  external_tools_error_dialog();
	* cdw_disc.c: cdw_disc_current_disc_get_meta_info(): added code
	  checking if given tool  used to check disc information is
	  available for use;
	* write_wizard.c: write_wizard(): added call to
	  external_tools_is_tool_available() to check if md5sum is available
	  and if "verify" checkbox can be displayed; also replaced some
	  calls to fprintf(stderr, ...) with cdw debug messages;
	* commands.c: refactored code from check_write_preconditions() and
	  related functions, moved pieces of code to separate functions;
	  also refactored *_dispatcher() functions, moved code selecting
	  tools to preconditions_select_tool();
	* dvd_rw_mediainfo_pipe_regexp.c: two changes that suppress two
	  compiler warnings;
	* tasks.h: enum tool definition moved from tasks.h
	  to external_tools.h
	* external_tools.h: added cdw_tools_t type; enum tool definition
	  moved from tasks.h to external_tools.h
	* configure.ac: build tool no longer checks for external tools
	  (cdrecord, mkisofs, etc.) at run-time, now application searches
	  the tools at run time;

2009-03-08 Kamil Ignacak
	* log.c: added some assertions and messages in code;
	  log_module_init(): code was a bit simplified;
	  log_search_for_path(): part of code moved to separate function;
	* options_ui.c: refactored code used by page_u_driver(),
	  some functions have clearer names and clearer goals, e.g. removed
	  page_u_driver_is_dropdown_set_focus() and replaced by
	  page_u_driver_dropdown_focus() and page_u_driver_dropdown_unfocus();
	  removed any references to md5sum tool - it should not be
	  configured in cdw; added five dropdowns in page E (they show
	  paths to some external tools), added code in some functions, that
	  support these dropdowns; added is_dropdown_fld_index() to check
	  if given field is used as dropdown;
	* thread.c: run_command() now uses execl() instead of execve() to
	  ensure that child process inherits whole env, and especially
	  PATH variable;
	* pipe_regexp.c: added support for "which" regexp functions,
	  replaced some fprintf() calls with cdw debug messages;
	* utils.c: added call to external_tools_clean();
	* main.c: added call to external_tools_init();
	* tasks.c: added code supporting new fields in tasks struct, related
	  to "external tools" and "which" code;
	* external_tools.c, external_tools.h: new files with code that calls
	  (indirectly) "which" utility and processes data collected by
	  "which" regexp code, to create tables with paths to some external
	  tools, and tables with labels used in dropdowns in configuration
	  page for these tools;
	* which_interface.c, which_interface.h: new files with code that
	  prepares command for "which" utility and calls run_command to
	  call "which" utility;
	* which_pipe_regexp.c, which_pipe_regexp.h: new files with code
	  that processes output of "which" utility and sets some values
	  in tables defined in external_tools.c
	* cdrecord_pipe_regexp.h: a minor fix of header guards;
	* tasks.h: added TASK_WHICH and TOOL_WHICH, added "which" structure
	  that enables moving "which" code results between modules;

2009-03-07 Kamil Ignacak (2)
	* *.c, *.h: replacing make_string() and make_n_string() with strdup()
	  and strndup();

2009-03-07 Kamil Ignacak
	* log.c: using some renamed functions;
	* cdw_widgets.c: fixing one typo
	* commands.c: check_write_preconditions(): refactoring, using
	  cdw_fs_ui_get_existing_path(),
	  check_write_preconditions_get_new_iso_path() to simplify the
	  function and improve functionality: the improvement is that
	  now program prompts user with dialog, in which user can enter
	  path to iso file (or accept default value), so now user knows
	  for sure which file is used
	* cdw_file_manager.c: cdw_file_manager_init_initial_path(): using
	  renamed function
	* cdw_ui.c: cdw_open_file(): using cdw_sys_errno_handler() to do
	  some job; using one renamed function;
	* tasks.c: using correct symbolic name to make the file compile
	  correctly;
	* utils_filesystem.c: is_valid_path() -> cdw_fs_check_existing_path();
	  changed how the function checks permissions, other minor changes;
	  get_valid_path() -> cdw_fs_ui_get_existing_path(): some minor
	  changes, using cdw_sys_errno_handler() to show dialogs;
	  adding cdw_fs_ui_get_new_file_path(); other minor changes in file;
	* utils_filesystem.h: added some function declarations, some
	  functions renamed;

2009-03-02 Kamil Ignacak
	* options_ui.c: removed "dao" checkbox from configuration window,
	  this option is now present in write wizard;
	* thread.c: going back to read() in read_child_*(), reading
	  char after char to better handle unusual chars in tool's output;
	  one of results of this is now displaying more detailed progress
	  information from cdrecord - before this the information was
	  displayed less precisely;
	* commands.c: updated copying of task field values in
	  write_dispatcher();
	* write_wizard.c: implemented "disc write mode" dropdown with
	  values "dao", "tao", "default", "unspecified"; made a distinction
	  between those disc write modes and session write modes: start
	  multisession, continue multisession, create single-session etc.
	* growisofs_interface.c: using write_session_mode and write_disc_mode;
	  using task->write_disc_mode;
	* cdrecord_interface.c: using write_session_mode and write_disc_mode;
	  using task->write_disc_mode;
	* processwin.c: replacing '==' by '<' in float comparison to avoid
	  compiler warnings
	* tasks.c: updating task_reset_state() to reset new fields;
	* tasks.h: cdw_write_mode_t -> cdw_write_session_mode_t; adding
	  cdw_write_disc_mode_t;
	* options_ui.h: reordering pages;

2009-02-28 Kamil Ignacak
	* options_ui.c: added top-level comment; added new config pages,
	  and renamed pages to a, b, c, d, e; created page_u_driver(),
	  universal driver for all pages; page_u_driver_*() functions
	  make main driver function clearer and make extending driver
	  easier; all pages now have common destroy function; some common
	  code for creating fields in page_X_build_fields() functions was
	  moved to cdw_checkbox_field_new(), cdw_label_field_new() and
	  cdw_input_field_new(); now there are no more than two columns
	  of fields on each page, so layout parameters (FIRST_COL etc.)
	  are simplified; config windows, subwindows and panels are now
	  created in loops - I call it a progress :) some common code
	  from 'create_page' functions moved to page_create_helper();
	  some options on pages were reordered so this also required
	  changes in order of some instructions. All these changes brought
	  me this: it's easier to add new pages, it's easier to move them,
	  code was refactored;
	* options_logic.c: some code was modified to reflect changes in
	  options_ui.c: two new pages, and reordered fields;
	* options.h: reordered fields of struct conf structure to reflect
	  changes in options_ui.c; other_growisofs_options,
	  other_mkisofs_options and bootimg fields are now (char *) pointers
	  which allows them to have any size;
	* options_ui.h: removed cdw_config() declaration, it now exists
	  in options.h; added 5 #define lines, which assign numeric values
	  to symbolic names - this allows to change order of pages at will;
	* cdrecord_interface.h: added declaration of
	  run_command_cdrecord_prcap()
	* cdrecord_interface.c: added run_command_cdrecord_prcap():
	  function that calls cdrecord with "-prcap" argument; right now
	  cdrecord output for this call is used to get table of allowed
	  CD writing speeds; this replaces getting these values from atip
	  call;
	* thread.c: replacing read() calls by fgets() calls; this allows
	  me to read output from other tools line by line rather than
	  in X bytes pieces; this makes processing this data easier; change
	  was introduced after I found out that it's hard to process output
	  from "cdrecord -prcap" when it was read() from pipe; pipe buffer
	  size is still limited, but now I know that there is only one line
	  of tool output, not 3 or 4;
	* utils_filesystem.c, write_wizard.c: some cosmetic changes related
	  to compiler warnings;
	* cdw_disc.c, cdw_disc.h: now we have new way of getting CD writing
	  speeds (as output of "cdrecord -prcap"); this requires changes in
	  code in this file, that crated and handled table of allowed speeds;
	* main_tests.c: adding tests of cdll (doubly-circular linked list);
	* filelist.c: removing some factual mistakes and a typo in comments;
	* cdrecord_pipe_regexp.c: adding code handling output of
	  "cdrecord -prcap", hiding code handling t1 and t2 speeds from
	  "cdrecord -atip" call output;
	* cdw_cdll.c, cdw_cdll.h, cdw_cdll_tests.c, cdw_cdll_tests.h:
	  implementation of circular doubly-linked list, and its test;
	  this time I implement pure data structure and its algorithms,
	  without tying it to any particular usage, like it was in case
	  of filelist.c
	* tasks.h: adding TASK_PRCAP task to cdw_task_t type;

2009-01-01 (2) Kamil Ignacak
	* commands.c: silencing one debug message, updating date in
	  copyright note;
	* *.c: updating date in copyright note;
	* cdw_disc.c: very last minute hack: cdrecord may not print some
	  data about CD-R discs, this hack fixes it

2009-01-01 Kamil Ignacak
	* write_wizard.c, utils.c, cdw_file_manager.c, tasks.c,
	  md5sum_interface.c, blank_wizard.c, cdrecord_interface.c, log.c:
	  adding 2TRANS comments
	* utils_filesystem.c, main.c, growisofs_pipe_regexp.c: cosmetic changes;
	* thread.c, commands.c, cdw_ui_main.c: adding/updating 2TRANS comments
	* cdrom_ctrl.c, cdw_disc.c, growisofs_interface.c: minor changes;
	* color.*: fixing color scheme code so that it reads correctly
	  old cdw.color files (one color constant for "size info" was missing);

2008-12-30 Kamil Ignacak
	* tasks.c, md5sum_interface.c, options_ui.c, commands.c, thread.c,
	  md5sum_pipe_regexp.c, cdw_file_manager.c, mkisofs_pipe_regexp.c:
	  replacing fprintf(stderr, ...) with cdw_sdm ();
	* cdrecord_pipe_regexp.c: replacing fprintf(stderr, ...) with
	  cdw_sdm (); handle_direct_writing(): calling correct function to
	  display eta
	* cdrecord_interface.c, cdw_cdio.c, dvd_rw_mediainfo_pipe_regexp.c,
	  write_wizard.c, dvd_rw_format_interface.c, blank_wizard.c:
	  silencing debug messages (cdw_vdm () -> cdw_sdm ());
	* growisofs_interface.c: adding few calls to log_file_write();
	  fixing small bug with pointer to char *command; other minor
	  changes;
	* cdw_disc.c:  silencing debug messages (cdw_vdm () -> cdw_sdm ());
	  cdw_disc_current_disc_resolve(): updating one comment and
	  properly ending one buffer;
	* color.c: improving default color scheme;
	* log.c: improving behavior of text viewer when HOME key is pressed
	* cdw_debug.h: using cdw_vdm () / cdw_sdm () instead of
	  fprintf(stderr, ...)
	* main.h: changing default log file name: ".cdw.log" -> "cdw.log"

2008-12-29 Kamil Ignacak
	* options_ui.c: minor change: one label changed
	* commands.c: fixing incorrect condition in check_write_preconditions()
	* write_wizard.c: small modification of comment;
	* cdw_disc.c: small update of comment;
	* growisofs_interface.c: expanded comment at the beginning of file;
	  expanded conditional code in prep_command_growisofs_write_direct()
	  and prep_command_growisofs_write_iso_image()
	* doc/tools/growisofs_and_dvd_r.txt,
	  doc/tools/growisofs_and_dvd_rp.txt: new files with results of
	  testing growisofs on DVD-R and DVD+R

2008-12-28 (2) Kamil Ignacak
	* growisofs_pipe_regexp.c: minor change in comment;
	* commands.c: small simplification in conditions code in
	  check_write_preconditions();
	* write_wizard.c: small changes in comments; removing use of
	  CDW_WRITE_IMAGE;
	* cdw_disc.c: fixing one condition in cdw_disc_current_disc_resolve()
	* growisofs_interface.c: adding in comments results of experiments
	  with growisofs; prep_command_growisofs_write_iso_image(),
	  prep_command_growisofs_write_direct(): changes in conditions
	  choosing options of writing to DVD-RW;
	* tasks.h: removing CDW_WRITE_IMAGE value from cdw_write_mode_t;
	  adding comments to other values of cdw_write_mode_t;
	* doc/tools/growisofs_and_dvd_rw.txt,
	  doc/tools/dvd_rw_format_and_dvd_rw.txt: files with results of
	  some experiments with dvd-rw-format and growisofs

2008-12-28 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c: small changes in comments; changes
	  in usage of current_disc.appendable, current_disc.disc_type;
	* growisofs_pipe_regexp.c: removing one FIXME;
	* commands.c:  changes in usage of current_disc.disc_type,
	  current_disc.appendable, current_disc.erasable; calling
	  cdw_disc_current_disc_resolve();
	* write_wizard.c: changes in usage of current_disc.empty,
	  current_disc.appendable;
	* cdrom_ctrl.c: calling cdw_disc_current_disc_resolve()
	* cdw_ui_main.c: reorganizing disc_info_view_update() with new
	  fields of current_disc;
	* cdw_disc.c: adding cdw_disc_current_disc_resolve() - function that
	  uses values set by lower-level code to set higher-level values/
	  flags/fields; other small changes
	* cdrecord_interface.c: using current_disc.erasable;
	* cdrecord_pipe_regexp.c: using current_disc.erasable; using
	  current_disc.last_sess_start and current_disc.next_sess_start to
	  forward information about disc being empty or appendable;
	* cdw_ui_main.h: minor changes;
	* cdw_disc.h: adding declaration of cdw_disc_current_disc_resolve();
	  adding 'erasable' enum, removing 'disc_write_status' enum;

2008-12-27 Kamil Ignacak
	* tasks.c: task_reset_state() resets two more fields of cdw_task_t;
	  task_check_status() displays message for two more errors;
	* cdrecord_pipe_regexp.c: some regexp code now works for both
	  cdrecord and wodim;
	* cdrecord_interface.c: minor changes;
	* mkisofs_pipe_regexp.c: one regexp code now works for both
	  mkisofs and genisoimage; added handling of two more mkisofs
	  error messages;
	* growisofs_interface.c: added small reference text at the top of
	  file; small changes in comments;
	  prep_command_growisofs_write_direct(): added subcategories of
	  DVD-RW in one condition;
	* dvd_rw_format_interface.c: run_command_dvd_rw_format_blank():
	  function updated to handle all kinds of supported erasable DVD
	  discs;
	* cdw_disc.c: cdw_disc_current_disc_reset_values() resets three more
	  fields;
	* blank_wizard.c: some refactoring; adding "format mode" for DVD-RW
	  discs (this caused changes in almost whole file);
	* cdw_ui_main.c: disc_info_view_update(): adding DVD-RW subtypes to
	  conditions, using new field: current_disc.empty;
	* cdrom_ctrl.c: more sleep() in disc_in_drive();
	* write_wizard.c: changing some conditions using new subcategories
	  of DVD-RW and DVD-R disc;
	* commands.c: changing some code using new subcategories of DVD-RW
	  disc; other minor changes;
	* pipe_regexp.c: adding calls to mkisofs-related code whenever
	  growisofs-related code is called for writing files directly;
	* dvd_rw_mediainfo_pipe_regexp.c: adding code that captures read
	  capacity on DVD: this helps to guess if DVD-RW is empty;
	  handle_disc_status() now also sets current_disc.appendable;
	* cdw_disc.h: added 'read_capacity' field to
	  cdw_disc_t.dvd_rw_mediainfo struct; added 'appendable' and
	  'empty' fields to cdw_disc_t field; added new subtypes to
	  cdw_disc_type_t;
	* blank_wizard.h: updated declaration of blank_wizard(), fixed
	  header guards;
	* cdw_debug.h: added cdw_assert macro;
	* tasks.h: added new values to tool_status enum; added 'blanking'
	  struct to cdw_task_t type declaration;

2008-12-22 Kamil Ignacak
	* log.c: reorganized variable definitions on top of file; added
	  comment on top of file; FILE *file variable that was used by file
	  viewer is made local in functions and passed as argument;
	  read_and_display_lines() is modified: there is one loop that only
	  scrolls to v_offset line, and second loop that reads and displays
	  lines that are of interest to us; code replacing tabs with spaces
	  was rewritten using strncpy(); char buffers used in reading file
	  are now local in functions; display_file() is now renamed to
	  file_display_with_full_path() and it only opens file, closes file
	  and in between calls new function file_display() that has opened
	  file as argument and handles keys; also added log_file_display()
	  so that any code that wants to display log, doesn't have to know
	  log file path;
	* pipe_regexp.c: added missing branches in stderr_regexp_*()
	  dispatcher: assertion was called when the tool was dvd+rw-mediainfo;
	* commands.c: using new functions (function names) from log.c;
	  ui_command_eject_tray(): moving sleep() into right place;
	* write_wizard.c: expanded main file comment; properly initializing
	  variables that are global in file; write_wizard(): adding some
	  debug code; improving some function's comments (doxygen tags);
	  replacing concat() with strdup(); assigning NULL to some pointers
	  after freeing associated memory;
	* cdrom_ctrl.c: adding to close_tray() comment about using sleep()
	* utils.c: using new function from log.c
	* cdw_cdio.c: replacing fprintf(stderr, ...) with cdw_vdm();
	* blank_wizard.c: improving one dialog message;
	* cdw_disc.c: using cdw_vcrv(); removing unused debug code;
	* options_logic.c: removing unused debug message;
	* log.h: updated function declarations, added one function;
	* cdw_debug.h: new file with debug macros that should replace
	  fprintf(stderr, ...);

2008-12-20 Kamil Ignacak
	* utils_string_tests.c, utils_string.c: small changes;
	* growisofs_pipe_regexp.c: removing unused function arguments to
	  suppress compiler warnings;
	* thread.c: write_to_md5sum_stdin(): more detailed check of value
	  returned by md5sum_set_up_reading_track();
	* commands.c: using task_reset_state(); ui_command_copy_cd_to_hdd():
	  loop reading tracks does not write successes nor failures to log
	  file: problem of success or failure of reading is more complicated
	  (see comment in file for details); conditional_eject_after_write()
	  -> reload_tray_with_update(); small fixes in code using task/
	  local_task; ui_command_show_license(): code can deal with one
	  more possibility of failure; check_write_preconditions():
	  added one branch of conditions to provide more detailed dialog
	  messages;
	* write_wizard.c: fixing displaying of focused dropdowns;
	* cdrom_ctrl.c: conditional_eject_after_write() renamed to
	  reload_tray_with_update(), modified a bit to be useful in more
	  cases;
	* utils.*: disabled part of code to suppress compiler warnings;
	* cdw_cdio.c: cdw_cdio_copy_sectors_to_file(): adding call to
	  processwin_erase_progressbar(); rewriting control of loop reading
	  sectors (again); other minor changes;
	* md5sum_interface.c: breaking run_command_md5sum_check() into two
	  parts that correspond with two phases of this task;
	* cdw_disc.c: hiding cdw_disc_print_current_disc_info() to suppress
	  compiler warnings; cdw_disc_current_disc_get_meta_info(): more
	  detailed check of current_disc to properly set disc metadata;
	* options_logic.c: minor changes: some coding style issues and
	  using symbolic names instead of magic numbers;
	* growisofs_interface.c: minor changes: adding asserts(), disabling
	  unused function;
	* mkisofs_pipe_regexp.c: adding code that handles two more mkisofs
	  error messages; removing unused arguments from some functions
	  signatures;
	* cdrecord_interface.c: adding some asserts, removing unused code;
	  small updates in code generating cdrecord command as a result of
	  tests;
	* cdda2wav.c, dvd_rw_mediainfo_interface.c: removing unused line;
	* cdrecord_pipe_regexp.c: removing unused arguments from some
	  functions signatures; adding code handling one more cdrecord
	  error; disabling unused code;
	* processwin.*: adding processwin_erase_progressbar();
	* tasks.c: expanding task_reset_state(); adding dialogs for new
	  errors in task_check_status();
	* cdrom_ctrl.h: conditional_eject_after_write() renamed to
	  reload_tray_with_update();
	* utils_string.h, cdw_widgets.h: updated signature of one function;
	* tasks.h: adding few errors to cdw_task_t.tool_status enum;


2008-12-16 Kamil Ignacak
	* log.c, help.c, write_wizard.c, cdrom_ctrl.c, cdw_ui_main.c,
	  cdw_disc.c, mkisofs_interface.c, main.c, cdrecord_interface.c:
	  minor changes
	* utils_string_tests.c: updated one testcase in test_make_n_string()
	  and test_rtrim(); relaxed_recognize_value() ->
	  relaxed_recognize_bool_value();
	* cdw_widgets.c: adding textarea to inputbox() widget - three lines
	  of nicely wrapped text means more information to user;
	  textarea_print_message(): removed unused variable;
	* options_ui.c: get_field_string(): added some checks;
	  first_page_driver(): while() loop was re-done to draw unfocused
	  dropdowns correctly;
	* utils_filesystem.c: is_valid_path() now recognizes "no-such-file"
	  situation and returns a value when this happens; get_valid_path()
	  uses this information to display more detailed error message;
	* utils_string.c: making rtrim() more readable (to me), making sure
	  that it doesn't try to read memory outside of string (valgrind
	  reported this); input_string_security_parser() improving comment;
	  make_n_string(): improving comment, removing unnecessary lines of
	  code; renaming relaxed_recognize_value() to
	  relaxed_recognize_bool_value()
	* commands.c: command_copy_cd_to_hdd(): more helpful message,
	  simplifying one formatting string; check_read_preconditions():
	  adding some comments, using one assert on task, fixing one bug
	  by re-formatting conditions;
	* color.c: improving 2 default colors;
	* options_logic.c: fixing one bug in config_var_validate(): field
	  and page were not set when there was problem with log_full_path
	  field; config_var_set_defaults: reordering fields to group them
	  in categories; config_file_save_config_var(): adding some comments
	  printed in config file; config_file_read(): reordering fields to
	  group them in categories, adding security check of option.value,
	  adding basic sanity check of some values, relaxed_recognize_value()
	  -> relaxed_recognize_bool_value(), using strncpy() instead of
	  strcpy(), using 'continue' keyword to speedup while() loop,
	  updating piece of code that resolved compatibility with 'other'
	  option;
	* cdw_file_manager.c: file_manager_driver_loop(): in some situations
	  cdw crashed when END key was used, this is fixed; since
	  file_manager_driver_loop_change_dir() now returns more details
	  about problems with file permissions, I'm using it when displaying
	  error dialogs; added one check to prevent adding whole parent dir
	  to list of selected files; file_manager_driver_loop_change_dir()
	  now can check more closely which permissions are missing for dir
	  ('r' or 'x') and returns proper error value;
	* mkisofs_pipe_regexp.c: adding handling of "can't find the boot
	  image" error message;
	* cdw_ui.c: media_size_selector.c: adding some symbolic names
	  in place of magic numbers; one more check of value entered by user;
	* tasks.c: adding error dialog for
	  TOOL_STATUS_MKISOFS_CANT_FIND_BOOT_IMAGE
	* main.h: adding new values to cdw_rv_t (CDW_EPERM_NO_R,
	  CDW_EPERM_NO_W, CDW_EPERM_NO_X);
	* tasks.h: adding new field to tool_status enum:
	  TOOL_STATUS_MKISOFS_CANT_FIND_BOOT_IMAGE
	* options.h: reordering fields of struct conf to group them in
	  categories; correcting off-by-one error with OPTION_FIELD_LEN_MAX
	* utils_string.h: updating some function prototypes;
	* cdw_disc.h: adding symbolic names for sizes of discs;

2008-12-14 Kamil Ignacak
	* log.c: logging_init() renamed to log_module_init(),
	  logging_clean() renamed to log_module_clean(); added
	  log_file_write(), log_file_write_separator(); added some comments;
	* utils_string_tests.c: added test_relaxed_recognize_value();
	* cdw_widgets.c: added cdw_dropdown_focus(), cdw_dropdown_unfocus(),
	  cdw_dropdown_display_current_item_reverse(); modified and improved
	  other dropdown functions as a result of tests;
	* options_ui.c: big part of the file is rewritten using panels
	  library; main change was in main function of the module
	  (config_window()), but other functions were affected as well;
	  some renamings, some splits into smaller functions; adjusting
	  pieces of code to handle fields of struct conf that now have
	  new type bool instead of char *;
	* thread.c: the file is no longer a place where log file is
	  opened and closed - this is now done in log.c; replaced fprintf()s
	  with log_file_write() calls;
	* utils_string.*: added relaxed_recognize_value()
	* commands.c: removed unused variables; added few calls to
	  log_file_write();
	* write_wizard.c: updating code that used current_disc.write_mode,
	  now write_mode is a field of cdw_task_t; using
	  cdw_dropdown_(un)focus(); using "configuration" instead of
          "preferences";
	* cdrom_ctrl.c: using config.eject of new type bool;
	* utils.c: using config.showlog of new type bool; using functions
	  with new names;
	* cdw_ui_main.c: added some comments and doxygen tags; renamed some
	  variables;
	* blank_wizard.c: using cdw_dropdown_(un)focus(); using
	  config.blank_fast of type bool;
	* md5sum_interface.c: adding calls to log_file_write();
	* cdw_disc.*: blanking_time field moved from cdw_disc_t to
	  cdw_task_t
	* dvd_rw_format_interface.c: using config.blank_fast of type bool;
	* options_logic.c: using relaxed_recognize_value(); using fields
	  of struct conf config that now are of type bool, not char *;
	  lots of renaming;
	* growisofs_interface.c: adding 'task' argument to some functions;
	  modifying code that uses write_mode (now it is a field of
	  cdw_task_t not cdw_disc_t); using config.dummy of type bool;
	* mkisofs_interface.c: using some config.* fields that now are of
	  type bool;
	* main.c: using new names of some functions
	* cdrecord_interface.c: adding some doxygen tags; making use of
	  task variable, concat() function and fields of struct conf that
	  now are of type bool;
	* cdrecord_pipe_regexp.c: updating code using blanking_time field:
	  it is now a field of cdw_task_t, not cdw_disc_t;
	* cdw_ui.c: write_conf() -> config_var_save(); using config.showvol
	  of type bool;
	* tasks.h: cdw_write_mode_t moved from cdw_disc.h; added new fields
	  to cdw_task_t: blanking time and write_mode (moved from cdw_disc_t)
	* log.h: fixed header guards; added log_file_write_separator() and
	  log_file_write(); logging_init() renamed to log_module_init(),
	  logging_clean renamed to log_module_clean();
	* options_ui.h: renamed and added some function declarations; fixed
	  header guards;
	* cdw_widgets.h: declarations of new dropdown functions;
	* options.h: type of some struct conf fields changed to bool;
	  some functions renamed; added some comments and doxygen tags;
	* options_logic.h: some renaming of function declarations; fixed
	  header guards;
	* utils_string_tests.h: fixed header guards;

2008-12-11 Kamil Ignacak
	* cdw_widgets.c: textarea_print_message() implementing align of
	  text displayed in textarea (left, center, right);
	* options_ui.c: adding parameter to textarea_print_message() call;
	* growisofs_pipe_regexp.c: using new version of
	  processwin_display_text_info(); fixing the way how
	  thread_task->tool_status is set;
	* thread.c: fixing the way how thread_task->tool_status is set;
	* utils_filesystem.c: _dirsize(): fixing code counting size of
	  dirs; using lstat() instead of stat(); calculating size of
	  new path used in recurring into dirs in more reasonable way;
	* pipe_regexp.c: mkisofs regexp code is now executed whenever
	  cdrecord code is executed: mkisofs may print error messages when
	  called as tool supporting mkisofs, now they will be captured;
	* commands.c: command_copy_cd_to_image_old(),
	  check_write_preconditions(): adding missing argument to
	  cdw_open_file(); write_dispatcher():
	  run_command_growisofs_write_iso_image() ->
	  run_command_growisofs_write_from_image();
	  ui_command_write_to_opt_disc(), ui_command_create_image():
	  using task_check_status(); ui_command_copy_cd_to_hdd():
	  using new version of processwin_display_text_info();
	* processwin.h: small changes in function prototypes; fixing header
	  guards;
	* cdrom_ctrl.c: adding doxygen tags;
	* tasks.h: expanding enum tool_status list, now its values can be
	  bit-ORed; adding task_check_status() declaration;
	* cdw_widgets.h: adding text align enum; updated declaration of
	  textarea_print_message(); fixed header guards;
	* utils_filesystem.h: fixing function name in declaration; fixing
	  header guards;
	* cdrom_ctrl.h: minor changes; fixing header guards;
	* dvd_rw_format_interface.c: using new version of
	  processwin_display_text_info();
	* growisofs_interface.c: run_command_growisofs_write_iso_image()
	  renamed to run_command_growisofs_write_from_image();
	* mkisofs_pipe_regexp.c: added code handling two errors printed
	  by mkisofs when two joliet file names are the same and when joliet
	  tree sort failed;
	* mkisofs_interface.c: run_command_create_image():
	  processwin_destroy() no longer announces success - now higher-level
	  code checks thread_task->tool_status;
	* cdrecord_interface.c: run_command_cdrecord_blank_cd(): using new
	  version of processwin_display_text_info();
	* cdrecord_pipe_regexp.c, cdda2wav.c: using new version of
	  processwin_display_text_info();
	* cdw_ui.c: adding parameter to textarea_print_message() call;
	  cdw_open_file(): adding doxygen tags in comments, adding one
	  assert() to make sure that function is called with correct
	  'flags' argument;
	* processwin.c: processwin_display_text_info() now updates only one
	  string at a time, and displays the string using textarea calls;
	  processwin now contains two textarea windows, processwin_create()
	  and processwin_destroy() create them and delete
	* tasks.c: added task_check_status(): function which checks
	  task->tool_status variable, sets tool->success flag accordingly,
	  and, if needed, displays dialog window with error message
	  explaining current value of task->tool_status;
	* growisofs_interface.h: one function renamed;

2008-12-10 Kamil Ignacak
	* log.c: fixed checking of dir name length
	* dvd_rw_mediainfo_pipe_regexp.c, dvd_rw_format_pipe_regexp.c:
	  removing unused declaration and include;
	* growisofs_pipe_regexp.c, growisofs_interface.c: using
	  thread_task->tool_status (thread_task renamed from regexp_task)
	  instead of growisofs_process_failed;
	* thread.c: some simple renames and changes in comments; more
	  detailed checking of thread_task when creating
	  write_to_md5sum_stdin;
	* utils_filesystem.c: updated some comments, added doxygen tags;
	  get_home_dir() and get_tmp_dir() now return length of paths
	  excluding trailing '\0'; disc_ready_for_write() has been
	  simplified and renamed as optical_disc_mounted();
	  my_readline_10k() has been reviewed;
	* pipe_regexp.c, mkisofs_pipe_regexp.c: regexp_task -> thread_task;
	* commands.c: task_set_state() and task_reset_state() moved to
	  tasks.c; (barely tested) implementation of verification
	  is now called in ui_command_write_to_opt_disc();
	* write_wizard.c: write_wizard(): checking task variable before
	  creating 'verify' checkbox is now more detailed;
	* cdw_tmp_files.c: get_tmp_dir() reviewed and modified;
	* color.c: improving small details in curses_color_init() (like
	  initialization of variables, making sure that '\0' is put at the
	  end of string)
	* md5sum_interface.c: adding comments and doxygen tags; making
	  names of md5sum digest buffers more obvious; adding gettext
	  calls and comments for translators; md5sum_set_up_reading_track():
	  making sure that md5sum module will be checking first track of
	  proper format; md5sum_read_track_write_to_fd() returns
	  CDW_GEN_ERROR and sets flag when needed;
	  md5sum_clean_up_reading_track(): now function does not return
	  value nor sets any flags;
	* options_logic.c: preferences_set_paths(): making sure that
	  some pointers are initialized to NULL; fixed checking for path
	  len;
	* mkisofs_interface.c: small change in comment for translators
	* cdrecord_interface.c: using thread_task->tool_status instead of
	  cdrecord_problem;
	* cdrecord_pipe_regexp.c: regexp_task -> thread_task; using
	  thread_task->tool_status instead of cdrecord_problem;
	* md5sum_pipe_regexp.c: changing one include; using new md5sum
	  buffer names;
	* tasks.c: new file with task_set_state() and task_reset_state()
	  moved from commands.c;
	* tasks.h: new file with definition of cdw_task_t type moved from
	  commands.h; adding few values to enum tool_status;
	* cdrecord_interface.h: removed cdw_cdrecord_flag_t,
	  now cdw_task_t.tool_status should be used;
	* utils_filesystem.h: disc_ready_for_write() renamed to
	  optical_disc_mounted();
	* commands.h: definition of cdw_task_t type moved to tasks.h;
	  declarations of task_set_state() and task_reset_state() moved to
	  tasks.h
	* cdw_cdio.h: modifying one comment;
	* md5sum_interface.h: changing return value of one function;

2008-12-09 Kamil Ignacak
	* *.c, *.h: main change in all files is introducing and using
	  cdw_task_t type to transfer information about task that should
	  be performed, about tool that should be used for this task, and
	  input and output objects used by the tool; tools and code working
	  directly with tools can use variable of type cdw_task_t (passed
	  between functions) to communicate state of task and problems
	  with tools;

2008-12-08 Kamil Ignacak
	* thread.c: hiding debug messages;
	* commands.c: check_copy_preconditions() renamed to
	  check_read_preconditions(); command_write_to_opt_disc():
	  added code that runs md5 checks after successfull writing;
	* write_wizard.c: renamed wizard_win to window (for consistency);
	  added 'verify' checkbox;
	* md5sum_interface.c: adding call to check_read_preconditions()
	  to make sure that cdio calls will be performed on disc that is
	  ready; adding some debug messages;
	* commands.h: check_copy_preconditions() renamed to
	  check_read_preconditions();

2008-12-07 Kamil Ignacak
	* options_ui.c: first_page_tmp_save_changes(): fixed/improved
	  saving of three variables; first_page_build_fields(): fixed
	  setting up field (field options and function call order)
	* thread.c: modifying main comment in file and adding some other
	  comments; replacing magic numbers '0' and '1'; renaming
	  print_stdout() and print_stderr() to more appropriate
	  read_child_stdout() and read_child_stderr(); adding
	  write_md5sum_stdin(); run_command(): reordering some instructions,
	  adding comments
	* pipe_regexp.c: adding code supporting md5sum regexp code
	* commands.c: command_copy_cd_to_hdd(): adding small comment;
	  adding FIXME note; adding definition of temporary
	  command_md5sum() function;
	* main.c: adding temporary hotkey for checking md5sum;
	* cdrecord_pipe_regexp.c: removing unused variable;
	* md5sum_interface.*: new files with functions relevant to working
	  with md5sum utility: function that performs whole operation of
	  invoking md5sum for iso image file and cd track and comparing
	  results (this code would be placed in commands.c if this was an
	  action invoked from main ui) + functions called from thread
	  code, that set up, perform and finalize reading of CD track;
	* md5sum_pipe_regexp.*: new files with regexp code (similar to
	  code from other *_pipe_regexp.* files) that parses output of
	  md5sum to catch md5 digest printed on stdout of md5sum tool;
	* src/Makefile.am: some comments, rebuild list of include files,
	  cdw_tests is now separate target (?): check_PROGRAMS;

2008-12-05 Kamil Ignacak
	* cdrecord_pipe_regexp.c: added code handling the case when
	  cdrecord can't open device;
	* cdda2wav.c: disabled poor_man_cdda2wav(), copying of audio tracks
	  is performed by the same function that does copying of data
	  tracks; only real difference is in cdio function selected in
	  cdw_cdio.c that performs reads of sectors: data sectors or
	  audio sectors;
	* cdrecord_interface.c: added some comments and doxygen tags,
	  commented out some debug messages; added support for
	  'cdrecord_problem' flag in run_command_cdrecord_atip() and
	  run_command_cdrecord_msinfo();
	* main.c: encapsulated some inputbox() calls into command_*()
	  functions; other minor changes;
	* mkisofs_interface.c: run_command_create_image(): changing return
	  values;
	* cdw_disc.c: cdw_disc_current_disc_get_meta_info() is old
	  get_full_media_info() moved from commands.c;
	* cdw_cdio.c: cdw_cdio_get_track_info(): fixing one bug introduced
	  in previous commit: the bug classified all tracks as unknown;
	* cdrom_ctrl.c: conditional_eject_after_write() adding one comment,
	  updating one function call;
	* help.c: some reformatting and other simple changes in help window
	* commands.c: adding some comments and doxygen tags; moving
	  get_full_media_info() to cdw_disc.c; introducing some consistency
	  in return values; command_copy_cd_to_image() renamed to
	  command_copy_cd_to_hdd() and modified so that it can serve
	  for both data CD and audio CD ripping;
	  command_update_opt_disc_info() now does only what its name
	  suggests, showing log is done explicitly by another function;
	  some unused code moved to "unused code" part of file;
	* utils_filesystem.c, log.c: removing debug messages;
	* cdw_disc.h: adding cdw_disc_current_disc_get_meta_info(), fixing
	  header guards;
	* commands.h: updating list of function declarations
	* cdrecord_interface.h: fixing header guards, adding
	  cdw_cdrecord_flag_t type definition;
	* cdda2wav.h: commenting out unused function declarations,
	  fixing header guards;
	* main.h: improving comments;

2008-12-04 Kamil Ignacak
	* log.c: logging_init(): reporting problem with existing path and
	  asking user for new path have been divided into two separate
	  functions: log_display_problem() and log_ask_for_dir_path();
	  added some comments; log file name is now "hidden behind" symbolic
	  name CDW_LOG_FILE_NAME; log_check_available_space() now _really_
	  truncates file before returning;
	* cdw_widgets.c: one_line_input(): the function now finally recognizes
	  CDW_HASH argument, moved code that handles ENTER code to separate
	  function one_line_input_get_field_buffer(); moved substantial
	  part of comments from inputbox() to one_line_input();
	  textarea_wrap_text() now recognizes situation when given piece of
	  message cannot be wrapped - before the change the code would loop
	  infinitely;
	* options_ui.c: config.pad is now of type bool - making some code
	  adjustments;
	* utils_filesystem.c: get_valid_path(): clearing up function's
	  behavior with regard to 'path' argument - it is modified only in
	  specific situations; using correct_dir_path_ending() in
	  get_valid_path();
	* utils_string.c: correct_dir_path_ending(): making code more clear;
	* commands.c: check_copy_preconditions(): fixing one mistake in
	  dialog texts, using cdw_cdio_open_get_meta_close() instead of
	  cdw_cdio_disc_open() and cdw_cdio_disc_close();
	  get_full_media_info(): making one check more explicit, adding
	  function comment; replacing command_copy_cd_to_image()
	  with function that is very much like poor_man_cdda2wav(), but works
	  for data CD (main change is in some messages); now each track
	  from data CD is supposed to be saved in separate file;
	  added selected_files_add_wrapper() - function used in cdw_main_loop()
	  similarly to selected_files_delete_wrapper(); both functions now
	  call graftpoints_file_delete() since both function modify list of
	  selected files;
	* write_wizard.c: adding one call to curs_set() fixes problem of
	  ghost cursor being displayed in some situations;
	* cdw_tmp_files.c: graftpoints_file_close() fixing comment;
	  adding graftpoints_file_delete()
	* cdw_cdio.c: many changes:
	  cdw_cdio_set_track_info_using_cdio_format() ->
	  cdw_cdio_get_track_info();
	  cdw_cdio_set_track_info_using_cdw_method() ->
	  cdw_cdio_get_track_info_analyze_header();
	  cdw_cdio_get_disc_meta_information() now counts tracks for which
	  getting meta info failed; some functions can return more values
	  to provide more information about success/failure;
	  using updated values of type cdw_track_format_t;
	  cdw_cdio_copy_tracks_to_file() counts tracks for which copying failed;
	  cdw_cdio_copy_sectors_to_file() now uses sectors_to_read variable
	  to control reading disc; cdw_cdio_get_track_info() now has function
	  comment, more comments inside, and more clearly defined task:
	  getting all information that can be gathered using normal libcdio
	  calls; it also uses cdio_guess_cd_type() and
	  cdio_iso_analysis_t -> isofs_size field to get size of data that
	  should be read from track with recorded iso filesystem - very useful;
	  cdw_cdio_disc_reset() resets some more fields; mmc_read_cd_wrapper()
	  is modified so that one FIXME is fixed and mmc_read_cd() is referred
	  to only once;
	* cdw_disc.c: adding small reference on sector formats and list
	  of sources;
	* main_tests.c: adding final message that should be captured by
	  testing script;
	* options_logic.c: config.pad is now of type bool - making some code
	  adjustments; read_config_file(): using strcasecmp() instead of
	  strcmp(); using CDW_LOG_FILE_NAME constant; moving call to
	  copy_configuration() to places where it is clearer what and why
	  the function does;
	* mkisofs_interface.c: removing debug messages;
	* main.c: adding call to selected_files_add_wrapper() in cdw_main_loop()
	* cdrecord_interface.c: fixing a bug in code preparing call to
	  mkisofs: invalid option was "-q", valid option is "-quiet";
	  changing some debug messages, adding asserts; removing one FIXME
	  from prep_command_cdrecord_write_data; adding gracetime parameter
	  to call to cdrecord
	* cdda2wav.c: moving definition of TRACK_CORE_NAME_LEN to main.h;
	  fixing another bug: poor_man_cdda2wav() now opens config.cdrw_device
	  instead of config.scsi;
	* cdrecord_pipe_regexp.c: commenting out debug messages;
	* cdw_ui.c: more changes in media_size_selector(): using variables
	  instead of magic numbers; printing additional hint for user (in
	  textarea); fixing how and when selected value is saved;
	* cdw_cdio.h: adding new fields to cdw_track_t and cdw_cdio_disc_t;
	  modifying values of cdw_track_format_t type; modifying header guards;
	* cdw_tmp_files.h: adding graftpoints_file_delete(); modifying header
	  guards;
	* commands.h: adding selected_files_add_wrapper(); modifying header
	  guards;
	* options.h: making 'pad' field from struct conf a bool variable;
	  modifying header guards;
	* main.h: adding definitions of CDW_LOG_FILE_NAME and
	  TRACK_CORE_NAME_LEN; modifying header guards;
	* Makefile.am: adding piece of code that allows me to run tests simply
	  by typing 'make check'; playing with compiler flags;

2008-12-01 Kamil Ignacak
	* utils_string_tests.c: added function testing correct_dir_path_ending()
	* utils_filesystem.c: using correct_dir_path_ending();
	* utils_string.c: adding new function correct_dir_path_ending();
	* cdw_tmp_files.c: small change of data types;
	* filelist_tests.c: few explicit casts to silence compiler warnings;
	  these casts are in incorrect function calls, but I wanted to test
	  such incorrect calls;
	* cdw_file_manager.c: lots of variable renaming - names are now more
	  appropriate and better help understand code; such changes include
	  addwin_ -> file_panel_, addwin -> window, addwin_sub -> subwindow,
	  n_direntries -> dir_listing_len; extracted some code
	  to cdw_file_manager_init_initial_path() - the code is useful in
	  two places; improved and cleared up functions that clean up
	  file manager resources (file_manager_clean(),
	  file_manager_deallocate()), their tasks are better explained
	  in comments; improved management of dir_listing: how and when it is
	  allocated and deallocated; addwin_display_item() ->
	  file_panel_display_item(): function displays properly links and
	  broken links; cdw_file_manager_show_selector() now manages
	  initial_dirpath in a different way, e.g. by using
	  cdw_file_manager_init_initial_path(); fill_filelist() now recognizes
	  links and broken links and handles them correctly;
	  addwin_driver_loop() -> file_panel_driver_loop(): handling some
	  keys was rewritten and commented, code responsible for handling
	  ENTER key is moved to new separate function
	  file_panel_driver_loop_change_dir(); dir_listing_init() properly
	  initializes dir_listing and all of its elements of type cdw_file_t;
	  added some doxygen tags
	* cdw_file_manager.h: added two new fields to cdw_file_t type:
	  'link' and 'invalid';
	* utils_string.h: added correct_dir_path_ending(), updated some
	  function declarations;
	* *.c, unused_code.see: removing some parts of unused code; moving
	  rest of unused code from *.c files to unused_code.see;

2008-11-30 Kamil Ignacak
	* cdw_widgets.c: one_line_input(): it turns out that set_max_field()
	  sometimes doesn't work and I have to limit size of data extracted
	  from field "manually"
	* utils_filesystem.c: fixing the way how get_valid_path() handles
	  path when user pressed 'Escape'; fixing code that ends dir path
	  with slash;
	* commands.c: command_blank_optical_disc(): removing unreachable code;
	  get_full_media_info() function no longer checks for session info
	  on audio disc: this saves us unnecessary reloading of drive tray;
	  check_write_preconditions(): write speeds table is now created for
	  blanking disc as well;
	* cdrecord_pipe_regexp.c: general review of code; renaming some
	  variables to less cryptic names; replacing handle_current_disc_type()
	  and handle_current_disc_type_new() with new version of
	  handle_current_disc_type() that recognizes both short and long format
	  of information about current disc; adding comments for some
	  functions; swapping code for regex13 and regex14 so that regexps for
	  disc type are next to each other; handle_image_writing(): added
	  some comments and debug messages; reordered code checking submatch;
	  removed code calculating percentage of task done - information about
	  total size of data is unavailable; handle_direct_writing(): added
	  some comments and debug messages; reordered code checking submatch;
	  updated code counting percentage (no floats) and eta (changed order
	  of calculations);

2008-11-29 Kamil Ignacak
	* dvd_rw_format_pipe_regexp.c, cdw_ui.c, cdrecord_pipe_regexp.c,
	  cdda2wav.c, cdrecord_interface.c, mkisofs_pipe_regexp.c,
	  cdw_file_manager.c, pipe_regexp.c, growisofs_pipe_regexp.c,
	  dvd_rw_mediainfo_pipe_regexp.c, options_ui.c, cdw_widgets.c,
	  filelist.h: modifying some type information
	* filelist.c: changing argument type of some functions from int
	  to size_t - this allows me to simplify some checks in functions
	  and to catch some errors at compile-time;
	* filelist_tests.c: making variable names more consistent;
	  rewriting test_filelist_remove_file() so it no longer depends on
	  test_filelist_add_file();
	* options_logic.c: proper initialization of variable in
	  read_config_file();
	* cdw_disc.c: cdw_current_disc_reset_values() renamed to
	  cdw_current_disc_reset(), the function calls cdw_cdio_disc_reset()
	* blank_wizard.c: adding missing include;
	* cdw_cdio.c: cdw_cdio_disc_reset_information renamed to
	  cdw_cdio_disc_reset() and implemented;
	* cdrom_ctrl.c: cdw_current_disc_reset_values() ->
	  cdw_current_disc_reset()
	* write_wizard.c: write_wizard_driver(): removing unreachable code;
	* commands.c: command_copy_cd_to_image(): moving unreachable code
	  into proper place; removing unreachable code in write_dispatcher();
	  cdw_current_disc_reset_values() -> cdw_current_disc_reset()
	* utils_string.c: make_string() and make_n_string() now work for
	  empty string too; split_options_line(): function recognizes situation
	  when option name is missing, updated some comments;
	* utils_string_tests.c: implementing test_make_n_string(),
	  test_set_string(), test_free_table_of_strings(),
	  test_split_options_line(); making some variable names more consistent
	* cdw_disc.h: cdw_disc_current_disc_reset_values() renamed to
	  cdw_current_disc_reset(); making return value of
	  cdw_disc_calculate_write_speed_index() explicitly unsigned;
	* blank_wizard.h: fixing parameter type of blank_wizard()
	* cdw_cdio.h: one change of data type and one function renamed;

2008-11-28 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c: handle_dvd_write_speed() now
	  sets current_disc.dvd_rw_mediainfo.n_speeds and keeps an eye on
	  SPEED_TABLE_SIZE to not to write outside of writing_speeds;
	* commands.c: cdw_disc_reverse_dvd_speeds_table() ->
	  cdw_disc_canonize_dvd_speeds_table(); moving call to
	  cdw_disc_build_write_speeds_table() from get_full_media_info()
	  to check_write_preconditions();
	* cdw_disc.c: cdw_disc_reverse_dvd_speeds_table() is now
	  cdw_disc_canonize_dvd_speeds_table(); removing fixme from
	  cdw_disc_canonize_dvd_speeds_table() by watching table limit when
	  building dvd writing_speeds in handle_dvd_write_speed() and using
	  current_disc.dvd_rw_mediainfo.n_speeds;
	  cdw_disc_build_write_speeds_table(): adding some checks,
	  current_disc.n_speeds is set in a way that depends on disc type;
	  some debug messages moved to external function
	  cdw_disc_print_current_disc_info()
	* cdw_disc.h: adding current_disc.dvd_rw_mediainfo.n_speeds;
	  cdw_disc_reverse_dvd_speeds_table() is now
	  cdw_disc_canonize_dvd_speeds_table()

2008-11-27 Kamil Ignacak
	* cdw_ui.c, cdda2wav.c: correcting use of snprintf();
	* cdrecord_pipe_regexp.c: adding handle_blanking_time() for catching
	  time of blanking performed by cdrecord - a sign of successfull
	  blanking operation; adding code supporting the function; adding
	  'static' keyword to function declarations;
	* cdrecord_interface.c: adding code that checks in
	  run_command_cdrecord_blank_cd() if blanking was successfull;
	* main.c: updating comment so it fits new definition of
	  VOLUME_ID_LEN_MAX
	* mkisofs_interface.c: updating definition of MULTI_STRING_LEN and
	  adjusting code that uses MULTI_STRING_LEN
	* options_logic.c: adjusting code that uses VOLUME_ID_LEN_MAX; fixing
	  code that initializes config->volumeid
	* cdw_disc.*: adding current_disc.blanking_time; making some magic
	  numbers more clear;
	* cdw_cdio.c: removing duplicate line from references; updating
	  debug code and condition checking if disc is blank in
	  cdw_cdio_get_disc_meta_information();
	* cdw_tmp_files.c: updating definition of RANDOM_STRING_LEN and code
	  using it;
	* commands.c: check_copy_preconditions(): adding code that checks if
	  disc is blank before calling cdw_cdio_disc_supported_for_cdw_ripping()
	* utils_filesystem.c: is_valid_path(): adding some comments; removing
	  one FIXME: code no longer compares 'permissions' with value out of
	  range;
	* options_ui.c: improving initialization of one field in
	  first_page_build_fields(); using textarea_print_message() in
	  page_two() to print information about hardware in such way that
	  any word isn't split between two lines;
	* cdw_widgets.c: some functions related to dialogbox
	  (dialogbox_calculate_size() and dialogbox_display_message()) moved
	  to 'unused code' part of file - they are replaced by more general
	  functions textarea_wrap_message(), textarea_calculate_height() and
	  textarea_print_message();
	* options.h: updating definition of VOLUME_ID_LEN_MAX
	* cdw_widgets.h: adding textarea_print_message()

2008-11-23 Kamil Ignacak
	* processwin.c, dvd_rw_mediainfo_interface.c, cdrecord_pipe_regexp.c,
	  cdrecord_interface.c, mkisofs_interface.c, filelist.c,
	  mkisofs_pipe_regexp.c, growisofs_interface.c, filelist_tests.c,
	  cdw_file_manager.c, dvd_rw_format_interface.c, cdw_ui_main.c,
	  color.c, cdw_cdio.c, cdw_tmp_files.c, utils.c, isosize.c,
	  cdrom_ctrl.c, help.c, pipe_regexp.c, utils_filesystem.c, thread.c,
	  growisofs_pipe_regexp.c, dvd_rw_mediainfo_pipe_regexp.c,
	  options_ui.c, log.c, main.h: fixing misspellings and similar errors
	  in comments
	* cdw_ui.c: media_size_selector() renamed some variables to keep
	  naming conventions more consistent, fixed problem with proper
	  saving value selected by user; proper use of VOLUME_ID_LEN_MAX
	  as argument to inputbox(); fixing some typos.
	* cdda2wav.c: using new function make_n_string() to simplify some code
	  in poor_man_cdda2wav(); improving one comment and fixing some typos
	* main.c: proper use of VOLUME_ID_LEN_MAX as argument to inputbox();
	  fixing some typos.
	* options_logic.c: proper use of VOLUME_ID_LEN_MAX; fixing some typos;
	* cdw_disc.c: adding some doxygen tags; replacing my_itoa2 with
	  snprintf() in cdw_disc_build_write_speeds_labels();
	  adding information about CD discs capacity
	  (source: http://www.osta.org/technology/cdqa7.htm)
	* blank_wizard.c, write_wizard.c: proper use of SPEED_TABLE_SIZE;
	  fixing some typos;
	* commands.c: command_media_size_selector(): adding one dialog box
	  when handling CDW_ARG_ERROR return value; fixing some typos;
	* utils_string.c: adding make_n_string(): a special case of
	  make_string(); fixing some typos;
	* cdw_widgets.c: adding some doxygen tags; adding and modifying
	  comments; fixing some typos; moving parts of dialogbox() to separate
	  functions, this makes body of dialogbox() more clean; creating
	  dialogbox_validate_sizes() - function for testing wrapping algorithm
	* cdw_disc.h: proper use of SPEED_TABLE_SIZE;
	* utils_string.h: adding make_n_string();
	* options.h: adding some comments;
	* cdw_widgets.h: adding some comments; adding CDW_FIELD_TYPE_INTEGER
	  as new type recognized by inputbox() and one_line_input();
	  small changes in function prototypes

2008-11-21 Kamil Ignacak
	* cdw_ui_main.c, commands.c: filelist_count_files() -> filelist_length()
	* filelist_tests.c: more testcases
	* growisofs_interface.c: added some doxygen tags, fixed comment
	  for run_command_growisofs_blank_dvd();
	* filelist.c: filelist_init() rewritten using filelist_new_item();
	  filelist_new_item() checks its argument and performs full
	  initialization of its result; filelist_append_file_non_unique()
	  does some more checks and can recognize empty list;
	  filelist_count_files() renamed to filelist_length()

2008-11-18 Kamil Ignacak
	* utils_string_tests.c, main_tests.c: some cosmetic changes (const
	  keyword, printf format, other)
	* commands.c, cdw_ui_main.c: filelist_elements()->filelist_count_files()
	* cdw_file_manager.c: filelist_append_unique()->filelist_append_file()
	* filelist_tests.c: added test_filelist_last_item() and
	  test_filelist_is_member(); some changes that are result of name
	  changes in filelist;
	* filelist.c: added and modified some comments; added
	  test_filelist_is_member(); small improvements in filelist_clean(),
	  filelist_dirsize(); filelist_remove_file(), filelist_ith_item(),
	  filelist_append_file(), filelist_ith_fullpath(),
	  filelist_last_item(); some renaming of functions to make the names
	  more clear;
	* filelist.h: changes of some function names; added some comments;

2008-11-16 Kamil Ignacak
	* cdda2wav.c, commands.c, thread.c, options.h: using new name:
	  logfile -> log_full_path
	* main.c: adding call to logging_init()
	* mkisofs_interface.c: using new name: logfile -> log_full_path;
	  adding some doxygen tags; removing one FIXME related to
	  multi_string; reorganizing code in prep_command_mkisofs() (again);
	* options_logic.c, options_ui.c: reorganizing some code after converting
	  char logfile[] -> char *log_full_path;
	* cdw_ui_main.c: renaming one FIXME as TODO;
	* utils.c: adding call to logging_clean() in clean_before_cdw_exit();
	  using new name: logfile -> log_full_path; other minor changes
	* cdrom_ctrl.c: renaming one FIXME as NOTE;
	* utils_filesystem.c: adding some doxygen tags; get_valid_path()
	  and get_home_dir() makes sure that dir path ends with '/'
	* cdw_widgets.c: fixing one FIXME
	* log.c, log.h: implementing code checking for correct log path and
	  opening log file; pair of functions: logging_init() and
	  logging_clean() are interface to logging module; the module is not
	  used much for now, I need to add more utility functions, but there
	  is a beginning: module checks for valid path to log file on startup.

2008-11-15 Kamil Ignacak
	* utils.c: adding one comment
	* cdw_tmp_files.c: improving randomness in set_string_random();
	  removing unnecessary call to graftpoints_file_open() in
	  tmp_files_init();
	* filelist.c: checking return values of graftpoints*() functions;
	* main.h: adding some doxygen tags; adding CDW_ARG_ERROR value in
	  cdw_rv_t enum;

2008-11-14 Kamil Ignacak
	* thread.c: removing duplicate call to clean_before_cdw_exit()
	* pipe_regexp.c, cdw_cdio.c: changing FIXME to WARNING
	* utils.c: adding call to tmp_files_clean() in clean_before_cdw_exit()
	* cdw_tmp_files.c: adding some comments and doxygen tags; adding
	  tmp_files_clean(); graftpoints_file_open() now opens file with
	  random file name; random part of file name is generated by
	  new function set_string_random(); minor changes in other functions
	* color.c: removing unnecessary fprintf()
	* options_logic.c: hiding one FIXME in unused code;
	* filelist_tests.c: adding one TODO
	* main.c: one change of name of called function
	* cdw_ui.c: changes in comments; removing limitation of size of
	  buffer in call to inputbox()
	* cdw_tmp_files.h: adding tmp_files_clean(), renaming tmpfiles_init()
	  to tmp_files_init()

2008-11-12 Kamil Ignacak
	* cdw_ui.c: adding some doxygen tags; changes in one_line_input():
	  no more CDW_RETURN_IN_PLACE, cdsize is now dynamically allocated;
	  other minor changes that reflect changes in other files;
	* cdda2wav.c: adding some doxygen tags; small changes in
	  poor_man_cdda2wav() that are a result of changes in other files;
	* main.c: using new version of inputbox()
	* mkisofs_interface.c: changes that are result of changed
	  config.tempdir declaration in options.h
	* cdw_file_manager.c: adding some doxygen tags; small changes in
	  comments; some variable are made global in file, and that changes
	  some function declarations and minor details in their definitions;
	  adding cdw_file_manager_deallocate() to wrap some common code;
	* options_logic.c: new functions initialize_config_variable() and
	  free_config_variable() defined and used;
	  init_default_config() -> set_default_configuration();
	  using make_string() and new function set_string() to initialize
	  and set some options that have new declarations in options.h;
	  adding some doxygen tags;
	* commands.c: changing reference to config.tempdir;
	* utils_string.c: adding some doxygen tags; new function set_string();
	  function split_options_line() redefined to better handle comments;
	* utils_filesystem.c: changing declaration of get_valid_path();
	  simplyfying implementation of get_tmp_dir();
	* options_ui.c: using initialize_config_variable() and
	  free_config_variable();
	* cddb.c: some simple changes that are a result of changes in other
	  files;
	* cdw_widgets.c: minor changes in dialogbox(); simplified list of
	  arguments of inputbox() and one_line_input(); changes in comments;
	  other minor changes;
	* options_logic.h: added initialize_config_variable() and
	  free_config_variable();
	* utils_string.h: added set_string();
	* utils_filesystem.h: simplified get_valid_path() declaration;
	* options.h: some fields of struct conf are converted from char tables
	  to pointers to char;
	* cdw_widgets.h: simplified list of arguments of inputbox() and
	  one_line_input();
	* cdda2wav.h: changing one include and return type of function;
	* cdw_ui.h: small change in declaration of cdw_open_file();

2008-11-09 Kamil Ignacak
	* utils_filesystem.*: new function my_readline_10k()
	* utils_string.*: small changes in comments; new function
	  split_options_line()
	* cdw_cdio.c: adding some doxygen markup;
	  cdw_cdio_copy_sectors_to_file() now tries to read a sector for
	  a second time if first read failed - this is a simple attempt
	  to solve read problems
	* color.c: two functions renamed;
	* cdw_ui_main.c: removed some debug messages
	* options_logic.c: adding some doxygen markup; new version of
	  read_config_file(): new function doesn't need three constant-size
	  buffers, uses my_readline_10k() and cdw_option_t type;
	* main.c: adding some doxygen markup;
	* cdrecord_pipe_regexp.c: removing unnecessary FIXME tag;
	* options.h: adding cdw_option_t type; using OPTION_FIELD_LEN_MAX;
	  adding some doxygen markup;

2008-11-08 Kamil Ignacak
	* cdw_cdio.h: removing old function declarations; some functions now
	  have more clear names;
	* cdw_widgets.h: adding 'const' keyword
	* cdda2wav.c, commands.c: using new name of a function
	* cdw_cdio.c: fixed comment for cdw_cdio_disc_open(); small
	  cleanup in cdw_cdio_get_disc_meta_information(); added comment to
	  cdw_cdio_open_get_meta_close(), also improved the function; some
	  refactoring: parts of code moved from bloated functions to smaller
	  functions - hopefully this makes things more readable;

2008-11-05 Kamil Ignacak
	* log.c, cdw_widgets.c, options_ui.c, pipe_regexp.c, utils_string.c,
          cdw_tmp_files.c, color.c, processwin.c, processwin.h, log.h,
          cdw_widgets.h, pipe_regexp.h, utils_string.h: adding 'const' keyword
	* dvd_rw_mediainfo_pipe_regexp.c, growisofs_pipe_regexp.c, help.c,
          dvd_rw_format_interface.c, growisofs_interface.c,
          mkisofs_pipe_regexp.c, cdrecord_pipe_regexp.c,
          dvd_rw_mediainfo_interface.c, dvd_rw_format_pipe_regexp.c, cdw_ui.h,
          help.h: small changes that remove compiler warnings
	* utils_filesystem.c: changing one dialog from Error to Warning
	* commands.c: adding check_copy_preconditions() that encapsulates
          some repeating code; small fixes; using modified cdw_cdio_*
          functions; definitions of command_copy_cd_to_image() and
          command_cdda2wav() uses check_copy_preconditions(); small changes
          in includes and declarations;
	* write_wizard.c: using CDW_COLORS*; adding small comment; adding
          'const' keyword; changes in includes;
	* cdw_cdio.c: changes in includes; changes in declarations;
          cdw_cdio_disc_open() split into two functions; some functions not
          related to cdio moved to utils.c; other minor changes;
	* utils.c: moving some functions that access cdrom from cdw_cdio.c;
          adding 'const' keyword; small changes that remove compiler warnings
	* blank_wizard.c: removing unused includes and declarations; small
          change in one comment;
	* cdw_disc.c: expanding cdw_disc_current_disc_reset_values();
          adding 'const' keyword
	* options_logic.c: small change that remove compiler warnings;
          disabling duplicate code
	* mkisofs_interface.c: using correct simple_type
	* main.c: calling some functions with new argument; small changes
          in comments; using one function with new name
	* cdrecord_interface.c: one function has new name; added one
          include which suppresses compiler warning;
	* cdda2wav.c: added one include to supress compiler warning; small
          change in comment; disabling part of code that was moved to
          check_copy_preconditions()
	* cdw_ui.c: changes in includes and declarations;
	* commands.h: changing some prototypes
	* write_wizard.h, blank_wizard.h: small changes in includes;
	* utils.h: changes in declarations; declarations of functions
          moved from cdw_cdio.h
	* cdw_cdio.h: struct cdw_cdio_disc is now 'typedef'ed;
          other minor changes;

2008-11-02 Kamil Ignacak
	* commands.c: added call to cdw_disc_build_write_speeds_table()
	* write_wizard.c: write_wizard now has its own, separate speed labels
	table; using CDW_COLORS* symbolic names; speed_dropdown_labels_build()
	and mode_dropdown_labels_build() call moved closer to places where
	result of their actions are used; call to speed_dropdown_labels_build()
	is replaced with call to cdw_disc_build_write_speeds_labels();
	original speed_dropdown_labels_build() moved to 'unused code' part of
	file;
	* cdrom_ctrl.c: adding 'include cdw_disc.h'
	* cdw_cdio.c: adding one assignment that saves simple disc type in
	general part of current_disc
	* blank_wizard.c: write_wizard now has its own, separate speed labels
	table; using CDW_COLORS* symbolic names; speed_dropdown_labels_build()
	and call moved closer to places where result of its action are used;
	call to speed_dropdown_labels_build() is replaced with call to
	cdw_disc_build_write_speeds_labels(); fixing includes;
	* cdw_disc.c: adding some new code / moving code from write_wizard:
	cdw_disc_build_write_speeds_table(), cdw_disc_build_write_speeds_labels
	cdw_disc_calculate_write_speeds_limits(),
	cdw_disc_calculate_write_speed_index()
	* write_wizard.h: moving some function declarations to cdw_disc.h
	* cdw_disc.h: added some declarations of functions from write_wizard.h;
	extended cdw_disc_t type with n_speeds (number of write speeds
	available for given media) and write_speeds[] - table of ints
	corresponding to write speeds accepted by disc;

2008-10-31 Kamil Ignacak
	* cdw_disc.c, cdw_disc.h: new files with code related directly to
	current disc; declaration of current_disc_t type is now moved from
	options.h to cdw_disc.h and renamed to cdw_disc_t (this made me to
	change many current_disc declarations in many files); cdw_disc.c
	defines cdw_disc_reverse_dvd_speeds_table() which solves small DVD
	quirk, and cdw_disc_current_disc_reset_values(), moved from
	options_logic.c
	* dvd_rw_mediainfo_pipe_regexp.c, cdw_cdio.c, cdw_ui_main.c,
	blank_wizard.c, dvd_rw_format_interface.c, growisofs_interface.c,
	mkisofs_interface.c, cdrecord_interface.c, cdda2wav.c,
	cdrecord_pipe_regexp.c, dvd_rw_mediainfo_interface.c: added
	cdw_disc.h header and changed current_disc_t -> cdw_disc_t
	* commands.c: using cdw_disc_reverse_dvd_speeds_table() and
	cdw_disc_current_disc_reset_values(); added cdw_disc.h header and
	changed	current_disc_t -> cdw_disc_t
	* write_wizard.c: added cdw_disc.h header and changed
	current_disc_t -> cdw_disc_t; removing now invalid comment and
	rewriting loop (dvd speeds table is no longer reversed)
	* options_logic.c: definition of current_disc and
	current_disc_reset_values() moved to cdw_disc.c;
	* options.h: definition of current_disc_t, cdw_disc_type_t,
	cdw_write_mode_t types and SPEED_TABLE_SIZE moved to cdw_disc.h

	* blank_wizard.c, blank_wizard.h: cdw_coarse_disc_type_t ->
        cdw_simple_disc_type_t; cdtype -> simple_type;
	x_dropdown_labels_destroy() -> free_table_of_strings();
	* cdw_cdio.c, cdw_cdio.h, cdw_ui.c, cdw_ui.h, cdw_ui_main.h,
	commands.c, mkisofs_interface.c: cdw_coarse_disc_type_t ->
	cdw_simple_disc_type_t; cdtype -> simple_type;
	* options_ui.c: speed_range_labels_clean() redefined using
	free_table_of_strings()
	* utils_string.c, utils_string.h: added free_table_of_strings()
	(basically renamed x_dropdown_labels_destroy())
	* write_wizard.c: cdw_coarse_disc_type_t -> cdw_simple_disc_type_t;
	cdtype -> simple_type; x_dropdown_labels_destroy() moved to
	utils_string.c
	* write_wizard.h: cdw_coarse_disc_type_t -> cdw_simple_disc_type_t;
	cdtype -> simple_type; x_dropdown_labels_destroy() moved to
	utils_string.h (as free_table_of_strings())





2008-10-27 Kamil Ignacak:
	* utils_string.c, utils_string.h: improved make_string() function
	prototype
	* cdw_ui_main.c: selected_files_size_mb is now calculated properly
	as float and is displayed in files info with one digit after comma;
	using new function name (filelist_ith_fullpath instead of
	filelist_ith_path); cursor holds it position on selected files list
	when files are removed;
	* cdw_widgets.c: input field now properly validates numeric values -
	this fixes problem that occurs in target cd size selector when
	setting custom size was impossible;
	* filelist.c, filelist.h: using cdw_file_t variable type instead
	of 'char *' in some functions; changing name of head of filelist
	from 'filelist' to more verbose 'filelist_head'; changing name of
	type from filelist_item to more explicit filelist_item_t; modifying
	filelist_item_t type so that now it has cdw_file_t field instead of
	'char *'
	* cdw_file_manager.c: using cdw_file_t instead of cdw_fileitem_t;
	now cdw_file_t type also has fullpath field - I'm using this field now;
	* cdw_file_manager.h: moving cdw_file_t definition from cdw_ui.h
	* cdw_ui.h: moving cdw_file_t definition to cdw_file_manager.h
	* filelist_tests.c: updating testcases to match changes in filelist.c
	* options_ui.c: adding wrappers get_field_bit() and get_field_string();
	using those two wrappers; adding some variables (f_*) that decrease
	number of magic numbers in code; commenting out some unnecessary
	calls to set_field_back() and set_field_fore();


2008-10-26 Kamil Ignacak
	* cdw_ui_main.h: changed name of one of symbolic variables from
	UI_MENU_CREATE_IMAGE to UI_MENU_WRITE_DATA_FILES_TO_IMAGE for better
	consistency
	* cdw_tmp_files.h: removed unused code
	* commands.h: updated prototypes of some functions
	* processwin.c, thread.c, cdw_widgets.c: changed comments to C90
	style to remove compiler warnings
	* cdrecord_interface.c: updated comment
	* main.c: removed unused definition; using new symbolic name
	UI_MENU_WRITE_DATA_FILES_TO_IMAGE; using command_*() function with
	parameter
	* mkisofs_interface.c: removing unused include; updating some comments;
	disabling parts of code, because preconditions are checked elsewhere
	* filelist.c: removing unused line of code
	* cdw_ui_main.c: removing unused lines of code; converting 'int num' to
	variable local in functions, instead of global in file (well, it was
	visible in whole project, now this is changed)
	* cdw_tmp_files.c: fixing argument of perror(); moving 2 lines from
	some header file to this file; changed comments to C90 style to
	remove compiler warnings
	* utils.c, isosize.c, cdw_ui.c, cdw_file_manager.c: removing unused
	includes
	* help.c: using new symbolic name UI_MENU_WRITE_DATA_FILES_TO_IMAGE
	* commands.c: removing declaration of 'extern int num' - now this is
	always a local variable on function level; adding and using new
	function check_write_preconditions() that encapsulates some common
	code - see function's code for details; disabling some fragments of
	code that check preconditions (now check_write_preconditions() do this)
	* utils_filesystem.c: adding one code in disc_ready_for_write()
	* growisofs_pipe_regexp.c: removing unused lines of code, updating
	comment
	* dvd_rw_mediainfo_pipe_regexp.c: removing unused bits of code


2008-10-25 Kamil Ignacak
	* cdw_widgets.c: adding new parameter to dialogbox() - the function
	now accepts information about colors scheme for dialogbox
	(CDW_COLORS_DIALOG, CDW_COLORS_WARNING, CDW_COLORS_ERROR)
	* cddb.c, options_ui.c, utils_filesystem.c, commands.c, cdrom_ctrl.c,
	utils.c, cdw_ui_main.c, blank_wizard.c, options_logic.c,
	cdw_file_manager.c, mkisofs_interface.c, main.c, cdrecord_interface.c,
	cdda2wav.c, dvd_rw_mediainfo_interface.c, cdw_ui.c: changing call
	of dialogbox() by adding new parameter
	* options_ui.c: fixed a bug that iso level value was not saved when
	user moved between preferences tabs
	* utils_string.c, utils_string_run_tests.c: some more tests for
	functions from utils_string.c

2008-10-21 Kamil Ignacak
	* color.c, color.h: file was reviewed and commented; a bit of
	refactoring, piece of code moved to utils_string.c; some functions
	changed names; some symbolic variables changed names; updated
	copyright information
	* log.c, commands.c, help.c, blank_wizard.c: now including color.h;
	using *COLORS* variables from color.h instead of numbers;
	* cdw_widgets.c, options_ui.c, cdw_file_manager.c, cdda2wav.c:
	using *COLORS* variables from color.h instead of numbers;
	* cdw_ui.c, processwin.c: using *COLORS* variables from color.h
	instead of numbers;
	* utils_string.*: added starts_with_ci() function (moved from color.c);
	added one include
	* cdw_ui_main.c: using *COLORS* variables from color.h instead of
	numbers; fixing layout and coloring problems in
	files_info_view_show_data() (with drawing size indicator bar);
	now the bar should use three colors depending on disc space usage
	(normal, warning and error)
	* utils_string.h: adding missing include



2008-10-19 Kamil Ignacak
	* cdw_widgets.c: removing unused include, changing some other includes;
	using proper type for return value of sizeof(); using new function
	make_string();
	* pipe_regexp.c, commands.c, thread.c, cdw_tmp_files.c, log.c, color.c:
	small changes in includes
	* blank_wizard.c, dvd_rw_format_interface.c, growisofs_interface.c:
	small changes in includes
	* write_wizard.c: small changes in includes; removing one TODO marker -
	explanation is in options.h ("if size of all strings...")
	* utils.c: utility functions that handle strings were moved to
	utils_string.c; utility functions that deal with filesystem were moved
	to utils_filesystem.c
	* cdw_ui_main.c: removing debug messages
	* main_tests.c: changes in includes, adding call to
	utils_string_run_tests(); adding some printf()s for formatting
	* cdw_file_manager.c: some changes in includes; using make_string()
	* main_utils.c: moving all functions from main_utils.c to utils.c;
	this file will be removed
	* filelist_tests.c: adding/changing some printf()s for changes in
	messages formatting
	* filelist.c: small changes in includes, using make_string()
	* mkisofs_interface.c: small changes in includes; using
	boot_image_exists() to simplify piece of code;
	* main.c: removing unused includes, updating comments
	* cdrecord_interface.c: small changes in includes; using
	boot_image_exists() to simplify piece of code;
	* cdda2wav.c, cdrecord_pipe_regexp.c, dvd_rw_mediainfo_interface.c:
	small changes in includes
	* processwin.c: small changes in includes
	* cdw_ui.c: check_for_boot_image() improved, renamed to
	boot_image_exists() and moved to utils_filesystem.c; small changes in
	includes
	* utils_string.c: new file with string-related code from utils.c
	* utils_filesystem.c: new file with filesystem-related code from utils.c
	* options_ui.c: new file with code responsible for creating, destroying
	(and not only) user interface to cdw preferences; the code is moved
	from options.c
	* options_logic.c: new file with code that implements logic behind
	cdw options window (reading, writing options file, other functions);
	the code is moved from options.c




2008-10-14 Kamil Ignacak
	* main.c: changing how screen is updated when file selector is closed;
	MENU *menu -> MENU *main_menu; adding checking of one return value in
	initialization function;
	* cdw_file_manager.c: changing how screen is updated in file selector
	main loop; WINDOW *mainwin -> WINDOW *main_cdw_win;
	addwin_show_add() -> cdw_file_manager_show_selector()
	* blank_wizard.c: fixing a typo in comment;
	WINDOW *mainwin -> WINDOW *main_cdw_win
	* write_wizard.c, help.c: WINDOW *mainwin -> WINDOW *main_cdw_win
	* cdw_tmp_files.c: removing one TODO (it was moved to unused code)
	moving definitions of some variables to other file
	* processwin.c, cdda2wav.c: WINDOW *mainwin -> WINDOW *main_cdw_win
	* cdw_ui.c: code related directly to main application window is moved
	to cdw_ui_main.c; what is left in cdw_ui.c is some ui elements and
	code that should be moved somewhere else; code that is moved to
	cdw_main_ui.c is modified
	* cdrecord_pipe_regexp.c: commenting out line of code with definitions
	of unused variables
	* main_utils.c: using new name of mainform_init()
	* cdrom_ctrl.c: prefs_infoarea_update() -> disc_info_view_update()
	* commands.c: prefs_infoarea_update() -> disc_info_view_update();
	MENU *menu -> MENU *main_menu; WINDOW *mainwin -> WINDOW *main_cdw_win
	* growisofs_pipe_regexp.c: removing some declarations of global
	variables
	* cdw_ui_main.c: new file with code from cdw_ui.c that is strictly
	related to main application window


2008-10-10 Kamil Ignacak
	* thread.c, pipe_regexp.c, commands.c, mkisofs_interface.c:
	new header file included
	* utils.c: added keyword 'cons' to parameter of _dirsize()
	* cdw_tmp_files.c: in general: migration from (filelist + filetable) to
	filelist only, hence some functions removed/renamed or moved to
	filelist.c; 3 wrappers (graftpoint_file_*()) for creating interface to
 	graftpoint file;
	* cdw_file_manager.c: filelist_add() -> filelist_append_unique() +
	checking of return value; changes in list of #includes; removed
	reference to extern filetable;
	* main.c: new header files included; conditional_exit() and
	clean_before_cdw_exit() moved to main_utils.c;
	* cdw_ui.c: new header file included; using new functions from
	filelist.c
	* main_utils.c: new file with conditional_exit() and
	clean_before_cdw_exit() moved from main.c; this is part of creating
	tests platform, which uses (indirectly) these two functions as well
	* filelist.c: new file with single data strucure (and supporting code)
	holding and managing list of paths to files that were selected by user
	* filelist_tests.c: new file with some code testing code from
	filelist.c
	* main_tests.c: file with code calling testing code of various modules
	(for now filelist only); this file defines main(), but is compiled and
	linked only when cdw_tests target is built;
	* src/Makefile.am: added target cdw_tests



2008-06-25 Kamil Ignacak
	* main.c: value returned by tmpfiles_init() is now checked, cdw exits
	if the function returns fail status
	* mkisofs_interface.c: using new declaration of graftpoints_fullpath
	* cdw_tmp_files.*: new definition of graftpoints_fullpath (removed one
	FIXME); tmpfiles_init() now does some basic checking of output
	directory for graftpoint file, it also returns cdw_rv_t instead of int
	* utils.c: is_valid_path() now also checks group permissions
	* write_wizard.c: removing one FIXME: if user changes speed range in
	prefs window, preselected speed in wizard window is changed accordingly
	* cdw_widgets.*: added function cdw_dropdown_set_current_item() - it
	displays i-th item in unexpanded dropdown and sets it as current/active

2008-06-22 Kamil Ignacak
	* cdw_widgets.*: cdw_dropdown_driver()->cdw_dropdown_expanded_driver();
	new function cdw_dropdown_driver() - top level function for handling
	keys when focus is on dropdown, it replaces some common code from
	functions using old cdw_dropdown_driver()
	* options.c: using new cdw_dropdown_driver();
	* write_wizard.c: write_wizard_dropdown_driver() moved to 'unused code'
	section of file; write_wizard_driver() is a bit cleaned and uses new
	cdw_dropdown_driver;
	* blank_wizard.c: blank_wizard_dropdown_driver() is removed;
	blank_wizard_driver() now uses cdw_dropdown_driver()

2008-05-06 Kamil Ignacak
	* options.c: added fourth level of iso compliance
	* help.c: minor changes in hotkey labels
	* cdrecord_pipe_regexp.c: added handle_current_disc_type_new() to
	support new form of "Current: <disc type>" line from real cdrecord
	* autotools files: changing cdw version, bringing back checking for
	tool paths at compile time, removing unnecessary compiler flags
	* *.c: disabling debug messages

2008-05-05 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c: disable code that was supposed to
	check if disc is blank - theory behind it was false
	* growisofs_pipe_regexp.c: copy of handle_growisofs_writing_data() with
	some old code is moved to 'unused code' part of file; removed cruft
	from current version of handle_growisofs_writing_data(); added
	functions: handle_growisofs_media_not_appendable() and
	handle_growisofs_no_space_left(); they both read
	growisofs_process_failed flag, that is read by functions from
	growisofs_interface.c
	* options.c: validate_configuration() added validation of some
	preferences fields; replaced some magic numbers with
	OPTION_FIELD_LEN_MAX constant
	* commands.c: changes in blank_dispatcher(), now DVD+RW is blanked with
	growisofs again
	* help.c: display_tooltip(): one minor change in tooltip
	* write_wizard.c: improved layout of wizard window to better fit into
	80x24 terminal window; current_disc.speed -> config.speed
	* utils.c: input_string_security_parser(): added two chars to list
	of accepted chars
	* blank_wizard.c: some changes of argument types
	* dvd_rw_format_interface.c: current_disc.speed -> config.speed
	* growisofs_interface.c: current_disc.speed -> config.speed; added
	reading of flag growisofs_process_failed from growisofs_pipe_regexp.c;
	* mkisofs_interface.c: debug messages
	* main.c: commented-out one unnecessary call to clean_before_cdw_exit()
	* cdrecord_interface.c: current_disc.speed -> config.speed;
	prep_command_cdrecord_write_data(): changed the way that 'tao' is
	enabled
	* cdrecord_pipe_regexp.c: debug messages; handle_current_disc_type():
	added catching and setting disc type to CD-AUDIO
	* cdw_ui.c: prefs_infoarea_update(): changing the way how info about
	DVD+RW is displayed; media_size_selector(): being more precise about
	DVD size; cdw_curses_init(): changing required number of lines: 25 -> 24
	* options.h: adding CDW_CD_AUDIO to list of values of cdw_disc_type_t;
	removing 'speed' from current_disc, it is now back in 'conf' structure

2008-05-03 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c: added code capturing and parsing
	"Legacy lead-out at" line - this way I get information about DVD+RW
	disc being really blank; current_disc.disc_write_status is set
	accordingly (overwriting status set when parsing "Disc status" line),
	but only for DVD+RW
	* commands.c: blank_dispatcher(): the same function is used for
	blanking DVD+RW and DVD-RW, making run_command_growisofs_blank_dvd()
	unused
	* blank_wizard.c: mode_dropdown_labels_build(): there are no modes
	when blanking DVD+RW
	* dvd_rw_format_interface.c: run_command_dvd_rw_format_blank() now
	creates separate command for blanking (well, formatting) DVD+RW;
	some code is '+RW/-RW'-specific
	* dvd_rw_format_pipe_regexp.c: adding comments; making sure that
	formatting DVD+RW will be handled correctly
	* cdw_ui.c: minor changes
	* commands.*: command_show_opt_disc_info() ->
	command_update_opt_disc_info(), the function now displays log file only
	conditionally
	* help.c: show_help_main(): added information about new hotkey (R)
	defined in main.c
	* write_wizard.c: mode_dropdown_labels_build(): updated code creating
	labels for writing to DVD-R and DVD+R
	* growisofs_interface.c: prep_command_growisofs_write_direct():
	modified code building command so now '-dvd-compat' is always added for
	'continue multisession'
	* mkisofs_interface.c: prep_command_mkisofs(): building '-C' params
	only for non-DVD discs
	* main.c: defined 'R' hotkey (refresh disc info)
	* processwin.c: processwin_create(): commented-out unnecessary line

2008-05-02 Kamil Ignacak
	* growisofs_pipe_regexp.c: added some comments; removed unused regexp
	for stdout; added regexp, calls and function for handling "Stopping
	de-icing" string; handle_growisofs_writing_data() now uses
	iso_file_size_mb (defined in commands.c) and 'float percent' to
	calculate amount of data written when writing image to DVD;
	implemented handle_growisofs_preformatting_blank_media()
	* commands.c: added iso_file_size_mb and iso_file_size_b and code
	calculating size of iso file when writing of iso file to disc will be
	performed; command_write_to_opt_disc(): 'volume label' dialog is now
	shown only when writing files to opt. disc or creating image from files;
	extended two conditions in command_write_to_opt_disc(), that check
	some preconditions for writing data - the conditions now check if disc
	is DVD+RW
	* write_wizard.c: code in mode_dropdown_labels_build() now builds
	correct set of labels for DVD+RW
	* cdrom_ctrl.c: added debug messages
	* growisofs_interface.c: functions creating commands now can build
	commands for writing to DVD+RW too
	* cdw_ui.c: prefs_infoarea_update() is modified to display more
	appropriate info for DVD+RW

2008-05-01 Kamil Ignacak
	* cdw_widgets.c: dialogbox() improved displaying of messages with
	(multiple) line breaks
	* dvd_rw_mediainfo_pipe_regexp.c: changed data types int -> long int
	* growisofs_pipe_regexp.c: some basic cleanup of code
	* thread.c: added printing of current command and formatted date to
	log file
	* pipe_regexp.c: added dispatching to functions from
	dvd_rw_format_pipe_regexp.c
	* commands.c: blank_dispatcher() now is more precise:
	uses current_disc.disc_type instead of cdw_coarse_disc_type_t cdtype
	* write_wizard.c: creating mode dropdown labels is is modified so
	now writing image or files to DVD-RW can be made in more ways
	(e.g. writing image and leaving disc as appendable)
	* cdw_tmp_files.c: some debug messages
	* blank_wizard.c: blank_wizard() fixed checking which blanking mode
	should be default; mode_dropdown_labels_build(): now blanking DVD
	also has modes: 'all' and 'fast'
	* dvd_rw_format_interface.*:
	run_command_dvd_rw_format() -> run_command_dvd_rw_format_blank();
	now the function does something real (implemented blanking of DVD with
	dvd+rw-format, currently tested only with DVD-RW
	* growisofs_interface.c: prep_command_growisofs_write_direct(): added
	code creating command for 'write final';
	prep_command_growisofs_write_iso_image(): now function creates command
	for 'writing single' and 'starting multi'; one small change (in code
	that probably will become unused), changes in debug messages
	* mkisofs_interface.c: changing some data types: int -> long
	* processwin.c: processwin_display_progress(): changing char displayed
	in progress bar to '#'
	* dvd_rw_format_pipe_regexp.*: new file with code parsing output of
	dvd+rw-format when it performs blanking of dvd
	* options.h: changing some data types: int -> long
	* commands.h: adding COMMAND_DVD_RW_FORMAT_BLANK field in
	current_command_t
	* cdrecord_pipe_regexp.c: atoi() -> atol() to reflect changes in
	options.h


2008-04-30 Kamil Ignacak
	* commands.c: command_show_opt_disc_info(): using disc_in_drive()
	instead of cdrom_status() gives better behaviour when tray is open
	* write_wizard.c: mode_dropdown_labels_build(): added building labels
	for "start multisession" and "create single session" operations of
	writing iso image to CD disc (perhaps this would work for DVD-/+R
	as well, but this is to be checked/implemented/tested
	* utils.*: my_itoa() moved to 'unused code' part of file
	* cdrecord_interface.c: uncommenting calls to run_command(); adding
	one line of text (explanation) in blank process window; adding some
	comments; note that no change was needed in this file to enable
	"start multisession" and "create single session" writing of image
	to CD - adding modes to dropdown in write_wizard.c was sufficient

2008-04-29 Kamil Ignacak
	* cdrecord_interface.c: run_command_cdrecord_write_direct(): moving
	code that flushes filelist to file to commands.c, it will be used in
	both cd and dvd writing
	* cdw_tmp_files.c: information about size of currently selected files
	is moved from cdw_ui.c to this file (selected_files_size_b,
	selected_files_size_mb)
	* cdw_ui.c: changing some code so that now it uses selected_files_size_b
	and selected_files_size_mb
	* commands.c: additional checking for CDW_DVD_RW and warning if
	current_disc.disc_type == CDW_DVD_RW; write_dispatcher(): code around
	filelist_to_file() (from cdrecord_interface.c) is now used for both
	cd and dvd.
	* dvd_rw_mediainfo_interface.c: added one missing space in call to
	concat()
	* dvd_rw_mediainfo_pipe_regexp.c: added code capturing current write
	speed of drive - handle_current_write_speed()
	* growisofs_interface.c: just reorganizing some code, adding comments
	and options to calls of growisofs
	* growisofs_pipe_regexp.c: adding comments, adding code that captures
	and processes growisofs when it finishes writing data;
	handle_growisofs_writing_data(): changed the way how code calculates
	and displays in processwin amount of written data: total amount of
	data (from cdw_tmp_files.c) is multiplied by percentage captured from
	growisofs output - this is more reliable than capturing 'currently
	written' values from growisofs output
	* mkisofs_interface.c: small changes in code creating command for
	mkisofs: now -C parameter is not appended for dvd
	* write_wizard.c: changing labels and order of mode dropdown,
	commenting out some modes, because cdw doesn't support them at this
	moment
	* *.c: changes related to debug messages

2008-04-25 Kamil Ignacak
	* cdw_widgets.*: simplyfying usage of colors:
	(normal_color, focus_color) -> colors; moving code that draws arrow
	by dropdowns from functions that use dropdown to dropdown code in
	cdw_widgets.c
	* options.*: adding current_disc_reset_values(); removing optwin
	strucure, WINDOW *optwin.main -> WINDOW *optwin; some comments added
	* commands.*: command_create_image() now returns value of type cdw_rv_t;
	disc_write_status in command_write_to_opt_disc() is checked more
	precisely, also added call to conditional_volume_label_dialog()
	* help.c: changed some labels
	* write_wizard.c: moving code that draws arrow by dropdown to
	cdw_widgets.c; using function calls with only one color parameter;
	disabling code that displays "Help" button
	* cdrom_ctrl.c: conditional_eject_after_write(): when ejecting disc
	now infoarea is blanked
	* cdw_tmp_files.c: adding/modifying return values of filelist_to_file()
	* blank_wizard.c: using function calls with only one color parameter;
	changing some magic numbers into constants; minor reorganization of code
	* cdw_file_manager.c: some changes in how addwin is colored
	* cdrecord_interface.c: changing how return value of filelist_to_file()
	is handled in run_command_cdrecord_write_direct(); fixing bug in
	run_command_cdrecord_blank_cd() ("- v" -> "-v")
	* cdrecord_pipe_regexp.c: added some comments
	* cdw_ui.c: prefs_infoarea_update() now displays information about
	disc currently in drive, infoarea is now titled "Disc info"

2008-04-20 Kamil Ignacak
	* options.c: modified some comments, removed some debug messages
	* thread.c: added some comments, added calls to clean_before_cdw_exit()
	* commands.c: modified get_full_media_info() now doesn't call
	prefs_infoarea_update(), this function must be called by caller of
	get_full_media_info(), implementing this change in commands.c
	* help.c: updated copyright info; added some entries in show_help_main()
	* cdrom_ctrl.c: added call to prefs_infoarea_update(), added missing
	#includes of header files
	* utils.*: added/modified some comments; other minor changes
	* mkisofs_pipe_regexp.c: updated copyright information, modified some
	comments
	* main.c: added new hotkeys for displaying help

	* in an attempt to make config field names more intuitive and
	orthogonal, I disabled config.cdrom and config.mounpoint, and
	renamed config.cdrwdevice to config.cdrw_device; here are results:

	* utils.c: cdrwdevice -> cdrw_device; added one line of comment
	* options.h: added some comments, cdrwdevice -> cdrw_device
	* options.c: disabling fields related to config.mountpoint and
	config.cdrom, as they are currently unused; cdrwdevice -> cdrw_device;
	adding explanation of entries in second (hardware) tab of preferences;
	reorganizing fields in second tab of preferences; added some comments
	and one check in validate_configuration()
	* mkisofs_interface.c: cdrwdevice -> cdrw_device
	* growisofs_interface.c: cdrwdevice -> cdrw_device
	* dvd_rw_mediainfo_interface.c: cdrwdevice -> cdrw_device
	* commands.c: cdrwdevice -> cdrw_device
	* cddb.c: cdrwdevice -> cdrw_device
	* cdw_cdio.c: cdrom -> cdrw_device; cdrwdevice -> cdrw_device
	* cdrom_ctrl.c: cdrom -> cdrw_device
	* main.c: added one line of comment
	* cdrecord_interface.c: cdrom -> cdrw_device; cdrwdevice -> cdrw_device;
	added resolving of name of device that should be used when writing to
	cd by cdrecord;



2008-04-19 Kamil Ignacak:
	* cdrecord_pipe_regexp.c, cdrecord_interface.c, growisofs_interface.c,
	pipe_regexp.c, dvd_rw_mediainfo_pipe_regexp.c: added/modified comments
	* dvd_rw_format_interface.*: renamed function:
	run_command_dvd_rw_format_blank_dvd() -> run_command_dvd_rw_format()
	* blank_wizard.c: added one call to cdw_button_focus(), now Cancel
	button is highlighted when opening blank wizard window
	* cdw_widgets.c: added/modified some comments, added checking some
	return values in cdw_button_new() and cdw_dropdown_new()

2008-04-18 Kamil Ignacak:
	* write_wizard.c, blank_wizard.c: added/changed comments, removed
	unnecessary code, minor changes

2008-04-17 Kamil Ignacak:
	* log.c: some debugging messages added; replaced magic number by
	constant; fixed variable types; changed condition of while() loop in
	display_file()
	* cdw_widgets.*: names of some functions are now more consistent:
	new_cdw_button() -> cdw_button_new(), focus_cdw_button() ->
	cdw_button_focus() etc; cdw_button_destroy() now can accept null
	pointer;
	* dvd_rw_mediainfo_pipe_regexp.c: added code setting values of
	current_disc.disc_type_label in handle_mounted_media()
	* dvd_rw_mediainfo_interface.*: run_command_dvd_rw_mediainfo() now
	returns value; one table of constant size is replaced by pointer
	initialized by concat();
	* cdrecord_interface.*: run_command_cdrecord_atip(),
	run_command_cdrecord_msinfo() now return value; tables of constant
	size are replaced by pointers initialized by concat()
	* thread.c: print_stdout() and print_stderr() now modify pipe_buffers
	so that they don't contain some non-printable characters; this makes
	things easier when displaying log file with these lines.
	* pipe_regexp.c: modified some debug messages
	* commands.*: command_show_opt_disc_info() now behaves better if there
	is no disc in drive; get_full_media_info() now checks some return values
	and calls prefs_infoarea_update() to update information in info area
	of main window
	* write_wizard.c: char *speed_dropdown_labels[] moved to current_disc:
	it will be now used by blank_wizard as well; using modified function
	names from cdw_widgets.c;
	* cdrom_ctrl.c: conditional_eject_after_write() now gets and prints
	disc metainfo after closing drive
	* utils.c: concat2() moved to 'unused code' part of file; after_event()
	doesn't call eject_tray() anymore
	* options.h: added CDW_DISC_UNKNOWN to cdw_disc_type_t; added
	char *speed_dropdown_labels[] to current_disc; added
	char disc_type_label[] to current disc - printable representation of
	current disc type
	* write_wizard.h: some function prototypes moved from write_wizard.c
	* main.c: modified some comments
	* cdrecord_pipe_regexp.c: handle_current_disc_type() now also sets
	value of current_disc.disc_type_label
	* cdw_ui.c: prefs_infoarea_update() now displays totally different set
	of information: it displays disc type, information whether disc is
	erasable and writable - it uses information from current_disc
	* blank_wizard.*: blank_wizard_growisofs() and blank_wizard_cdrecord()
	moved to 'unused code' part of file; new functions:
	blank_wizard_clean_resources(), mode_dropdown_labels_build(),
	blank_wizard_dropdown_driver(), blank_wizard_driver(); blank_wizard()
	is almost entirely brand new function;
	* options.c: using widget function with new names



2008-04-14 Kamil Ignacak
	* cdrecord_pipe_regexp.c: added some comments, fixed some obvious
	mistake in handle_current_disc_type(), added recognizing new disc
	types in handle_current_disc_type(), cleared up assigning to
	current_disc.disc_write_status in some handler functions
	* cdrecord_interface.c: fixed another obvious mistake in
	run_command_cdrecord_write_direct(); blank_wizard does not set
	current_disc.speed, so I had to (temporarily, I hope) remove it
	from blank command in run_command_cdrecord_blank_cd()
	* options.h: reordered fields in disc_write_status and
	disc_erase_status, added CDW_CD_ROM field in cdw_disc_type_t
	* write_wizard.c: speed and mode are now saved in current_disc even
	if user doesn't change them in wizard window (write_wizard() function)
	* commands.c: new function get_full_media_info() with code that
	was repeating itself in command_blank_optical_disc() and in
	command_write_to_opt_disc(); added some additional checks of disc status
	in command_write_to_opt_disc(); command_eject_tray() now checks if
	disc is mounted;
	* cdw_widgets.c: dialogbox(): code for resizing window works better;
	I also rewrote code that writes message to dialogbox - now I can
	understand how my version works

2008-04-13 Kamil Ignacak
	* mkisofs_interface.c: prep_command_mkisofs(): last parameter is now
	bool write_to_stdout, function code updated, function call updated
	* mkisofs_interface.h: removed declaration of
	prepare_createiso_command()
	* cdrecord_interface.*: run_command_cdrecord_write_from_image2() and
	run_command_cdrecord_check_erasable() moved to 'unused code' part of
	file; calls of prep_command_mkisofs() modified to fit new function
	prototype; config.speed -> current_disc.speed;
	prep_command_cdrecord_write_data(): modified declaration; the function
	now uses current_disc.write_mode when creating command string; some
	other minor changes
	* commands.*: write_files_wrapper() moved to 'unused code' part of file
	* growisofs_interface.*: functions preparing commands now have
	'char **command' as an argument, and return cdw_rv_t value: this change
	makes growisofs_interface code consistent with other *_interface code;
	functions' code modified accordingly; calls to prep_command_mkisofs()
	modified to fit new function declaration
	* cdw_ui.c: config.speed -> current_disc.speed

	* blank_wizard.c: added missing declaration of blank_wizard_growisofs()
	* cdda2wav.c: removed unnecessary #includes
	* cddb.c: removed unnecessary #includes
	* cdrom_ctrl.c: removed unnecessary #includes
	* help.c: removed unnecessary #includes
	* processwin.c: removed unnecessary #includes
	* thread.c: removed unnecessary #includes
	* cdda2wav.h: fixed commenting style
	* growisofs_interface.c: fixed commenting style
	* growisofs_pipe_regexp.c: fixed commenting style
	* cdrecord_interface.c: replaced #definition of function with
	#definition of chunk of code (CDRECORD_WRITE_DATA_FREE_RESOURCES); this
	is more ugly, but 'return' instruction of previous definition caused
	'return' of caller of such defined function
	* cdrecord_pipe_regexp.c: handle_is_erasable() becomes unused;
	'erasability' (and 'writability') is now checked in
	handle_current_disc_type();
	* cdw_cdio.c: fixed some comments, removed unused lines of code
	* cdw_ui.c: removed unnecessary #includes, fixed commenting style
	* cdw_file_manager.c: removed unnecessary #includes, added missing
	'default' branch on switch() instruction
	* cdw_tmp_files.c: changed some variable names:
	tmp_file_name[] -> graftpoints_fullpath[]
	* cdw_ui.h: removed unused function declaration
	* cdw_widgets.c: added one line of comment, I have to work on dialogbox
	widget
	* commands.c: command_write_to_opt_disc(): fixed one bug when checking
	'erasability' of disc; added checking if disc is read only; fixing calls
	to after_event()
	* dvd_rw_mediainfo_pipe_regexp.c: fixing one regexp in
	dvd_rw_mediainfo_stdout_regexp_prepare(); handle_mounted_media():
	added checking for DVD-ROM; added checking for 'writability' in
	handle_mounted_media(); handle_dvd_toc() moved to 'unused code' part of
	file
	* log.*: removed unused parameter of display_file()
	* mkisofs_interface.c: using graftpoints_fullpath[] instead of
	tmp_file_name[]
	* options.c: added some debugging messages, fixed commenting style
	* options.h: added CDW_DVD_ROM, changed CDW_WRITE_NA to CDW_WRITE_IMAGE
	in cdw_disc_type_t; added CDW_DISC_W_READ_ONLY in disc_write_status
	* utils.*: removed unnecessary includes, fixed display_file() call,
	fixed my_itoa2() declaration, fixed commenting style
	* write_wizard.c: CDW_WRITE_NA -> CDW_WRITE_IMAGE, fixed commenting
	style

2008-04-12 Kamil Ignacak
	* mkisofs_interface.*: get_multisession_tracks() is now obsoleted
	and moved to 'unused code' part of file; code using this function was
	replaced by processing information already available in current_disc;
	command string produced by prep_command_mkisofs() now uses value of
	current_disc.iso_level and current_disc.usefulRR;
	prepare_createiso_command() is moved to 'unused code' part of file;
	some comments are modified, some other minor changes
	* dvd_rw_mediainfo_pipe_regexp.c: added handle_next_writable_address()
	and rest of code reading "Next Writable Address" line; the function
	also sets current_disc.last_sess_start and current_disc.next_sess_start
	used when writing multisession CDs - now also DVDs
	* commands.c: some commenting/uncommenting for debugging purposes;
	fixed one run_command_growisofs_write_direct() call;
	* write_wizard.c: small changes in write_wizard_dropdown_driver():
	dropdown reacts also on space, implemented saving speed in
	current_disc.speed, removed unnecessary code, added some comments
	* options.h: added current_disc.speed[], added/modified comments
	* growisofs_interface.*: changes in
	prep_command_growisofs_write_direct(): prep_command_mkisofs() is used
	to prepare mkisofs options passed to growisofs, code building '-C'
	option is removed (the option is now part of mkisofs parameters string);
	run_command_growisofs_write_direct() and
	prep_command_growisofs_write_direct() now have no parameters; modified
	some comments
	* cdrecord_interface.c:
	cdrecord_write_data_general_error_message(void) ->
	cdrecord_write_data_general_error_message(int id); other minor changes
	* cdrecord_pipe_regexp.c: handle_msinfo_session_sectors() added:
	it reads "X,Y" line - values of last_sess_start,next_sess_start



2008-04-10 Kamil Ignacak
	* cdw_widgets.*: added 'width', 'normal_color' and 'focus_color'
	variables to CDW_DROPDOWN and new_cdw_dropdown(); added
	cdw_dropdown_display_current_item()
	* write_wizard.c: using cdw_dropdown_display_current_item();
	write_wizard_field_driver() -> write_wizard_dropdown_driver();
	simplified write_wizard window and driver by removing curses FORM, now
	everything is displayed directly in wizard window - this makes some
	things simpler
	* options.*: added other_growisofs_options[] and iso_level fields to
	struct conf config variable; added code supporting those two variables;
	first page of preferences now shows dropdown for iso level, and input
	field for additional growisofs parameters; some other (small changes)
	in first_page_build_fields() (it should be easier now to change layout
	of fields in first page of preferences)

2008-04-09 Kamil Ignacak
	* options.h: added new type: cdw_write_mode_t; added field of this
	type to current_disc - it stores mode of writing files to a CD/DVD disc
	* write_wizard.c: most important change is adding mode_dropdown_ids[]
	table and code for handling values in this table; IDs are used to track
	selected writing mode without using string operations; added/modified
	some comments, removed/moved unused code

2008-04-08 Kamil Ignacak:
	* log.c: log window now display some tips at the bottom
	* commands.c: command_show_license() is now fixed: it either display
	license from /usr/share/common-licenses/ or it just display short
	licensing information in dialog window
	* write_wizard.c: mode_dropdown_labels_build() is modified: all data
	necessary for building mode labels is now hidden in function, but I had
	to add more alloc() code; layout of write wizard window is slightly
	modified; code changes in write_wizard() are a bit more significant,
	because two labels are now static form fields
	* configure.ac: added one test on 'prefix', this prevents setting
	'prefix' to NONE; added one constant: COMMON - this is path to
	/usr/share/common-licenses
	* config.h.in: result of changes in configure.ac
	* configure: result of changes in configure.ac

2008-04-07 Kamil Ignacak
	* cdrecord_pipe_regexp.c: handle_current_disc_type() added - it catches
	disc type currently in drive, reported by cdrecord
	* options.h: added cdw_disc_type_t type and field of this type in
	current_disc - the field will keep exact disc type reported by cdrecord
	or dvd+rw-mediainfo
	* write_wizard.c: changed code in mode_dropdown_labels_build(), which
	builds mode dropdown labels - it is a bit more intuitive and simple;
	mode_dropdown_labels and speed_dropdown_labels are now static tables of
	fixed size - this allows me not to calculate needed size and use
	malloc()/free(); some code operating on those two tables was modified
	accordingly;
	* commands.c: added some debug code
	* dvd_rw_mediainfo_pipe_regexp.c: handle_mounted_media(): added code
	that checks exact disc type and modified code that checks if disc is
	erasable

2008-04-06 Kamil Ignacak
	* commands.c: added some debug information: printing of dvd track info;
	added more debug info: printing of dvd write speeds
	* dvd_rw_mediainfo_interface.c: added initialization of
	current_disc.dvd_blank_track_index in run_command_dvd_rw_mediainfo();
	small change resulting from changed current_disc struct fields
	* dvd_rw_mediainfo_pipe_regexp.c: added handle_dvd_toc() and
	handle_track_start_address() - two functions that collect information
	about DVD disc track start addresses;
	handle_dvd_write_speed_x() replaced by handle_dvd_write_speed(); added
	some comments, simplified few lines
	* growisofs_interface.c: prep_command_growisofs_write_direct() added
	missing code for '-C' option;
	small change resulting from changed current_disc struct fields
	* options.h: added dvd_track_address[] - table of starts of dvd tracks
	and one variable - dvd_blank_track_index - which helps indexing the
	table; this variable points to area referred to as "blank" track;
	removed write_speed_0 and write_speed_1, moved some struct fields
	* pipe_regexp.c: added workaround for dvd+rw-mediainfo printing TOC
	information in one block of text (with '\n' separators instead of '\0')
	* utils.c: added one special char in input_string_security_parser()
	* write_wizard.c: removed some comments, simplified few lines;
	creating writing speeds table in speed_dropdown_labels_build() is
	redesigned: for cd it is simplified and for dvd the code uses table
	built by handle_track_start_address()

2008-04-03 Kamil Ignacak
	* write_wizard.c: small change in dvd speeds table
	* utils.*: added input_string_security_parser(): function for sanitizing
	some input strings (like those 'other' fields in Preferences window
	* options.c: added validate_configuration() - function that will check
	and validate (all/some) fields of config structure and report error if
	needed; key handler in main preferences window is a bit simplified;
	validate_configuration() is now used when user wants to close
	Preferences window

2008-04-02 Kamil Ignacak
	* cdw_widgets.c: fixed preselection and remembering of preselection of
	dropdown item
	* utils.c: added some comment
	* write_wizard.c: added speed_dropdown_calculate_speed_index():
	function that, based on config->speed_range, calculate value indexing
	speed_dropdown_labels table - selected item from table will be
	displayed as preselected value of writing speed in writing wizard;
	generic_speed_table -> generic_cd_speed_table, added
	generic_dvd_speed_table; acceptable writing speed values sets are
	different for CD and DVD, so I had to split them into two tables; write
	wizard selects one of them when generating speed_dropdown_labels;
	other small changes

2008-04-01 Kamil Ignacak
	* write_wizard.c: filed small bug by adding call to rtrim(); the bug
	caused overwriting one of config fields with another
	* options.h: added enum for writing speed ranges, added speed_range as
	field of struct conf config
	* options.c: removed option fields for 'multisession' and 'write from
	image' and code supporting them; 'speed' field doesn't accept numerical
	value anymore - it is now a dropdown - speed_range; added code
	supporting speed_range; first_page_driver() is reorganized - it deals
	with data in slightly different order; removed some compiler warnings
	by adding formatting sting to sprintf() calls

2008-03-31 Kamil Ignacak
	* commands.c: 'struct disc_information' -> 'struct cdw_cdio_disc'
	* cdw_cdio.*: 'struct disc_information' becomes 'struct cdw_cdio_disc',
	this is part of moving all information about current media to
	current_disc; many changes in cdw_cdio.c are result of new definition
	of disc variable ('disc.*' -> 'disc->*')
	* options.h: 'struct disc_information' -> 'struct cdw_cdio_disc'
	* cdda2wav.h: 'struct disc_information' -> 'struct cdw_cdio_disc'

2008-03-30 Kamil Ignacak:
	* blank_wizard.c: blank_wizard_growisofs() reimplemented using
	dialogbox(); this is temporary solution
	* cdw_ui.*: main menu in cdw ui now shows new labels for writing files
	to disc and writing image to disc; 'blank CD-RW' is now 'blank disc';
	fixed one but in selected_files_infoarea_recalculate_data(), which
	caused that cdw showed non-zero files size when all files were
	deselected
	* cdw_widgets.c: dialogbox() heavily modified: CDW_BUTTON widgets used,
	parts of code were reorganized;
	* help.c: display_tooltip() shows correct tooltips for new and modified
	main menu items
	* main.c: binding new menu items to commands

2008-03-24 Kamil Ignacak
	* dvd_rw_mediainfo_pipe_regexp.c: added code reading type of media in
	drive (function handle_mounted_media() and other pieces of code).
	* growisofs_pipe_regexp.c: improved code for handling growisofs when
	it writes image; growisofs generated the same output (behaves
	similarly) when blanks DVD. handle_growisofs_write_image() now handles
	both cases. Improved regexp for 'writing image'
	* pipe_regexp.c: added 'current_command == COMMAND_GROWISOFS_BLANK in
	dispatcher code
	* commands.c: command_blank_optical_disc(): code setting
	current_disc.erasable moved to functions in *pipe_regexp* files.
	* commands.h: added COMMAND_GROWISOFS_BLANK as a value of
	current_command
	* blank_wizard.c: blank_wizard_dvd_rv_format() ->
	blank_wizard_growisofs() - implemented 'wizard' for blanking DVDs with
	growisofs
	* growisofs_interface.*: added run_command_growisofs_blank_dvd():
	function form blanking DVDs by writing stream from /dev/zero to DVD
	* cdda2wav.c, cdrecord_interface.c, cdrecord_pipe_regexp.c, cdw_cdio.c,
	cdw_cdio.h, commands.c, dvd_rw_mediainfo_pipe_regexp.c, options.h,
	processwin.c, write_wizard.c: changing declaration of current_disc in
	options.h, introducing changes in all related files



2008-03-20 Kamil Ignacak:
	* growisofs_pipe_regexp.c: removed reference to media_erasable
	variable - is is now replaced by filed of current_disc struct
	* dvd_rw_mediainfo_pipe_regexp.c: removed reference to media_erasable
	variable - is is now replaced by filed of current_disc struct
	* dvd_rw_mediainfo_interface.c: removed reference to media_erasable
	variable - is is now replaced by filed of current_disc struct
	* mkisofs_pipe_regexp.c: removed reference to media_erasable
	variable - is is now replaced by filed of current_disc struct
	* blank_wizard.*: new file with code of blank wizards - windows with
	summary and some options for blanking CD or DVD discs; currently
	there is only blank_wizard_cdrecord() (former blank_method_selector())
	moved from cdw_ui.c;
	* options.h: added 'sub_type' and 'erasable' fields to current_disc
	* dvd_rw_format_interface.*: new file for function(s) that will call
	dvd+rw+format tool; currently there is only very early prototype of
	run_command_dvd_rv_format_blank_dvd()
	* cdrecord_interface.c: media_erasable -->> current_disc.erasable
	* cdrecord_pipe_regexp.c: media_erasable -->> current_disc.erasable
	* cdw_ui.*: code of blank_method_selector() moved to blank_wizard.c
	* commands.c: added blank_dispatcher(): selector of blanking function;
	command_blank_optical_disc() is rewritten and is almost ready to
	support blanking of DVDs
	* commands.h: removed cdw_media_erasable_t


2008-03-19 Kamil Ignacak:
	* commands.c: write_wizard now is given second parameter - naming of
	this parameter (ui_command) is more consistent in all files
	* write_wizard.*: write_wizard() now accepts second argument: ID of
	main menu item (ui_command - command to be performed) and builds
	fields depending on value of this variable - this way we can have
	wizard for both writing files and writing image. In the second case
	mode field now shows 'not applicable' string;
	mode_dropdown_labels_build() now build labels for writing image to
	CD too ('not applicable' it is just one item on mode dropdown when
	writing image to CD)
2008-03-18 Kamil Ignacak
	* cdw_widgets.*: added some comments and checks to dropdown functions,
	added dropdown->current_item_ind and code supporting it - the variable
	remembers current position on dropdown and allows to preset an item
	when creating dropdown
	* commands.c: just added one comment
	* write_wizard.c: added some comments, added code for handling current
	position on dropdown; strings in mode_dropdown_labels_build() enabled
	for localization
	* cdw_cdio.*: added code that supress warning messages printed by
	libcdio when trying to read metainfo from blank cd; added
	'bool disc.blank' variable


2008-03-17 Kamil Ignacak:
	* cdw_widgets.*: cdw_dropdown is now a real widget with constructor,
	destructor and its own data structure; cdw_dropdown() ->
	new_cdw_dropdown(); new functions related to dropdown
	* write_wizard.c: using new dropdown widget in wizard code; moved
	'Help' button - it will be used to show help for whole wizard;
2008-03-16 Kamil Ignacak:
	* log.c: removed unnecessary #include
	* dvd_rw_mediainfo_pipe_regexp.c: added support for current_disc
	variable; in particular	handle_disc_status() now sets
	cd_dvd_disc_status in current_disc struct;
	other small changes;
	* dvd_rw_mediainfo_pipe_regexp.*:
	run_command_dvd_rw_mediainfo_get_dvd_info() ->
	run_command_dvd_rw_mediainfo()
	* dvd_rw_mediainfo_pipe_regexp.h: added last empty line that was missing
	* options.*: added variable storing information about disc currently
	in drive: current_disc_t current_disc; moved some fields from struct
	conf config to current_disc; added current_disc_t type;
	* cdrecord_interface.*: run_command_cdrecord_get_cd_info() ->
	run_command_cdrecord_atip(); added run_command_cdrecord_msinfo()
	* pipe_regexp.c: added COMMAND_CDRECORD_MSINFO to dispatcher code
	* commands.c: removed unnecessary includes; command_write_to_opt_disc():
	added checking some preconditions for writing; added support for
	current_disc variable; other minor changes
	* commands.h: added COMMAND_CDRECORD_MSINFO to current_command
	* write_wizard.*: added some comments; implemented support for
	current_disc variable - this changes prototypes of some functions;
	writer_wizard() -> write_wizard(); writer_field_wizard_driver() ->
	write_wizard_field_driver();
	in general reading disc information was moved to place before calling
	write_wizard() so that wizard has all the necessary information and
	don't have to call any functions to read the information from disc -
	everything should be in current_disc variable
	* cdw_cdio.*: added cdw_cdio_read_current_disc_info() - it opens disc,
	reads all metainformation, writes it to cdio disc variable and closes
	disc - this way we have all information about disc gathered by cdio.
	* cdrecord_pipe_regexp.c: added support for current_disc variable
	added code that reads information about disc status from
	cdrecord -msinfo - information about sessions on CD - handlers set
	current_disc.cd_dvd_disc_status variable

2008-03-13 Kamil Ignacak:
	* cdw_cdio.c: some debugging: some functions must not be called
	when disc is blank - I have modified cdw_cdio_disc_open() a bit,
	more changes needed; now CDIO_DISC_MODE_DVD_OTHER is also recognized
	as DVD - cdio somehow fails to do this
	* commands.c: more cleaning: removed one unnecessary wrapper,
	removed some unnecessary function calls
	* dvd_rw_mediainfo_pipe_regexp.c: handle_disc_status() now stores
	result in config variable;
	* options.h: added field 'char dvd_disc_status[]' to struct conf config;
	it stores string captured in
	dvd_rw_mediainfo_pipe_regexp.c:handle_disc_status()
	* write_wizard.c: added mode_dropdown_get_disc_status(): write wizard
	now recognizes state of DVD disc and now can build 'real' list of
	write modes for DVD; mode_dropdown_get_disc_status() currently works
	now only for DVDs

2008-03-12 Kamil Ignacak:
	* main.c commands.c: general cleanup of main(), and cdw_main_loop() in
	particular: many lines of wrapper code moved from cdw_main_loop() to
	new functions in commands.c; names of some functions is changed (added
	prefix 'command_') to mark them as defined in commands.c; this gives
	us cleaner main.c and clearer picture of what commands.c does (defines
	many functions called directly from main cdw UI) and main.c (calls
	these functions); hopefully this will give more layered and/or
	modularized code ;)
	also changed some comments, removed unnecessary code and #includes

2008-03-11 Kamil Ignacak:
	* commands.c: universal_write_wrapper() now calls
	run_command_cdrecord_get_cd_info() OR
	run_command_dvd_rw_mediainfo_get_dvd_info(), depending on disc type
	currently in drive
	* commands.h: added COMMAND_DVD_RW_MEDIAINFO as value of
	cdw_current_command_t
	* options.h: added dvd_write_speed_0 and dvd_write_speed_1 as fields of
	struct conf config
	* pipe_regexp.c: added support for dvd+rw-mediainfo code
	* processwin.h: added ncurses header, so now bool is defined
	* write_wizard.c: changed declaration of speed_dropdown_labels_build()
	speed_dropdown_labels_build() now calculates limit values of speeds
	for both CD and DVD;
	mode_dropdown_labels[] converted to dynamically allocated list,
	constructed by mode_dropdown_labels_build(); general labels list
	destructor is now x_dropdown_labels_destroy): generalized
	speed_dropdown_labels_destroy() function;
	code calculation lower_speed_limit and upper_speed_limit is moved to
	speed_dropdown_calculate_speed_limits();
	added mode_dropdown_labels_build() function;
	cdw_dropdown() moved to cdw_widgets.c
	* dvd_rw_mediainfo_interface.*: new files with code preparing call to
	dvd+rw-mediainfo
	* dvd_rw_mediainfo_pipe_regexp.*: new files with code parsing output
	of dvd+rw-mediainfo
	* cdw_widgets.*: cdw_dropdown() moved from writer_wizard.c

2008-03-08 Kamil Ignacak:
	* cdrecord_interface.c: run_command_cdrecord_get_cd_info() now sets
	current_command_variable and calls cdrecord with 'be more verbose'
	argument - this helps to catch information about allowed writing speeds
	* cdrecord_pipe_regexp.c: added code
	(including handle_device_or_resource_busy()
	and handle_drive_default_speed()) for catching writing speeds printed
	to stdout by cdrecord when atip command is issued;
	added code for catching 1T and 2T writing speeds from
	'cdrecord -atip' output, this includes handle_t1_speed() and
	handle_t2_speed(); some cleaning up in previously added functions
	* commands.c: added call to run_command_cdrecord_get_cd_info() in
	universal_write_wrapper() to get writing speeds supported by disc and
	drive;
	putting run_command_cdrecord_get_cd_info() in right place
	* commands.h: added COMMAND_CDRECORD_ATIP as a value of
	current_command_t
	* options.h: added drive_max_speed and drive_default_speed as fields
	of 'struct conf' type;
	new fields in struct conf structure: cd_drive_t[1-2]_*_speed
	* pipe_regexp.c: added COMMAND_CDRECORD_ATIP to 'if' conditions
	* utils.*: added my_itoa2()
	* write_wizard.c: speed_dropdown_labels[] is now dynamically created,
	but for now only from dummy values; speed_dropdown_labels_build() and
	speed_dropdown_labels_destroy() are added;
	speed_dropdown_labels_build() now builds labels from real values: it
	works pretty well for CDs, but it may take some more testing and work
	for DVD

2008-03-02 Kamil Ignacak:
	* cdw_ui.*: write wizard code moved to new file: write_wizard.*
	* commands.c: small improvement in universal_write_wrapper(): value
	returned by writer_wizard() is now checked and acted upon
	* write_wizard.*: new file with write wizard moved from cdw_ui.*;
	changed details of window: input fields now act as dropdown lists with
	predefined values, currently the values are just some placeholders;
	writer_wizard_mode_menu() -> cdw_dropdown(), the function is now more
	universal, because now it accepts list of labels and construct menu
	based on the list; the function now returns label index; added some
	comments; code building wizard is cleaner; input fields now react on
	Enter too

2008-03-01 Kamil Ignacak:
	* cdw_ui.c: further developing write wizard: added two FIELD fields
	for writing speed and mode; the fields and buttons are now handled by
	separate function writer_wizard_driver(); the fields themselves have
	also separate driver: writer_field_wizard_driver(); added some
	variables (layout constraints) to aviod magic numbers in wizard code;
	'Preferences' button now works and calls Preferences window

2008-02-29 Kamil Ignacak:
	* commands.c: temporarily commented out two function calls and added
	call of writer_wizard()
	* cdw_widgets.*: added new widget: CDW_BUTTON - an ordinary button;
	currently it is used only in writer_wizard(), but most probably will
	be used in other places as well
	* cdw_ui.*: added new function: writer_wizard(), a simple window that
	will show disc type, selected speed and mode and will allow to modify
	the two values and also jump directly to preferences window

2008-02-28 Kamil Ignacak:
	* thread.c: removing source of compiler warnings:  missing formatting
	string in fprintf() call
	* options.c: removing source of compiler warnings: shadowing variables
	* log.c: removing source of compiler warnings: missing 'default' case
	in switch() statement
	* isosize.h: removing source of compiler warnings: missing newline at
	end of file
	* growisofs_interface.c: removing source of compiler warnings:
	shadowing variable
	* commands.c: cdw_cdio_read_write_tracks_from_disc() has changed
	prototype - applying change in function call
	* cdw_widgets.c: removing source of compiler warnings: missing
	'default' case in switch() statement
	* cdw_ui.c: removing source of compiler warnings: missing 'default'
	case in switch() statement
	* cdw_cdio.h: modified prototypes of two functions
	* cdw_cdio.c: removing source of compiler warnings: shadowing 'disc'
	variable; this caused a series of changes in whole file and in
	prototypes of some functions
	* cdrom_ctrl.*: eject_tray() and close_tray() revised
	* cdda2wav.c: cdw_cdio_read_write_sectors_from_track() has changed
	prototype - applying change in function call

2008-02-27 Kamil Ignacak:
	* cdw_cdio.c: cdw_cdio_disc_open() doesn't decide which disc is
	supported anymore, it only opens disc and gets some metadata; the
	decision is now made by new function
	cdw_cdio_disc_supported_for_cdw_ripping();
	* cdw_cdio.h: new data type cdw_coarse_disc_type_t helps to decide
	which tools should be used with given disc
	* cdw_ui.h: enum menu_items datatype extended
	* mkisofs_interface.c: removed shadowing of variables
	* cdda2wav.c: cdw_cdio_disc_supported_for_cdw_ripping() in use
	* main.c: added (currently hidden) hotkeys: 'i' and 'f' that control
	new function defined in commands.c; code for ejecting tray is moved to
	separate function, the function is moved to commands.c; some wrapper
	functions moved to commands.c - main.c is now cleaner
	* commands.c: new function: writer_dispatcher() that calls
	run_command_() functions that call cdrecord or growisofs; the function
	is called by universal_write_wrapper() - a function that will be a
	replacement for write_files_wrapper(); some comments added, other
	minor changes
	* commands.h: added prototypes of new functions and functions moved
	from main.c
	* *.c, *.h: making custom types' names more consistent

2008-02-24 Kamil Ignacak:
	* pipe_regexp.c, *_pipe_regexp.c: cleaning things up: adding and
	removing some comments, removing unused variables, changing order of
	some instructions

2008-02-23 Kamil Ignacak:
	* cdrecord_interface.*: - new files with some cdrecord-related code
	moved from commands.*; run_command_cdrecord_write_from_image()
	redefined; code preparing command for writing data with CDRECORD now
	moved to one function: prep_command_cdrecord_write(), it is more
	universal and perhaps easier to maintain
	* commands.*: code related to CDRECORD now moved to cdrecord_interface.*
	* main.c: results of some run_command* function name changes
	* cdrecord_pipe_regexp.*: new file with cdrecord-related code from
	pipe_regexp.c
	* mkisofs_pipe_regexp.*: new file with mkisofs-related code from
	pipe_regexp.c
	* growisofs_pipe_regexp.c: removing regcomp_error_handler() - there is
	now one function in pipe_regexp.c, that's common for all *_pipe_regexp.c
	files
	* pipe_regexp.*: lots of code moved to new files: cdrecord_pipe_regexp.*
	and mkisofs_pipe_regexp.*; now most of code in pipe_regexp.c is a
	dispatcher code, and two utility functions, referenced by all
	_pipe_regexp.c files
	* *_interface.c, commands.h: improved naming scheme of current_command
	values: name of external tool is now part of some names (like
	COMMAND_MKISOFS_CREATE_IMAGE)

2008-02-21 Kamil Ignacak:
	* mkisofs_interface.c: some changes in get_multisession_tracks() and
	prep_command_mkisofs(): fixed some obvious errors, added comments,
	modified some code; I managed to convert one fixed-size string o
	malloced() string.

2008-02-20 Kamil Ignacak:
	* log.c: fixing bug that caused cdw to crash when log was viewed more
	than once (one variable was iterated too much); the iterator is now
	initialized in proper place
	* mkisofs_interface.*: prep_command_mkisofs_options_only() ->
	prep_command_mkisofs(); fixes and simplification in
	prep_command_mkisofs(); using prep_command_mkisofs() in
	run_command_create_image()

2008-02-19 Kamil Ignacak:
	* mkisofs_interface.c, mkisofs_interface.h: new files with code
	preparing calls for mkisofs, creating processwin and calling mkisofs
	via run_command(); the code is old, moved from commands.c, but also
	there is new function prep_command_mkisofs_options_only() which
	probably will replace prepare_createiso_command()
	* commands.*: mkisofs-related code moved to mkisofs_interface.*
	* main.c: main.c now includes mkisofs_interface.c

2008-02-17 Kamil Ignacak:
	* main.c: added function which calls
	run_command_growisofs_write_iso_image() - you can access it pressing
	'd' or 'D' in main app window. This is just a temporary solution, so I
	have a way to run growisofs code. It will be improved in future.
	* pipe_regexp.c: added code for calling growisofs-related functions
	based on value of current_command variable. Some functions from
	pipe_regexp.c will become pure dispatchers in future. Also added come
	comments and updated function prototypes.
	* processwin.c: fixed one comment and added a bit of code in
	processwin_display_progress() erasing one line in processwin before
	writing in the line - this makes sure that there will be no leftovers
	from previous calls to processwin_display_progress()
	* growisofs_pipe_regexp.h, growisofs_pipe_regexp.c: new files with
	code processing output of growisofs and displaying results in
	processwin. Similar code (for cdrecord and mkisofs) is available in
	pipe_regexp.c, but I decided to move the code related to growisofs to
	separate code. In future I will move code related to mkisofs and
	cdrecord from pipe_regexp.c to separate files. What will be left in
	pipe_regexp.c is just a dispatching code and some comments explaining
	ways that things work.

2008-02-16 Kamil Ignacak:
	* growisofs_interface.*: added run_command_growisofs_write_direct();
	some other (small) changes
	* commands.h: added COMMAND_GROWISOFS_WRITE_DIRECT to
	current_command_t type definition
	* (autotools files): now using AC_DEFINE instead of AC_PATH_PROG to
	define paths to cdrecord, growisofs, mkisofs; a person compiling cdw
	doesn't have to have the programs installed, but he has to enter
	default paths (on target system) to the programs himself
	* *.c, *.h: some #include directives were commented out, some moved to
	other files, and some reordered

2008-02-14 Kamil Ignacak:
	* growisofs_interface.*: basics of code for calling growisofs in
	command line (with some parameters) - initial commit

2008-02-12 Kamil Ignacak:
	* *.c, *.h: changes in preprocessor code (changed #include directives)
	that will make the code compile on my AMDx64 box. I haven't
	investigated differences in software part of my x64 platform, but I
	did tested changed code on my old i386 machine - it worked without
	changes.
	* log.c: removing one hard-wired string (used for debugging purposes)
	with proper variable - reference to function's argument

2008-02-11 Kamil Ignacak:
	* utils.c: new functions: check_mounted_device() (simple interface to
	/etc/mtab) and disc_ready_for_write() - wrapper for calls to
	disc_in_drive() and check_mounted_device()
	* main.c: using display_file() from log.c and disc_ready_for_write()
	* log.c: file content revisited and commented; void log_window() is
	now cdw_rv_t display_file(); some improvements, some changes, added
	comments.

2008-02-05 Kamil Ignacak:
	* cdw_ui.c: small clarification: minimal terminal size should
	be 80x25
	* options.*: preferences window is now larger, added two new
	fields to struct conf config: other_cdrecord_options (which will
	replace 'other') and other_mkisofs_options - brand new option; rebuilt
	first tab of options window: now user can see two wide fields for
	additional options for 'cdrecord' and 'mkisofs', the fields are
	clearly described
	* *.c: results of using other_cdrecord_options in place of 'other'

2008-02-03 Kamil Ignacak:
	* cdw_file_manager.c, cdw_widgets.c: moving code that truncates
	bottom string in file manager window to nice_box(); this removes
	one FIXME and one TODO

2008-01-31 Kamil Ignacak:
	* cdw_cdio.*: proofreading of cdw_cdio.*: two FIXMEs removed, some
	comments modified, small changes in code

2008-01-29 Kamil Ignacak:
	* processwin.c: some tiny changes, removed one FIXME, added comments,
	general checking of code

2008-01-27 Kamil Ignacak:
	* cdw_ui.c: bool open_target_image_file() is now more universal
	cdw_rv_t cdw_open_file(); code checking errno is now moved to separate
	function in utils.c; some other small changes and some comments added
	* utils.c: new function open_errno_handler() with code moved from
	cdw_ui.c; modified code in is_valid_path() - checking file permissions
	is more accurate;
	* commands.c: results of changing open_target_image_file() to
	cdw_open_file()
	* cdw_widgets.c: small change in function comment
	* main.c: one FIXME removed

2008-01-23 Kamil Ignacak:
	* *.c: removed 3 FIXMEs
2008-01-22 Kamil Ignacak:
	* *.c. unused_code.see: moving unused code from src/*.c files to
	src/unused_code.see
2008-01-20 Kamil Ignacak:
	* cdw_file_manager.c, cdw_ui.c, cdw_tmp_files.c, commands.c: removed
	unnecessary calls to filelist_to_file(), added checking of return
	values of filelist_to_file(), added some comments to
	filelist_to_file(); filelist_to_file() should be called only when
	needed, that is just before writing selected files to disc or image;
	removing two FIXMEs
	* main.c, cdrom_ctrl.c: small changes in cdrom_status(); added some
	checking return values of cdrom_status() in main and improved checking
	return value of cdrom_status() in disc_in_drive(); removed some
	FIXMEs, added dialogs

2008-01-19 Kamil Ignacak:
	* options.c: small changes, mainly introducing cdw_rv_t
	* cdw_file_manager.*: adding cdw_file_manager_init() and
	cdw_file_manager_clean(), which set and clean initial_path: a variable
	that initially stores $HOME dir, and later (after first call to
	addwin_show()) a path to directory that was browsed as a last one. The
	changes allow to remove two FIXMEs; initial_path -> initial_dirpath;
	initial_dirpath is now used in more places, replacing dirpath; changes
	in addwin_driver_loop() make some things easier and clearer; adding
	comment to addwin_driver_loop(); removing one FIXME by adding dialog
	box;
	* cdw_ui.c: small changes in code of dialogbox() and change of type of
	values returned by dialogbox() - this will make things more
	consistent; removing two FIXMEs, I think that these two things were
	already fixed; adding some comments to dialogbox()
	* main.c: adding calls of cdw_file_manager_init() and
	cdw_file_manager_clean()
	* *.c: changing code around calls to new version of dialogbox()

2008-01-17 Kamil Ignacak:
	* cdw_file_manager.c: improving and refactoring fill_filelist(), some
	comments added/modified

2008-01-16 Kamil Ignacak:
	* utils.c: replacing 'struct stat *finfo' with 'struct stat finfo'
	simplifies parts of code; is_valid_path() now has only 3 arguments and
	does not store information about file in 'struct stat finfo' argument
	- this functionality was rarely used, now the function does only what
	it's name says; changing order of parameters to get_valid_path() - now
	it is mode consistent with other function declarations;
	* cdda2wav.c: changes are a result of new get_valid_path() prototype;
	* cdw_file_manager.c: some magic numbers replaced with symbolic names;
	addwin_display_item() now knows how to display file of unsupported
	type; rebuilding fill_filelist(): rewritting loops, checking return
	values, adding comments; addwin_driver_loop() now can handle files of
	unsupported type

2008-01-15 Kamil Ignacak:
	* utils.c: getting rid of two mallocs by using & operator to 'struct
	stat info' variable - code of get_home_dir() and get_tmp_dir() is now
	cleaner; added ending dir path with slash in get_tmp_dir(); some tests
	done; one FIXME less

2008-01-14 Kamil Ignacak:
	* cdw_file_manager.c: there was a bug in file manager: directories
	with only one entry were displayed as empty -  this is now fixed;
	redundant variable maxfiles was replaced by related variable
	n_direntries, some code needed to be updated
	* utils.c: ltrim() and rtrim() is now commented; I've copied another
	implementation of concat() to utils.c, it is a bit clearer to me and
	simpler. It comes from gcc code, it is GPL v2 or later code.

2008-01-13 Kamil Ignacak:
	* cdw_widgets.c: one_line_input(): entered string is now handled more
	strictly, both methods of returning string are improved and tested
	* cdda2wav.c: one magic number less; one fixed-size string (char
	*full_name) is now dynamically malloced;

2008-01-12 Kamil Ignacak:
	* cdw_ui.c: size_selector() -> media_size_selector();
	media_size_selector() now returns value; return value from
	one_line_input() is now checked more carefully
	* cdw_widgets.c: input_passwd() is removed, inputbox() should be used
	instead (one FIXME less); one_line_input() now can validate numerical
	data; some return values checking in one_line_input(); some checking
	of return values in inputbox(); added call to form driver with
	REQ_VALIDATION - this saves changes in buffer before copying entered
	string to output variable
	* cddb.c: replacing input_passwd() with inputbox()
	* options.c: modified comments, modified copyright notice; fixing
	saving preferences when closing cdw
	* main.c: checking media_size_selector() return value, adding FIXME,
	removing FIXME
	* *.c: fixing calls to inbox()

2008-01-11 Kamil Ignacak:
	* cdw_widgets.c: inbox() -> one_line_input() with modified parameters
	list; updated copyright note; added and updated comments
	* main.h, cdw_widgets.h: moving RESULT_IN_PLACE from main.h to
	cdw_widgets.h
	* *.c: update with new one_line_input() and/or update copyright note

2008-01-10 Kamil Ignacak:
	* options.c: commenting out one read_conf() - now changes in
	configuration made before opening preferences window aren't erased
	* cdw_widgets.*: redefining inbox() (using curses forms) and
	input_box() (using new inbox()); lots of polishing of code still
	ahead, but at least now I'm not redefining part of curses
	functionality anymore
	* *.*: using new inbox() and input_box() in some places

2008-01-09 Kamil Ignacak:
	* utils.c: added some comments; checking one more return value;
	removed one more FIXME
	* cdw_ui.c: now freeing some subwins; some comments added, one FIXME
	removed
	* cdw_widgets.c: refactoring and commenting inbox() and input_passwd()

2008-01-08 Kamil Ignacak:
	* utils.c, utils.h: modifying one(), adding two(); clearing code
	handling getenv("HOME");
	* cdw_file_manager(): clearing code reading content of dir; removing
	one fixme: according to ncurses help, before deleting given window all
	it's subwindows should be deleted first. That probably means lots of
	changes in program code.

2008-01-07 Kamil Ignacak:
	* *c., *.h: some FIXMEs removed

2008-01-06 Kamil Ignacak:
	* cdw_ui.c, cdw_tmp_files.c: filetable was moved from cdw_ui.c to
	cdw_tmp_files.c - there is a possibility of replacing filetable and
	filelist with one data structure and one code for it; some comments
	added in cdw_tmp_files.c;
	moving some code from select_window() to cdmenu_regenerate()
	* cdw_file_manager.c: using cdmenu_regenerate() and other functions to
	update size of selected files; dir filepaths added by user now end
	with '/'
	* cdw_tmp_files.c: removed two fixed-size tables by rewritting
	grafting code and using concat()

2008-01-05 Kamil Ignacak:
	* cdw_ui.*: code related to addwin now moved to cdw_file_manager.*
	* cdw_file_manager.*: new file with code from cdw_ui.* (code for
	addwin); some refactorization of the code; some FIXMEs are now solved;
	some comments added/changed

2008-01-01 Kamil Ignacak:
	* cdw_ui.*: some variables are no longer global in file. This required
	change of some function prototypes.
	addwin_highlight_item() is now addwin_display_item(), it now displays
	both file name and type ('DIR' or size, depending on file type).
	Changes in addwin_display_size() allowed to replace some repeating
	code with single call of this function.
	More comments, more FIXMEs.

2007-12-31 Kamil Ignacak:
	* cdw_ui.*: plenty of changes: many functions changed their name, like
	highlight() -> addwin_highlight_item() and so on, function names are
	now more consistent and clear. parts of code were extracted or moved
	to selected_files_infoarea_*() functions. This solved problem of
	updating the infoarea in two places (with different colors).
	Declaration of load_dir() was moved from utils.h to cdw_ui.h, and
	load_dir() now became addwin_load_dir(). Some variables global in this
	file are no longer global. This required changing some function
	prototypes.
	Unused code was removed from file.
	Some comments added and modified.
	addwin window is a bit broken now, items are displayed with wrong
	colors.
	I had to introduce some casting of types to get correct behaviour when
	displaying or doing calculations with int and double float variables.
	* options.c: moving back from CDW_CANCEL to CDW_ESCAPE, because
	CDW_CANCEL caused some troubles
	* *.c: changes resulting from changes in cdw_ui.*

2007-12-30 Kamil Ignacak:
	* main.c: some refactoring and extracting code to wrapper functions
	* cdw_ui.c: void put_addwin(int width, int height, int y, int x) now
	became void selected_files_add(void); I added some comments to
	selected_files_add() and replaced some string function calls with
	concat()/append(). There are now two strings of fixed size less than
	before. delete_files() is now selected_files_delete().
	* cdw_tmp_files.*: added and modified some comments, changed one
	function prototype
	* *.c: some changes as a result of changes in main.c and cdw_ui.c, as
	well as introducing cdw_rv_t in some places

2007-12-29 Kamil Ignacak:
	* main.c: small fixes; ejecting disc after writing should now work
	correctly (before this change tray was opened, closed and again opened
	if user selected 'eject' option as checked.)
	* *.c, *.h: unifying some return values to cdw_rv_t type, changing
	CDW_ENTER and CDW_ESCAPE to CDW_OK and CDW_CANCEL where needed

2007-12-27 Kamil Ignacak:
	* utils.c: new function: append(), uses concat() to append sth to
	given string
	* options.c: using concat() to replace some strncpy()s
	* commands.c: using concat() and append() to replace some strncpy()s
	and to remove char string of fixed width in test function
	run_command_write_from_image2()

2007-12-12 Kamil Ignacak:
	* man/cdw.man.docbook, man/man.1: docbook file is now more
	standard-compliant; small fixes
	* po/cdw.pot, po/POFILES.in: prepared files for new release
	* src/pipe_regexp.c: enabled one string for xgettext
	* src/cdda2wav.c: disabling cdda2wav.c - the code is not supported
	for some time now now

2007-12-12 Kamil Ignacak:
	* *.c: some typos
	* man/cdw.man.docbook, man/man.1: added one bug, fixed typos
	* NEWS: preparing file for final release: updating with information
	about changes in project since last release and about fixed bugs

2007-12-10 Kamil Ignacak:
	* main.c: fixed a condition to avoid unwanted reloading of media
	* thread.c: now all external commands are run with LC_ALL=C, so
	regexp patterns don't have to be localized
	* processwin.c: now wgetch() _really_ waits for input in processwin,
	without timeouts
	* cdw_ui.c: fixed bugs in blanking method selector: first was that
	after selecting method and quitting from the window new selection was
	saved, and it should not be saved. Second bug was that in some
	situations (maybe even always) a selection in this window was not
	saved.

2007-12-09 Kamil Ignacak:
	* *.c: modified some xgettext comments
	* cdw_ui.c: available space usage bar now works correctly (with
	colors!)
	* man/cdw.man.docbook: some preferences items explained, small fixes
	in Description section, changed information in Authors section

2007-12-08 Kamil Ignacak:
	* man/cdw.1, man/cdw.man.docbook: expanded 'BUGS' section
	* cdw_ui.c: fixed some bugs in main application window (related to
	displaying information about space used by selected files and
	related to displaying list of selected files when deleting the from
	list); CD size selection window now reacts correctly on arrow keys:
	it does nothing when the keys are used; info added at the top of the
	window; information in usage area is now updated after changing size
	of disc in CD size selector window
	* *.c: modified some xgettext comments

2007-12-06 Kamil Ignacak:
	* cdw_ui.c: some changes in subwindows layout, so now cdw uses all
	lines and columns of console
	* *.c. man/cdw.man.docbook: changed menu item from 'Options' to
	'Preferences'

2007-12-05 Kamil Ignacak:
	* man/cdw.man.docbook: added some content, reformatted

2007-12-04 Kamil Ignacak:
	* cdda2wav.c: uncommenting definition of msg[] - should fix bug
	1841923 (build error with lame-support: 'msg' undeclared)

2007-12-02 Kamil Ignacak:
	* cdw_widgets.c: fixed one bug and removed magic numbers in buttons
	placement code in dialog window: now positions of buttons are
	calculated based on their length. It will help to avoid problems with
	translated button labels.
	* doc/README, man/cdw.man.docbook: updated and extended

2007-12-01 Kamil Ignacak:
	* *.c: more xgettext comments for translators

2007-11-27 Kamil Ignacak
	* utils.c, commands.c, main.c: added some xgettext comments for
	translators

2007-11-25 Kamil Ignacak
	* cdw_cdio.*, cdda2wav.c: error when reading bad audio track was not
	propagated to higher level code. It is now fixed.
	* utils.c, commands.c: added some xgettext comments for translators

2007-11-22 Kamil Ignacak
	* *.c: cursor is now shown only if needed;

2007-11-18 Kamil Ignacak
	* *.c: commented out more fprintf(stderr, "") calls; some testing

2007-11-11 Kamil Ignacak
	* cdw_cdio.*: added disc type *MIXED, and workaround for libcdio
	'feature' when 'mixed' disc is recognized as 'data' (because libcdio
	uses mmc call as primary source of such information and mmc call seem
	to not return information about 'mixed' mode, and ioctl() does).
	Commented out fprintf(stderr, ...) calls.
	* commands.c: fixed one message string
	* *c: code and messages around amount line in process window are now
	more consistent

2007-10-28 Kamil Ignacak
	* cdda2wav.c: poor_man_cdda2wav() added: it only rips audio tracks to
	raw files. The function uses cdio lib and existing code for copying
	data discs, so it was very 'cheap' to add this function.
	poor_man_cdda2wav() now uses get_valid_path()
	* cdw_cdio.c: more changes in code. Lots of unclear changes, because I
	was trying to force cdw to copy multisession discs, which may be very
	hard at this point. Single-session discs should be copied without
	problems.
	* main.c, cdw_ui.c: ripping audio cd is now available via left-hand
	menu and 'G' hotkey.
	* help.c: added tooltips for ripping audio, help panel also shows 'G'
	hotkey
	* processwin.c: added processwin_refresh();
	* *.c: removing some compiler complaints (mainly C++-style comments *)
	* utils.c: defined get_valid_path() and changed is_valid_path(): now
	I have two good functions that will be used to ask user for path; I
	just need to add creating new directory if it doesn't already exist

2007-10-24 Kamil Ignacak
	* commands.c: removed ugly bug that made it impossible to write second
	and next session; the bug was that I used '&' instead of '&&' in
	logical test :(

2007-10-17 Kamil Ignacak
	* cdw_ui.c, processwin.c: code related to processwin moved from
	cdw_ui.c to new file (it is over 300 lines)
	* processwin.c: progress bar is now updated only if percentage value
	has changed - this saves us a bit of ncurses refreshing
	(conditional_processwin_display_progress())
	* *.c: some changes in comments

2007-10-06 Kamil Ignacak
	* options.c: removed one memory corruption occurring when fields in
	form are deallocated _after_ form was deallocated.
	* pipe_regexp.c: new handler was added:
	handle_device_or_resource_busy, but the message is still displayed for
	too short period of time. Maybe I will have to rethink processwindow
	again.
	* *.c: added or refined comments

2007-10-04 Kamil Ignacak
	* cdw_ui.c: open_target_image_file() added. It is ugly function for
	checking if given location of image file is valid and writable. The
	function is used in creating image from file and in copying disc to
	image. Did I mention that it is ugly?
	* commands.c: some changes as a result of creating and
	open_target_image_file()

2007-10-02 Kamil Ignacak
	* commands.c, cdw_cdio.[ch]: cdw_cdio_* functions moved from
	commands.c to cdw_cdio.c file. Some comments added and polished. Fixed
	one small bug that caused cdw to stop copying disc to iso file after
	first track.

2007-09-30 Kamil Ignacak
	* commands.c, cdw_cdio.[ch]: mysteries of Orange Books are now a bit
	less mysterious :) if mmc commands are supported by cdrom drive, then
	it is fairly easy to check data size in sector (this is done in
	cdw_get_track_format_with_cdio_mmc() and cdw_cdio_recognize_track()),
	and use this information when reading  and writing CD data sector
	after sector

2007-09-28 Kamil Ignacak
	* commands.c, cdw_cdio.h: abstracting, refactoring, rebuilding and
	hacking code related to recognition of cd type and reading tracks

2007-09-27 Kamil Ignacak
	* commands.c: trying to rewrite copy_disc_to_image() in some clean
	manner; part of code moved to helper function (read_sectors()); things
	start to get messy

2007-09-26 Kamil Ignacak
	* commands.c: changes in code copying cd to image: trying to extend
	code to read various types of discs

2007-09-24 Kamil Ignacak
	* commands.c, main.h: small tweaks, comments

2007-09-20 Kamil Ignacak
	* options.c: fixed one bug (in second page builder) which caused
	application to crash when switching from second page to first or
	closing options window while being in second page; the problem was
	that input fields were too wide

2007-09-16 Kamil Ignacak
	* thread.c, pipe_regexp.c: further separation of code; removed some
	global variables
	* commands.*: introduced enum current_command_t current_command, it
	should help to decide which handler to call

2007-09-15 Kamil Ignacak
	* thread.c, cdw_ui.c. commands.c: changes around processwin:
	finalizing redefinition of handle_* functions;
	* pipe_regexp.c: new file with code from thread.c that deals with
	regular expressions.
	* thread.c: now this file contains only stripped versions of
	print_stdout(), print_stderr() and run_command() the only functions
	related with threading code.
	* options.c: fixed small bug introduced after switching to -lncursesw

2007-09-14 Kamil Ignacak
	* thread.c, cdw_ui.c. commands.c: changes around processwin: new set
	of processwin_* functions, hopefully will not be extended.
	* c.*: removing warnings related to '-Wall --pedantic'

2007-09-13 Kamil Ignacak
	* thread.c, cdw_ui.c. commands.c: changes around processwin and
	handle_* functions
	* thread.c: changed run_command() prototype - removed one parameter,
	changed type of two parameters to bool, changed order of parameters
	* *.c: changes resulting from change of run_command() prototype

2007-09-11 Kamil Ignacak
	* thread.c, cdw_ui.c. commands.c: changes around processwin and
	handle_* functions - there is a light in the tunnel :)

2007-09-11 Kamil Ignacak
	* thread.c: figuring out how data from socket is processed and
	analyzed; comment at top of file is expanded

2007-09-10 Kamil Ignacak
	* thread.c, cdw_ui.c. commands.c: changes around processwin, lot of
	changes, e.g. defining constants for layout, trying to move similar
	bits of code used in various handle_* function into wrapper functions.

2007-09-09 Kamil Ignacak (for a second time today)
	* *.c: introduced UI_* enums instead of magic numbers (not quite sure
	how and where to use them :)
	* cdw_ui.c, cdw_widgets.c, thread.c, commands.c main.c: restoring of
	copy-cd-to-image-file-on-disc started. This resulted in moving some
	functions between cdw_ui.c, cdw_widgets.c, thread.c and commands.c. I
	should make some cleanup of thread.c to make sure that only
	thread-related code residents in this file (as the name suggests).
	Additionally code around process window (including progress bar) is
	under reconstruction (a bit of refactorization).
	* cdw_cdio.c: introduced file with functions reading information and
	meta-information form optical disc. This file depends on libcdio, so
	cdw will have new dependency in place of gtk, but given that libcdio
	aims to be a standard cross-platform library for reading discs, I
	think that this is a good move.
	* *.c

2007-09-09 Kamil Ignacak
	* build system: cdw now uses configure.ac instead of (obsolete)
	configure.in; 'bootstrap' file is removed, if you want to regenerate
	build files you should use autoreconf(1) now;
	I introduced this changes because of autotools complaining about
	macros in config* files. I learned that configure.in is now obsolete,
	and I have rewritten configure.ac and Makefile.am(s) from scratch.
	C compiler will now use -Wall flag by default.
	* src/*: gtk-related files are removed, cdw is now ncurses-only. This
	change was announced months (?) ago; 'pixmaps' directory also goes
	away
	* cdw_widgets.c, options.c: put_ckbox() moved to cdw_widgets.c

2007-08-26 Kamil Ignacak
	* main.c: small changes in code checking for volume label (new
	function conditional_volume_label_dialog()), added ejecting cd tray in
	one place;
	* cdw.pot: generated new pot file

2007-08-25 Kamil Ignacak
	* options.c: fixed small bug in line where value of blank method was
	saved;
	* commands.c: bits of code that checked for various things are now
	moved to main.c and executed before calling run_command_*()
	* commands.c. main.c: after_event() removed/added here and there
	* log.c: log_window() now cleans main window before returning

2007-08-21 Kamil Ignacak
	* options.c: 'other' option is now saved to config file
	* cdw_widgets.c: long label strings in input_box() don't erase window
	border anymore

2007-08-20 Kamil Ignacak
	* options.c, utils.c: improved selection of temporary base dir; fixed
	code checking dir permissions

2007-08-19 Kamil Ignacak
	* options.c: improved handling of wrong configuration file permissions
	* *.c: all printable/localizable strings are now available to xgettext
	for extraction

2007-08-15 Kamil Ignacak
	* options.c: small fixes: added moving between option fields with TAB
	key, removed one field from list of checkboxes (in toggling checkbox
	code), fixed field labels order on first page of options

2007-08-05 Kamil Ignacak
	* cdw_ui.c: fixed bug in scroll_addlist(): one index got larger than
	table size, which resulted in cdw crash. I have fixed a condition in
	for loop, and now it is OK.
	It turned out that there was some forgotten fragment of code
	responsible for managing PAGE_DOWN key in dir listing function
	put_addwin(). I have uncommented it and tested. Now it is OK.
	After these changes navigation in dir listing with PAGE_UP/PAGE_DOWN
	can be considered as 'reasonably good' :)

2007-07-28 Kamil Ignacak
	* cdw_widgets.c, *.c: modified dialogbox() declaration. Now title is
	first argument, and message is second. This is more consistent with
	other functions declaration, and more logical - title is displayed on
	top of window, message is below.

	* options.c: some changes in comments, small fixes in code building
	first page of options and in function copying configuration variable

2007-07-25 Kamil Ignacak
	* options.c: fix in write_config_file() causing application crash when
	writing cd size to file: cd size was int and was written to file as
	string (my own bug introduced during recent changes in options module)
	* utils.c: first version of my_itoa() inspired by based on K&R "The
	C Programming Language", and piece of gcc code.
	* *.c: unification of names of some functions


2007-07-22 Kamil Ignacak
	* main.c. options.c: options initialization code moved to one
	function: options_init();

	* options.c: write_current_configuration() and
	write_default_configuration() are now replaced by write_conf_file(),
	which takes another argument - struct conf configuration. Now there is
	only one function that writes directly to file.
	New function: init_default_config() - is a good (and only) place to
	define default cdw configuration.
	clean_options() renamed to options_clean().
2007-07-21 Kamil Ignacak
	* utils.c: function is_valid_path() replaces bits of code in
	get_home_dir() and get_tmp_dir()

2007-07-16 Kamil Ignacak
	* utils.c: check_fullpath_dir() replaced by is_valid_path();
	introduced concat() (form libc documentation, LGPL code).

2007-07-13 Kamil Ignacak
	* options.c. main.c, cdw_widgets.c: some more code to ensure that cdw
	starts with base dir and conf file paths set to valid values. User is
	now asked for base directory when $HOME dir is not found.

2007-07-13 Kamil Ignacak
	* options.c, main.c, cdw_widgets.c: first lines of code that fixes
	error situation when $HOME dir is invalid or non-existent; this error
	situation is related to Debian bug #324803 - although cdw no longer
	uses $HOME subdirectory to store files information, but "No return
	values are checked (unset $HOME for example and call cdw)," was still
	true.

2007-07-11 Kamil Ignacak
	* main.c: some comments added/modified
	* cdrom_ctrl.c: loop checking for cdw readiness behaves more sanely -
	it stops asking after pressing Cancel. Some dialog messages are more
	clear.

2007-07-09 Kamil Ignacak
	* cdw_ui.c: dialogbox() moved to cdw_widgets.
	* options.c: I am almost done with changes in options module. All is
	left for now is only comments, minor changes and testing/bugfixing.
	* *.c: more changes to satisfy -Wall and -pedantic gcc flags

2007-07-08 Kamil Ignacak
	* options.c: behaviour of options window (regarding saving changed
	options after pressing F_(10) or F(_1) or F(2)) is now more clear -
	options are saved in config variable only after pressing F_(10).
	Before that they are stored in temporary variable tmp_config.

2007-07-07 Kamil Ignacak
	* options.c: options finally split into two tabs: fist tab holds
	current session options, second tab holds hardware (and maybe in disk
	options, somehow). Third tab - CDDB - is a teaser and is currently
	inactive. There is now a general plan to modify options window code
	even more. Looks like this is going to be main change in next release.

	* *.c: some changes to satisfy -Wall and -pedantic gcc flags

2007-07-06 Kamil Ignacak
	* options.c: reorganization of options panel: first step; less magic
	numbers

2007-07-05 Kamil Ignacak
	* options.c: more comments, small changes in page_one(), some magic
	numbers converted to defined CONSTANTS; read_conf() and write_conf()
	now don't accept any arguments, since struct conf config is global
	anyway

2007-07-04 Kamil Ignacak
	* options.c: more changes in options file: some code moved to wrapper
	functions, some checks, new file-global variables

2007-07-03 Kamil Ignacak
	* options.c: removed some fixed-size buffers from read_conf();
	other small changes in read_conf()

2007-07-02 Kamil Ignacak
	* utils.c: get_home_directory() added - checks for some possible
	errors and if none occurred, returns path to user home dir;
	make_ncurses_printable_string() is now disabled
	* options.c: read_conf() prototype slightly modified - function takes
	config struct as an argument, returns status as int

2007-07-01 Kamil Ignacak
	* cdw_ui.c: size_selector() now behaves correctly - user defined
	size is loaded from config file, and asterisks display in correct
	places; move_radio_selection() is first step towards universal
	radio buttons widget
	* options.c: inbox(), inpass() and input_passwd() moved to new
	file (cdw_widgets); new option added: user_cdsize - it is displayed
	in cd size selector in text edit area - this value is now saved
	between cdw sessions
	* cdw_widgets.c: inbox() is slightly modified and commented - new
	argument (hash) allows using this function in place of inpass();
	inpass() is now superseded by modified inbox()

2007-06-26 Kamil Ignacak
	* cdw_ui.c: Page Up still works, Page Down works almost correctly,
	It turned out that there is a bug in scroll_addwinlist() or in
	put_addwin(), or both - it doesn't work correctly when cursor is
	almost at the end of dir listing
	* cdw: release of cdw 0.3.1

2007-06-24 Kamil Ignacak
	* cdw_ui.c: shift_addwinlist() renamed to scroll_addwinlist(),
	scroll_addwinlist() simplified, addwinlist window (file selector
	window) now accepts Page Up and Page Down keys

2007-06-22 Kamil Ignacak
	* Makefile, *.c: cdw now uses ncurses libraries with wide characters
	support

2007-06-20 Kamil Ignacak
	* cdw_ui.c: 'input_volume'  function is now more generic 'input_box';
	input_box has some more comments, input field can stretch to fit
	longer strings (e.g path to iso file).

2007-05-09 Kamil Ignacak
	* main.c: program checks if disc is in drive when attempting to blank it
	* cdw_ui.c: dialogbox() cleans screen before returning - now all
	functions calling dialogbox() don't have to do this
	* commands.c: user can enter path to new iso file when don't want to
	overwrite already existing iso file (using input_volume())

2007-05-08 Kamil Ignacak
	* log.c, cdw_ui.c: small changes in dialogbox() code, comments for
	dialogbox(); dialogbox() moved to cdw_ui.c

2007-05-07 Kamil Ignacak
	* thread.c: more 'Erase CD-RW' code - new regexp code
	* main.c, commands.c: fixed refreshing of window after choosing
	'Cancel' in 'overwrite iso file' dialog
	* log.c: basic code for Yes/No/Cancel type dialog (extension of
	existing widget), introduced symbolic names for dialog types and
	button values

2007-05-06 Kamil Ignacak
	* main.c: now tooltip is shown after starting program
	* utils.c, cdw_ui.c: some characters ('�') in paths caused paths to
	not being displayed in 'Selected files' list. It is now fixed.

2007-05-03 Kamil Ignacak
	* commands.c, main.c, cdw_ui.c: blanking CD-RW discs is now restored,
	it was present in 0.2.4, I added some disc checks and dialogs; this is
	just basic code for blanking, I'm sure that not all cases are covered,
	I still need to test it
	* cdrom_ctrl.c: close_tray() added
2007-04-29 Kamil Ignacak
	* cdw_tmp_files.c: now selected dir is created on cd too (change
	in filelist_to_file())
	* threads.c: remainings of process window are now erased before cd
	tray is open
	* main.c, cdw_ui.c, help.c: some lines of code for help tooltips at
	the bottom of cdw window

2007-04-28 Kamil Ignacak
	* *.c: removed some stderr messages, removed untested features, files
	are prepared for new release

2007-04-04 Kamil Ignacak
	* utils.c: fixed (well, almost) code in _dirsize - now it returns real
	dir size (sometimes it differs from 'du' results - I don't know why)

2007-04-01 Kamil Ignacak
	* *.c: fixed problems with missing headers after reorganization, added
	cdrom_ctrl files with wrappers around ioctl()

2007-03-28 Kamil Ignacak
	* main.c: main loop moved to external function; most of code moved to
	new files (commands.c, cdw_ui.c, cdw_tmp_files.c, utils.c)
2007-03-12 Kamil Ignacak
	* main.c: restructure and comment part of code dealing with
	directories ( load_dir() )

2007-03-11 Kamil Ignacak
	* main.c: finished modifications of dirsize() and _dirsize(); part of
	code from put_addwinlist() moved to new function (shift_addlist());

2007-03-10 Kamil Ignacak
	* main.c: Transition to -path-list almost finished.
	clean_before_cdw_exit() added; dirsize() upgraded to work with new
	method of listing files-to-cd (e.g. filetable)

2007-03-09 Kamil Ignacak
	* main.c: hacking -path-list code

2007-03-07 Kamil Ignacak
	* main.c: more comments

2007-03-06 Kamil Ignacak
	* main.c: more code moved to functions; more comments; first steps
	towards using -path-list for MKISOFS (this simplifies some code and
	lets me aviod MKISOFS complaining about following symbolic links when
	giving -f option, this may also help avoiding symlinks to symlinks
	in $HOME/.cdw ($HOME/.cdw was in orginal implementation a place where
	symlinks to all files to be written were stored))

2007-03-04 Kamil Ignacak
	* main.c: indent -kr -i8; reorganization of code: moving some code to
	functions; comments

2007-03-02 Kamil Ignacak
	* thread.c: small fixes and changes around processwindow (I fixed my
	own bug); some comments

2007-02-28 Kamil Ignacak <acerion@poczta.wp.pl>
	* thread.c: moving some code from print_stdout and print_stderr to
	external functions

2007-02-27 Kamil Ignacak <acerion@poczta.wp.pl>
	* thread.c: fixing one bug causing crash when trying to create iso
	image; reorganization of code

2007-02-23 Kamil Ignacak <acerion@poczta.wp.pl>
	* I'm taking over this project

2005-11-09 Balazs Varkonyi <vbali@linuxforge.hu>
	* cddb.c: gcc4 compilation bugfix (Thanks to Egmont Koblinger)

2005-11-06 Laszlo Boszormenyi <gcs@debian.hu>
	* Fix segfault due to short read buffer on config file read, thanks to
	  Stefan Fritsch <sf@sfritsch.de> (closes: #324803).
	  For more info: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=324803
	* Include all headers needed for standard functions.

2004-04-17 vbali <vbali@linuxforum.hu>
	* thread.c: ETA added for processwin on curses intrface.

2004-03-07 vbali <vbali@linuxforum.hu>
	* main.c, gtkgui.c: "El Torito" bootable CD support has been added.

2004-02-08 vbali <vbali@linuxforum.hu>
	* color.c: config file path has contained error. Fixed.

2004-02-06 vbali <vbali@linuxforum.hu>
	* gettext.h: gettext.h added

2004-01-27 vbali <vbali@linuxforum.hu>
	* main.c: Audio rip interface completely rewritten with forms.
	* log.c: gz document support removed from code

2004-01-22 vbali <vbali@linuxforum.hu>
	* options.c: Options window completely rewritten with forms.

2004-01-19 vbali <vbali@linuxforum.hu>
	* cddb.c: Fixed a bug witch blocked make without GTK.
	* color.c: basic level color change feature has been added.
	* cddb.c: SQLite auto create database feature has been added.

2004-01-18 vbali <vbali@linuxforum.hu>
	* cddb.c: Regexp serach added for SQLite disk catalog.
	* options.c: SQLite DB added for options. Default write speed has
	changed to 52x. Joilet has been enabled in default. ~/audio has been
	changed to full path.

2004-01-16 vbali <vbali@linuxforum.hu>
	* gtk_cddb.h: CLEANUP and extended with SQLite support.
	* cddb.c: SQLite support has been added.
	* cdwdic.c: Mountpoint bug has been fixed.

2004-01-11 vbali <vbali@linuxforum.hu>
	* main.c: Some warning has been fixed.
	* main.c, gtkgui.c: DVD size added for size select.
	* cddb.c, gtk_cddb.c: LIKE search has changed to REGEXP. More
	powerfull search :-)
	* gtkgui.c: About window has changed.

2004-01-10 vbali <vbali@linuxforum.hu>
	* /po: Some fix on translation files. de.po converted from UTF-8 to
	ISO-8859-15.
	* main.c: The CD size progress bar blank before update fix.

2004-01-09 vbali <vbali@linuxforum.hu>
	* main.c, gtkgui.c: fixed a cd size calculation bug. The type of 'size'
	variable has changed to double from int.
	* options.c: added DEL key to inbox(). In some bugous terminal cannot
	handle BSPACE. In these terminals can be useable the DEL key.
	* cddb.c: / key useable for go to upper directory (in bugous
	terminals).
	*options.c: burnproof has been enabled in default.
	*Makefile.in.in: has been changed under po.

2004-01-07 vbali <vbali@linuxforum.hu>
	* main.c, gtkgui.c: fixed a bug in write direct feature. Some versions
	of cdrecord doesn't work without -tsize when data comes form pipe.

2003-12-04 Jes�s Espino <jespino@gul.uc3m.es>
	* es.po, README.ES: translation to spanish.

2003-08-24 cdw 0.2.0 <vbali@linuxforum.hu>
	* cddb.c: MySQL password removed from config
NEWS:
	* GTK2 GUI support


2003-06-10 cdw 0.1.5 <vbali@linuxforum.hu>
	* log.c: dialog bug fix that occours segfault in long MySQL messages

2003-06-10 cdw 0.1.5 <cdw@kodeaffe.de>
	* de.po: german translation for version 0.1.5

2003-06-08 cdw 0.1.5 <vbali@linuxforum.hu>
	* help.c: added help window. F1 will show this window.
	* doc: hungarian readme file updated.
	* cddb.c: I forgat "/cdrom" string in the code and always added CDs
	          from this directory. Bug fixed.

2003-06-02 cdw 0.1.5 <vbali@linuxforum.hu>
	* main.c: fixed the bug in audio grab function that display more
		  number of tracks than real.

2003-06-01 cdw 0.1.5 <vbali@linuxforum.hu>
	* main.c: fixed bug in addfiles code. if the filename longer then the
		  width of window cdw will not crash with segfault.
	* main.c: the new addfiles code show the size of files.

2003-05-12 cdw 0.1.5 <vbali@linuxforum.hu>
	* options.c: change code of inbox function
	* options.c, main.c: removing dic from everywere and added mysql code.

NEWS:
	* Added new mysql based disk catalog
	* Added disk catalog browser tool that called cdwdic

2002-11-05 cdw 0.1.5 <linuxfan@nrg.hu>
	* main.c: added quality related options for encoders
	* options.h: define quality related stuff for encoders
	* options.c: added quality related options for encoders

2002-10-27 cdw 0.1.5 <vbali@linuxforum.hu>
	* log.c: Gzipped document support
	* doc/Makefile.am: gzipping documents in doc

2002-10-24 cdw 0.1.5 <vbali@linuxforum.hu>
	* main.c: added lame encoder function
 	* configure.in: define --with-xxx parameters
	* main.c: cdda2wav support

NEWS:
	* Audio CD grabbing feature

2002-10-24 cdw 0.1.5 <linuxfan@nrg.hu>
	* options.c: added ogg encoder option
	* options.h: define oggenc-needed stuff
	* main.c: added ogg encoder function
	* po/hu.po: actualization

2002-10-21 cdw 0.1.4 <vbali@linuxforum.hu>
	* options.c: Don't clear the text in options window when edit a property
	* options.c: Added inbox function
	* config.h: define new macro DOCDIR
	* options.c: DAO & multi-session conflict fixed

NEWS:
	* Write Audio CDs
	* Disk usage statistics at the bottom of screen
	* Info window under the menu, showing some important properties
	* Switch direct/image burning under options
	* 'F1' shows readme
	* 'F2' view and edit "Volume ID"
	* 'F3' edit additional parameters given to cdrecord, e.g.: -overburn
	* 'F4' select CD size
	* 'F5' view last logfile
	* 'F6' information about raw disc material (cdrecord -atip)
	* 'F10' shows GPL
	* 'l' shows "Last log" window
	* 'a' adds disk to CD catalog (if dic installed)
	* 'e' ejects cdrw tray
	* Auto show log window after write
	* Refresh "Selected files" when you add new files!
	* Added tabs to options.

2002-09-13 cdw 0.1.4 <linuxfan@nrg.hu>
	* language and style modifications, mainly in /doc

2002-03-01 cdw 0.1.3 <vbali@linuxforum.hu>
	* options.c: extend the speed field size to 2 char
	* options.c: add new filelds to conf structure
	* main.c: the "addwin" start from your home-dir
NEWS:
	* Data CD copy
	* CD image copy
	* Write CD direct
	* Dummy write

2002-02-24 cdw 0.1.2 <vbali@linuxforum.hu>
	* config.h: added file config.h, and define some new macro (MKISOFS, CDRECORD, LOCALEDIR)
NEWS:
	* Add language support. (All in one :-) )

2002-02-21 cdw 0.1.1 <vbali@linuxforum.hu>
	* main.c: Fixed a bug that send "Error: Too many levels of symlinks" message.
	* main.c: Bug fix for the slow size calculating process, when make anything in menu.
	* main.c: Fixed a bug for file premissons in "Add files" dialog.
    	    Thanks Csaba Feher <feher@dobo-egom.sulinet.hu>

2002-02-20 cdw 0.1.0 <vbali@linuxforum.hu>
	* cdw: This is the first initial release.

