[comp.os.vms] VAX C V2.3, VMS V4.6

GWD21T@DGOGWD01.BITNET ("W.J.Moeller") (10/29/87)

(1) Are there any compatibility issues when going from VMS 4.5 to 4.6
    (in particular with respect to VAXCRTL)?

(2) The on-line release notes of VAX C V2.3 say:

      o  The printf and scanf functions now perform  formatted  output
         and  input respectively with the addition of three new format
         flags (#, +, space) and the following new format  specifiers:
         i, p, and n.

    Who can tell what the new specifiers are supposed to do?
    I did not find them in the VAX C V2.3 RTL manual, or in online HELP.

(3) The "new" VAXCRTL.EXE shipped with VMS V4.6 has a lot of new
    entry points, but the same image id. ("4.1") as the old VAXCRTL.
    Luckily, all of the new entry points are in a page that happened
    to be zero filled in the old image. So, if you're not yet using
    VMS 4.6, and an absolute says "OPCODE RESERVED TO DEC", read it as
    "IDENT MISMATCH WITH SHAREABLE IMAGE".

W.J.Moeller, GWDG, D-3400 Goettingen, F.R.Germany  <GWD21T@DGOGWD01>
                                                  Phone +49 551 201516

rcb@rti.UUCP (Random) (10/29/87)

There is one MAJOR problem with vms 4.6 C run-time library. There is
a bug in the memory allocation routines such that if you attempt to
malloc or calloc space when you are out of available virtual memory,
the routine bombs with a traceback instead of returning NULL. It is a 
relatively simple task to write versions of malloc, calloc, free and cfree
that use lib$get_vm and lib$free_vm to do the work.
-- 
					Randy Buckland (919)-541-7103
					Research Triangle Institute
					rcb@rti.rti.org [128.109.139.2]
					{decvax,ihnp4}!mcnc!rti!rcb

leichter@venus.ycc.yale.EDU ("Jerry Leichter") (10/29/87)

	The on-line release notes of VAX C V2.3 say:

	      o  The printf and scanf functions now perform  formatted  output
	         and  input respectively with the addition of three new format
	         flags (#, +, space) and the following new format  specifiers:
	         i, p, and n.

	    Who can tell what the new specifiers are supposed to do?
	    I did not find them in the VAX C V2.3 RTL manual, or in online
	    HELP.

These specifiers are from the ANSI Draft Standard; apparently the documenters
of VAX C didn't quite manage to keep up with the implementors.

Here - in summary - is what Harbison and Steele list for these flags and
specifiers:

	+	Always produce a sign, either plus or minus
	SPACE	Produce either a minus sign or a space
	#	Use a variant of the main conversion operation; depends
		on the conversion operation.  Applies to eEfgGoxX only.
			#o	- insert leading 0
			#x,X	- insert leading 0x or 0X
			#f,e,E 	- always include ".", even if trailing
			#g,G	- as above plus some sort of 0-stripping

	i	Same as d on output.  On input, reads a generic C integer
		constant (e.g., allows a leading 0x).  Does NOT accept a
		size marker (e.g., trailing L) in the INPUT, only in the
		format string.
	p	Prints a generic pointer (a (void *)) in an implementation-
		specific format.  Reads said format back on input.
	n	Argument must be an (int *), which receives as a value the
		number of bytes output (or read) so far.  Produces no output
		and doesn't increment the value returned by xscanf.

							-- Jerry

------