even more modules!
[knntp.git] / ztech.txt
blobfc7812dc07a03523b01b7e493f478a009927b698
1 base headers format
2 ===================
4 db 'KNMH'      ; signature
5 dd 0           ; version
7 each record is:
8 dw size        ; in bytes, excluding this field
9 dd flags
10 dd mtoffset    ; text offset in KNMT file
11 dd artnum      ; article number on NNTP server
12 dd unixtime    ; send date; taken from "Injection-Date"
13 dd root        ; "root" record number or uint.max (to avoid msgid lookups, calculated)
14 dd parent      ; parent record number or uint.max (to avoid msgid lookups, calculated)
15 dd firstchild  ; first child record number or uint.max (to avoid msgid lookups, calculated)
16 dd prevsib     ; previous sibling record number or uint.max (to avoid msgid lookups, calculated)
17 dd nextsib     ; next sibling record number or uint.max (to avoid msgid lookups, calculated)
18 dw depth       ; depth in thread tree (0: top-level); calculated field
19 db midlen      ; msgid length; never 0
20  db msgid
21 db reptolen    ; in-reply-to length; can be 0
22  db repto
23 db fromlen     ; from length; never 0
24  db from
25 db subjlen     ; subject length; never 0; empty subj will be replaced by "no subj"
26  db subj       ; all leading "re:" are removed
28 enum Flag : uint {
29   Unread       = 1U<<0,
30   Attention    = 1U<<1,
31   IgnoreThread = 1U<<2,
32   IgnoreAuthor = 1U<<3,
36 base text format
37 ================
39 db 'KNMT'    ; signature
40 dd 0         ; version
42 each record is:
43 dd size      ; in bytes, excluding this field
44 dd artnum    ; article number
45 dw hdrlines  ; number of lines in headers
46 dw txtlines  ; number of lines in body (text)
47  lines (hdrlines+txtlines):
48   dw length
49    db ???
52 Path: digitalmars.com!.POSTED.78.152.169.8!not-for-mail|
53 From: ketmar <ketmar@ketmar.no-ip.org>|
54 Newsgroups: D|
55 Subject: Re: test|
56 Date: Wed, 8 Feb 2017 00:56:46 +0000 (UTC)|
57 Organization: Digital Mars|
58 Message-ID: <toioirwhioptwbb5optrpyuwuytr@knews>|
59 Mime-Version: 1.0|
60 Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes|
61 Content-Transfer-Encoding: 8bit|
62 Injection-Date: Wed, 8 Feb 2017 00:56:46 +0000 (UTC)|
63 Injection-Info: digitalmars.com; posting-host="78.152.169.8";   logging-data="23656"; mail-complaints-to="usenet@digitalmars.com"|
64 User-Agent: knews|
65 In-Reply-To: <op.yu6fr1mvqvzfif@localhost>|
66 Xref: digitalmars.com D:29724|
69 twit format
70 ===========
72 db 'KNTL'    ; signature
73 dd 0         ; version
75 each record is (utf-8):
76 dw size      ; in bytes, excluding this field
77 db flags     ; see below
78 db namelen   ; name
79  db ???
80 db titlelen  ; title
81  db ???
82 db urllen    ; if came from web
83  db ???
84 db idlen     ; if came from messageid
85  db ???
87 flags:
88 enum Flags : ubyte {
89   NameMatch         = 1U<<0, // match only name part (for names that came from web)
90   HardIgnoreThreads = 1U<<1, // hard-ignore threads by this idiot?
94 thread ignore format (not yet)
95 ==============================
97 db 'KNTI'    ; signature
98 dd 0         ; version
100 each record is (utf-8):
101 dw size      ; in bytes, excluding this field
102 db flags     ; see below
103 db idlen     ; if came from messageid
104  db ???
106 usually only roots are stored here
108 flags:
109 enum Flags : ubyte {
110   SoftIgnore = 1U<<0, // automatically mark this thread as read
111   HardIgnore = 1U<<1, // never show this thread in UI (and automark as read too)