Category : OS/2 Files
Archive   : KSH48.ZIP
Filename : TRACE.C

 
Output of file : TRACE.C contained in archive : KSH48.ZIP
/* NAME:
* trace.c - a simple trace facility
*
* SYNOPSIS:
* TRACE(level, (fmt [, ...]));
*
* DESCRIPTION:
* This module provides a simple trace facility via
* a call to checkpoint() which opens a log file and writes
* an entry and closes the log (so that process crashes
* won't destroy the log :-). checkpoint() takes options
* like printf(). If Trace_log is not initialized then
* stderr is used.
*
* The header file trace.h defines a macro TRACE() which
* is useful in that it allows checkpoint to be called
* based on the value of Trace_level, and the calls can be
* eliminated by undefining USE_TRACE.
*
* RETURN VALUE:
* None.
*
* FILES:
* None.
*
* SEE ALSO:
*
*
* BUGS:
*
*
* AMENDED:
* 91/11/22 22:53:56 (sjg)
*
* RELEASED:
* 91/11/22 22:54:17 v1.2
*
* @(#)Copyright (c) 1990 Simon J. Gerraty.
*/
#ifdef USE_TRACE

#ifndef lint
static char sccs_id[] = "@(#)trace.c 1.2 91/11/22 22:53:56 (sjg)";
#endif

/* include files */
#include
#ifdef __STDC__
# include
#endif

#define EXTERN
#include "trace.h"
#undef EXTERN

/* some useful #defines */
#ifndef ENTRY
# define ENTRY
# define LOCAL static
# define BOOLEAN int
#endif
#ifndef TRUE
# define TRUE 1
# define FALSE 0
#endif
#ifndef ARGS
# if defined(__STDC__) || defined(PROTO)
# define ARGS(p) p
# else
# define ARGS(p) ()
# endif
#endif


/* NAME:
* checkpoint - write a logfile entry
*
* SYNOPSIS:
* checkpoint(fmt, ...)
*
* DESCRIPTION:
* This function takes a variable number or args
* like the printf(3S) family of functions.
*
* RETURN VALUE:
* None
*/
extern char * _CDECL strdup ARGS((char *s));

#ifdef __STDC__
# include

ENTRY void _CDECL
checkpoint(fmt)
char *fmt;
{
int c;
va_list arg_ptr;
FILE *fp;
register char *rcp;
char *mode;
static setup;

va_start(arg_ptr, fmt);
#else /* __STDC__ */
# include

ENTRY void _CDECL
checkpoint(va_alist)
va_dcl
{
extern char *getenv ARGS((char *var));
char *fmt;
int c;
va_list arg_ptr;
FILE *fp;
register char *rcp;
char *mode;
static setup;

va_start(arg_ptr);
fmt = va_arg(arg_ptr, char *);
#endif /* __STDC__ */

/* 42 is a "magic" number */
if (setup == 42)
mode = "a";
else
{
if (Trace_level == 0 && (rcp = getenv("TRACE_LEVEL")))
Trace_level = atoi(rcp);
if (Trace_log == NULL || *Trace_log == '\0')
{
if (rcp = getenv("TRACE_LOG"))
Trace_log = strdup(rcp);
else
Trace_log = NULL;
}
setup = 42;
mode= "w";
}
if (Trace_log)
fp = fopen(Trace_log, mode);
else
fp = stderr;
if (fp != (FILE *)NULL)
{
vfprintf(fp, fmt, arg_ptr);
fputc('\n', fp);
if (fp == stderr)
fflush(fp);
else
fclose(fp);
}
}

#endif /* USE_TRACE */

/* This lot (for GNU-Emacs) goes at the end of the file. */
/*
* Local Variables:
* version-control:t
* comment-column:40
* End:
*/


  3 Responses to “Category : OS/2 Files
Archive   : KSH48.ZIP
Filename : TRACE.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/