|
|
1.1 ! root 1: #include "journal.pri" ! 2: #include "core.pub" ! 3: #include "format.h" ! 4: SRCFILE("journal.c") ! 5: ! 6: Journal::Journal(char *p) ! 7: { ! 8: proc = p; ! 9: key = 0; ! 10: length = 50; ! 11: lastreq = 0; ! 12: } ! 13: ! 14: void Journal::open() ! 15: { ! 16: trace("%d.open()", this); VOK; ! 17: if( !pad ){ ! 18: pad = new Pad((PadRcv*) this); ! 19: banner(); ! 20: } ! 21: pad->makecurrent(); ! 22: } ! 23: ! 24: void Journal::hostclose() ! 25: { ! 26: trace( "%d.hostclose()", this ); VOK; ! 27: if( pad ){ ! 28: delete pad; ! 29: pad = 0; ! 30: } ! 31: if( bls ){ ! 32: delete bls; ! 33: delete ct; ! 34: bls = 0; ! 35: ct = 0; ! 36: } ! 37: invalidate(); ! 38: } ! 39: ! 40: void Journal::banner() ! 41: { ! 42: trace("%d.banner()", this); VOK; ! 43: if( pad ){ ! 44: pad->banner("Journal: %s", proc); ! 45: pad->name("Journal %s", proc); ! 46: pad->tabs(2); ! 47: pad->options(TRUNCATE|NO_TILDE); ! 48: if( !bls ){ ! 49: bls = new Bls[length]; ! 50: ct = new int[length]; ! 51: } ! 52: } ! 53: } ! 54: ! 55: void Journal::insert(PRINTF_ARGS) ! 56: { ! 57: trace("%.insert(%s)", this, fmt); ! 58: if( !this ) return; VOK; ! 59: if( !this->pad || !bls ) return; // can that be? ! 60: Bls t(PRINTF_COPY); ! 61: if( !t.text[0] ) return; ! 62: long i = key%length; ! 63: if( key==0 || strcmp(bls[i].text, t.text) ){ ! 64: i = (++key)%length; ! 65: ct[i] = 0; ! 66: bls[i].clear(); ! 67: bls[i].af("%s", t.text); ! 68: } ! 69: if( lastreq == key ) ! 70: linereq(key); ! 71: else ! 72: pad->createline(key); ! 73: ++ct[i]; ! 74: if( key-length > 0 ) pad->removeline(key-length); ! 75: } ! 76: ! 77: void Journal::linereq(long i, Attrib a) ! 78: { ! 79: trace("%.linereq(%d,%x)", this, i, a); VOK; ! 80: if( i <= key-length || !bls ) return; // too late! ! 81: int mod = i%length; ! 82: if( ct[mod] > 1 ) ! 83: pad->insert(i, a, "%s (%d)", bls[mod].text, ct[mod]); ! 84: else ! 85: pad->insert(i, a, "%s", bls[mod].text); ! 86: lastreq = i; ! 87: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.