home *** CD-ROM | disk | FTP | other *** search
- /* $Header: bits.h,v 4.3.3.2 91/01/16 02:29:50 davison Trn $
- *
- * $Log: bits.h,v $
- * Revision 4.3.3.2 91/01/16 02:29:50 davison
- * Added optional prototyping.
- *
- * Revision 4.3.3.1 90/06/20 22:36:35 davison
- * Initial Trn Release
- *
- * Revision 4.3.2.1 90/11/22 15:46:42 sob
- * Made changes to make pickly preprocessors happier.
- *
- * Revision 4.3.1.2 86/11/03 09:49:58 lwall
- * Added firstbit variable.
- *
- * Revision 4.3.1.1 85/05/10 11:31:52 lwall
- * Branch for patches.
- *
- * Revision 4.3 85/05/01 11:36:39 lwall
- * Baseline for release with 4.3bsd.
- *
- */
-
- EXT char *ctlarea INIT(Nullch); /* one bit for each article in current newsgroup */
- /* with the following interpretation: */
- /* 0 => unread */
- /* 1 => read */
-
- /* if subscripting is faster than shifting on your machine, define this */
- #undef USESUBSCRIPT
- #ifdef USESUBSCRIPT
- EXT char powerof2[] INIT({1,2,4,8,16,32,64,128});
- #define pow2(x) powerof2[x]
- #else
- #define pow2(x) (1 << (x))
- #endif
-
- #ifdef lint
- EXT bool nonesuch INIT(FALSE);
- #define ctl_set(a)
- #define ctl_clear(a)
- #define ctl_read(a) nonesuch
- #define was_read(a) nonesuch
- #else
- #define ctl_set(a) (ctlarea[(OFFSET(a)) / BITSPERBYTE] |= pow2((OFFSET(a)) % BITSPERBYTE))
- #define ctl_clear(a) (ctlarea[(OFFSET(a)) / BITSPERBYTE] &= ~pow2((OFFSET(a)) % BITSPERBYTE))
- #define ctl_read(a) ((ctlarea[(OFFSET(a)) / BITSPERBYTE] & pow2((OFFSET(a)) % BITSPERBYTE)) != 0)
-
- #define was_read(a) ((a)<firstbit || ctl_read(a))
- #endif /* lint */
-
- EXT ART_NUM absfirst INIT(0); /* 1st real article in current newsgroup */
- EXT ART_NUM firstart INIT(0); /* minimum unread article number in newsgroup */
- EXT ART_NUM firstbit INIT(0); /* minimum valid bit, usually == firstart */
- EXT ART_NUM lastart INIT(0); /* maximum article number in newsgroup */
-
- #ifdef DELAYMARK
- EXT FILE *dmfp INIT(Nullfp);
- EXT char *dmname INIT(Nullch);
- EXT int dmcount INIT(0);
- #endif
-
- void bits_init ANSI((void));
- void checkpoint_rc ANSI((void));
- void restore_ng ANSI((void));
- void onemore ANSI((ART_NUM));
- void oneless ANSI((ART_NUM));
- void unmark_as_read ANSI((void));
- #ifdef USETHREADS
- void set_read ANSI((ART_NUM,int));
- void set_unread ANSI((ART_NUM,int));
- #endif
- void delay_unmark ANSI((ART_NUM));
- void mark_as_read ANSI((void));
- void check_first ANSI((ART_NUM));
- #ifdef DELAYMARK
- void yankback ANSI((void));
- #endif
- int chase_xrefs ANSI((ART_NUM,int));
- int initctl ANSI((void));
- void grow_ctl ANSI((ART_NUM));
-