⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headerbody.c

📁 linux下qmail的源码 本人加了一些注释
💻 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 + -