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: }