"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 or download the uninterpreted source code file.

    1 This attempts to document the article lifecycle.
    2 
    3 arts[] is trashed and rebuilt every time a group is entered.
    4 This is handled entirely by index_group()
    5 
    6 setup_hard_base() creates an array of 'valid' article numbers in base[]
    7 
    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
   13 
   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 ]
   22 
   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
   26 
   27 Any articles that still have art->thread set to ART_EXPIRED will
   28 have art->status set to ART_READ
   29 
   30 write_overview() rewrites the cached overview data for any
   31 articles above the group low watermark where arts->thread != ART_EXPIRED
   32 
   33 build_references() doesn't affect any of this
   34 
   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()
   39 
   40 find_base() will not thread articles with ->thread == ART_EXPIRED
   41 It makes no actual changes to ->status or ->thread