home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume29 / cproto / part01 / CHANGES next >
Encoding:
Text File  |  1992-04-06  |  4.2 KB  |  150 lines

  1. Version 3
  2.  
  3. Patchlevel 2
  4.  
  5. - Fix: The function definition conversion may produce a mangled function
  6.   definition if an #include directive appears before the function and
  7.   no comments appear between the directive and the function.
  8. - Fix: The size of the buffer allocated for the C preprocessor command
  9.   string did not include enough space for options set in the environment
  10.   variable CPROTO.
  11. - Replaced the -n option with -c which disables all comments in the
  12.   generated prototypes.
  13. - Replaced the enum's with #define constants to accommodate C compilers
  14.   that don't like enumerators in constant expressions.
  15.  
  16. Patchlevel 1
  17.  
  18. - Fix: The program was calling ftell() on an invalid FILE pointer.
  19.  
  20. Patchlevel 0
  21.  
  22. - Added options to convert function definitions between the old style
  23.   and ANSI C style.
  24. - Options can be specified from the environment variable CPROTO.
  25. - The MS-DOS version recognizes more Microsoft C and Borland C++ type
  26.   modifiers (such as _cdecl, _far, _near).
  27. - Fix: Formal parameters specified with typedef names were not promoted.
  28.   For example, for the definition
  29.  
  30.       typedef unsigned short ushort;
  31.  
  32.     void test (x)
  33.     ushort x;
  34.     {
  35.     }
  36.  
  37.   cproto generated the incorrect prototype
  38.  
  39.       void test(ushort x);
  40.  
  41.   while the correct one is
  42.  
  43.       void test(int x);
  44.  
  45. - Fix: Incorrect prototypes were generated for functions that returned
  46.   function pointers.  For example, cproto generated an incorrect
  47.   prototype for the function definition
  48.  
  49.     void (*signal(int x, void (*func)(int y)))(int z)
  50.     {
  51.     }
  52.  
  53. - Fix: Changed calls to memory allocation functions to abort the program
  54.   if they fail.
  55.  
  56. Version 2
  57.  
  58. Patchlevel 3
  59.  
  60. - Made cproto compatible with GNU flex.
  61. - After compiling with the preprocessor symbol TURBO_CPP defined, on
  62.   MS-DOS systems, cproto will pipe its input through the Turbo C
  63.   preprocessor.
  64. - Fix: Typedef names may now be omitted from typedef declarations.
  65.   For example, every C compiler I tried accepts
  66.  
  67.     typedef int;
  68.  
  69.   and some even give warnings when encountering this statement.
  70.  
  71. Patchlevel 2
  72.  
  73. - Cproto is now able to generate prototypes for functions defined in lex
  74.   and yacc source files named on the command line.  Lex and yacc source
  75.   files are recognized by the .l or .y extension.
  76. - Fix: The memory allocated to the typedef symbol table was not being
  77.   freed after scanning each source file.
  78. - Fix: Failure to reset a variable during error recovery caused
  79.   segmentation faults.
  80.  
  81. Patchlevel 1
  82.  
  83. - Fix: Cproto incorrectly generated the parameter "int ..." in
  84.   prototypes of functions taking variable parameters.
  85. - Fix: Function definitions can now be followed by an optional
  86.   semicolon.  I found this feature in every C compiler I tried.
  87.  
  88. Patchlevel 0
  89.  
  90. - Added formal parameter promotion.
  91. - Added prototype style that surrounds prototypes with a guard macro.
  92. - Handles C++ style comment //.
  93. - Nifty new way to set prototype output format.
  94. - Got rid of the shell wrapper used to pipe the input through the C
  95.   preprocessor (cpp).
  96. - For the port to MS-DOS, I modified cproto to run without cpp, but
  97.   since I didn't want to reimplement cpp, the program processes only the
  98.   #include and #define directives and ignores all others.  Macro names
  99.   defined by the #define directive are treated like typedef names if
  100.   they appear in declaration specifiers.
  101.  
  102. Version 1
  103.  
  104. Patchlevel 3
  105.  
  106. - Fix: identical typedef names and struct tags should be allowed.
  107.   For example:
  108.  
  109.     typedef struct egg_salad egg_salad;
  110.  
  111.     struct egg_salad {
  112.         int mayo;
  113.     };
  114.  
  115.     void dine(egg_salad l)
  116.     {
  117.     }
  118.  
  119. Patchlevel 2
  120.  
  121. - Fix: A typedef statement should allow a list of typedefs to be declared.
  122.   Example:
  123.  
  124.     typedef int a, *b;
  125.  
  126. - Fix: When run with the -v option on this input, cproto did not output
  127.   a declaration for variable "b":
  128.  
  129.     char *a="one"; char *b="two";
  130.  
  131. - The options were renamed.  Added new options that change the output
  132.   format of the prototypes.
  133.  
  134. Patchlevel 1
  135.  
  136. - Fix: Incorrect prototypes were produced for functions that take
  137.   function pointer parameters or return a function pointer.  For example,
  138.   cproto produced an erroneous prototype for this function definition:
  139.  
  140.     void
  141.     (*signal (sig, func))()
  142.     int sig;
  143.     void (*func)();
  144.     {
  145.         /* stuff */
  146.     }
  147.  
  148. - The lexical analyser now uses LEX.  It should still be compatible with
  149.   FLEX.
  150.