diff -r 000000000000 -r 044383f39525 bintools/rcomp/group/RELEASE.TXT --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bintools/rcomp/group/RELEASE.TXT Tue Oct 27 16:36:35 2009 +0000 @@ -0,0 +1,628 @@ +Version 8.1.005 +=============== +Released by KunalM, 06/03/2007 + + 1) RCOMP ported to the TOOLS2 platform, under PREQ1182, MS3.6.2 + + +Version 8.00.002 +================ +Released by AndrewR, 3/3/2005 + + 1) DEFECT FIX: DEF055559 - Problems building rcomp in VC6 IDE + +Version 8.00.001 +================ +Released by AndrewR, 7/2/2005 + + 1) DEFECT FIX: DEF054981 - tools_rcomp component is updated every day + +Version 8.00.000 +================ +Released by AndrewR, 4/2/2005 + 1) Fixed DEF054617 - rcomp doesn't build from source + 2) Fixed INC049059 - incorrect line number for error reported by rcomp when building \s60\gs + +Version 7.01.009 +============ +Released by KuldipN, 22/07/2004 + Add UID2 and UID3 keywords to RCOMP + (CR HBRT-5YJJ9C Specifying UID2 and UID3 in RSS files) + +Version 7.01.008 +============ +Released by DuskoJ, 10/07/2003 + 1) Fixed DEF022269 Resource value is read incorrectly + 2) Fixed INC036025 RCOMP chinese resource complation problem + +Version 7.01.007 +============ +Released by Jon Chatten, 03/06/2003 + 1) Fixed "DEF025433 RComp core dumps on certain resource files" + 2) Adjusted version number in release.txt to match binary. + + +Version 7.06 +============ +Released by Dusko Jahora, 03/06/2003 + 1) Reverted fix for DEF022269 + + +Version 7.05 +============ +Released by Dusko Jahora, 02/06/2003 +1) DuskoJ + 1) Changes to RCOMP whihch are part of CR PCHY-5L3RDW + "Typhoon must support 16bpp colour". + 2) Fixed DEF022269 Resource value is read incorrectly + (this fix was not submitted on 09/05/2003 because of + an integration error) + + +Version 7.04 +============ + +Released by Dusko Jahora, 09/05/2003 +1) DuskoJ + 1) Fixed DEF022269 Resource value is read incorrectly + + +Version 7.03 +============ + +Released by Dusko Jahora, April 2003 + 1) Fixed defect DEF017151 "RCOMP should be upgraded to support files with UTF8 + signature". + + +1) William + 1) Fixed defect ROS-58VCX8 "RCOMP doesn't allow + in filenames" by removing + the unnecessary validation of the filenames left by the C++ preprocessor. + 2) Fixed defect RED-5ACK5F "Resource compiler creates nothing for empty and bad + counted byte arrays" +2) Dusko + 1) Fixed defect ROS-5B7MHW "RCOMP fails to handle boundary values correctly + for WORD data type" + +NB. The handling of LABEL suggests that it would be pretty easy to add rls_string support +into the compiler directly. + +Version 7.01 +============ + +Released by Jon Chatten, February 2002 + +Fixed defect ROS-56PHFA - Replaced system() call to uidcrc.exe with a call to _spawnlp - +this addresses the IDE-hanging issue when epocrc.pl is integrated as a plug-in with the CW +IDE on Windows 98. + +Removed attempt to absolutely identify uidcrc.exe - this is no longer required as the CW RCOMP/EPOCRC.PL +plug-in now sets the PATH before invoking the command line tools. + + +1) William + 1) Fixed defect ROS-55KJ4U "RCOMP fails if epoc32\tools not on the path" + + +Version 7.00 +============ + +Released by David Batchelor (November/December 2001) + +The format of resource files changes as follows: + +- The initial 2 two-byte values are removed as they are completely redundant. (All the information + they provide can be derived from the last 2 bytes of the file combined with the size of the + file.) +- Resource files now have a standard 4-byte checked-UID field at the start. The first UID is + 0x101f4a6b, to indicate that the resource file potentially contains Unicode compressed according + to the "Standard Compression Scheme for Unicode" (see + http://www.unicode.org/unicode/reports/tr6/tr6-3.2.html). The second and third UIDs may be + specified on the command-line by using an optional parameter of the form + "-{0x12345678,0x9abcdef0}" (without the quotation marks). If "*" is used as the last UID, e.g. + "-{0x600ddea1,*}", then the resource file's "offset" (i.e. the 20-bit number generated from the + resource file's "NAME") is used as the last UID. +- The UID field is immediately followed by a bit-array, one bit for each resource in the resource + file, where each bit indicates whether the corresponding resource contains compressed Unicode. + The bit field is padded up to a multiple of 8-bits (if necessary) with zero bits. +- Each resource which contains compressed Unicode consists of a series of "runs" preceded by a 1 + or 2-byte run-length (1 byte if the run is <128 bytes, else 2 bytes). The run-length value does + not include itself in the byte count that it holds. The first run, the third run, the fifth run + etc contain compressed Unicode. The second run, the fourth run, the sixth run etc contain other + stuff. As the protocol defines that the first run is compressed Unicode, this run may obviously + be of zero length - no subsequent run in that resource may be of zero length. +- Rcomp only uses compressed Unicode for text fields if it yields any benefit (i.e. only if it + actually makes the output file smaller). +- The changes are completely transparent for code that reads resources. + + +Version 6.03 +============ + +Released by William Roberts, 30-Jul-2001 + +Fix defect EXT-4YSCUV "Resource compiler corrupts long strings" +Handle very long C++ comments, which previously caused a "token buffer overflow" message from the +lexical analyser. Avoid overruning the buffer for literals by using a CHECK_APPEND() macro which +discards characters rather than run off the end, giving errors like + +(5) : string too long - 1 ignored +(5) : string too long - 2 ignored + +Avoid overflowing the Value array in string expressions by checking the new length before +agreeing to concatenate the strings. Ultimately it would be best to replace Value[] with +a char* which has been created with strdup() and can therefore be realloc'd to grow the string. + +Fix defect ARG-4TZF7J "RCOMP needs warning waivers registered with SI" +Removed all warnings in tools rel build - some tools deb warnings will appear in rcomp.cpp +because of problems in the mks\etc\yyparse.cpp file, but I didn't want to hide related problems +in any new Symbian code we might add. + +Improve the -v output to show the primitive types being emitted, and to dump the IndexTable as hex +offsets followed by the resource name, e.g. + + IndexTable + IndexTableItem 4 + IndexTableItem c r_eikserv_panic_dialog + IndexTableItem b8 r_eiksrv_oom_event_top + IndexTableItem e4 r_eiksrv_oom_event_bot + IndexTableItem 144 r_eikserv_replace_main_batteries + IndexTableItem 170 r_eikserv_replace_backup_battery + +and + + ResourceHeader r_eiksrv_tasklist_dialog + ++ResourceItemArray + SimpleResourceItem [Long flags] 9 + SimpleResourceItem [LText16 title] + SimpleResourceItem [LLink pages] + SimpleResourceItem [LLink buttons] + StructArrayResourceItem (Level 0) [items] + ArrayLength [Word] 1 + ---------------------- + --ResourceItemArrayArray + ++ResourceItemArray + SimpleResourceItem [Word type] 1001 + SimpleResourceItem [LText16 prompt] + SimpleResourceItem [Word id] 1 + SimpleResourceItem [Long itemflags] 0 + StructTypeResourceItem (Level 0) [control] + ---------------------- + ++ResourceItemArray + SimpleResourceItem [Byte version] 0 + SimpleResourceItem [Word flags] 0 + SimpleResourceItem [Word height] 8 + SimpleResourceItem [Word width] 20 + SimpleResourceItem [LLink array_id] + ---------------------- + SimpleResourceItem [LText16 trailer] + ---------------------- + +Together these changes should make it significantly easier to step through the binary image of a +resource and work out which element has changed unexpectedly. + + +Version 6.02 +============ + +Released by William Roberts, 15-Feb-2001 + +Fix awful defect in version 6.01, which caused negative integer constants to be written to the file as -1. + +When testing with LOCKIT, RCOMP developer should be aware that the version of RCOMP.EXE used by lockit +is kept in \lockit\tools, not \epoc32\tools. + + +Version 6.01 +============ + +Released by William Roberts, 14-Feb-2001 + +Redefined character literals ('x') to be effectively strings so that they can contain UTF8 encodings +for interesting characters. This is handled using the same lexical rules as string literals, so +the limited escape processing is also supported. The introduction of strings surrounded by single-quotes +means that the sequence \' is now accepted as standing for '. + +If the character literal string decodes to more than one Unicode character, a warning is given and the +rest of the string is ignored. The prevailing source character encoding is used, but there is no support +narrow character literals in the difficult part of the CP1252 range: the interpretation of the literal +is always "the Unicode encoding for the first character of the string". For example, even in a +CP1252 source file building a narrow resource, a literal containing the Euro symbol will be interpreted +as 0x20ac, not 0x80. + +LTEXT strings are now checked to ensure that they are less than 256 characters in length. + +The NAME statement can now take a string literal or a label, instead of the previous behaviour where the +lexical analyser handled the following word differently. Any RSS file which used a keyword as a name, +for example WORD.RSS, will need to be changed to specify the name as a literal: the preferred syntax +is to use string literals in all cases. + + +Version 3.18 +============ + +Released by William Roberts, 05-Aug-1999. + +Requires BAFL 092. + +Changed the handling of Unicode string resources (TEXT16 and LTEXT16) to ensure that the +Unicode characters are aligned to a multiple of 2 bytes when the resource is used. + +Resources are never used in place: instead RResourceFile::AllocReadLC creates an HBufC8 to hold a +copy of the data. This means that rather than aligning from the start of the entire resource file, +instead we have to align to the start of the individual resource, because the data in an HBufC8 +always starts at an aligned address. + +Added RCBinaryStream::Align(int nBytes) and RCBinaryStream::SetAlignBase() to support the +generation of the necessary padding, and call them from suitable places in RCOSTRM.CPP. + +Also added code to add 1 to the offset of the end of the table of resource offsets: this is tested +in BAFL as a marker to indicate the new format of resource file. + +Added a /verbose flag to core.cmd which invokes RCOMP with -v. + +Added #pragma warning( disable : 4710 ) in a couple of places to cut down on the number of +unnecessary and useless "warnings". + +Regenerated the test resources. + + +Version 3.17 +============ + +Released by William Roberts, 25-Jun-1999. + +Fixed defect where embedded Unicode characters could cause BUF strings to fail a length check. +Updated test code include a check for this. + +Added more stuff for the Engineering Automated Build. + + +Version 3.16 +============ + +Released by Pute, 9-Jun-1999. Based on work by William Roberts, +26-May-1999 described in the "William's notes" section below. + + +Character sets +-------------- + +We are moving towards a specific principle of character sets for RCOMP. + +Previously, the character set used by RCOMP was not well defined, later we +added the CHARACTER_SET identifier. This implied that any specific values +inserted into strings in format would be in the character set of the +source. + +In this design RCOMP will have trouble handling multibyte encodings like +Shift-JIS because the tools it relies upon, LEX and YACC, are based on +single-octet encodings only. Sometimes a multibyte encoding will produce +artefacts that appear to be syntax elements such as double quote marks. + +In future the intention is that RCOMP uses UTF-8 encoding internally, +provided by a pre-processing phase. This release is an interim step. + +In this release, when explicit values are inserted in text strings, they +are interpreted as Unicode values and converted to UTF-8. To retain +backward compatibility with CP1252 source, values 80-9F are also permitted +and these will be mapped to Unicode as before when the source character set +is defined to be CP1252. The use of explicit values 80-9F is deprecated +however. + +The default input character set is CP1252. Previously, the default +character set was "unknown". This possibility is no-longer supported. +This was also contrary to documentation. + + +Details: + +Test command procedure updated and enhanced. + +Test comparison files TUTEXT8.RSC and TUTEXT16.RSC have been updated to +allow for the introduction of the extra characters in the CP1252 character +set. (128 used to be "not used" and is now the euro sign) + +Note that compilation warning messages about deprecated characters will +appear durng this test. + +A new test source file TWTEXT.RSS and associated reference binaries have +been added to the test suite to demonstrate explicit use of values >255. + + + + +William's notes (edited by Pute): +--------------- + +Defined a new "character set" called UTF8, which supports the UTF8 +encoding of Unicode strings. +This actually allows the whole resource source file to be entered as +UTF8 if required. However the default charset remains CP1252. + +Arranged to support embedded Unicode characters constructed using the + notation, to support the use of 0x07ED as the end-of-paragraph +marker (see ETEXT 120). This exploits the UTF8 support by inserting the +appropriate UTF8 sequence into the 8-bit data. + +The embedded Unicode characters are also supported in the CP1252 +character set, with internal use of 0x81 as an "escape" character +indicating that the following bytes are a UTF8 encoded character. This +allows existing CP1252 resource source files to be used with the new +ETEXT. + +Added the Euro and the Z caron encodings to the cp1252_exceptions table. + + +Only RCOMP.EXE has been rebuilt. Judging from the timestamps, the other +executables haven't been rebuilt for the last few releases. + +To build rcomp, first run ..\src\BLDEX, then MNT BLDREL + +Building is only possible from NT and makes use of lex and yacc from +T:\mks - this should be updated to use the GNUPro tools which we use to +build GCC, as the Cygnus toolchain is something we expect to have always +available. + + + +Version 3.15 +============ + +Released by SimonC, 01-Feb-1999 + +Fixed defects + EDN484092 "RCOMP needs to be Symbianised" + EDN584421 "Need to rebuild RCOMP with boilerplated headers" + +Only RCOMP.EXE has been rebuilt. Judging from the timestamps, the other executables +haven't been rebuilt for the last few releases. + +To build rcomp, first run ..\src\BLDEX, then MNT BLDREL + +Building is only possible from the NT and makes use of executables on T: so this can't +be rebuilt by licensees (which doesn't seem to have been a problem so far...) + + + +Version 3.14 +============ + +Released by PNJ, 19-Mar-1997 + +The CORE command and the test procedures rely on NT command extensions. + + +Version 314 mods + + 1. In FILELINE.CPP, FileLineManager::ExtractFileName updated to add + filename information planted by the preprocessor. This is a rewrite of + the code that was removed in the previous release because it was + violating. + 2. Test code now in a formalised framework accessed via MNT TEST. The + formalism isn't perfect because of the limitations imposed by the + legacy command language. See TEST.HTM in the TSRC directory for more + information. The test procedure relies on NT command extensions. + 3. The CORE command procedure has been changed to allow preprocessor + symbols to be defined. See below. + +CORE syntax + +CORE filename [ object_directory [options] ] + +If options are being used the object directory parameter must be present, +the default value is "." for the current directory. + +Options are: + +/UNICODE + Specifies that strings are emitted as Unicode in the resource binary. + Previously, this option was selected with "-u", which is the parameter + currently used by RCOMP itself. +/DEFINE symbol [ symbol...] + Specifies one or more symbols to be defined for the preprocessor pass. + This must be the last option supplied because it is followed by an + arbitrary number of tokens and the command language is so primitive. + + + + + + + + +Version 3.13 +============ + +Released by PNJ, 13-Jan-1997 + +Version number scheme is independent of product-specific E32 chain +numbering. + +This is an interim release, to provide 16-bit character set functionality. +Later releases are planned to provide other requested features. Existing +RSS files produce identical binaries to previous releases when compiled +in the default non-Unicode mode. + +There are some serious defects in the source code which will take +a long time to address properly, eg misuse of assert as a status check. + +1. Minor changes to MNT and build settings. +2. Minor code changes to remove warnings. +3. Renamed STRING.CPP, .H to remove ambiguity with + standard header of the same name. +4. rcscan::yyerror function updated so that it actually + interprets formatted strings instead of ignoring the extra + parameters. +5. Fixed defect in String operator != which was doing the inverse + of what it is supposed to do! +6. Provide a qualifier for Unicode output. +7. Fix erroneous error message if source file not specified. +8. Fixed problem which caused run time fatal errors during + source context switching. +9. Introduce new tokens to differentiate between 8 and 16-bit + text strings. +10. Introduce a CHARACTER_SET token to specify the source + character set. +11. Introduce an extra test component directory. +12. Introduce a command procedure wrapper for RCOMP (called CoRe) + + +Language features +----------------- + +CHARACTER_SET name + +Specifies the character set of the input file. The implementation currently +does not do much with this, but will do in the nexty release or 2. Legal +values for name are currently: + +ASCII, CP1252, CP850, ISOLatin1, ShiftJIS, Unicode + +Note that Unicode source text is not likely to be supported any time soon, +largely because RCOMP relies on LEX and YACC which are not Unicode-aware. + +The default setting in this implementation is CP1252. + + +TEXT, LTEXT and BUF + +Now have explicit 8 and 16-bit variants, eg TEXT8, BUF16. The unadorned +variants are internally converted to the 8 or 16-bit equivalents depending +on the presence of the -u (for unicode) command line qualifier. + +The prefixed counter for an LTEXT16 is still an 8-bit field. + +The zero terminator for a TEXT16 is a 16-bit field. + +For text fields, it is recommended that you continue to use the unadorned +keywords. For binary data, you should use the explicit 8-bit keywords. This +is likely to apply most commonly to the BUF (BUF8) keyword. + + + + + +Version 0.03.12 +=============== + +1) Reduced verbosity. +2) Released a version compatible with NT4. + +Version 0.03.11 +=============== + +1) PVCS'ed RCOMP and generally tidied it up. +2) Fixed empty BUF crash. +3) Fixed extra trailing comma crash. +4) Cleaned up the build warnings. +5) Added ...BUF... where n is an integer giving max length of BUF. +6) The .exe is now called rcomp.exe. + +Version 3.06, MartinW, 05 Jul 96 +================================ +1. Added enum handling. + e.g. + ENUM ExampleEnum { Elem1, Elem2} + STRUCT a { BYTE b;} + RESOURCE a c { b = ExampleEnum::Elem2;} +This should set up b with the value 1. + +Version 3.05, MartinW, 30 May 96 +================================ +1.Deal with long (>42characters) resource names in output to header + file. +2.Prevent assertion failure in case of missing comma after first item + in an array of struct's. + +Version 3.04, MartinW, 29 Apr 96 +================================ +Avoid using cin by reading from a specified file (-s). The +cin approach suffered from something to do with the source file being +left open even when the program ended. This was the case at least with +a test program built using C++ 1.51 and run under NT 3.51. +e.g. void main() { char a; cin << a; } + TestProgram < a.src + del a.src <---- "file in use by another process". + +Version 3.03, MartinW, 18 Apr 96 +================================ +1.Handle syntax error with numbers more effectively so assert does not + fail. +2.Accept 0 for double without warning. + +Version 3.02, MartinW, 11 Apr 96 +================================ +Corrected defect to do with line number in error message for text being +converted to a number. + +Version 3.01, MartinW, 9 Apr 96 +=============================== +1.I added more error handling so that more proper error messages are + given. +2.I altered the error message format so that it is suitable for VC++. + Brief seems to cope with this new format quite happily. VC++ didn't + seem to like e.g. ".\t1.rss" at the start but "C:\rcomp\src\t1.rss" + worked. +3.The drive and directory for the file name specified with -i is used + to provide the full paths for all filenames given in error messages. + If the -i file name is not a full path then the current directory and + drive are used in combination with the partial path to create a full + path. + +Version 3.00, MartinW, 19 Mar 96 +================================ +To use this resource compiler execute "mnt getrel". The egrs.bat file +is an example of how the resource compiler may be run. The GNU +preprocessor is used (t:\tools\gnucpp.exe) first and the output +passed to rc3.exe. The fc4bat.exe file is used to avoid writing the +header output file if it has in fact not changed. + +Details about this version +-------------------------- +This is a completely new version based on yacc and lex along with C++. + +Overview of system: + Source file (e.g.pic.rss) + -> Preprocessing + -> Lexer + -> Parser + -> Data structures (using C++ classes) + -> Data file output (e.g. pic.rsg) + -> Header file output (e.g. pic.h) + + The GNU C++ preprocessor was used. The output from this + includes directives giving line numbering following inclusion + of header files. The lexer uses this to store data which the + parser then uses to output error messages in Brief format. + + The lexer and parser are generated by lex and yacc + respectively from rcomp.l and rcomp.y. These define the + tokens and the grammar for the resource script language. + + Supporting C++ classes are compiled and linked along with the + output from lex and yacc. + + The batch file rs.bat takes the file specified by the first + parameter and passes it to the GNU preprocessor. The output + is piped through to rcomp.exe. The names of the data output + file and the header file are specified based on the name + given to rs.bat. The -i flag is used to give the original + name (as passed to the preprocessor) for error reporting. + + A program called fc4bat.exe is used to give an errorlevel if + the specified files do not match. This is used to avoid + changing the date on the header file if it has not changed. + +Issues for porting to other platforms: + 1) atof has been used. The output of this is written to the + rsc file. The format must be that expected by the program + reading the rsc file rather than the format of the + machine used to generate the file. + 2) The MKS versions of yacc and lex were used. These are PC + versions of the UNIX tools. The non-standard features + were avoided however only the PC versions have been used. + 3) Stream handling has been used. Apparently there may be + differences in implementations of this extension to C++. + +