40 |
struct stack_block *stackp; |
struct stack_block *stackp; |
41 |
char *stacknxt; |
char *stacknxt; |
42 |
size_t stacknleft; |
size_t stacknleft; |
|
struct stackmark *marknext; |
|
43 |
}; |
}; |
44 |
|
|
45 |
|
|
46 |
extern char *stacknxt; |
extern char *stacknxt; |
47 |
extern size_t stacknleft; |
extern size_t stacknleft; |
48 |
extern char *sstrend; |
extern char *sstrend; |
|
extern int herefd; |
|
49 |
|
|
50 |
pointer ckmalloc(size_t); |
pointer ckmalloc(size_t); |
51 |
pointer ckrealloc(pointer, size_t); |
pointer ckrealloc(pointer, size_t); |
52 |
char *savestr(const char *); |
char *savestr(const char *); |
53 |
pointer stalloc(size_t); |
pointer stalloc(size_t); |
54 |
void stunalloc(pointer); |
void stunalloc(pointer); |
55 |
|
void pushstackmark(struct stackmark *mark, size_t len); |
56 |
void setstackmark(struct stackmark *); |
void setstackmark(struct stackmark *); |
57 |
void popstackmark(struct stackmark *); |
void popstackmark(struct stackmark *); |
58 |
void growstackblock(void); |
void growstackblock(void); |
|
void grabstackblock(size_t); |
|
59 |
void *growstackstr(void); |
void *growstackstr(void); |
60 |
char *makestrspace(size_t, char *); |
char *makestrspace(size_t, char *); |
61 |
char *stnputs(const char *, size_t, char *); |
char *stnputs(const char *, size_t, char *); |
62 |
char *stputs(const char *, char *); |
char *stputs(const char *, char *); |
63 |
|
|
64 |
|
|
65 |
|
static inline void grabstackblock(size_t len) |
66 |
|
{ |
67 |
|
stalloc(len); |
68 |
|
} |
69 |
|
|
70 |
static inline char *_STPUTC(int c, char *p) { |
static inline char *_STPUTC(int c, char *p) { |
71 |
if (p == sstrend) |
if (p == sstrend) |
72 |
p = growstackstr(); |
p = growstackstr(); |