This commit is contained in:
Oliver Lehmann 1989-04-03 17:34:22 +00:00
parent 937df898e0
commit 22dba5398b
3 changed files with 142 additions and 0 deletions

View File

@ -0,0 +1,32 @@
# include "gen.h"
# include "../h/dbs.h"
# include "../h/aux.h"
static char AA_ERRFN[] ="/sys/etc/error";
/*
** Errfn() -- Returns the pathname where the error file can be found
**
** It is assumed that the error errnum cannot be more than 999
*/
char *AAerrfn(errnum)
register int errnum;
{
register char *cp;
char ver[12];
extern char AAversion[];
extern char *AAbmove();
extern char *AAztack();
extern char *AA_iocv();
AAbmove(AAversion, cp = ver, sizeof ver);
/* make sure any mod number is removed */
for ( ; *cp; cp++)
if (*cp == '/')
break;
/* now insert the "_X" */
*cp++ = '_';
*cp++ = 0;
return (AAztack(AAztack(AAztack(AApath, AA_ERRFN), ver), AA_iocv(errnum)));
}

View File

@ -0,0 +1,83 @@
# include "gen.h"
# include "../h/dbs.h"
# include "../h/aux.h"
# include "need.h"
/*
** NEED.C -- general buffer allocation routines
**
** allow buffers with LIFO de-allocation
**
** Defines:
** need()
** initbuf()
**
**
**
** NEED -- allocate space from a buffer
**
** On buffer overflow, calls err_func from that field
** in the buffer with the error code err_code from that field
** in the buffer, then returns 0.
** need() guarantees an even adress on return.
**
** Parameters:
** bf -- buffer
** nbytes -- number of bytes desired
**
** Returns:
** pointer to allocated area
** on buffer overflow returns 0.
**
** Side Effects:
** adjusts buffer structure to reflect allocation.
*/
char *need(buf, nbytes)
register struct nodbuffer *buf;
register int nbytes;
{
register char *x;
nbytes = ALIGNMENT(nbytes);
if (nbytes > buf->nleft)
{
(*buf->err_func)(buf->err_num);
return (0);
}
x = buf->xfree;
buf->xfree += nbytes;
buf->nleft -= nbytes;
return (x);
}
/*
** INITBUF -- initialize a buffer
**
** Must be called before the first need() call on the buffer.
**
** Parameters:
** bf -- buffer
** size -- size fo buffer area
** err_num -- error code for overflow
** err_func -- function to call with err_code on error
**
** Returns:
** none
**
** Side Effects:
** initializes buffer structure
*/
initbuf(buf, size, err_num, err_func)
register struct nodbuffer *buf;
register int size;
register int err_num;
int (*err_func)();
{
if (((int) buf) & 01)
AAsyserr(14008, buf);
buf->nleft = size - sizeof *buf;
buf->xfree = buf->buffer;
buf->err_num = err_num;
buf->err_func = err_func;
}

View File

@ -0,0 +1,27 @@
# include <stdio.h>
# include "gen.h"
# include "../h/dbs.h"
extern int AAtTany;
/*
** SET_SO_BUF -- set standard output buffer conditionally
**
** This routine sets the standard output buffer conditionally,
** based on whether trace flags are set or not.
*/
set_so_buf()
{
# ifdef SETBUF
extern int errno;
static char buffer[BUFSIZ];
# ifdef xATR1
if (AAtTany)
return;
# endif
errno = 0;
setbuf(stdout, buffer);
# endif
}