回精華區
作者itoc, 信區: itoc
標題[功能] rec_article.c 轉信的文章加入檔頭 X-Filename
時間03/08/17
作者: itoc (風調雨順,國泰民安) 看板: plan
標題: [功能] 轉信的文章加入檔頭 X-Filename
時間: Tue Jun 24 14:45:57 2003                          Updated: 2005/11/25

  在文章的內文前加入額外的檔頭資料 X-Filename

: global.h
: 看你有幾個檔頭,LINE_HEADER 這數字就寫幾

- #define LINE_HEADER     3               /* more.c bhttpd.c 檔頭有三列 */
+ #define LINE_HEADER     4               /* more.c bhttpd.c 檔頭有三列 */

: inntobbs.h

extern char *SUBJECT, *FROM, *SITE, *DATE, *PATH,
            *GROUP, *MSGID, *CONTROL, *XFILENAME;

: inntobbs.c

enum HeaderValue        /* 所有有用到的 header */
{
  SUBJECT_H,
  FROM_H,
  SITE_H,
  DATE_H,
  PATH_H,
  GROUP_H,
  MSGID_H,
  CONTROL_H,
+ XFILENAME_H,

  LASTHEADER
};


static header_t headertable[LASTHEADER] =
{
  "Subject",                    SUBJECT_H,
  "From",                       FROM_H,
  "Organization",               SITE_H,
  "Date",                       DATE_H,
  "Path",                       PATH_H,
  "Newsgroups",                 GROUP_H,
  "Message-ID",                 MSGID_H,
  "Control",                    CONTROL_H,
+ "X-Filename",                 XFILENAME_H,
};

char *BODY;
char *SUBJECT, *FROM, *SITE, *DATE, *PATH,
     *GROUP, *MSGID, *CONTROL, *XFILENAME;

: innbbs.c:readlines() 收信站收入

  SUBJECT = HEADER[SUBJECT_H];
  FROM = HEADER[FROM_H];
  SITE = HEADER[SITE_H];
  DATE = HEADER[DATE_H];
  POSTHOST = HEADER[POSTHOST_H1] ? HEADER[POSTHOST_H1] : HEADER[POSTHOST_H2];
  PATH = HEADER[PATH_H];
  GROUP = HEADER[GROUP_H];
  MSGID = HEADER[MSGID_H];
  CONTROL = HEADER[CONTROL_H];
+ XFILENAME = HEADER[XFILENAME_H];
}

: rec_article.c:bbspost_add()

    fprintf(fp, "發信人: %.50s 看板: %s\n", FROM, board);
    fprintf(fp, "標  題: %.70s\n", SUBJECT);
-   fprintf(fp, "發信站: %.27s (%.40s)\n\n", SITE, DATE);
+   fprintf(fp, "發信站: %.27s (%.40s)\n", SITE, DATE);
+   if (XFILENAME)
+     fprintf(fp, "檔  名: %.70s\n", XFILENAME);
+   fprintf(fp, "\n");

: more.c:outs_header()

static int              /* 1:是檔頭 */
outs_header(buf, header_len)
  char *buf;
  int header_len;
{
  static const char header1[LINE_HEADER][LEN_AUTHOR1] =
    {"作者",   "標題",   "時間",   "檔名"};
  static const char header2[LINE_HEADER][LEN_AUTHOR2] =
    {"發信人", "標  題", "發信站", "檔  名"};

: bhttpd.c:txt2htm()

static void
txt2htm(fp)
  FILE *fp;
{
  int i;
  char buf[ANSILINELEN], encodebuf[LSTRLEN];
  static char header1[LINE_HEADER][LEN_AUTHOR1] =
    {"作者",   "標題",   "時間",   "檔名"};
  static char header2[LINE_HEADER][LEN_AUTHOR2] =
    {"發信人", "標  題", "發信站", "檔  名"};
  char *headvalue, *pbrd, board[128];

--
□ 本文章由 itocitoc.Dorm-GD2.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻