DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T s

⟦66fedf4aa⟧ TextFile

    Length: 2953 (0xb89)
    Types: TextFile
    Names: »support.c,v«

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦34cc4e2f7⟧ »./UNRELEASED/xgdb3.2.tar.Z« 
        └─⟦80fac5d7c⟧ 
            └─⟦this⟧ »./RCS/support.c,v« 

TextFile

head     1.1;
access   ;
symbols  ;
locks    hubbard:1.1; strict;
comment  @ * @;


1.1
date     89.07.05.15.36.47;  author hubbard;  state Exp;
branches ;
next     ;


desc
@Initial checkin, Beta version 0.1.
@



1.1
log
@Initial revision
@
text
@\f


#ifndef lint
static char rcsid[] = "$Header$";
#endif

/*
 *
 *                     Copyright 1988, 1989
 *                  PCS Computer Systeme, GmbH
 *                     Munich, West Germany
 *
 *  All rights reserved.
 * 
 *  This is unsupported software and is subject to change without notice.
 *  PCS makes no representations about the suitability of this software
 *  for any purpose. It is supplied "as is" without express or implied
 *  warranty.
 * 
 *  Permission to use, copy, modify, and distribute this software and its
 *  documentation for any purpose and without fee is hereby granted, provided
 *  that the above copyright notice appear in all copies and that both that
 *  copyright notice and this permission notice appear in supporting
 *  documentation, and that the name of PCS Computer Systeme not be used in
 *  advertising or publicity pertaining to distribution of the software
 *  without specific, written prior permission.
 *
 */

/*
 * Author:	Jordan K. Hubbard
 * For:		PCS Computer Systems, GmbH.
 * When:	January 5th, 1989.
 *
 * $Log$
 * 
 */

#if !defined(SAVERTNAME)
char *_Curr_rtn = "(unknown)";
#else
char *_Curr_rtn;
#endif

#if !defined(TRACE)
char *Curr_rtn()
{
     return("(Unknown)");
}
#else
#include "xgdb.h"

typedef struct _func_stack {
     String rtn_name;
     struct _func_stack *next;
} FunctionStack;

static FunctionStack *Head;

int _rtn_level;
int _rtn_trace;

char *Curr_rtn()
{
     if (Head == (FunctionStack *)NULL)
	  return((char *)NULL);
     else
	  return(Head->rtn_name);
}

void push_rtn(s)
register char *s;
{
     if (!Head) {
	  Head = (FunctionStack *)XtMalloc(sizeof(FunctionStack));
	  Head->rtn_name = s;
	  Head->next = 0;
     }
     else {
	  FunctionStack *ptr;
	  
	  ptr =  (FunctionStack *)XtMalloc(sizeof(FunctionStack));
	  ptr->rtn_name = s;
	  ptr->next = Head;
	  Head = ptr;
     }
     _rtn_level++;
     if (_rtn_trace) {
	  Cardinal i;
	  
	  for (i = 0; i < _rtn_level; i++)
	       putchar('\t');
	  printf("Pushing to: %s (level %d)\n", Head->rtn_name, _rtn_level);
     }
}

void pop_rtn()
{
     FunctionStack *ptr;

     if (Head == (FunctionStack *)NULL)
	  return;
     ptr = Head;
     Head = Head->next;
     if (_rtn_trace) {
	  Cardinal i;

	  for (i = 0; i < _rtn_level; i++)
	       putchar('\t');
	  fprintf(stderr, "Popping from: %s (level %d)\n", ptr->rtn_name,
		  _rtn_level);
     }
     XtFree(ptr);
     _rtn_level--;
}

/*
 * Some systems retch when you pass strlen() a NULL pointer.
 * Here's a way of getting around it.
 */

#ifdef hlh
strlen(s)
char *s;
{
	int count = 0;

	if (s == 0)
		return(0);
	while (*s++)
		count++;
	return(count);
}
#endif /* hlh */
#endif /* TRACE */
@