"Fossies" - the Fresh Open Source Software Archive
Member "tin-2.4.1/doc/article.txt" (28 Aug 2013, 1701 Bytes) of archive /linux/misc/tin-2.4.1.tar.gz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard
) with prefixed line numbers.
Alternatively you can here view
the uninterpreted source code file.
1 This attempts to document the article lifecycle.
3 arts is trashed and rebuilt every time a group is entered.
4 This is handled entirely by index_group()
6 setup_hard_base() creates an array of 'valid' article numbers in base
8 read_overview() populates arts from overview data (cached or XOVER)
9 Articles are initialised with set_article()
10 Key initial default values are:
11 art->thread = ART_EXPIRED
12 art->status = ART_UNREAD
14 read_art_headers() then plugs in any gaps due to new articles not yet in the
15 overview (or reads all the headers if there are no overviews).
16 All articles that are verified as already present (ie loaded by read_overview())
17 or are newly added will have art->thread set to ART_UNTHREADED
18 valid_artnum() is used to check if base[n] maps to any known arts.artnum
19 [ After this base is reused as the thread base pointer array, which involves
20 a change of type from long to int. This is why the code is full of ugly
21 (int) base casts ]
23 parse_unread_arts() uses the newsrc bitmask to explicitly set
24 art->status to either ART_UNREAD or ART_READ
25 Therefore anything not in the bitmap will default to ART_UNREAD
27 Any articles that still have art->thread set to ART_EXPIRED will
28 have art->status set to ART_READ
30 write_overview() rewrites the cached overview data for any
31 articles above the group low watermark where arts->thread != ART_EXPIRED
33 build_references() doesn't affect any of this
35 make_threads() in essence does:
36 if (arts[i].thread >= 0)
37 arts[i].thread = ART_UNTHREADED;
38 to 'unthread' all the currently threaded & valid arts and calls find_base()
40 find_base() will not thread articles with ->thread == ART_EXPIRED
41 It makes no actual changes to ->status or ->thread