%r, and why it disappeared (a theory)

Eric Kiebler eric at washu.UUCP
Mon Oct 17 13:26:05 AEST 1983

BEWARE the _doprnt code, my son!
  The bits that twitch; the types that clash!
Use the portable varargs stuff,
  Avoid the _doprnt's teeth that gnash!

As Mark Horton pointed out, the _doprnt() routine is *not* portable
and should not be used for that reason.  Yes, of course, the code
will *never* leave your machine, but...

Just for you "my code stays at home and watches TV" folks out there,
here is a little collection of error functions which I used in code
that wasn't supposed to leave my machine either...

   Error Handling Functions 
   Wash. U. Computer Systems Lab	E. Kiebler	Sept, 1982 
   Distribution allowed if and only if this entire comment is included 

#include <stdio.h>
#include <sys/types.h>
#include <time.h>

extern char *ProgramName;
extern int  DebugFlag;
extern FILE *stdlog;

char *fmt;

  fprintf(stderr,"%s: (warning) ",ProgramName);
  _doprnt(fmt, &args, stderr);		/* magic */
  return(ferror(stderr)? EOF : 0);


char *fmt;

  fprintf(stderr,"%s: (error) ",ProgramName);
  _doprnt(fmt, &args, stderr);		/* voodoo */
  return(ferror(stderr)? EOF : 0);


char *fmt;

  fprintf(stderr,"%s: (fatal) ",ProgramName);
  _doprnt(fmt, &args, stderr);		/* read the manuals */


char *fmt;

    fprintf(stderr,"%s: (debug) ",ProgramName);
    _doprnt(fmt, &args, stderr);		/* wonderful! */


char *fmt;
  struct tm *tp;
  extern struct tm *localtime();
  time_t clock;
  tp = localtime(&clock);
  fprintf(stdlog, "(%d/%d-%d:%d) ", tp->tm_mon + 1,
  	tp->tm_mday, tp->tm_hour, tp->tm_min);

This code was written by myself and, as far as I know, does not use
any proprietary (sp?) code (unless telling people that _doprnt()
exists is proprietary, in which case eat the code and call your lawyer).

		C A V E A T    E M P T O R


More information about the Comp.lang.c mailing list