1. User interface - use GNU's long_getopt - allow to pass input and output files via command line - add options for various not-yet-implemented features (Unicode, Win32 format, non-native/native alignment and endianness, compact output format) 2. Input format - improve input file processing Currently, certain pre- and postprocessing is required. winerc should accept an arbitrary resource script and generate the C file with as little intermediate files as possible. I'm not sure how to handle the symbols from windows.h. There are certain options: * winerc predefines the symbols via the cpp command line * windows.h is #include'd, and the resulting C code is dropped (Should winerc do C parsing here?) * a stripped-down version of windows.h is included, generated by "grep '^#' windows.h" * windows.h #ifdef's every C code with _RC_INVOKED (commercial solution) - complete input syntax The goal here is to support every existing resource file which is accepted by another resource compiler, not to put as much fancy features into the compiler as possible. Every correct resource file which generates a parse error can be reported as a bug, a problem analysis and a fix would be appreciated. 3. Output file format - add missing resources (fonts, versioninfo, stringtables,rcdata) - check style handling The semantics of control and dialog styles is somewhat poorly documented. For example, I couldn't find a reference that every control has the WS_VISIBLE and WS_CHILD style, even if they are not specified. What other styles are considered default? The existance of default styles implies support for disabling these, unlike any other proper programming language, NOT WS_VISIBLE | WS_GROUP does *not* mean ~WS_VISIBLE, but WS_CHILD|WS_GROUP (in C semantics). What other strange semantics are there? - check cursor and icon handling At the moment, the .CUR and .ICO files are copied byte-by-byte into the C array. This is probably wrong, as there are things like cursor and icon groups. In which way should they be present in a Wine image? Should we have arrays for every cursor, as well as the cursor group? Is one cursor per group enough, in the context of X? If so, do we still need the group? - create a more compact output file The current format is well-suited for debugging, as one can easily match it with a resource' hex dump. A more compact format would use strings instead of integer lists. A clever algorithm for embedding values <32 and >127 is required. - platform independence Currently, the lay-out of the resources is just as it is in Win3.1 - packed structures, little endian. Although this format can be used on any architecture, aligned data and native endianness would speed-up the resource manipulation and simplify the code. OTOH, this would break applications that rely on the lay-out. All this is of interest for the library version only. - Win32 support 4. Programming Style - memory management No memory is freed in the current implementation.