home *** CD-ROM | disk | FTP | other *** search
- /* $Id: cheat.c,v 4.4.3.1 1992/02/01 03:09:32 sob PATCH_3 sob $
- *
- * $Log: cheat.c,v $
- * Revision 4.4.3.1 1992/02/01 03:09:32 sob
- * Release 4.4 Patchlevel 3
- *
- * Revision 4.4.2.1 1991/12/01 18:05:42 sob
- * Patchlevel 2 changes
- *
- * Revision 4.4 1991/09/09 20:18:23 sob
- * release 4.4
- *
- *
- *
- */
- /* This software is Copyright 1991 by Stan Barber.
- *
- * Permission is hereby granted to copy, reproduce, redistribute or otherwise
- * use this software as long as: there is no monetary profit gained
- * specifically from the use or reproduction of this software, it is not
- * sold, rented, traded or otherwise marketed, and this copyright notice is
- * included prominently in any copy made.
- *
- * The author make no claims as to the fitness or correctness of this software
- * for any use whatsoever, and it is provided as is. Any use of this software
- * is at the user's own risk.
- */
-
- #include "EXTERN.h"
- #include "common.h"
- #include "intrp.h"
- #include "search.h"
- #include "ng.h"
- #include "ngdata.h"
- #include "bits.h"
- #include "artio.h"
- #include "term.h"
- #include "artsrch.h"
- #include "head.h"
- #ifdef USETHREADS
- #include "threads.h"
- #include "rthreads.h"
- #endif
- #include "INTERN.h"
- #include "cheat.h"
-
- /* see what we can do while they are reading */
-
- #ifdef PENDING
- # ifdef ARTSEARCH
- COMPEX srchcompex; /* compiled regex for searchahead */
- # endif
- #endif
-
- void
- cheat_init()
- {
- ;
- }
-
- #ifdef PENDING
- void
- look_ahead()
- {
- #ifdef ARTSEARCH
- register char *h, *s;
-
- #ifdef DEBUGGING
- if (debug && srchahead) {
- printf("(%ld)",(long)srchahead);
- fflush(stdout);
- }
- #endif
- #endif
-
- #ifdef USETHREADS
- if (ThreadedGroup) {
- int save_art = art;
- PACKED_ARTICLE *save_p_art = p_art;
-
- follow_thread('n');
- #ifdef SERVER
- nntpopen(art,GET_HEADER);
- #else
- artopen(art);
- #endif
- art = save_art;
- p_art = save_p_art;
- }
- else
- #endif /* USETHREADS */
- if (srchahead && srchahead < art) { /* in ^N mode? */
- char *pattern;
-
- pattern = buf+1;
- strcpy(pattern,": *");
- h = pattern + strlen(pattern);
- interp(h,(sizeof buf) - (h-buf),"%\\s");
- { /* compensate for notesfiles */
- register int i;
- for (i = 24; *h && i--; h++)
- if (*h == '\\')
- h++;
- *h = '\0';
- }
- #ifdef DEBUGGING
- if (debug & DEB_SEARCH_AHEAD) {
- fputs("(hit CR)",stdout);
- fflush(stdout);
- gets(buf+128);
- printf("\npattern = %s\n",pattern);
- }
- #endif
- if ((s = compile(&srchcompex,pattern,TRUE,TRUE)) != Nullch) {
- /* compile regular expression */
- printf("\n%s\n",s);
- srchahead = 0;
- }
- if (srchahead) {
- srchahead = art;
- for (;;) {
- srchahead++; /* go forward one article */
- if (srchahead > lastart) { /* out of articles? */
- #ifdef DEBUGGING
- if (debug)
- fputs("(not found)",stdout);
- #endif
- break;
- }
- if (!was_read(srchahead) &&
- wanted(&srchcompex,srchahead,0)) {
- /* does the shoe fit? */
- #ifdef DEBUGGING
- if (debug)
- printf("(%ld)",(long)srchahead);
- #endif
- #ifdef SERVER
- nntpopen(srchahead,GET_HEADER);
- #else
- artopen(srchahead);
- #endif
- break;
- }
- if (input_pending())
- break;
- }
- fflush(stdout);
- }
- }
- else
- #endif /* ARTSEARCH */
- {
- if (art+1 <= lastart)/* how about a pre-fetch? */
- #ifdef SERVER
- nntpopen(art+1,GET_HEADER); /* look for the next article */
- #else
- artopen(art+1); /* look for the next article */
- #endif
- }
- }
-
- /* see what else we can do while they are reading */
-
- void
- collect_subjects()
- {
- #ifdef PENDING
- # ifdef CACHESUBJ
- ART_NUM oldart = openart;
- ART_POS oldartpos;
-
- if (!in_ng || !srchahead)
- return;
- #ifdef USETHREADS
- if (ThreadedGroup)
- return;
- #endif
- if (oldart) /* remember where we were in art */
- oldartpos = ftell(artfp);
- if (srchahead >= subj_to_get)
- subj_to_get = srchahead+1;
- while (!input_pending() && subj_to_get <= lastart)
- fetchsubj(subj_to_get++,FALSE,FALSE);
- if (oldart) {
- artopen(oldart);
- fseek(artfp,oldartpos,0); /* do not screw the pager */
- }
- # endif
- #endif
- }
-
-