summaryrefslogtreecommitdiff
path: root/dmake/unix/coherent/ver40/vfprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'dmake/unix/coherent/ver40/vfprintf.c')
-rw-r--r--dmake/unix/coherent/ver40/vfprintf.c190
1 files changed, 0 insertions, 190 deletions
diff --git a/dmake/unix/coherent/ver40/vfprintf.c b/dmake/unix/coherent/ver40/vfprintf.c
deleted file mode 100644
index a645d646d..000000000
--- a/dmake/unix/coherent/ver40/vfprintf.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Portable 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 vfprintf 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 unsingned long.
- *
- * Most quirks and bugs of the available fprintf fuction are duplicated,
- * however * in the width and precision fields will work correctly
- * even if fprintf does not support this. The %n format and the return
- * count will only work 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.
- */
-
-#ifdef OSK /* os9/68k can take advantage of both */
-#define INTSPRINTF
-#define LONGINT
-#endif
-#define NOVOID 1
-
-/* This must be a typedef not a #define! */
-#ifdef NOVOID
-typedef char *pointer;
-#else
-typedef void *pointer;
-#endif
-
-#include <stdio.h>
-
-#ifdef INTSPRINTF
-#define Sprintf(string,format,arg) (sprintf((string),(format),(arg)))
-#else
-#define Sprintf(string,format,arg) (\
- sprintf((string),(format),(arg)),\
- strlen(string)\
-)
-#endif
-
-#include <stdarg.h>
-
-typedef int *intp;
-
-int vfprintf(dest, format, args)
-FILE *dest;
-register char *format;
-va_list args;
-{
- register char c;
- register char *tp;
- register int count = 0;
- char tempfmt[64];
-#ifndef LONGINT
- int longflag;
-#endif
-
- tempfmt[0] = '%';
- while(c = *format++) {
- if(c=='%') {
- tp = &tempfmt[1];
-#ifndef LONGINT
- longflag = 0;
-#endif
-continue_format:
- switch(c = *format++) {
- case 's':
- *tp++ = c;
- *tp = '\0';
- count += fprintf(dest, tempfmt, va_arg(args, char *));
- break;
- case 'u':
- case 'x':
- case 'o':
- case 'X':
-#ifdef UNSIGNEDSPECIAL
- *tp++ = c;
- *tp = '\0';
-#ifndef LONGINT
- if(longflag)
- count += fprintf(dest, tempfmt, va_arg(args, unsigned long));
- else
-#endif
- count += fprintf(dest, tempfmt, va_arg(args, unsigned));
- break;
-#endif
- case 'd':
- case 'c':
- case 'i':
- *tp++ = c;
- *tp = '\0';
-#ifndef LONGINT
- if(longflag)
- count += fprintf(dest, tempfmt, va_arg(args, long));
- else
-#endif
- count += fprintf(dest, tempfmt, va_arg(args, int));
- break;
- case 'f':
- case 'e':
- case 'E':
- case 'g':
- case 'G':
- *tp++ = c;
- *tp = '\0';
- count += fprintf(dest, tempfmt, va_arg(args, double));
- break;
- case 'p':
- *tp++ = c;
- *tp = '\0';
- count += fprintf(dest, tempfmt, va_arg(args, pointer));
- break;
- case '-':
- case '+':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case '.':
- case ' ':
- case '#':
- case 'h':
- *tp++ = c;
- goto continue_format;
- case 'l':
-#ifndef LONGINT
- longflag = 1;
- *tp++ = c;
-#endif
- goto continue_format;
- case '*':
- tp += Sprintf(tp, "%d", va_arg(args, int));
- goto continue_format;
- case 'n':
- *va_arg(args, intp) = count;
- break;
- case '%':
- default:
- putc(c, dest);
- count++;
- break;
- }
- } else {
- putc(c, dest);
- count++;
- }
- }
- return count;
-}
-
-vprintf(format, args)
-char *format;
-va_list args;
-{
- return vfprintf(stdout, format, args);
-}