EZXCodec changelog:


1.3.5
new:
  -added: "Bootscreen" tab for changing bootscreen picture (in CG39).
script:
  -added: "bootscreen" parameter to codegroup name.
GUI:
  -fixed: trying to minimize main window on first launch (after choosing language), or any launch
   after showing "CramFS file list" window lead to crash;
  -fixed: it was possible to close "CramFS file list" window while building file list - this lead
   to crash, now closing window delayed until file list is fully built;
  -added: saving last used script file path and name.
general:
  -added: optional log auto-saving to 'ezxcodec.log'; deleted on launch to avoid too big files.


1.3.4
motoskin:
  -added: support for 16bpp K-files.
GUI:
  -fixed: russian log message string.


1.3.3
cramfs:
  -fixed: newly added files without properties set appeared empty in compiled CramFS;
  -fixed: a couple of [relatively big] memory leaks happening when working with "CramFS file list"
   window;
  -improved: proccess of manual changing of file properties optimized for speed.
sbf:
  -fixed: "New CGs" checkbox did not work, files without "_new" suffix were used (introduced in 1.3.1);
  -fixed: now closing SBF file before opening (introduced in 1.3.1).
motoskin:
  -fixed: hashing function corrected (thanks to eakrin from http://motorolafans.com/forums/); though
   EZXCodec still stores hashes in "motoskin.idx" file;
  -fixed: after opening motoskin file and then compiling another one, trying to extract from the
   opened motoskin failed in most cases (memory was shared between procedures);
  -fixed: memory leak in *.bmp to *.k convertion function (when compiling files for E2, Z6, V8);
  -fixed: source file list was not checked on emptyness after excluding file "Thumbs.db";
  -fixed: when "Extract" button pressed without pressing "Open" first, entry list was not filled;
  -changed: when "motoskin.idx" is missing and there's a need to convert BMP to K - converting to
   18 bpp with alpha channel.
script:
  -fixed: it was not possible to use "-" instead of filename in "skin" commands sequence;
  -fixed: error when renaming new motoskin file.
GUI:
  -added: keyboard shortcuts Ctrl+1, Ctrl+2, Ctrl+3, Ctrl+4 to switch between tabs;
  -fixed: restoring keyboard focus to the control that had it before all controls got disabled;
  -fixed: file selection dialogs showed wrong initial directory sometimes;
  -fixed: progress bar showed wrong progress when compiling motoskin;
  -added: progress bar when building file list in "CramFS file list" window.


1.3.2
motoskin:
  -fixed: jpeg images were not renamed from .g (header was not recognized, introduced in 1.3);
  -fixed: crash when trying to open motoskin v1.10 (*.skn files; don't know when this one
   introduced);
  -added/fixed: excluding "Thumbs.db" from source file list when compiling.
GUI:
  -fixed: "New Motoskin file" box had wrong caption "Original Motoskin file".


1.3.1
cramfs:
  -fixed: serious memory leaks in CramFS extraction and compiling.
general:
  -fixed: closing CramFS file before auto-restoring old original file name - not really a bug,
   just looks less confusing without "CramFS filename changed - file closed" message at the end
   of script execution or extracting from SBF with "From CramFS too" checked.
internal:
  -SBF routines separated to individual module;
  -russian string resource cleaned up from old unused strings.


1.3
cramfs:
  -fixed: manual changing of file's uid, gid and permissions through "File properties" dialog
   was broken since 1.2;
  -fixed: user and group fields in "File properties" dialog always showed 'root' by default;
  -removed: unnecessary code for zeroing nodes sizes with zero offset (was used to preprocess
   CramFS before feeding it to cramfsck);
  -improved: CramFS extraction optimized;
  -fixed/improved: more checks when compiling CramFS:
    - checking for files >=16 MB in source directory;
    - truncating >252 characters filenames (gives warning if encountered);
script:
  -changed: using "script_temp" subfolder of working directory, deleting it after execution
   (check "Do NOT delete temporary files..." to debug your script or report a problem);
  -fixed: when trying to extract CGs from SBF and failed to create or clean "smg" directory,
   script did not stop;
  -fixed: empty and fully commented lines are now skipped (they were treated as CG name);
  -changed: double period ("..") is not allowed in all commands, not only "del";
  -fixed: documentation - only one space between command parameters really allowed, not more;
  -improved: script parsing optimizations.
general:
  -fixed: auto-creation of directories was not checked properly;
  -added: each CramFS CG gets extracted to it's own folder with name cramfs-root-<CG name>;
  -added: two radioboxes "Use path" and "From Working directory" added to CramFS tab; when
   "From Working directory" checked, usual text field for entering CG path gets disabled, and
   you can choose a CG from a list of existing files (with mask "CG*.smg") in "smg" subfolder
   of working directory;
  -added: checkbox "From CramFS too" added to SBF tab, which, when checked, makes program extract
   files and folders from CramFS CGs while extracting CGs from SBF (one-click extraction);
  -added: checkbox "New CGs" added to SBF tab, when checked - uses "<CG name>_new.smg" instead of
   "<CG name>.smg" files from "smg" folder when compiling SBF;
  -added: trying-to-be-smart file overwriting warning system;
  -fixed: as always - many log messages fixed.
GUI:
  -improved: using internal icons in "CramFS file list" dialog instead of system ones - system
   icons were not set correctly sometimes; links now have different icon;
  -added: now saving "CramFS file list" dialog position too;
  -improved: main window position is centered on first launch.
internal:
  -CramFS and Motoskin routines separated to individual modules.


1.2.1.1
cramfs:
  -fixed: crash on extracting some CGs.


1.2.1
cramfs:
  -fixed: memory leak when searching for CramFS magic;
  -improved: workaround for CramFS with invalid header data;
  -improved: optimized CramFS information extraction.
script:
  -fixed: 'md' and 'del' commands;
  -improved: parameter count check is more strict now.


1.2
cramfs:
  -improved: big speedup in extraction, compiling, loading 'CramFS file list' dialog;
  -added: directory tree to the left of the list in 'CramFS file list' dialog;
  -added: possibility to set file's permissions with three digits in 'File properties' window;
  -changed: default properties for the new file (i.e. when not set manually) changed from rwxrwxrwx
   to rwxr-xr-x;
  -fixed: default properties for the new file were displayed wrong in 'CramFS file list' dialog.
script:
  -added: 'cfg' command to edit INI-like *.cfg files (look in "docs\script_format_v4");
  -added: '-ifexists' and '-ifnotexists' switches to 'add' command (look in "docs\script_format_v4");
  -added: comments allowed on the line after '#' symbol;
  -added: restore file paths on 'CramFS' and 'motoskin' tabs after running script.
GUI:
  -added: saving splitter position;
  -fixed: when window maximized and splitter was in it's top position, restoring window back did not
   set splitter position properly;
  -improved/fixed: many message captions in both english and russian UI.
general:
  -changed: buffer size increased from 1 to 16 MB for a little speedup.


1.1
cramfs:
  -fixed: adding new files with not default properties was messed up in 1.0;
  -impoved: searching for magic number speed up;
  -changed: small cramfs.idx file format optimization.
script:
  -added: 'md' and 'del' commands (look in "docs\script_format_v3").
GUI:
  -added: resizable main window;
  -added: saving main window position;
  -added: double click on CG in SBF tab to switch to CramFS tab with needed SMG filename entered
   (only if needed file exists);
  -fixed: wrong file properties in 'CramFS file list' dialog sometimes;
  -fixed: wrong text in popup menu item on SBF tab ('Copy Log' instead of 'Invert Selection' - english UI);
  -changed: reworked logging and message system a little;
  -fixed: removed 'NTFS-formatted partition required' from working directory selection dialog.
general:
  -improved: memory usage decreased when reading/writing files (yet except for motoskin routine, where
   picture files are usually small enough);
  -changed: now using default Windows temp directory when running script in case Working directory
   field is empty; Working directory cleared after this;
  -added: own function for clearing directories - main progress bar used (Windows' window pops up),
   error (if any) reason displayed.


1.0
cramfs:
  -added: internal work with CramFS, external tools not needed anymore
  (you can delete 'tools' folder and all it's content); beside the fact,
  that you don't need to download these files anymore, it gives some
  more improvements including:
    -smaller size of resulting CramFS in some cases, comparing with external mkcramfs.exe;
	-possible to extract files to FAT32 now (external cramfsck.exe worked only on NTFS);
	-gives me more flexible ways of manipulating CramFS files (expect more feaures in
     future versions).


0.8
motoskin:
  -fixed: missing one last file on extraction sometimes;
  -added: support for files from E2, Z6 (probably V8 too - untested);
  -added: Motoskin v1.10 support (*.skn files);
  -improved: speed of records loading optimized A LOT.
cramfs:
  -changed: cramfs.idx format changed again - optimized for size and speed.
GUI:
  -added: search field in 'CramFS file list' window;
  -added: SBF CG list now have popup menu with item "Invert selection";
  -added: progress bar on time consuming operations.


0.7.3
script:
  -fixed: now look for file in folder with script, not in subfolder (bug introduced in 0.7);
  -fixed: could not replace files in 'cramfs-root' sometimes ('permissions denied' error
   even on not read-only files), solved by deleting old file before copying new one.
cramfs:
  -fixed: random false detection of nodes with zero-length and non-zero offset (hopefully
   for real this time - tested more carefully this time).
motoskin:
  -fixed: forgot to remove debugging column from list.
general:
  -added: popup menu for log with 'Copy log' (copies whole log to clipboard) and
   'Clear log' items;
  -fixed: Ctrl+C on selected item in log worked wrong on russian text;
  -added: time display to log.

0.7.2
motoskin:
  -fixed: compiling iconres.ezx from files - dumping hash values from original iconres.ezx
   to index file and using them on compiling.

0.7.1
cramfs:
  -fixed: random false detection of nodes with zero-length and non-zero offset;
  -fixed: "Update" button in "CramFS file list" window now works (bug introduced in 0.7).
sbf:
  -fixed: writing CG's start address values to "sbf_info.txt";
  -fixed: less restrictive SBF header check on opening;
  -added/fixed: when trying to open SHX format firmware - adding error to log.
new
  -about tab.

0.7
new:
  -added: Motorola resource file format 1.00 support (iconres.ezx) - 'motoskin' tab -
   extraction to 'motoskin' subdirectory and compiling from there is possible.
sbf:
  -fixed: end offsets of codegroups in compiled SBF were sometimes wrong (i didn't know
   that same codegroups may have different sizes in different firmwares).
cramfs:
  -fixed: device files not located in /dev folder worked incorrectly in compiled CG;
  -changed/fixed: CramFS index file format stores filenames more correctly now
   (but it's binary now, so no editing in notepad possible, use built-in editor);
  -added: three digit display (read-only) of file's permissions in 'File properties' window.
scripting:
  -added: 'skin' command, look in 'script_format_v2_en.txt' for more info;
  -fixed: filenames with spaces were treated incorrectly.
misc:
  -changed: renamed 'cramfs_info.txt' to 'cramfs.idx', 'cramfs_extracted' to 'cramfs-root',
   'sbf_extracted' to 'smg'; files cramfsck.exe, mkcramfs.exe, cygwin1.dll and cygz.dll
   must be placed in 'tools' subdirectory now; text files (readmes, whatsnew etc.)
   placed in 'docs' subdirectory; creating temp files 'cramfsin.tmp' and 'cramfsout.tmp'
   in 'temp' subdirectory;
  -fixed some russian strings, optimized translating system.

0.6 pre 1
  -added: multi-language interface, russian and english included
  -improved: when running scripts, no confirmations about CRC or CramFS correction or
   directory cleaning needed (auto-answer 'Yes')
  -improved: script error checking and logging
  -improved: log updates
  -fix: stop running script when error detected

0.5 pre 1
  -added support for scripts, see scripting_en.txt (now it's possible to distribute
   small-sized patches which can be applied to firmware by pressing one button
   (after setting up paths properly))
  -showing user/group names of owner of file/folder
   (info taken from standard /etc/passwd and /etc/group;
   can change either by typing in ID number or by choosing from names list)

0.4 pre 1
  -added window with list of files extracted from CramFS
   which allows to edit file properties without editing text files
  -more human-readable cramfs_info.txt
  -fixed wrong error about too small CramFS file when there is no file at all
  -more fixes

0.3 pre 2
  -less restrictive SBF format check on opening

0.3 pre 1
  -added compiling of SBF files from separate codegroups
  -hence renamed from 'CramFS Corrector' to 'EZXCodec'

0.2 pre 6
  -fixed error when writing new offset value in nodes

0.2 pre 5
  -trying to fix error when writing new offset value in nodes

0.2 pre 4
  -fixed error when writing new CRC to CramFS file

0.2 pre 3
  -some CramFS correction optimizations
  -added Ctrl+C copy from log (currently selected item)
  -fixed log strings typos

0.2 pre 2
  -added possibility to zero offset value in nodes with non-zero size value
  -added possibility to fix CramFS CRC error (NOT recommended
   unless nodes offset correction was used)
  -added validation of SBF file header before parsing

0.2 pre 1
  -added extraction of codegroups from SBF firmware files
  -file/directory names now stored in 'cramcorr.ini'
  -fixed crash when trying to open zero-length codegroup file
  -added check for 'working directory' existance
  -minor logging optimizations

0.1
  -initial release
