📄 ndbsubstitute.c
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include <ndb.h>/* replace a in t with b, the line structure in b is lost, c'est la vie */Ndbtuple*ndbsubstitute(Ndbtuple *t, Ndbtuple *a, Ndbtuple *b){ Ndbtuple *nt; if(a == b){ ndbsetmalloctag(t, getcallerpc(&t)); return t; } if(b == nil){ t = ndbdiscard(t, a); ndbsetmalloctag(t, getcallerpc(&t)); return t; } /* all pointers to a become pointers to b */ for(nt = t; nt != nil; nt = nt->entry){ if(nt->line == a) nt->line = b; if(nt->entry == a) nt->entry = b; } /* end of b chain points to a's successors */ for(nt = b; nt->entry; nt = nt->entry) nt->line = nt->entry; nt->line = a->line; nt->entry = a->entry; a->entry = nil; ndbfree(a); if(a == t){ ndbsetmalloctag(b, getcallerpc(&t)); return b; }else{ ndbsetmalloctag(t, getcallerpc(&t)); return t; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -