home *** CD-ROM | disk | FTP | other *** search
- Portable vsprintf, vfprintf, and vprintf by Robert A. Larson
- <blarson@skat.usc.edu>
-
- Copyright 1989 Robert A. Larson.
- Distribution in any form is allowed as long as the author
- retains credit, changes are noted by their author and the
- copyright message remains intact. This program comes as-is
- with no warentee of fitness for any purpouse.
-
- Thanks to Doug Gwen, Chris Torek, and others who helped clarify
- the ansi printf specs.
-
- Please send any bug fixes and improvments to blarson@skat.usc.edu .
- The use of goto is NOT a bug.
-
-
- Feb 9, 1989 blarson First usenet release
-
- This code implements the vsprintf function, without relying on
- the existance of _doprint or other system specific code.
-
- Define NOVOID if void * is not a supported type.
-
- Two compile options are available for efficency:
- INTSPRINTF should be defined if sprintf is int and returns
- the number of chacters formated.
- LONGINT should be defined if sizeof(long) == sizeof(int)
-
- They only make the code smaller and faster, they need not be
- defined.
-
- UNSIGNEDSPECIAL should be defined if unsigned is treated differently
- than int in argument passing. If this is definded, and LONGINT is not,
- the compiler must support the type unsigned long.
-
- Most quirks and bugs of the available sprintf and fprintf fuction are
- duplicated, however * in the width and precision fields will work
- correctly even if sprintf does not support this, and the %n format
- will always work in vsprintf. %n and return count will work properly
- in vfprintf and vprintf only if fprintf returns the number of
- characters formatted.
-
- Bad format strings, or those with very long width and precision
- fields (including expanded * fields) will cause undesired results.
-