1
0
Files
irix-657m-src/eoe/cmd/sh/profile.c
2022-09-29 17:59:04 +03:00

49 lines
1.1 KiB
C

/* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */
/* Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF */
/* UNIX System Laboratories, Inc. */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "@(#)sh:profile.c 1.6.5.1"
char *mktemp();
extern void profil();
extern int creat();
extern int write();
extern int close();
void
monitor(lowpc, highpc, buf, bufsiz, cntsiz)
char *lowpc, *highpc;
int *buf, bufsiz;
{
register o;
static *sbuf, ssiz;
if (lowpc == 0) {
profil(0, 0, 0, 0);
o = creat(mktemp("profXXXXXX"), 0666);
(void)write(o, sbuf, ssiz<<1);
(void)close(o);
return;
}
ssiz = bufsiz;
buf[0] = (int)lowpc;
buf[1] = (int)highpc;
buf[2] = cntsiz;
sbuf = buf;
buf += 3*(cntsiz+1);
bufsiz -= 3*(cntsiz+1);
if (bufsiz<=0)
return;
o = ((highpc - lowpc)>>1) & 077777;
if(bufsiz < o)
o = ((long)bufsiz<<15) / o;
else
o = 077777;
profil(buf, bufsiz<<1, lowpc, o<<1);
}