|
|
1.1 root 1: /* $Header: cheat.c,v 4.3 85/05/01 11:36:46 lwall Exp $
2: *
3: * $Log: cheat.c,v $
4: * Revision 4.3 85/05/01 11:36:46 lwall
5: * Baseline for release with 4.3bsd.
6: *
7: */
8:
9: #include "EXTERN.h"
10: #include "common.h"
11: #include "intrp.h"
12: #include "search.h"
13: #include "ng.h"
14: #include "bits.h"
15: #include "artio.h"
16: #include "term.h"
17: #include "artsrch.h"
18: #include "head.h"
19: #include "INTERN.h"
20: #include "cheat.h"
21:
22: /* see what we can do while they are reading */
23:
24: #ifdef PENDING
25: # ifdef ARTSEARCH
26: COMPEX srchcompex; /* compiled regex for searchahead */
27: # endif
28: #endif
29:
30: void
31: cheat_init()
32: {
33: ;
34: }
35:
36: #ifdef PENDING
37: void
38: look_ahead()
39: {
40: #ifdef ARTSEARCH
41: register char *h, *s;
42:
43: #ifdef DEBUGGING
44: if (debug && srchahead) {
45: printf("(%ld)",(long)srchahead);
46: fflush(stdout);
47: }
48: #endif
49: if (srchahead && srchahead < art) { /* in ^N mode? */
50: char *pattern;
51:
52: pattern = buf+1;
53: strcpy(pattern,": *");
54: h = pattern + strlen(pattern);
55: interp(h,(sizeof buf) - (h-buf),"%s");
56: h[24] = '\0'; /* compensate for notesfiles */
57: while (*h) {
58: if (index("\\[.^*$'\"",*h) != Nullch)
59: *h++ = '.';
60: else
61: h++;
62: }
63: #ifdef DEBUGGING
64: if (debug & DEB_SEARCH_AHEAD) {
65: fputs("(hit CR)",stdout);
66: fflush(stdout);
67: gets(buf+128);
68: printf("\npattern = %s\n",pattern);
69: }
70: #endif
71: if ((s = compile(&srchcompex,pattern,TRUE,TRUE)) != Nullch) {
72: /* compile regular expression */
73: printf("\n%s\n",s);
74: srchahead = 0;
75: }
76: if (srchahead) {
77: srchahead = art;
78: for (;;) {
79: srchahead++; /* go forward one article */
80: if (srchahead > lastart) { /* out of articles? */
81: #ifdef DEBUGGING
82: if (debug)
83: fputs("(not found)",stdout);
84: #endif
85: break;
86: }
87: if (!was_read(srchahead) &&
88: wanted(&srchcompex,srchahead,0)) {
89: /* does the shoe fit? */
90: #ifdef DEBUGGING
91: if (debug)
92: printf("(%ld)",(long)srchahead);
93: #endif
94: artopen(srchahead);
95: break;
96: }
97: if (input_pending())
98: break;
99: }
100: fflush(stdout);
101: }
102: }
103: else
104: #endif
105: {
106: if (art+1 <= lastart)/* how about a pre-fetch? */
107: artopen(art+1); /* look for the next article */
108: }
109: }
110: #endif
111:
112: /* see what else we can do while they are reading */
113:
114: void
115: collect_subjects()
116: {
117: #ifdef PENDING
118: # ifdef CACHESUBJ
119: ART_NUM oldart = openart;
120: ART_POS oldartpos;
121:
122: if (!in_ng || !srchahead)
123: return;
124: if (oldart) /* remember where we were in art */
125: oldartpos = ftell(artfp);
126: if (srchahead >= subj_to_get)
127: subj_to_get = srchahead+1;
128: while (!input_pending() && subj_to_get <= lastart)
129: fetchsubj(subj_to_get++,FALSE,FALSE);
130: if (oldart) {
131: artopen(oldart);
132: fseek(artfp,oldartpos,0); /* do not screw the pager */
133: }
134: # endif
135: #endif
136: }
137:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.