📄 headerbody.c
字号:
#include "stralloc.h"#include "substdio.h"#include "getln.h"#include "hfield.h"#include "headerbody.h"static int getsa(ss,sa,match)substdio *ss;stralloc *sa;int *match;{ if (!*match) return 0; if (getln(ss,sa,match,'\n') == -1) return -1; if (*match) return 1; if (!sa->len) return 0; if (!stralloc_append(sa,"\n")) return -1; return 1;}static stralloc line = {0};static stralloc nextline = {0};int headerbody(ss,dohf,hdone,dobl)substdio *ss;void (*dohf)();void (*hdone)();void (*dobl)();{ int match; int flaglineok; match = 1; flaglineok = 0; for (;;) { switch(getsa(ss,&nextline,&match)) { case -1: return -1; case 0: if (flaglineok) dohf(&line); hdone(); /* no message body; could insert blank line here */ return 0; } if (flaglineok) { if ((nextline.s[0] == ' ') || (nextline.s[0] == '\t')) { if (!stralloc_cat(&line,&nextline)) return -1; continue; } dohf(&line); } if (nextline.len == 1) { hdone(); dobl(&nextline); break; } if (stralloc_starts(&nextline,"From ")) { if (!stralloc_copys(&line,"MBOX-Line: ")) return -1; if (!stralloc_cat(&line,&nextline)) return -1; } else if (hfield_valid(nextline.s,nextline.len)) { if (!stralloc_copy(&line,&nextline)) return -1; } else { hdone(); if (!stralloc_copys(&line,"\n")) return -1; dobl(&line); dobl(&nextline); break; } flaglineok = 1; } for (;;) switch(getsa(ss,&nextline,&match)) { case -1: return -1; case 0: return 0; case 1: dobl(&nextline); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -