|
|
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.