stak.c
来自「unix v7是最后一个广泛发布的研究型UNIX版本」· C语言 代码 · 共 82 行
C
82 行
#/* * UNIX shell * * S. R. Bourne * Bell Telephone Laboratories * */#include "defs.h"STKPTR stakbot=nullstr;/* ======== storage allocation ======== */STKPTR getstak(asize) INT asize;{ /* allocate requested stack */ REG STKPTR oldstak; REG INT size; size=round(asize,BYTESPERWORD); oldstak=stakbot; staktop = stakbot += size; return(oldstak);}STKPTR locstak(){ /* set up stack for local use * should be followed by `endstak' */ IF brkend-stakbot<BRKINCR THEN setbrk(brkincr); IF brkincr < BRKMAX THEN brkincr += 256; FI FI return(stakbot);}STKPTR savstak(){ assert(staktop==stakbot); return(stakbot);}STKPTR endstak(argp) REG STRING argp;{ /* tidy up after `locstak' */ REG STKPTR oldstak; *argp++=0; oldstak=stakbot; stakbot=staktop=round(argp,BYTESPERWORD); return(oldstak);}VOID tdystak(x) REG STKPTR x;{ /* try to bring stack back to x */ WHILE ADR(stakbsy)>ADR(x) DO free(stakbsy); stakbsy = stakbsy->word; OD staktop=stakbot=max(ADR(x),ADR(stakbas)); rmtemp(x);}stakchk(){ IF (brkend-stakbas)>BRKINCR+BRKINCR THEN setbrk(-BRKINCR); FI}STKPTR cpystak(x) STKPTR x;{ return(endstak(movstr(x,locstak())));}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?