[comp.std.c] 20 May, '88 dpANS: public review material

david@dhw68k.cts.com (David H. Wolfskill) (06/29/88)

From the cover page of the 20 May, 1988 dpANS:

The 3rd 2-month period of public review and comment will run from 01
July, 1988 to 01 September, 1988.

It ought to be no surprise to readers of this group that "X3J11 requests
that the public review comments on this draft be limited to the areas
that have been changed between the second and third public review
drafts."

The following page has an updated list of substantive changes, with the
note (to reinforce the above) "THIS PUBLIC REVIEW COMMENT PERIOD IS
RESTRICTED TO THE 37 POINTS LISTED BELOW."

Here is a copy of the text of that page, with boldface type indicated
thus:  _b_o_l_d_f_a_c_e.



The following list summarizes the substantive changes that were made
between the second and third public review drafts of the C programming
language dpANS.

 1.   The _n_o_a_l_i_a_s keyword was removed, as well as all its uses.

 2.   The description of conversions of "pointers to qualified types" to
      "pointers to unqualified types" has been corrected.

 3.   Three identifiers (_e_r_r_n_o, _s_e_t_j_m_p, and _v_a___e_n_d) are allowed to be
      implemented either as macros or as external identifiers.

 4.   The _f_f_l_u_s_h function was enhanced to flush all output streams if
      passed a null pointer.

 5.   Use of a stream after it has been closed now explicitly causes
      undefined behavior.

 6.   The _%_% format for the _f_s_c_a_n_f function disallows any characters
      between the two _% characters.

 7.   Multibyte characters are now allowed in header names.

 8.   The unary _+ operator is now constrained to operate only on
      arithmetic types.

 9.   The _m_e_m_c_m_p, _s_t_r_c_m_p, and _s_t_r_n_c_m_p comparison functions now treat
      their arguments as _u_n_s_i_g_n_e_d _c_h_a_r arrays.

10.   The _o_f_f_s_e_t_o_f macro has been generalized to allow more than just a
      simple identifier as its second argument.

11.   The _=_=, _!_=, _?_:, and _= operators now allow operands that are
      pointers to qualified incomplete types (including _v_o_i_d).

12.   The _<, _>, _<_=, and _>_= operators now allow operands that are
      pointers to qualified incomplete types.

13.   A parameter for a function definition must be an object type after
      the "array of" and "function returning" rewrite to "pointer to"
      has occurred.

14.   The math library functions may now have other domain errors, such
      as sometimes when "infinity" is passed as an argument.

15.   The _a_t_a_n_2 function may now have a domain error if both its
      arguments are zero.

16.   If more than one call to the _e_x_i_t function is executed, the
      behavior is explicitly undefined.

17.   An additional field, _i_n_t___f_r_a_c___d_i_g_i_t_s, was added to the _s_t_r_u_c_t
      _l_c_o_n_v structure.

18.   The range of the _t_m___s_e_c field of the _s_t_r_u_c_t _t_m structure was
      increased to [0,60] in order to accommodate leap seconds.

19.   Unnamed structure and union members are now explicitly ignored
      during initialization.

20.   A program is now constrained to have not more than one definition
      of an identifier with internal linkage and to have exactly one
      definition if the identifier is used.

21.   The error number names in _<_e_r_r_n_o_._h_> were extended to include all
      names that begin with _E followed by a digit, underscore, or upper
      case letter.

22.   A function defined with an ellipsis must now invoke both _v_a___s_t_a_r_t
      and _v_a___e_n_d or must invoke neither.

23.   The _s_i_g_n_a_l function is no longer required to be reentrant.

24.   A function's image is no longer required to be unmodified during
      execution.

25.   Casts to qualified types are no longer a constraint violation.

26.   The behavior is explicitly undefined if a call with a prototype is
      made to a function that is not defined with a compatible type.

27.   The redeclaration constraints involving identifiers with no
      linkage were corrected with respect to tags.

28.   The distinction between "signed" and "plain" _i_n_t bit-fields is now
      explicitly distinguishable, even through _t_y_p_e_d_e_f_s.

29.   Unions are padded at their end as necessary for alignment, just
      like structures.

30.   Use of typedef names in prototypes and in structure and union
      member declarations was clarified.

31.   The behavior of identifiers during the evaluation of the
      expressions for the _#_i_f and _#_e_l_i_f preprocessing directives was
      corrected.

32.   Macro definitions of keywords are not permitted when a header is
      included.

33.   The error and end-of-file indicators are explicitly cleared by the
      _f_o_p_e_n and _f_r_e_o_p_e_n functions.

34.   No prior operations are allowed on a stream before a call to the
      _s_e_t_v_b_u_f function.

35.   An implementation must behave as if its library does not call the
      _s_r_a_n_d, _m_b_l_e_n, _m_b_t_o_w_c, _w_c_t_o_m_b, and _s_t_r_e_r_r_o_r functions.

36.   The environment for _a_t_e_x_i_t-registered functions is no longer
      specified.

37.   The shift states for the _m_b_l_e_n, _m_b_t_o_w_c, and _w_c_t_o_m_b functions are
      explicitly undefined after a change to the _L_C___C_T_Y_P_E category.



I hope I entered everything correctly -- and that I have not offended
anyone by posting this.

david
-- 
David H. Wolfskill
uucp: ...{trwrb,hplabs}!felix!dhw68k!david	InterNet: david@dhw68k.cts.com