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 ------