# /* * pxp - Pascal execution profiler * * Bill Joy UCB * Version 1.0 August 1977 */ #include "0.h" /* * STRING SPACE DECLARATIONS * * Strng is the base of the current * string space and strngp the * base of the free area therein. * No array of descriptors is needed * as string space is never freed. */ STATIC char strings[STRINC]; STATIC char *strng strings; STATIC char *strngp strings; /* initstring() { } */ /* * Copy a string into the string area. */ savestr(cp) register char *cp; { register int i; i = strlen(cp) + 1; if (strngp + i >= strng + STRINC) { strngp = alloc(STRINC); if (strngp == -1) { yerror("Ran out of memory (string)"); pexit(DIED); } strng = strngp; } strcpy(strngp, cp); cp = strngp; strngp = cp + i; return (cp); } esavestr(cp) char *cp; { strngp = (strngp + 1) &~ 1; return (savestr(cp)); }